La noción de códigos no maleables fue introducida en 2009 por Dziembowski, Pietrzak y Wichs, [ 1 ] para flexibilizar la noción de corrección y detección de errores . De manera informal, un código es no maleable si el mensaje contenido en una palabra clave modificada es el mensaje original o un valor completamente diferente. Los códigos no maleables proporcionan una garantía de seguridad útil y significativa en situaciones donde la corrección y detección de errores tradicionales son imposibles; por ejemplo, cuando el atacante puede sobrescribir completamente el mensaje codificado. Si bien tales códigos no existen si la familia de " funciones de manipulación " F es completamente ilimitada, se sabe que existen para muchas familias de manipulación amplias F.
Fondo
Experimento de manipulación
Para conocer el esquema de funcionamiento del código no maleable, debemos comprender el experimento básico en el que se basa. A continuación, se describe el método de tres pasos para realizar un experimento de manipulación .
- Un mensaje de origense codifica mediante un procedimiento (posiblemente aleatorio), lo que produce una palabra clave=.
- La palabra clave se modifica mediante alguna función de manipulación.a una palabra clave errónea=.
- La palabra clave errónease decodifica mediante un procedimientolo que da como resultado un mensaje decodificado =.
El experimento de manipulación puede utilizarse para modelar varios escenarios interesantes del mundo real, como la transmisión de datos a través de un canal ruidoso o la manipulación maliciosa de datos almacenados en la memoria de un dispositivo físico. Con esta base experimental, nos gustaría desarrollar procedimientos especiales de codificación/decodificación., que nos brindan algunas garantías significativas sobre los resultados del experimento de manipulación mencionado anteriormente, para familias grandes e interesantes.de funciones de manipulación. A continuación se presentan varias posibilidades para el tipo de garantías que podemos esperar. [ 2 ]
Corrección de errores
Una garantía muy natural, denominada corrección de errores , consistiría en exigir que, para cualquier función de manipulación y cualquier mensaje fuente s , el experimento de manipulación siempre produzca el mensaje decodificado correcto. . [ 3 ]
Detección de errores
Una garantía más débil, denominada detección de errores , requiere que el experimento de manipulación siempre dé como resultado el valor correcto.o un símbolo especiallo que indica que se ha detectado manipulación. Esta noción de detección de errores es una garantía más débil que la corrección de errores, y se puede lograr para funciones de manipulación F más grandes.
Descripción del algoritmo
Un código no maleable garantiza que el experimento de manipulación dé como resultado un mensaje decodificado correcto. o el mensaje decodificadoes completamente independiente y no guarda relación con el mensaje de origen.En otras palabras, la noción de no maleabilidad para códigos es similar, en espíritu, a las nociones de no maleabilidad para primitivas criptográficas (como el cifrado2, los compromisos y las pruebas de conocimiento cero ), introducidas por el trabajo fundamental de Dolev, Dwork y Naor. [ 4 ]
En comparación con la corrección de errores o la detección de errores , la formalización "correcta" de los códigos no maleables es algo más difícil de definir.sea una variable aleatoria para el valor del mensaje decodificado, que resulta cuando ejecutamos el experimento de manipulación con el mensaje fuente.y función de manipulación, sobre la aleatoriedad del procedimiento de codificación. Intuitivamente, queremos decir que la distribución dees independiente del mensaje codificado. Por supuesto, también queremos contemplar el caso en que el experimento de manipulación dé como resultado(por ejemplo, si la función de manipulación es identidad), que claramente depende de.
Por lo tanto, requerimos que para cada función de manipulación, existe una distribuciónque produce valores concretoso un mismo especialsímbolo, y modela fielmente la distribución dea pesar deen el siguiente sentido: para cada mensaje fuente, las distribuciones deyson estadísticamente cercanos cuando elEl símbolo se interpreta como. Eso es,simula correctamente el "resultado" del experimento de manipulación con una funciónsin conocer los mensajes de origenpero se permite cierta ambigüedad al generar un mismo resultado.símbolo para indicar que el mensaje decodificado debe ser el mismo que el mensaje fuente, sin especificar cuál es el valor exacto. El hecho de quedepende únicamente dey no en, muestra que el resultado dees independiente de, exceptuando la igualdad.
Relación con la corrección/detección de errores
Nótese que la no maleabilidad es una garantía más débil que la corrección/detección de errores; esta última asegura que cualquier cambio en la palabra clave pueda corregirse o al menos detectarse mediante el procedimiento de decodificación, mientras que la primera permite que el mensaje se modifique, pero solo a un valor no relacionado. Sin embargo, al estudiar la corrección/detección de errores, generalmente nos restringimos a formas limitadas de manipulación que preservan alguna noción de distancia (por ejemplo, generalmente la distancia de Hamming ) entre la palabra clave original y la manipulada. Por ejemplo, ya es imposible lograr la corrección/detección de errores para la familia simple de funciones.que, para cada constanteincluye una función " constante "que asigna todas las entradas a. Siempre hay alguna función enque asigna todo a una palabra clave válidaPor el contrario, es trivial construir códigos que no sean maleables con respecto a, ya que la salida de una función constante es claramente independiente de su entrada. Los trabajos previos sobre códigos no maleables muestran que se pueden construir códigos no maleables para familias de funciones de manipulación altamente complejas.para los cuales no se puede lograr la corrección/detección de errores. [ 1 ]
Aplicación sobre funciones de manipulación
Manipulación independiente bit a bit
Como ejemplo muy concreto, estudiamos la no maleabilidad con respecto a la familia de funciones.que especifican, para cada bit de la palabra clave, ya sea mantenerlo como está, invertirlo, establecerlo a 0, establecerlo a 1. Es decir, cada bit de la palabra clave se modifica arbitrariamente pero independientemente del valor de los demás bits de la palabra clave. A esto lo llamamos la familia de "manipulación independiente bit a bit".Nótese que esta familia contiene funciones constantes.y funciones de error constantecomo subconjuntos. Por lo tanto, como ya hemos mencionado, no es posible lograr la corrección ni la detección de errores con respecto a esta familia. Sin embargo, a continuación se muestra un código eficiente y no maleable para esta potente familia.
ConDenotamos la familia que contiene todas las funciones de manipulación que manipulan cada bit de forma independiente. Formalmente, esta familia contiene todas las funciones que se definen mediante n funciones(para i=1...n) comoTenga en cuenta que solo hay 4 opciones posibles para cada una.(es decir, cómo modificar un bit en particular) y los denominamos "establecer a 0", "establecer a 1", "invertir", "mantener", donde los significados deberían ser intuitivos. A esta familia la llamamos familia de manipulación independiente a nivel de bits.
Todas las familias de tamaño limitado
- Enfoque de método probabilístico
Para cualquier familia de funciones "suficientemente pequeña"Existe un esquema de codificación (posiblemente ineficiente) que no es maleable con respecto a F. Además, para una familia de funciones fija "suficientemente pequeña"Un esquema de codificación aleatoria probablemente no sea maleable con respecto a F con una probabilidad abrumadora. Desafortunadamente, los esquemas de codificación aleatoria no pueden representarse de manera eficiente, ni es probable que la función de codificación/decodificación sea eficiente. Por lo tanto, este resultado debe interpretarse simplemente como una muestra de "posibilidad" y un objetivo que debemos esforzarnos por alcanzar de manera constructiva. Además, este resultado también resalta la diferencia entre "corrección/detección de errores" y "no maleabilidad", ya que un resultado de esta forma no podría ser válido para las nociones anteriores.
- Enfoque del modelo de oráculo aleatorio
No está claro qué implica realmente la cota del teorema [ 4 ] de este tipo. Por ejemplo, nos dice que existen códigos no maleables con respecto a todas las funciones eficientes, pero esto es engañoso, ya que sabemos que los códigos no maleables eficientes (y en última instancia, solo nos interesan estos) no pueden ser no maleables con respecto a esta clase. Sin embargo, el resultado del método probabilístico sí nos proporciona códigos que son no maleables con respecto a clases muy generales de funciones en el modelo de oráculo aleatorio.
Modelo de seguridad resistente a manipulaciones
En este modelo, consideramos dos formas de interactuar con el sistema:
Ejecutar(): Un usuario puede proporcionar al sistema consultas Execute(x), para, en cuyo caso el sistema calculaactualiza el estado del sistema ay resultados.
Manosear() : También consideramos los ataques de manipulación contra el sistema, modelados por Tamper(comandos, para funciones. Al recibir dicho comando, el estado del sistema se establece en.
Un atacante que también puede interactuar con el sistema a través de consultas Tamper puede potencialmente obtener mucha más información sobre el estado secreto, incluso recuperarlo por completo. Por lo tanto, nos gustaría tener un método general para proteger los sistemas contra ataques de manipulación, de modo que la capacidad de emitir consultas Tamper (al menos para funciones f en alguna familia grande)) no puede proporcionar al atacante información adicional. Al utilizar código no maleable para este propósito, llegamos a la conclusión: Seaser cualquier esquema de codificación que no sea maleable con respecto a, entoncesTambién se puede simular manipulación con respecto a.
Capacidad de los códigos no maleables
- Para cada familiacon, existen códigos no maleables contracon una tasa arbitrariamente cercana a 1 −(esto se logra mediante una construcción aleatoria). [ 5 ]
- Para familias de tamañofrente al cual no existe un código no maleable de tasa 1 −(de hecho, este es el caso en la práctica para una familia aleatoria de este tamaño).
- 1 −es la mejor tasa alcanzable para la familia de funciones a las que solo se les permite manipular la primerafragmentos de la palabra clave, lo cual reviste especial interés.
Referencias
- ^ Dziembowski , Stefan; Pietrzak, Krzysztof; Wichs, Daniel (2018). "Códigos no maleables". J. ACM . 65 (4): 20:1–20:32. doi : 10.1145/3178432 .Véase también la versión preliminar, Cryptology ePrint Archive, documento 2009/608.
- ↑ Faust, Sebastian; Mukherjee, Pratyay; Venturi, Daniele; Wichs, Daniel (2014). «Códigos no maleables eficientes y derivación de claves para circuitos de manipulación de tamaño poligonal». Avances en criptología – EUROCRYPT 2014 (PDF) . Notas de clase en ciencias de la computación. Vol. 8441. págs. 111–128 . doi : 10.1007/978-3-642-55220-5_7 . ISBN 978-3-642-55219-9.
- ↑ E. Shannon, Claude (1949). "Teoría de la comunicación de los sistemas de secreto". Bell System Technical Journal . 28 (4): 656– 715. doi : 10.1002/j.1538-7305.1949.tb00928.x . hdl : 10338.dmlcz/119717 .
- 1 2 Dolev, Danny; Dwork, Cynthia; Moni, Naor (24 de marzo de 2000). "Criptografía no maleable". SIAM Journal on Computing . 30 (2): http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=9A853A59C3A45DD1B67690F10232D635?doi=10.1.1.26.8267&rep=rep1&type=pdf . CiteSeerX 10.1.1.49.4643 . doi : 10.1137/s0097539795291562 .
- ^ Cheraghchi, Mahdi; Guruswami, Venkatesan (2 de septiembre de 2013). "Capacidad de Códigos No Maleables". arXiv : 1309.0458 [ cs.IT ].
- Algoritmos