En criptografía , una transformación de todo o nada ( AONT ), también conocida como protocolo de todo o nada , es un modo de cifrado que permite comprender los datos solo si se conocen todos. Las AONT no son cifrado, pero con frecuencia hacen uso de cifrados simétricos y pueden aplicarse antes del cifrado. En términos exactos, "una AONT es una transformación aleatoria invertible y sin clave, con la propiedad de que es difícil de invertir a menos que se conozca toda la salida". [1]
El AONT original, la transformación de paquete , fue descrito por Ronald L. Rivest en su artículo de 1997 "All-Or-Nothing Encryption and The Package Transform". [2] La transformación que propuso Rivest implicaba preprocesar el texto simple mediante la operación XOR de cada bloque de texto simple con el índice de ese bloque cifrado por una clave elegida aleatoriamente, y luego agregar un bloque adicional calculado mediante la operación XOR de esa clave aleatoria y los hashes de todos los bloques preprocesados. El resultado de este preprocesamiento se denomina pseudomensaje y sirve como entrada para el algoritmo de cifrado. Deshacer la transformación de paquete requiere realizar un hash de cada bloque del pseudomensaje excepto el último, realizar una operación XOR de todos los hashes con el último bloque para recuperar la clave aleatoria y luego usar la clave aleatoria para convertir cada bloque preprocesado nuevamente en su bloque de texto simple original. De esta manera, es imposible recuperar el texto simple original sin tener primero acceso a cada bloque del pseudomensaje.
Aunque el artículo de Rivest solo proporcionó una descripción detallada de la transformación de paquetes tal como se aplica al modo CBC , se puede implementar utilizando un cifrado en cualquier modo . Por lo tanto, existen múltiples variantes: la transformación de paquetes ECB , la transformación de paquetes CBC, etc.
En 1999, Victor Boyko propuso otro AONT, demostrablemente seguro bajo el modelo de oráculo aleatorio . [1]
Aparentemente casi al mismo tiempo, DR Stinson propuso una implementación diferente de AONT, sin ningún supuesto criptográfico. [3] Esta implementación es una transformación lineal, lo que quizás resalta alguna debilidad de seguridad de la definición original.
Los AONT se pueden utilizar para aumentar la solidez del cifrado sin aumentar el tamaño de la clave. Esto puede resultar útil, por ejemplo, para proteger secretos y cumplir con las normas gubernamentales de exportación de criptografía . Los AONT ayudan a prevenir varios ataques.
Una de las formas en que los AONT mejoran la fortaleza del cifrado es evitando que los ataques que revelan solo una parte de la información revelen algo, ya que la información parcial no es suficiente para recuperar nada del mensaje original.
Otra aplicación, sugerida en los artículos originales, es la de reducir el coste de la seguridad: por ejemplo, un archivo puede ser procesado por AONT y, luego, solo una pequeña parte del mismo puede ser encriptada (por ejemplo, en una tarjeta inteligente). AONT garantizará que, como resultado, todo el archivo esté protegido. Es importante utilizar la versión más fuerte de la transformación (como la de Boyko mencionada anteriormente).
La AONT se puede combinar con la corrección de errores hacia adelante para producir un esquema de intercambio de secretos computacionalmente seguro . [4]
Se pueden encontrar otros usos de AONT en el relleno de cifrado asimétrico óptimo (OAEP).