stringtranslate.com

Esquema de compromiso

Un esquema de compromiso es un primitivo criptográfico que permite comprometerse con un valor elegido (o una declaración elegida) mientras lo mantiene oculto para los demás, con la capacidad de revelar el valor comprometido más tarde. [1] Los esquemas de compromiso están diseñados para que una parte no pueda cambiar el valor o la declaración después de haberse comprometido con él: es decir, los esquemas de compromiso son vinculantes . Los esquemas de compromiso tienen aplicaciones importantes en varios protocolos criptográficos, incluidos el lanzamiento seguro de monedas, las pruebas de conocimiento cero y la computación segura .

Una forma de visualizar un esquema de compromiso es pensar en un remitente que coloca un mensaje en una caja cerrada y se la entrega a un receptor. El mensaje en la caja está oculto para el receptor, que no puede abrir la cerradura por sí mismo. Como el receptor tiene la caja, el mensaje que está dentro no se puede cambiar; solo se revela si el remitente decide darle la llave en algún momento posterior.

Las interacciones en un esquema de compromiso tienen lugar en dos fases:

  1. la fase de confirmación durante la cual se elige un valor y se confirma su cumplimiento
  2. la fase de revelación durante la cual el valor es revelado por el remitente, luego el receptor verifica su autenticidad

En la metáfora anterior, la fase de confirmación consiste en que el remitente coloca el mensaje en la caja y la cierra. La fase de revelación consiste en que el remitente le da la llave al receptor, quien la usa para abrir la caja y verificar su contenido. La caja cerrada es el compromiso y la llave es la prueba.

En protocolos simples, la fase de confirmación consiste en un único mensaje del remitente al receptor. Este mensaje se denomina compromiso . Es esencial que el valor específico elegido no pueda ser extraído del mensaje por el receptor en ese momento (esto se denomina propiedad de ocultación ). Una fase de revelación simple consistiría en un único mensaje, la apertura , del remitente al receptor, seguido de una comprobación realizada por el receptor. El valor elegido durante la fase de confirmación debe ser el único que el remitente pueda calcular y que valide durante la fase de revelación (esto se denomina propiedad de vinculación ).

El concepto de esquemas de compromiso fue formalizado quizás por primera vez por Gilles Brassard , David Chaum y Claude Crépeau en 1988, [2] como parte de varios protocolos de conocimiento cero para NP , basados ​​en varios tipos de esquemas de compromiso. [3] [4] Pero el concepto se utilizó antes de eso sin ser tratado formalmente. [5] [6] La noción de compromisos apareció primero en trabajos de Manuel Blum , [7] Shimon Even , [8] y Adi Shamir et al. [9] La terminología parece haber sido originada por Blum, [6] aunque los esquemas de compromiso pueden llamarse indistintamente esquemas de compromiso de bits , a veces reservados para el caso especial donde el valor comprometido es un bit . Antes de eso, el compromiso a través de funciones hash unidireccionales se consideraba, por ejemplo, como parte de, digamos, la firma de Lamport , el esquema de firma original de un solo bit.

Aplicaciones

Lanzamiento de moneda

Supongamos que Alicia y Bob quieren resolver una disputa lanzando una moneda al aire . Si están físicamente en el mismo lugar, un procedimiento típico podría ser:

  1. Alicia "llama" al lanzamiento de la moneda,
  2. Bob lanza la moneda,
  3. Si la llamada de Alice es correcta, ella gana, de lo contrario, Bob gana.

Si Alice y Bob no están en el mismo lugar, surge un problema. Una vez que Alice ha "previsto" el lanzamiento de la moneda, Bob puede estipular que los "resultados" del lanzamiento sean los que él desee. De manera similar, si Alice no anuncia su "previsto" a Bob, después de que Bob lance la moneda y anuncie el resultado, Alice puede informar que previó el resultado que ella desee. Alice y Bob pueden usar compromisos en un procedimiento que les permita a ambos confiar en el resultado:

  1. Alice "llama" al lanzamiento de moneda, pero sólo le dice a Bob que se compromete a cumplir su llamado.
  2. Bob lanza la moneda y anuncia el resultado.
  3. Alice revela a qué se comprometió,
  4. Bob verifica que la llamada de Alice coincide con su compromiso,
  5. Si la revelación de Alice coincide con el resultado de la moneda que Bob informó, Alice gana.

Para que Bob pueda sesgar los resultados a su favor, debe ser capaz de entender la decisión oculta en el compromiso de Alice. Si el esquema de compromiso es bueno, Bob no puede sesgar los resultados. De manera similar, Alice no puede afectar el resultado si no puede cambiar el valor con el que se compromete.

Una aplicación real de este problema es cuando las personas (con frecuencia en los medios de comunicación) se comprometen a tomar una decisión o dan una respuesta en un "sobre cerrado" que luego se abre. "Vamos a ver si eso es lo que respondió el candidato", por ejemplo en un concurso, puede servir como modelo de este sistema.

Pruebas de conocimiento cero

Un ejemplo motivador particular es el uso de esquemas de compromiso en pruebas de conocimiento cero . Los compromisos se utilizan en pruebas de conocimiento cero con dos propósitos principales: primero, para permitir que el probador participe en pruebas de "cortar y elegir" donde se le presentará al verificador una opción de qué aprender, y el probador revelará solo lo que corresponde a la elección del verificador. Los esquemas de compromiso permiten al probador especificar toda la información de antemano, y solo revelar lo que debe revelarse más adelante en la prueba. [10] En segundo lugar, los compromisos también son utilizados en pruebas de conocimiento cero por el verificador, que a menudo especificará sus elecciones con anticipación en un compromiso. Esto permite que las pruebas de conocimiento cero se compongan en paralelo sin revelar información adicional al probador. [11]

Esquemas de firma

El esquema de firma de Lamport es un sistema de firma digital que se basa en mantener dos conjuntos de paquetes de datos secretos , publicar hashes verificables de los paquetes de datos y luego revelar de forma selectiva paquetes de datos secretos parciales de una manera que se ajuste específicamente a los datos que se van a firmar. De esta manera, el compromiso público previo con los valores secretos se convierte en una parte fundamental del funcionamiento del sistema.

Como el sistema de firma de Lamport no se puede utilizar más de una vez, se desarrolló un sistema para combinar muchos conjuntos de claves de Lamport en un único valor público que se puede vincular a una persona y que otros pueden verificar. Este sistema utiliza árboles de hashes para comprimir muchos conjuntos de claves de Lamport publicadas en un único valor hash que se puede asociar con el posible autor de los datos verificados posteriormente.

Intercambio de secretos verificable

Otra aplicación importante de los compromisos es la compartición de secretos verificables , un elemento fundamental de la computación segura entre varias partes . En un esquema de compartición de secretos , cada una de las partes recibe "porciones" de un valor que se supone debe permanecer oculto para todos. Si se reúnen suficientes partes, sus porciones pueden usarse para reconstruir el secreto, pero incluso una camarilla maliciosa de tamaño insuficiente no debería aprender nada. La compartición de secretos es la raíz de muchos protocolos para la computación segura : para calcular de forma segura una función de alguna entrada compartida, las porciones secretas se manipulan en su lugar. Sin embargo, si las porciones deben ser generadas por partes maliciosas, puede ser importante que se pueda verificar su exactitud. En un esquema de compartición de secretos verificables, la distribución de un secreto va acompañada de compromisos con las porciones individuales. Los compromisos no revelan nada que pueda ayudar a una camarilla deshonesta, pero las porciones permiten que cada parte individual verifique si sus porciones son correctas. [12]

Definiendo la seguridad

Las definiciones formales de los esquemas de compromiso varían mucho en notación y en estilo. El primero de estos estilos es si el esquema de compromiso proporciona seguridad perfecta o computacional con respecto a las propiedades de ocultación o vinculación. Otro de estos estilos es si el compromiso es interactivo, es decir, si tanto la fase de compromiso como la fase de revelación pueden verse como ejecutadas por un protocolo criptográfico o si son no interactivas, y consisten en dos algoritmos Commit y CheckReveal . En el último caso, CheckReveal a menudo puede verse como una versión desaleatorizada de Commit , donde la aleatoriedad utilizada por Commit constituye la información de apertura.

Si el compromiso C con un valor x se calcula como C:=Commit(x,open) donde open es la aleatoriedad utilizada para calcular el compromiso, entonces CheckReveal (C,x,open) se reduce simplemente a verificar la ecuación C=Commit (x,open) .

Utilizando esta notación y algunos conocimientos sobre funciones matemáticas y teoría de la probabilidad, formalizamos diferentes versiones de las propiedades de vinculación y ocultación de los compromisos. Las dos combinaciones más importantes de estas propiedades son los esquemas de compromiso de vinculación perfecta y ocultación computacional y los esquemas de compromiso de vinculación perfecta y ocultación computacional. Nótese que ningún esquema de compromiso puede ser al mismo tiempo perfectamente vinculante y perfectamente ocultante: un adversario computacionalmente ilimitado puede simplemente generar Commit(x,open) para cada valor de x y open hasta encontrar un par que dé como resultado C , y en un esquema de vinculación perfecta esto identifica de forma única a x .

Enlace computacional

Sea open elegido de un conjunto de tamaño , es decir, puede representarse como una cadena de k bits, y sea el esquema de compromiso correspondiente. Como el tamaño de k determina la seguridad del esquema de compromiso, se denomina parámetro de seguridad .

Entonces, para todos los algoritmos de tiempo polinomial probabilístico no uniforme que generan y de longitud creciente k , la probabilidad de que y sea una función insignificante en k .

Esta es una forma de análisis asintótico . También es posible enunciar el mismo requisito utilizando seguridad concreta : un esquema de compromiso Commit es seguro, si para todos los algoritmos que se ejecutan en el tiempo t y generan la probabilidad de que y sea como máximo .

Ocultación perfecta, estadística y computacional

Sea la distribución uniforme sobre los valores de apertura para el parámetro de seguridad k . Un esquema de compromiso es respectivamente perfecto, de ocultamiento estadístico o computacional, si para todos los conjuntos de probabilidad y son iguales, estadísticamente cercanos o computacionalmente indistinguibles .

Imposibilidad de esquemas de compromiso universalmente componibles

Es imposible implementar esquemas de compromiso en el marco de componibilidad universal (UC). La razón es que el compromiso de UC debe ser extraíble , como lo demostraron Canetti y Fischlin [13] y se explica a continuación.

La funcionalidad de compromiso ideal, indicada aquí por F , funciona aproximadamente de la siguiente manera. El remitente C envía el valor m a F , que lo almacena y envía "recibo" al receptor R. Luego, C envía "apertura" a F , que envía m a R.

Ahora, supongamos que tenemos un protocolo π que realiza esta funcionalidad. Supongamos que el confirmador C está dañado. En el marco de UC, eso significa esencialmente que C ahora está controlado por el entorno, que intenta distinguir la ejecución del protocolo del proceso ideal. Consideremos un entorno que elige un mensaje m y luego le dice a C que actúe como lo prescribe π , como si se hubiera comprometido con m . Observe aquí que para realizar F , el receptor debe, después de recibir un compromiso, emitir un mensaje "recibo". Después de que el entorno ve este mensaje, le dice a C que abra el compromiso.

El protocolo solo es seguro si este escenario es indistinguible del caso ideal, donde la funcionalidad interactúa con un simulador S . Aquí, S tiene el control de C . En particular, siempre que R genera "recibo", F tiene que hacer lo mismo. La única forma de hacerlo es que S le diga a C que envíe un valor a F . Sin embargo, tenga en cuenta que en este punto, m no es conocido por S . Por lo tanto, cuando el compromiso se abre durante la ejecución del protocolo, es poco probable que F se abra a m , a menos que S pueda extraer m de los mensajes que recibió del entorno antes de que R genere el recibo.

Sin embargo, un protocolo que se puede extraer en este sentido no puede ocultarse estadísticamente. Supongamos que existe un simulador como S. Ahora consideremos un entorno que, en lugar de corromper C , corrompe R. Además, ejecuta una copia de S. Los mensajes recibidos de C se envían a S y las respuestas de S se reenvían a C.

El entorno inicialmente le dice a C que se comprometa con un mensaje m . En algún punto de la interacción, S se comprometerá con un valor m′ . Este mensaje se entrega a R , quien genera m′ . Nótese que, por suposición, tenemos m' = m con alta probabilidad. Ahora bien, en el proceso ideal, el simulador tiene que llegar a m . Pero esto es imposible, porque en este punto el compromiso aún no se ha abierto, por lo que el único mensaje que R puede haber recibido en el proceso ideal es un mensaje de "recibo". Por lo tanto, tenemos una contradicción.

Construcción

Un esquema de compromiso puede ser perfectamente vinculante (es imposible para Alice alterar su compromiso después de haberlo asumido, incluso si tiene recursos computacionales ilimitados); o perfectamente ocultador (es imposible para Bob descubrir el compromiso sin que Alice lo revele, incluso si tiene recursos computacionales ilimitados); o formulado como un esquema de compromiso dependiente de la instancia, que oculta o es vinculante dependiendo de la solución a otro problema. [14] [15] Un esquema de compromiso no puede ser perfectamente ocultador y perfectamente vinculante al mismo tiempo.

Compromiso de bits en el modelo de oráculo aleatorio

Los esquemas de compromiso de bits son triviales de construir en el modelo de oráculo aleatorio . Dada una función hash H con una salida de 3 k bits, para confirmar el mensaje de k bits m , Alice genera una cadena aleatoria de k bits R y envía a Bob H( R || m ). La probabilidad de que exista cualquier R′ , m′ donde m′m tal que H( R′ || m′ ) = H( R || m ) es ≈ 2 k , pero para probar cualquier suposición en el mensaje m, Bob necesitará hacer 2 k (para una suposición incorrecta) o 2 k -1 (en promedio, para una suposición correcta) consultas al oráculo aleatorio. [16] Notamos que los esquemas anteriores basados ​​en funciones hash, esencialmente pueden considerarse esquemas basados ​​en la idealización de estas funciones hash como oráculo aleatorio.

Compromiso de bits a partir de cualquier permutación unidireccional

Se puede crear un esquema de compromiso de bits a partir de cualquier función unidireccional que sea inyectiva . El esquema se basa en el hecho de que cada función unidireccional se puede modificar (a través del teorema de Goldreich-Levin ) para que posea un predicado computacionalmente sólido (mientras se conserva la propiedad inyectiva).

Sea f una función unidireccional inyectiva, con h como predicado de núcleo duro. Luego, para comprometerse con un bit b, Alice elige una entrada aleatoria x y envía el triple

a Bob, donde denota XOR, es decir , suma bit a bit módulo 2. Para descomprometer, Alice simplemente envía x a Bob. Bob verifica calculando f ( x ) y comparando con el valor comprometido. Este esquema es ocultador porque para que Bob recupere b debe recuperar h ( x ). Dado que h es un predicado computacionalmente difícil, recuperar h ( x ) de f ( x ) con una probabilidad mayor que la mitad es tan difícil como invertir f . La unión perfecta se deriva del hecho de que f es inyectiva y, por lo tanto, f ( x ) tiene exactamente una preimagen.

Compromiso de bits de un generador pseudoaleatorio

Tenga en cuenta que, dado que no sabemos cómo construir una permutación unidireccional a partir de cualquier función unidireccional, esta sección reduce la fuerza del supuesto criptográfico necesario para construir un protocolo de compromiso de bits.

En 1991, Moni Naor demostró cómo crear un esquema de compromiso de bits a partir de un generador de números pseudoaleatorios criptográficamente seguro . [17] La ​​construcción es la siguiente. Si G es un generador pseudoaleatorio tal que G toma n bits hasta 3 n bits, entonces si Alice quiere comprometerse con un bit b :

Para desvincularse, Alice envía Y a Bob, quien luego puede verificar si inicialmente recibió G ( Y ) o G ( Y ) R .

Este esquema es estadísticamente vinculante, lo que significa que incluso si Alice no tiene límites computacionales, no puede hacer trampa con una probabilidad mayor que 2 n . Para que Alice haga trampa, necesitaría encontrar un Y' , tal que G ( Y' ) = G ( Y ) R . Si pudiera encontrar dicho valor, podría desvincularse enviando la verdad y Y , o enviando la respuesta opuesta y Y' . Sin embargo, G ( Y ) y G ( Y' ) solo pueden producir 2 n valores posibles cada uno (es decir, 2 2 n ) mientras que R se elige de 2 3 n valores. Ella no elige R , por lo que hay una probabilidad de 2 2 n /2 3 n = 2 n de que exista un Y' que satisfaga la ecuación requerida para hacer trampa.

La propiedad de ocultamiento se desprende de una reducción estándar: si Bob puede saber si Alice se comprometió con un cero o uno, también puede distinguir la salida del generador pseudoaleatorio G de la verdaderamente aleatoria, lo que contradice la seguridad criptográfica de G.

Un esquema perfectamente vinculante basado en el problema del logaritmo discreto y más allá

Alicia elige un anillo de orden primo p , con generador multiplicativo g .

Alice elige aleatoriamente un valor secreto x de 0 a p  − 1 para confirmarlo y calcula c = g x y publica c . El problema del logaritmo discreto dicta que a partir de c , es computacionalmente inviable calcular x , por lo que bajo este supuesto, Bob no puede calcular x . Por otro lado, Alice no puede calcular un x <> x , tal que g x = c , por lo que el esquema es vinculante.

Este esquema no oculta perfectamente, ya que alguien podría encontrar el compromiso si logra resolver el problema del logaritmo discreto . De hecho, este esquema no oculta nada con respecto al juego de ocultamiento estándar, en el que un adversario no debería poder adivinar cuál de los dos mensajes que eligió estaba comprometido, de manera similar al juego IND-CPA . Una consecuencia de esto es que si el espacio de posibles valores de x es pequeño, entonces un atacante podría simplemente probarlos todos y el compromiso no estaría oculto.

Un mejor ejemplo de un esquema de compromiso perfectamente vinculante es uno en el que el compromiso es el cifrado de x bajo un esquema de cifrado de clave pública semánticamente seguro con completitud perfecta, y el descompromiso es la cadena de bits aleatorios utilizados para cifrar x . Un ejemplo de un esquema de compromiso que oculta la información teóricamente es el esquema de compromiso de Pedersen, [18] que es computacionalmente vinculante bajo el supuesto de logaritmo discreto. [19] Además del esquema anterior, utiliza otro generador h del grupo primo y un número aleatorio r . El compromiso se establece . [20]

Estas construcciones están estrechamente relacionadas con las propiedades algebraicas de los grupos subyacentes y se basan en ellas, y la noción originalmente parecía estar muy relacionada con el álgebra. Sin embargo, se demostró que es posible basar esquemas de compromiso estadísticamente vinculantes en suposiciones generales no estructuradas, a través de la noción de hash interactivo para compromisos a partir de suposiciones generales de complejidad (específicamente y originalmente, basadas en cualquier permutación unidireccional) como en [21] .

Un esquema de compromiso de ocultamiento perfecto basado en RSA

Alice selecciona de forma que , donde y son números primos secretos grandes. Además, selecciona un primo tal que y . Alice luego calcula un número público como un elemento de orden máximo en el grupo. [22] Finalmente, Alice se compromete con su secreto generando primero un número aleatorio de y luego calculando .

La seguridad del compromiso anterior depende de la dificultad del problema RSA y tiene ocultamiento perfecto y enlace computacional. [23]

Propiedades homomórficas aditivas y multiplicativas de los compromisos

El esquema de compromiso de Pedersen introduce una propiedad homomórfica interesante que permite realizar sumas entre dos compromisos. Más específicamente, dados dos mensajes y y aleatoriedad y , respectivamente, es posible generar un nuevo compromiso tal que: . Formalmente:

Para abrir el compromiso de Pedersen anterior a un nuevo mensaje , hay que añadir la aleatoriedad .

De manera similar, el compromiso basado en RSA mencionado anteriormente tiene una propiedad homomórfica con respecto a la operación de multiplicación. Dados dos mensajes y con aleatoriedad y , respectivamente, se puede calcular: . Formalmente: .

Para abrir el compromiso anterior a un nuevo mensaje , se debe agregar la aleatoriedad y . Este compromiso recién generado se distribuye de manera similar a un nuevo compromiso a .

Revelación parcial

Algunos esquemas de compromiso permiten que se proporcione una prueba de solo una parte del valor comprometido. En estos esquemas, el valor secreto es un vector de muchos valores separables individualmente.

El compromiso se calcula en la fase de confirmación. Normalmente, en la fase de revelación, el probador revelaría todos los datos de prueba y algunos datos de prueba adicionales (como en un compromiso de bits simple). En cambio, el probador puede revelar cualquier valor individual del vector y crear una prueba eficiente de que es el auténtico elemento th del vector original que creó el compromiso . La prueba no requiere que se revelen otros valores de que no sean los verdaderos, y es imposible crear pruebas válidas que revelen valores diferentes para cualquiera de los que no sean el verdadero. [24]

Hashing vectorial

El hash vectorial es un esquema de revelación parcial de compromiso vectorial ingenuo basado en el compromiso de bits. Los valores se eligen aleatoriamente. Los compromisos individuales se crean mediante hash . El compromiso general se calcula como

Para probar un elemento del vector , el demostrador revela los valores

El verificador puede calcular a partir de y , y luego puede verificar que el hash de todos los valores es el compromiso . Lamentablemente, la prueba está en el tamaño y el tiempo de verificación. Alternativamente, si es el conjunto de todos los valores, entonces el compromiso está en el tamaño y la prueba está en el tamaño y el tiempo de verificación. De cualquier manera, el compromiso o la prueba escalan con lo cual no es óptimo.

Árbol de Merkle

Un ejemplo común de un esquema práctico de revelación parcial es un árbol Merkle , en el que se crea un árbol hash binario de los elementos de . Este esquema crea compromisos que son en tamaño y pruebas que son en tamaño y tiempo de verificación. El hash raíz del árbol es el compromiso . Para demostrar que un revelado es parte del árbol original, solo los valores hash del árbol, uno de cada nivel, deben revelarse como prueba. El verificador puede seguir la ruta desde el nodo hoja reclamado hasta la raíz, aplicando hash a los nodos hermanos en cada nivel y, finalmente, llegando a un valor de nodo raíz que debe ser igual a . [25]

Compromiso de KZG

Un compromiso de Kate-Zaverucha-Goldberg utiliza criptografía basada en emparejamiento para construir un esquema de revelación parcial con tamaños de compromiso, tamaños de prueba y tiempo de verificación de prueba. En otras palabras, a medida que aumenta la cantidad de valores en , los compromisos y las pruebas no se hacen más grandes y las pruebas no requieren más esfuerzo para verificarse.

Un compromiso KZG requiere un conjunto predeterminado de parámetros para crear un emparejamiento y un elemento de trampilla confiable. Por ejemplo, se puede utilizar un emparejamiento Tate . Suponga que son los grupos aditivos y es el grupo multiplicativo del emparejamiento. En otras palabras, el emparejamiento es el mapa . Sea el elemento de trampilla (si es el orden primo de y ), y sean y los generadores de y respectivamente. Como parte de la configuración de parámetros, suponemos que y son valores conocidos y compartidos para una cantidad arbitraria de valores enteros positivos de , mientras que el valor de la trampilla en sí se descarta y nadie lo conoce.

Comprometerse

Un compromiso KZG reformula el vector de valores que se comprometerán como un polinomio. Primero, calculamos un polinomio tal que para todos los valores de en nuestro vector. La interpolación de Lagrange nos permite calcular ese polinomio

Según esta formulación, el polinomio ahora codifica el vector, donde . Sean los coeficientes de , tales que . El compromiso se calcula como

Esto se calcula simplemente como un producto escalar entre los valores predeterminados y los coeficientes polinómicos . Dado que es un grupo aditivo con asociatividad y conmutatividad, es igual a simplemente , ya que todas las adiciones y multiplicaciones con se pueden distribuir fuera de la evaluación. Dado que el valor de la trampilla es desconocido, el compromiso es esencialmente el polinomio evaluado en un número que nadie conoce, con el resultado ofuscado en un elemento opaco de .

Revelar

Una prueba KZG debe demostrar que los datos revelados son el valor auténtico de cuando se calculó. Sea , el valor revelado que debemos probar. Dado que el vector de se reformuló en un polinomio, realmente necesitamos probar que el polinomio , cuando se evalúa en , toma el valor . Simplemente, solo necesitamos probar que . Haremos esto demostrando que restar de da como resultado una raíz en . Defina el polinomio como

Este polinomio es en sí mismo la prueba de que , porque si existe, entonces es divisible por , lo que significa que tiene una raíz en , por lo que (o, en otras palabras, ). La prueba KZG demostrará que existe y tiene esta propiedad.

El demostrador realiza el cálculo a través de la división polinomial anterior y luego calcula el valor de prueba KZG

Esto es igual a , como se indicó anteriormente. En otras palabras, el valor de prueba es el polinomio evaluado nuevamente en el valor de la trampilla , oculto en el generador de .

Este cálculo solo es posible si los polinomios anteriores fueran divisibles de manera uniforme, porque en ese caso el cociente es un polinomio, no una función racional . Debido a la construcción de la trampilla, no es posible evaluar una función racional en el valor de la trampilla, solo evaluar un polinomio utilizando combinaciones lineales de las constantes conocidas precalculadas de . Por eso es imposible crear una prueba para un valor incorrecto de .

Verificar

Para verificar la prueba, se utiliza el mapa bilineal del emparejamiento para mostrar que el valor de la prueba resume un polinomio real que demuestra la propiedad deseada, que es que fue dividido de manera exacta por . El cálculo de verificación verifica la igualdad

donde es la función de mapa bilineal como se muestra arriba. es una constante precalculada, se calcula en base a .

Al reescribir el cálculo en el grupo de emparejamiento , sustituyendo en y , y dejando que sea una función auxiliar para elevar al grupo de emparejamiento, la verificación de la prueba es más clara.

Suponiendo que el mapa bilineal se construye válidamente, esto demuestra que , sin que el validador sepa qué son o . El validador puede estar seguro de esto porque si , entonces los polinomios evalúan la misma salida en el valor de la trampilla . Esto demuestra que los polinomios son idénticos, porque, si los parámetros se construyeron válidamente, nadie conoce el valor de la trampilla, lo que significa que diseñar un polinomio para que tenga un valor específico en la trampilla es imposible (según el lema de Schwartz-Zippel ). Si ahora se verifica que es verdadero, entonces se verifica que existe, por lo tanto debe ser polinomial-divisible por , por lo que debido al teorema del factor . Esto demuestra que el valor th del vector comprometido debe haber sido igual a , ya que ese es el resultado de evaluar el polinomio comprometido en .

¿Por qué se utiliza el emparejamiento de mapas bilineales?

La utilidad del emparejamiento de mapas bilineales es permitir que la multiplicación de por se realice de forma segura. Estos valores realmente se encuentran en , donde se supone que la división es computacionalmente difícil. Por ejemplo, podría ser una curva elíptica sobre un campo finito, como es común en la criptografía de curva elíptica . Entonces, el supuesto de división se llama problema de logaritmo discreto de curva elíptica [ ancla rota ] , y este supuesto es también lo que evita que se calcule el valor de la trampilla, lo que también lo convierte en una base de los compromisos de KZG. En ese caso, queremos verificar si . Esto no se puede hacer sin un emparejamiento, porque con valores en la curva de y , no podemos calcular . Eso violaría el supuesto computacional de Diffie-Hellman , un supuesto fundamental en la criptografía de curva elíptica . En cambio, usamos un emparejamiento para eludir este problema. todavía se multiplica por para obtener , pero el otro lado de la multiplicación se realiza en el grupo emparejado , por lo que, . Calculamos , que, debido a la bilinealidad de la función, es igual a . En este grupo de salida todavía tenemos el problema del logaritmo discreto , por lo que, aunque conocemos ese valor y , no podemos extraer el exponente , lo que evita cualquier contradicción con el logaritmo discreto anterior. Este valor se puede comparar con , y si podemos concluir que , sin saber nunca cuál es el valor real de , mucho menos .

Además, un compromiso KZG se puede extender para probar los valores de cualquier valor arbitrario de (no solo un valor), con el tamaño de la prueba restante , pero el tiempo de verificación de la prueba escala con . La prueba es la misma, pero en lugar de restar una constante , restamos un polinomio que causa múltiples raíces, en todas las ubicaciones que queremos probar, y en lugar de dividir por dividimos por para esas mismas ubicaciones. [26]

Compromiso de bits cuánticos

En criptografía cuántica, es interesante preguntarse si existen protocolos de compromiso de bits incondicionalmente seguros a nivel cuántico, es decir, protocolos que sean (al menos asintóticamente) vinculantes y ocultadores incluso si no hay restricciones en los recursos computacionales. Se podría esperar que existiera una manera de explotar las propiedades intrínsecas de la mecánica cuántica , como en los protocolos para la distribución de claves incondicionalmente seguras .

Sin embargo, esto es imposible, como Dominic Mayers demostró en 1996 (ver [27] para la prueba original). Cualquier protocolo de este tipo se puede reducir a un protocolo donde el sistema está en uno de dos estados puros después de la fase de compromiso, dependiendo del bit que Alice quiere comprometer. Si el protocolo es de ocultación incondicional, entonces Alice puede transformar unitariamente estos estados entre sí utilizando las propiedades de la descomposición de Schmidt , derrotando efectivamente la propiedad de enlace.

Una sutil suposición de la prueba es que la fase de compromiso debe terminar en algún momento. Esto deja espacio para protocolos que requieren un flujo de información continuo hasta que se revele el bit o se cancele el protocolo, en cuyo caso ya no es vinculante. [28] En términos más generales, la prueba de Mayers se aplica solo a protocolos que explotan la física cuántica , pero no la relatividad especial . Kent ha demostrado que existen protocolos incondicionalmente seguros para el compromiso de bits que explotan el principio de la relatividad especial que establece que la información no puede viajar más rápido que la luz. [29]

Compromisos basados ​​en funciones físicas no clonables

Las funciones físicas no clonables (PUF) se basan en el uso de una clave física con aleatoriedad interna, que es difícil de clonar o emular. Las PUF electrónicas, ópticas y de otros tipos [30] se han analizado ampliamente en la literatura, en relación con sus posibles aplicaciones criptográficas, incluidos los esquemas de compromiso. [31] [32]

Véase también

Referencias

  1. ^ Oded Goldreich (2001). Fundamentos de criptografía : Volumen 1, Herramientas básicas. Cambridge University Press. ISBN  0-521-79172-3 . : 224 
  2. ^ Gilles Brassard, David Chaum y Claude Crépeau, Pruebas de divulgación mínima del conocimiento , Journal of Computer and System Sciences, vol. 37, págs. 156-189, 1988.
  3. ^ Goldreich, Oded; Micali, Silvio; Wigderson, Avi (1991). "Pruebas que no producen nada más que su validez". Revista de la ACM . 38 (3): 690–728. CiteSeerX 10.1.1.420.1478 . doi : 10.1145/116825.116852 . S2CID  2389804. 
  4. ^ Russell Impagliazzo, Moti Yung: Cálculos directos de conocimiento mínimo. CRYPTO 1987: 40-51
  5. ^ Naor, Moni (1991). "Compromiso de bits mediante pseudoaleatoriedad". Revista de criptología . 4 (2): 151–158. doi : 10.1007/BF00196774 . S2CID  15002247.
  6. ^ de Claude Crépeau, Compromiso , Laboratorio de Criptografía e Información Cuántica, Facultad de Ciencias de la Computación de la Universidad McGill , consultado el 11 de abril de 2008
  7. ^ Manuel Blum, Coin Flipping by Telephone , Actas de CRYPTO 1981, págs. 11-15, 1981, reimpreso en SIGACT News vol. 15, págs. 23-27, 1983, Facultad de Informática Carnegie Mellon .
  8. ^ Shimon Even. Protocolo para la firma de contratos. En Allen Gersho , ed., Advances in Cryptography (actas de CRYPTO '82), págs. 148-153, Santa Barbara, CA, EE. UU., 1982.
  9. ^ A. Shamir, RL Rivest y L. Adleman, " Mental Poker " . En David A. Klarner , ed., The Mathematical Gardner ( ISBN 978-1-4684-6686-7 ), págs. 37-43. Wadsworth, Belmont, California, 1981. 
  10. ^ Oded Goldreich , Silvio Micali y Avi Wigderson , Pruebas que no producen nada más que su validez, o todos los idiomas en NP tienen sistemas de prueba de conocimiento cero, Journal of the ACM , 38: 3, págs. 690–728, 1991
  11. ^ Oded Goldreich y Hugo Krawczyk , Sobre la composición de sistemas de prueba de conocimiento cero , SIAM Journal on Computing , 25: 1, págs. 169-192, 1996
  12. ^ Gennaro; Rosario; Rabin, Michael O.; Rabin, Tal. "VSS simplificado y cálculos multipartitos de vía rápida con aplicaciones a la criptografía de umbral". Actas del Decimoséptimo Simposio Anual de la ACM sobre Principios de Computación Distribuida . 1998, junio.
  13. ^ R. Canetti y M. Fischlin. Compromisos universalmente componibles.
  14. ^ Shien Hin Ong y Salil Vadhan (1990). Conocimiento cero perfecto en ronda constante, en Proc. STOC, pág. 482-493, citado en Shien Hin Ong y Salil Vadhan (2008). Una equivalencia entre conocimiento cero y compromisos, teoría de la criptografía.
  15. ^ Toshiya Itoh, Yiji Ohta, Hiroki Shizuya (1997). Una primitiva criptográfica dependiente del lenguaje, en J. Cryptol., 10(1):37-49, citado en Shien Hin Ong y Salil Vadhan (2008). Una equivalencia entre conocimiento cero y compromisos, teoría de la criptografía.
  16. ^ Wagner, David (2006), Midterm Solution, p. 2 , consultado el 26 de octubre de 2015
  17. ^ "Citas: Compromiso de bits mediante generadores pseudoaleatorios - Naor (ResearchIndex)" . Citeseer.ist.psu.edu . Consultado el 7 de junio de 2014 .
  18. ^ Pedersen, Torben Pryds (1992). "Compartir secretos de forma segura, verificable y no interactiva, a partir de la teoría de la información". Avances en criptología – CRYPTO '91 . Apuntes de clase sobre informática. Vol. 576. Berlín, Heidelberg: Springer Berlin Heidelberg. págs. 129-140. doi :10.1007/3-540-46766-1_9. ISBN 978-3-540-55188-1.
  19. ^ Metere, Roberto; Dong, Changyu (2017). "Análisis criptográfico automatizado del esquema de compromiso de Pedersen". Conferencia internacional sobre métodos matemáticos, modelos y arquitecturas para la seguridad de redes informáticas . Springer. págs. 275–287.
  20. ^ Tang, Chunming; Pei, Dingyi; Liu, Zhuojun; He, Yong (16 de agosto de 2004). "Pedersen: intercambio de secretos verificables, seguros y no interactivos con teoría de la información" (PDF) . Archivo de ePrints de criptología . Avances en criptología CRYPTO 1991 Springer. Archivado desde el original (PDF) el 11 de agosto de 2017 . Consultado el 2 de febrero de 2019 .
  21. ^ Moni Naor, Rafail Ostrovsky, Ramarathnam Venkatesan, Moti Yung: Argumentos de conocimiento cero perfectos para NP usando cualquier permutación unidireccional. J. Cryptology 11(2): 87–108 (1998)[1]
  22. ^ Menezes, Alfred J; Van Oorschot, Paul C; Vanstone, Scott A (2018). Manual de criptografía aplicada . CRC press.
  23. ^ Mouris, Dimitris; Tsoutsos, Nektarios Georgios (26 de enero de 2022). "Masquerade: agregación multipartidaria verificable con compromisos multiplicativos seguros" (PDF) . Archivo de ePrints de criptología .
  24. ^ Catalano, Dario; Fiore, Dario (2013). "Compromisos vectoriales y sus aplicaciones". Criptografía de clave pública – PKC 2013. Apuntes de clase en informática. Vol. 7778. Springer Berlin Heidelberg. págs. 55–72. doi :10.1007/978-3-642-36362-7_5. ISBN 978-3-642-36362-7. Catalano, Dario; Fiore, Dario (2013). "Compromisos vectoriales y sus aplicaciones" (PDF) . Asociación Internacional para la Investigación Criptológica .
  25. ^ Becker, Georg (18 de julio de 2008). "Esquemas de firma de Merkle, árboles de Merkle y su criptoanálisis" (PDF) . Universidad del Ruhr de Bochum. pag. 16. Archivado desde el original (PDF) el 22 de diciembre de 2014 . Consultado el 20 de noviembre de 2013 .
  26. ^ Kate, Aniket; Zaverucha, Gregory; Goldberg, Ian (2010). "Compromisos de tamaño constante con polinomios y sus aplicaciones" (PDF) . Conferencia internacional sobre la teoría y la aplicación de la criptología y la seguridad de la información .
  27. ^ Brassard, Crépeau, Mayers, Salvail: Una breve revisión sobre la imposibilidad del compromiso de bits cuánticos
  28. ^ A. Kent: Compromiso de bits clásico seguro mediante canales de comunicación de capacidad fija
  29. ^ Kent, A. (1999). "Compromiso de bit incondicionalmente seguro". Phys. Rev. Lett . 83 (7): 1447–1450. arXiv : quant-ph/9810068 . Código Bibliográfico :1999PhRvL..83.1447K. doi :10.1103/PhysRevLett.83.1447. S2CID  8823466.
  30. ^ McGrath, Thomas; Bagci, Ibrahim E.; Wang, Zhiming M.; Roedig, Utz; Young, Robert J. (12 de febrero de 2019). "Una taxonomía de PUF". Applied Physics Reviews . 6 (1): 011303. Bibcode :2019ApPRv...6a1303M. doi : 10.1063/1.5079407 .
  31. ^ Rührmair, Ulrich; van Dijk, Marten (1 de abril de 2013). "Sobre el uso práctico de funciones físicas no clonables en protocolos de transferencia inconsciente y compromiso de bits". Journal of Cryptographic Engineering . 3 (1): 17–28. doi :10.1007/s13389-013-0052-8. hdl : 1721.1/103985 . ISSN  2190-8516. S2CID  15713318.
  32. ^ Nikolopoulos, Georgios M. (30 de septiembre de 2019). "Esquema óptico para compromisos criptográficos con claves físicas no clonables". Optics Express . 27 (20): 29367–29379. arXiv : 1909.13094 . Código Bibliográfico :2019OExpr..2729367N. doi :10.1364/OE.27.029367. ISSN  1094-4087. PMID  31684673. S2CID  203593129.

Enlaces externos