El circuito ilegible es un protocolo criptográfico que permite el cálculo seguro entre dos partes , en el que dos partes que desconfían pueden evaluar conjuntamente una función sobre sus entradas privadas sin la presencia de un tercero de confianza. En el protocolo de circuito ilegible, la función debe describirse como un circuito booleano .
La historia de los circuitos ilegibles es complicada. La invención del circuito ilegible se le atribuye a Andrew Yao , ya que Yao presentó la idea en la presentación oral de un artículo [1] en FOCS '86. Esto fue documentado por Oded Goldreich en 2003. [2] El primer documento escrito sobre esta técnica fue de Goldreich, Micali y Wigderson en STOC '87. [3] El término "circuito ilegible" fue utilizado por primera vez por Beaver, Micali y Rogaway en STOC'90. [4] El protocolo de Yao para resolver el problema de los millonarios fue el ejemplo inicial de computación segura, pero no está directamente relacionado con los circuitos ilegibles.
En el protocolo de circuito ilegible, utilizamos la transferencia inconsciente . En la transferencia inconsciente, se transfiere una cadena entre un emisor y un receptor de la siguiente manera: un emisor tiene dos cadenas y . El receptor elige y el emisor envía con el protocolo de transferencia inconsciente de tal manera que
Tenga en cuenta que, si bien el receptor no conoce los valores, en la práctica conoce cierta información sobre lo que codifica, de modo que no elige a ciegas . Es decir, si codifica un valor falso, codifica un valor verdadero y el receptor desea obtener el valor verdadero codificado, elige .
La transferencia inconsciente se puede construir utilizando criptografía asimétrica como el criptosistema RSA .
El operador es una concatenación de cadenas . El operador es un XOR bit a bit . k es un parámetro de seguridad y la longitud de las claves. Debe ser mayor que 80 y normalmente se establece en 128.
El protocolo consta de 6 pasos como se detalla a continuación:
El circuito booleano para funciones pequeñas se puede generar a mano. Es convencional hacer el circuito con puertas XOR y AND de 2 entradas . Es importante que el circuito generado tenga el número mínimo de puertas AND (ver Optimización XOR libre). Hay métodos que generan el circuito optimizado en términos de número de puertas AND utilizando la técnica de síntesis lógica . [5] El circuito para el Problema de los Millonarios es un circuito comparador digital (que es una cadena de sumadores completos que funcionan como un restador y emiten el indicador de acarreo ). Se puede implementar un circuito sumador completo utilizando solo una puerta AND y algunas puertas XOR . Esto significa que el número total de puertas AND para el circuito del Problema de los Millonarios es igual al ancho de bits de las entradas.
Alice (garbler) encripta el circuito booleano en este paso para obtener un circuito ilegible . Alice asigna dos cadenas generadas aleatoriamente llamadas etiquetas a cada cable del circuito: una para el 0 semántico booleano y otra para el 1. (La etiqueta tiene una longitud de k bits, donde k es el parámetro de seguridad , y normalmente se establece en 128). A continuación, va a todas las puertas del circuito y reemplaza 0 y 1 en las tablas de verdad con las etiquetas correspondientes. La siguiente tabla muestra la tabla de verdad para una puerta AND con dos entradas y una salida :
Alice reemplazó 0 y 1 con las etiquetas correspondientes:
Luego, encripta la entrada de salida de la tabla de verdad con las dos etiquetas de entrada correspondientes. La tabla encriptada se llama tabla ilegible. Esto se hace de tal manera que uno puede desencriptar la tabla ilegible solo si tiene las dos etiquetas de entrada correctas. En la tabla a continuación, hay un cifrado simétrico de doble clave en el que k es la clave secreta y X es el valor que se va a encriptar (ver Cifrado en bloque de clave fija).
Después de esto, Alice permuta aleatoriamente la tabla de modo que el valor de salida no se pueda determinar a partir de la fila. El nombre del protocolo, garbled , se deriva de esta permutación aleatoria.
Alice envía las tablas ilegibles calculadas para todas las puertas del circuito a Bob. Bob necesita etiquetas de entrada para abrir las tablas ilegibles. Por lo tanto, Alice elige las etiquetas correspondientes a su entrada y se las envía a Bob. Por ejemplo, si la entrada de Alice es , entonces envía , , , y a Bob. Bob no aprenderá nada sobre la entrada de Alice, , ya que Alice genera aleatoriamente las etiquetas y Bob las ve como cadenas aleatorias.
Bob también necesita las etiquetas correspondientes a su entrada. Recibe sus etiquetas a través de transferencias inconscientes para cada bit de su entrada. Por ejemplo, si la entrada de Bob es , Bob primero solicita entre las etiquetas de Alice y . A través de una transferencia inconsciente de 1 de cada 2 , recibe y así sucesivamente. Después de las transferencias inconscientes , Alice no aprenderá nada sobre la entrada de Bob y Bob no aprenderá nada sobre las otras etiquetas.
Después de la transferencia de datos, Bob tiene las tablas ilegibles y las etiquetas de entrada. Pasa por todas las puertas una por una e intenta descifrar las filas en las tablas ilegibles. Puede abrir una fila para cada tabla y recuperar la etiqueta de salida correspondiente: , donde . Continúa la evaluación hasta que llega a las etiquetas de salida.
Después de la evaluación, Bob obtiene la etiqueta de salida, y Alice conoce su correspondencia con el valor booleano, ya que tiene ambas etiquetas: y . Alice puede compartir su información con Bob o Bob puede revelar la salida a Alice de modo que uno o ambos conozcan la salida.
En esta optimización, Alice genera un bit aleatorio, , llamado bit de selección para cada cable . Establece el primer bit de la etiqueta 0, en y el primer bit de la etiqueta 1, , en ( NO de ). Hace lo mismo para el cable . Luego, en lugar de permutar aleatoriamente, ordena la tabla ilegible según los bits de selección de entrada. De esta manera, Bob no necesita probar las cuatro filas de la tabla para encontrar la correcta, ya que recibe los bits de puntero con cada etiqueta de cable y puede encontrar la fila correcta y descifrarla con un intento. Esto reduce la carga de evaluación en 4 veces. Tampoco revela nada sobre el valor de salida porque los bits de selección se generan aleatoriamente. [6]
Esta optimización reduce el tamaño de las tablas ilegibles de 4 filas a 3 filas. Aquí, en lugar de generar una etiqueta para el cable de salida de una compuerta de forma aleatoria, Alice la genera utilizando una función de las etiquetas de entrada. Genera las etiquetas de salida de modo que la primera entrada de la tabla ilegible se convierta en 0 y ya no sea necesario enviarla: [7]
En esta optimización, Alice genera un valor aleatorio global de (k-1) bits que se mantiene en secreto. Durante la codificación de las puertas de entrada y , solo genera las etiquetas y calcula las otras etiquetas como y . Con estos valores, la etiqueta del cable de salida de una puerta XOR con cables de entrada , se establece en . La prueba de seguridad en el modelo de oráculo aleatorio para esta optimización se proporciona en el artículo Free-XOR. [8]
La optimización XOR libre implica un punto importante: la cantidad de transferencia de datos (comunicación) y la cantidad de cifrados y descifrados (cálculos) del protocolo de circuito ilegible dependen únicamente del número de puertas AND en el circuito booleano , no de las puertas XOR . Por lo tanto, entre dos circuitos booleanos que representan la misma función, se prefiere el que tenga el menor número de puertas AND.
Este método permite codificar y evaluar de manera eficiente las puertas AND utilizando AES de clave fija , en lugar de una costosa función hash criptográfica como SHA-2 . En este esquema de codificación, que es compatible con las técnicas Free XOR y Row Reduction, la clave de salida se cifra con el token de entrada y utilizando la función de cifrado , donde , es un cifrado de bloque de clave fija (por ejemplo, instanciado con AES ), y es un número único por puerta (por ejemplo, identificador de puerta) llamado tweak . [9]
Esta optimización reduce el tamaño de la tabla ilegible para las puertas AND de 3 filas en la reducción de filas a 2 filas. Se demuestra que este es el mínimo teórico para la cantidad de filas en la tabla ilegible, para una cierta clase de técnicas de ilegibilidad. [10]
El circuito de Yao Garbled es seguro contra un adversario semihonesto. Este tipo de adversario sigue el protocolo y no realiza ningún comportamiento malicioso, pero intenta violar la privacidad de la entrada de la otra parte al examinar los mensajes transmitidos en el protocolo.
Es más difícil hacer que este protocolo sea seguro contra un adversario malicioso que se desvíe del protocolo. Una de las primeras soluciones para hacer que el protocolo sea seguro contra adversarios maliciosos es usar una prueba de conocimiento cero para evitar actividades maliciosas durante el protocolo. [11] Durante años, este enfoque se consideró más una solución teórica que una solución práctica debido a los costos de complejidad que implica. Pero se ha demostrado que es posible usarlo con solo un pequeño costo. [12] Otro enfoque es usar varios GC para un circuito y verificar la corrección de un subconjunto de ellos y luego usar el resto para el cálculo con la esperanza de que si el ilegible fuera malicioso, se detectaría durante la fase de verificación. [13] Otra solución es hacer que el esquema de ilegible sea autenticado de modo que el evaluador pueda verificar el circuito ilegible. [14] [15]