Código no maleable


La noción de códigos no maleables fue introducida en 2010 por Dziembowski, Pietrzak y Wichs, [1] para relajar la noción de corrección y detección de errores . De manera informal, un código no es maleable si el mensaje contenido en una palabra de código modificada es el mensaje original o un valor completamente no relacionado. Los códigos no maleables brindan una garantía de seguridad útil y significativa en situaciones en las que la corrección y detección de errores tradicionales es imposible; por ejemplo, cuando el atacante puede sobrescribir completamente el mensaje codificado. Aunque tales códigos no existen si la familia de " manipulaciónfunciones" F no tiene restricciones, se sabe que existen para muchas familias amplias de manipulación F.

Para conocer el esquema de funcionamiento del código no maleable, tenemos que tener un conocimiento del experimento básico en el que se basa. El siguiente es el método de tres pasos del experimento de manipulación .

El experimento de manipulación se puede utilizar para modelar varias configuraciones interesantes del mundo real, como datos transmitidos a través de un canal ruidoso o manipulación adversaria de datos almacenados en la memoria de un dispositivo físico. Teniendo esta base experimental, nos gustaría construir procedimientos especiales de codificación/descodificación , que nos den algunas garantías significativas sobre los resultados del experimento de manipulación anterior, para familias grandes e interesantes de funciones de manipulación. Las siguientes son varias posibilidades para el tipo de garantías que podemos esperar. [2]

Una garantía muy natural, llamada corrección de errores , sería exigir que para cualquier función de manipulación y cualquier mensaje fuente , el experimento de manipulación siempre produzca el mensaje decodificado correcto . [3]

Una garantía más débil, llamada detección de errores , requiere que el experimento de manipulación siempre dé como resultado el valor correcto o un símbolo especial que indique que se ha detectado la 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 alcanzable para funciones de manipulación más grandes.

Un código no maleable garantiza que el experimento de manipulación resulte en un mensaje decodificado correcto o que el mensaje decodificado sea ​​completamente independiente y no esté relacionado con el mensaje de origen . En otras palabras, la noción de no maleabilidad de los códigos es similar, en espíritu, a las nociones de no maleabilidad de las primitivas criptográficas (como el cifrado2, los compromisos y las pruebas de conocimiento cero), introducidas por el trabajo seminal de Dolev, Dwork y Naor. [4]