stringtranslate.com

Esquema de compromiso

Un esquema de compromiso es una primitiva criptográfica que permite comprometerse con un valor elegido (o declaración elegida) mientras lo mantiene oculto para los demás, con la capacidad de revelar el valor comprometido más adelante. [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 una serie de protocolos criptográficos, incluido 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 que un remitente coloca un mensaje en una caja cerrada y se la entrega al receptor. El mensaje de la caja queda oculto para el receptor, que no puede abrir la cerradura por sí solo. Dado que el receptor tiene la caja, el mensaje que contiene no se puede cambiar; simplemente se revela si el remitente decide darle la clave en algún momento posterior.

Las interacciones en un esquema de compromiso se llevan a cabo en dos fases:

  1. La fase de compromiso durante la cual se elige un valor y se compromete a
  2. la fase de revelación durante la cual el remitente revela el valor, 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 el cuadro y lo bloquea. La fase de revelación consiste en que el remitente le da la clave 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 consta de un único mensaje del remitente al receptor. Este mensaje se llama compromiso . Es esencial que el receptor no pueda extraer el valor específico elegido del mensaje 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 verificació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 se valide durante la fase de revelación (esto se denomina propiedad de enlace ).

El concepto de esquemas de compromiso quizás fue formalizado 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ó por primera vez en obras 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 denominarse indistintamente esquemas de compromiso de bits , a veces reservados para el caso especial en el que el valor comprometido es un bit . Anteriormente, se consideraba el compromiso a través de funciones hash unidireccionales, por ejemplo, como parte de, digamos, la firma Lamport , el esquema original de firma única de un bit.

Aplicaciones

Lanzamiento de moneda

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

  1. Alice "llama" al lanzamiento de la moneda,
  2. Bob lanza la moneda,
  3. Si la decisión de Alice es correcta, ella gana; de lo contrario, gana Bob.

Si Alice y Bob no están en el mismo lugar surge un problema. Una vez que Alice ha "llamado" el lanzamiento de la moneda, Bob puede estipular que los "resultados" del lanzamiento sean los que sean más deseables para él. De manera similar, si Alice no anuncia su "llamada" a Bob, después de que Bob lance la moneda y anuncie el resultado, Alice puede informar que llamó al resultado que sea más deseable para ella. Alice y Bob pueden utilizar compromisos en un procedimiento que les permitirá a ambos confiar en el resultado:

  1. Alice "pide" el lanzamiento de la moneda pero solo le dice a Bob que se compromete a realizar su llamada,
  2. Bob lanza la moneda y reporta 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 informó Bob, Alice gana.

Para que Bob pueda sesgar los resultados a su favor, debe poder comprender el llamado oculto 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 al que se compromete.

Existe una aplicación de este problema en la vida real, cuando las personas (a menudo en los medios) se comprometen a tomar una decisión o dan una respuesta en un "sobre cerrado", que luego se abre. "Averigüemos si eso fue lo que respondió el candidato", por ejemplo en un programa de concursos, 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 las pruebas de conocimiento cero con dos propósitos principales: primero, permitir que el probador participe en pruebas de "cortar y elegir" donde se le presentará la opción de elegir qué aprender y el probador revelará solo lo que corresponde. a elección del verificador. Los esquemas de compromiso permiten al demostrador especificar toda la información por adelantado y solo revelar lo que debería revelarse más adelante en la prueba. [10] En segundo lugar, los compromisos también los utiliza el verificador en pruebas de conocimiento cero, quien a menudo especificará sus opciones de antemano en un compromiso. Esto permite redactar pruebas de conocimiento cero en paralelo sin revelar información adicional al demostrador. [11]

Esquemas de firma

El esquema de firma 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 selectivamente 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 crítica del funcionamiento del sistema.

Debido a que el sistema de firmas Lamport no se puede utilizar más de una vez, se desarrolló un sistema para combinar muchos conjuntos de claves Lamport bajo un único valor público que puede vincularse a una persona y ser verificado por otros. Este sistema utiliza árboles de hashes para comprimir muchos conjuntos de compromisos de claves Lamport publicados en un único valor hash que puede asociarse con el posible autor de datos verificados posteriormente.

Compartir secretos verificables

Otra aplicación importante de los compromisos es el intercambio de secretos verificables , un componente fundamental de la computación multipartita segura . En un esquema de intercambio secreto , cada una de las partes recibe "acciones" de un valor que debe estar oculto a todos. Si se reúnen suficientes partes, sus acciones pueden usarse para reconstruir el secreto, pero incluso una camarilla maliciosa de tamaño insuficiente no debería aprender nada. El intercambio de secretos es la raíz de muchos protocolos para el cálculo seguro : para calcular de forma segura una función de alguna entrada compartida, los recursos compartidos secretos se manipulan. Sin embargo, si partes malintencionadas van a generar recursos compartidos, puede ser importante comprobar que esos recursos compartidos sean correctos. En un esquema de intercambio de secretos verificable, la distribución de un secreto va acompañada de compromisos con las acciones individuales. Los compromisos no revelan nada que pueda ayudar a una camarilla deshonesta, pero las acciones permiten a cada parte verificar individualmente si sus acciones son correctas. [12]

Definiendo la seguridad

Las definiciones formales de los esquemas de compromiso varían mucho en notación y forma. El primero de ellos es si el esquema de compromiso proporciona seguridad perfecta o computacional con respecto a las propiedades de ocultación o vinculación. Otro de esos tipos es si el compromiso es interactivo, es decir, si tanto la fase de compromiso como la fase de revelación pueden considerarse ejecutadas por un protocolo criptográfico o si no son interactivas y constan de dos algoritmos Commit y CheckReveal . En el último caso, CheckReveal a menudo puede verse como una versión aleatoria 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) siendo open la aleatoriedad utilizada para calcular el compromiso, entonces CheckReveal (C,x,open) se reduce a simplemente verificar la ecuación C=Commit ( x,abierto) .

Utilizando esta notación y algunos conocimientos sobre funciones matemáticas y teoría de la probabilidad formalizamos diferentes versiones de las propiedades vinculantes y ocultantes de los compromisos. Las dos combinaciones más importantes de estas propiedades son esquemas de compromiso perfectamente vinculantes y que ocultan computacionalmente y esquemas de compromiso computacionalmente vinculantes y que ocultan perfectamente. Tenga en cuenta que ningún esquema de compromiso puede ser al mismo tiempo perfectamente vinculante y perfectamente oculto: un adversario computacionalmente ilimitado puede simplemente generar Commit(x,open) para cada valor de x y abrir hasta encontrar un par que genere C , y en un esquema perfectamente vinculante. esquema esto identifica de forma única x .

Enlace computacional

Elijamos open de un conjunto de tamaño , es decir, se puede representar 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 .

Luego, para todos los algoritmos de tiempo polinómico 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 establecer el mismo requisito utilizando seguridad concreta : un esquema de compromiso El compromiso 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 .

Ocultamiento perfecto, estadístico y computacional.

Sea la distribución uniforme sobre los valores de apertura del parámetro de seguridad k . Un esquema de compromiso es respectivamente perfecto, 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 realizar esquemas de compromiso en el marco de la componibilidad universal (UC). La razón es que el compromiso de la UC tiene que ser extraíble , como lo muestran 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 confirmador C envía el valor m a F , que lo almacena y envía el "recibo" al receptor R. Más tarde, C envía "abierto" 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 la UC, eso esencialmente significa que C ahora está controlado por el entorno, que intenta distinguir la ejecución del protocolo del proceso ideal. Considere un entorno que elige un mensaje m y luego le dice a C que actúe según lo prescrito por π , como si se hubiera comprometido con m . Tenga en cuenta 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 sólo 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, S no conoce m . 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 emita el recibo.

Sin embargo, un protocolo que sea extraíble en este sentido no puede ocultarse estadísticamente. Supongamos que existe tal simulador S. Ahora considere 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.

Inicialmente, el entorno le dice a C que se comprometa con un mensaje m . En algún momento de la interacción, S se comprometerá con un valor m′ . Este mensaje se entrega a R , quien genera m′ . Tenga en cuenta que, por suposición, tenemos m' = m con alta probabilidad. Ahora, en el proceso ideal, el simulador tiene que generar 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". Tenemos entonces una contradicción.

Construcción

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

Compromiso de bits en el modelo de Oracle aleatorio

Los esquemas de compromiso de bits son triviales de construir en el modelo de Oracle aleatorio . Dada una función hash H con una salida de 3 k bits, para confirmar el mensaje m de k bits , 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 conjetura sobre el mensaje m Bob Tendrá que realizar 2 k (para una conjetura incorrecta) o 2 k -1 (en promedio, para una conjetura correcta) al oráculo aleatorio. [16] Observamos que los esquemas anteriores basados ​​en funciones hash, esencialmente pueden pensarse en esquemas basados ​​en la idealización de estas funciones hash como un oráculo aleatorio.

Compromiso de bits 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 puede modificarse (a través del teorema de Goldreich-Levin ) para poseer un predicado computacionalmente básico (manteniendo la propiedad inyectiva).

Sea f una función inyectiva unidireccional, con h un predicado fundamental. 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 descommitir, Alice simplemente envía x a Bob. Bob lo verifica calculando f ( x ) y comparándolo con el valor comprometido. Este esquema es oculto porque para que Bob recupere b debe recuperar h ( x ). Dado que h es un predicado computacionalmente fundamental, 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 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 una función unidireccional, esta sección reduce la solidez del supuesto criptográfico necesario para construir un protocolo de compromiso de bits.

En 1991, Moni Naor mostró 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 de n bits a 3 n bits, entonces si Alice quiere comprometerse con un bit b :

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

Este esquema es estadísticamente vinculante, lo que significa que incluso si Alice es computacionalmente ilimitada, no puede hacer trampa con una probabilidad mayor que 2 n . Para que Alice haga trampa, necesitaría encontrar una Y' , tal que G ( Y' ) = G ( Y ) R. Si pudiera encontrar ese valor, podría liberarse 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 selecciona entre 2 3 n valores. Ella no elige R , por lo que existe una probabilidad de 2 2 n /2 3 n = 2 n de que exista una Y' que satisfaga la ecuación requerida para hacer trampa.

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

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

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

Alice elige aleatoriamente un valor secreto x de 0 a p  − 1 para comprometerse 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 de logaritmos discretos . De hecho, este esquema no se esconde en absoluto con respecto al juego de ocultamiento estándar, donde un adversario no debería poder adivinar cuál de los dos mensajes que eligió estaba comprometido, 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 se ocultaría.

Un mejor ejemplo de un esquema de compromiso perfectamente vinculante es aquel en el que el compromiso es el cifrado de x bajo un esquema de cifrado de clave pública semánticamente seguro y con perfecta integridad, y el descompromiso es la cadena de bits aleatorios utilizados para cifrar x . Un ejemplo de un esquema de compromiso que teóricamente oculta información 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 está fijado . [20]

Estas construcciones están estrechamente relacionadas y basadas en las propiedades algebraicas de los grupos subyacentes, 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 supuestos generales no estructurados, a través de la noción de hash interactivo para compromisos a partir de supuestos de complejidad general (específica y originalmente, basados ​​en cualquier permutación unidireccional), como en [21] .

Un esquema de compromiso perfectamente oculto basado en RSA

Alice selecciona tal que , donde y son números primos secretos grandes. Además, selecciona un primo tal que y . Luego, Alice 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 y luego calculando .

La seguridad del compromiso anterior depende de la dureza del problema RSA y tiene un ocultamiento perfecto y vinculación 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 la suma 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 con un nuevo mensaje , se debe agregar 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 con .

revelación parcial

Algunos sistemas de compromiso permiten que se presente prueba sólo de una parte del valor comprometido. En estos esquemas, el valor secreto es un vector de muchos valores separables individualmente.

El compromiso se calcula desde la fase de compromiso. Normalmente, en la fase de revelación, el probador revelaría todos y algunos datos de prueba adicionales (como en el compromiso de bits simple). En cambio, el probador puede revelar cualquier valor único del vector y crear una prueba eficiente de que es el elemento auténtico del vector original que creó el compromiso . La prueba no requiere ningún otro valor que el que debe ser revelado, y es imposible crear pruebas válidas que revelen valores diferentes para cualquiera de ellos que el verdadero. [24]

Hash vectorial

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

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

El verificador puede calcular desde 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 es en tamaño y la prueba es en tamaño y tiempo de verificación. De cualquier manera, el compromiso o la prueba aumentan con lo que 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 a partir de los elementos de . Este esquema crea compromisos de tamaño y pruebas de tamaño y tiempo de verificación. El hash raíz del árbol es el compromiso . Para demostrar que lo revelado es parte del árbol original, solo se deben revelar como prueba los valores hash del árbol, uno de cada nivel. El verificador puede seguir la ruta desde el nodo hoja reclamado hasta la raíz, aplicando hash en los nodos hermanos en cada nivel y, finalmente, llegando a un valor de nodo raíz que debe ser igual a . [25]

Compromiso KZG

Un compromiso Kate-Zaverucha-Goldberg utiliza criptografía basada en emparejamientos para crear 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 el número de valores en , los compromisos y las pruebas no aumentan, y las pruebas no requieren más esfuerzo para verificar.

Un compromiso de KZG requiere un conjunto predeterminado de parámetros para crear un emparejamiento y un elemento de trampilla confiable. Por ejemplo, se puede utilizar una pareja Tate . Supongamos que son los grupos aditivos y es el grupo multiplicativo del emparejamiento. En otras palabras, el binomio es el mapa . Sea el elemento 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, asumimos que y son valores conocidos y compartidos para muchos valores enteros positivos arbitrarios 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 a comprometer 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.

Bajo 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 polinomiales . Dado que es un grupo aditivo con asociatividad y conmutatividad, es igual a simplemente , ya que todas las sumas y multiplicaciones con se pueden distribuir fuera de la evaluación. Dado que se desconoce el valor de la trampilla , el compromiso es esencialmente el polinomio evaluado en un número que nadie conoce, con el resultado confuso en un elemento opaco de .

Revelar

Una prueba KZG debe demostrar que los datos revelados son el valor auténtico de cuando fueron calculados. Sea , el valor revelado que debemos probar. Dado que el vector de fue reformulado en un polinomio, realmente necesitamos demostrar que el polinomio , cuando se evalúa en toma el valor . Simplemente, sólo tenemos que demostrarlo . Haremos esto demostrando que al restar de se obtiene 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 , entonces (o, en otras palabras, ). La prueba KZG demostrará que existe y tiene esta propiedad.

El probador calcula mediante la división polinómica anterior y luego calcula el valor de prueba KZG.

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

Este cálculo solo es posible si los polinomios anteriores fueran divisibles, 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, sólo evaluar un polinomio utilizando combinaciones lineales de las constantes conocidas precalculadas de . Por eso es imposible crear una prueba de 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 se dividió uniformemente por . El cálculo de verificación verifica la igualdad.

¿Dónde está 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 , sustituirlo en y y dejar que sea una función auxiliar para ingresar al grupo de emparejamiento, la verificación de la prueba es más clara.

Suponiendo que el mapa bilineal está construido válidamente, esto demuestra que , sin que el validador sepa qué son . El validador puede estar seguro de esto porque si , entonces los polinomios se evalúan con 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 un polinomio divisible por , por lo que se debe al teorema del factor . Esto prueba que el ésimo valor 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 denomina problema de logaritmo discreto de curva elíptica , y este supuesto es también lo que evita que se calcule el valor de la trampilla, lo que lo convierte también en una base de los compromisos de KZG. En ese caso, queremos comprobar 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 su lugar, utilizamos un emparejamiento para evitar este problema. todavía se multiplica por para obtener , pero el otro lado de la multiplicación se realiza en el grupo emparejado , entonces, . Calculamos , que, debido a la bilinealidad del mapa, 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 , evitando cualquier contradicción con el logaritmo discreto anterior. Sin embargo , este valor se puede comparar con , y si somos capaces de concluir que , sin saber nunca cuál es el valor real de, y mucho menos .

Además, un compromiso KZG se puede ampliar 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 esas mismas ubicaciones. [26]

Compromiso de bits cuánticos

Es una pregunta interesante en criptografía cuántica si existen protocolos de compromiso de bits incondicionalmente seguros a nivel cuántico, es decir, protocolos que sean (al menos asintóticamente) vinculantes y ocultos incluso si no hay restricciones en los recursos computacionales. Se podría esperar que hubiera 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 segura .

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

Una suposición sutil de la prueba es que la fase de confirmación debe finalizar en algún momento. Esto deja espacio para protocolos que requieren un flujo de información continuo hasta que se revela el bit o se cancela el protocolo, en cuyo caso ya no es vinculante. [28] De manera más general, la prueba de Mayers se aplica sólo 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 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. Los PUF electrónicos, ópticos y de otro tipo [30] se han discutido ampliamente en la literatura, en relación con sus posibles aplicaciones criptográficas, incluidos los esquemas de compromiso. [31] [32]

Ver también

Referencias

  1. ^ Oded Goldreich (2001). Fundamentos de la criptografía : Volumen 1, Herramientas básicas. Prensa de la Universidad de Cambridge. ISBN  0-521-79172-3 . : 224 
  2. ^ Gilles Brassard, David Chaum y Claude Crépeau, Pruebas de conocimiento de divulgación mínima , Journal of Computer and System Sciences, vol. 37, págs. 156–189, 1988.
  3. ^ Goldreich, Oded; Micali, Silvio; Wigderson, Avi (1991). "Pruebas que no arrojan 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. CRIPTO 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. ^ ab Claude Crépeau, Laboratorio de compromiso , 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, Lanzamiento de monedas por teléfono , Actas de CRYPTO 1981, págs. 11-15, 1981, reimpreso en SIGACT News vol. 15, págs. 23-27, 1983, Escuela de Ciencias de la Computación Carnegie Mellon .
  8. ^ Shimon incluso. Protocolo de firma de contratos. En Allen Gersho , ed., Advances in Cryptography (actas de CRYPTO '82), págs. 148-153, Santa Bárbara, 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. Wadsworth, Belmont, California, 1981. 
  10. ^ Oded Goldreich , Silvio Micali y Avi Wigderson , Pruebas que no arrojan 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. ^ Genaro; Rosario; Rabin, Michael O.; Rabin, Tal. "VSS simplificado y cálculos multipartitos acelerados con aplicaciones para umbralizar la criptografía". Actas del decimoséptimo simposio anual de ACM sobre principios de informática 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), Solución intermedia, 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). "Intercambio de secretos verificables, seguros, no interactivos y teóricos de la información". Avances en criptología - CRYPTO '91 . Apuntes de conferencias sobre informática. vol. 576. Berlín, Heidelberg: Springer Berlín Heidelberg. págs. 129-140. doi :10.1007/3-540-46766-1_9. ISBN 978-3-540-55188-1.
  19. ^ Metro, Roberto; Dong, Changyu (2017). "Análisis criptográfico automatizado del esquema de compromiso de Pedersen". Conferencia internacional sobre métodos, modelos y arquitecturas matemáticas para la seguridad de redes informáticas . Saltador. págs. 275–287.
  20. ^ Tang, Chunming; Pei, Dingyi; Liu, Zhuojun; Él, Yong (16 de agosto de 2004). "Pedersen: intercambio de secretos verificable, seguro, no interactivo y teórico de la información" (PDF) . Archivo ePrint 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 perfectos de conocimiento cero para NP utilizando cualquier permutación unidireccional. J. Criptología 11(2): 87-108 (1998)[1]
  22. ^ Menezes, Alfred J; Van Oorschot, Paul C; Vanstone, Scott A (2018). Manual de criptografía aplicada . Prensa CRC.
  23. ^ Mouris, Dimitris; Tsoutsos, Nektarios Georgios (26 de enero de 2022). "Mascarada: agregación multipartidista verificable con compromisos multiplicativos seguros" (PDF) . Archivo ePrint de criptología .
  24. ^ Catalano, Darío; Fiore, Darío (2013). "Compromisos vectoriales y sus aplicaciones". Criptografía de clave pública - PKC 2013 . Apuntes de conferencias sobre informática. vol. 7778. Springer Berlín Heidelberg. págs. 55–72. doi :10.1007/978-3-642-36362-7_5. ISBN 978-3-642-36362-7. Catalano, Darío; Fiore, Darío (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, Gregorio; Goldberg, Ian (2010). "Compromisos de tamaño constante con polinomios y sus aplicaciones" (PDF) . Congreso Internacional sobre Teoría y Aplicación de la Criptología y Seguridad de la Información .
  27. ^ Brassard, Crépeau, Mayers, Salvail: una breve reseña 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 bits incondicionalmente seguros". Física. 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; Joven, Robert J. (12 de febrero de 2019). "Una taxonomía de PUF". Revisiones de Física Aplicada . 6 (1): 011303. Código bibliográfico : 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 compromiso de bits y transferencia ajena". Revista de ingeniería criptográfica . 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". Óptica Express . 27 (20): 29367–29379. arXiv : 1909.13094 . Código Bib : 2019OExpr..2729367N. doi :10.1364/OE.27.029367. ISSN  1094-4087. PMID  31684673. S2CID  203593129.

enlaces externos