Colección de citas famosas - Frases motivadoras - Mecanismo de firma digital - Mecanismo Schnorr

Mecanismo de firma digital - Mecanismo Schnorr

El mecanismo de Schnorr es un mecanismo de prueba de conocimiento basado en el problema del logaritmo discreto. Fue propuesto por el matemático y criptógrafo alemán Claus-Peter Schnorr en 1990. Este mecanismo de prueba de conocimiento tiene las ventajas de una implementación simple y una velocidad de verificación rápida. Fue diseñado originalmente para dispositivos con recursos limitados, como las tarjetas inteligentes.

Después de estos años de desarrollo, se han implementado una variedad de mejoras y funciones en el mecanismo Schnorr original, logrando firmas digitales de alto rendimiento, así como mecanismos de firma complejos que incluyen firmas de anillo, firmas de umbral, etc.

Consulte aquí el artículo de Schnorr y otros materiales de referencia para analizar el mecanismo original y la implementación del mecanismo de Schnorr. Y analice la implementación actual de EdDSA ED25519 y cómo construir un mecanismo de firma complejo en el mecanismo Schnorr.

El mecanismo Schnorr original es un mecanismo interactivo. Permite que dos participantes de protocolo con el mismo generador (en el problema de logaritmo discreto) demuestren que una parte posee la clave privada sin intercambiarla directamente. El generador propiedad de ambas partes está configurado en y el proveedor posee la clave privada. El verificador obtiene del probador, donde es la clave pública.

El proceso de protocolo de Original Schnorr Signature es el siguiente:

Debido a que el problema del logaritmo discreto es difícil, el verificador no sabrá el valor de, el verificador solo sabe calculado por. Pero el verificador puede verificar que es correcto mediante el siguiente cálculo:

dónde está el generador, conocido por ambas partes y conocido por el verificador, para que el verificador pueda verificar fácilmente la fórmula simplificada.

Este proceso es de conocimiento cero, porque el verificador no puede obtener el valor de la clave privada, pero puede verificar que el probador efectivamente posee la clave privada mediante cálculo y comunicación.

Sin embargo, dicho proceso interactivo hará que el verificador obtenga la clave privada a través de "fork". El verificador solo necesita proporcionar dos valores aleatorios diferentes y pedirle al probador que los calcule. De esta manera, este proceso no se puede verificar públicamente, porque una vez que los dos verificadores se confabulan e intercambian los valores que obtienen, se puede derivar la clave privada.

Para resolver este problema, el esquema Schnorr original de Schnorr se transformará en un algoritmo no interactivo verificable públicamente realizando la transformación Fiat-Shamir en el protocolo existente y utilizando oráculos aleatorios para transformar el algoritmo.

El problema de fuga de clave privada mencionado anteriormente en el esquema Schnorr original hace que el algoritmo no pueda usarse en un entorno público. Este problema se puede resolver convirtiendo el protocolo interactivo original en un protocolo no interactivo.

La transformación Fiat-Shamir es una forma de crear firmas digitales utilizando un esquema interactivo de prueba de conocimiento cero. Según la transformación Fiat-Shamir, podemos reemplazar el prover en el esquema original con un oráculo de números aleatorios y utilizar este método para construir una firma digital.

Un oráculo de números aleatorios, es decir, una función de números aleatorios, es una función en la que los resultados obtenidos para cualquier entrada se distribuyen de forma independiente y uniforme entre los elementos. No existe un oráculo de números aleatorios ideal. En la implementación, las funciones hash criptográficas se utilizan a menudo como oráculos de números aleatorios.

En el diseño original, la firma Schnorr es un protocolo interactivo que requiere un verificador y un participante reales. Según la transformación Fiat-Shamir, el verificador específico se puede utilizar como un oráculo de números aleatorios. Después de reemplazar el verificador con un oráculo de números aleatorios, el verificador externo no puede obtener la clave privada mediante el intercambio. El original está representado por el número aleatorio generado por el oráculo de números aleatorios.