El cifrado múltiple es el proceso de cifrar un mensaje ya cifrado una o más veces, ya sea utilizando el mismo algoritmo o uno diferente. También se conoce como cifrado en cascada , cifrado en cascada , cifrado múltiple y supercifrado . El supercifrado se refiere al cifrado de nivel externo de un cifrado múltiple.
Algunos criptógrafos, como Matthew Green de la Universidad Johns Hopkins, dicen que el cifrado múltiple resuelve un problema que en su mayoría no existe:
Los cifrados modernos rara vez se rompen... Es mucho más probable que sea atacado por malware o un error de implementación que sufrir un ataque catastrófico a AES.
— Cifrado múltiple, https://blog.cryptographyengineering.com/2012/02/02/multiple-encryption/ (2 de febrero de 2012)
Sin embargo, de la cita anterior se puede deducir un argumento a favor del cifrado múltiple, a saber, la mala implementación. El uso de dos módulos criptográficos y procesos de codificación diferentes de dos proveedores diferentes requiere que los productos de ambos proveedores se vean comprometidos para que la seguridad falle por completo.
Si se eligen dos cifrados cualesquiera , si la clave utilizada es la misma para ambos, el segundo cifrado podría deshacer el primero, en parte o en su totalidad. Esto es así en el caso de los cifrados en los que el proceso de descifrado es exactamente el mismo que el de cifrado (un cifrado recíproco ): el segundo cifrado desharía por completo el primero. Si un atacante recuperara la clave mediante el criptoanálisis de la primera capa de cifrado, podría descifrar todas las capas restantes, suponiendo que se utilice la misma clave para todas las capas.
Para evitar ese riesgo, se pueden utilizar claves que sean estadísticamente independientes para cada capa (por ejemplo, RNG independientes ).
Lo ideal sería que cada clave tuviera procesos de generación, compartición y gestión separados y diferentes.
En el caso de los procesos de encriptación y descifrado que requieren compartir un vector de inicialización (IV) o un nonce, estos suelen compartirse abiertamente o se dan a conocer al destinatario (y a todos los demás). Es una buena política de seguridad no proporcionar nunca los mismos datos en texto simple y en texto cifrado cuando se utiliza la misma clave y el mismo IV. Por lo tanto, se recomienda (aunque en este momento no hay evidencia específica) utilizar IV separados para cada capa de cifrado.
Con la excepción del block de un solo uso , no se ha demostrado teóricamente que ningún cifrado sea indescifrable. Además, se pueden encontrar algunas propiedades recurrentes en los textos cifrados generados por el primer cifrado. Dado que esos textos cifrados son los textos sin formato utilizados por el segundo cifrado, este último puede volverse vulnerable a ataques basados en propiedades de texto sin formato conocidas (consulte las referencias a continuación).
Este es el caso cuando la primera capa es un programa P que siempre agrega la misma cadena S de caracteres al principio (o al final) de todos los textos cifrados (comúnmente conocido como número mágico ). Cuando se encuentra en un archivo, la cadena S permite que un sistema operativo sepa que el programa P debe iniciarse para descifrar el archivo. Esta cadena debe eliminarse antes de agregar una segunda capa.
Para evitar este tipo de ataque, se puede utilizar el método proporcionado por Bruce Schneier : [1]
Un criptoanalista debe descifrar ambos códigos para obtener información. Sin embargo, esto tendrá el inconveniente de que el texto cifrado será el doble de largo que el texto simple original.
Sin embargo, es importante tener en cuenta que un primer cifrado débil puede hacer que un segundo cifrado que sea vulnerable a un ataque de texto simple elegido también sea vulnerable a un ataque de texto simple conocido . Sin embargo, un cifrado en bloque no debe ser vulnerable a un ataque de texto simple elegido para que se lo considere seguro. Por lo tanto, el segundo cifrado descrito anteriormente tampoco es seguro según esa definición. En consecuencia, ambos cifrados deben descifrarse. El ataque ilustra por qué se hacen suposiciones sólidas sobre los cifrados en bloque seguros y los cifrados que están parcialmente descifrados nunca deben usarse.
La regla de dos es un principio de seguridad de datos del Programa de Soluciones Comerciales para Información Clasificada (CSfC) de la NSA . [2] Especifica dos capas de criptografía completamente independientes para proteger los datos. Por ejemplo, los datos podrían protegerse tanto mediante cifrado de hardware en su nivel más bajo como mediante cifrado de software en la capa de aplicación. Podría implicar el uso de dos módulos criptográficos de software validados por FIPS de diferentes proveedores para encriptar o desencriptar los datos.
La importancia de la diversidad de proveedores y/o modelos entre las capas de componentes se centra en eliminar la posibilidad de que los fabricantes o modelos compartan una vulnerabilidad. De esta manera, si un componente se ve comprometido, sigue habiendo una capa completa de cifrado que protege la información en reposo o en tránsito. El programa CSfC ofrece soluciones para lograr la diversidad de dos maneras. "La primera es implementar cada capa utilizando componentes producidos por diferentes fabricantes. La segunda es utilizar componentes del mismo fabricante, siempre que dicho fabricante haya proporcionado a la NSA pruebas suficientes de que las implementaciones de los dos componentes son independientes entre sí". [3]
El principio se pone en práctica en el teléfono móvil seguro de la NSA llamado Fishbowl. [4] Los teléfonos utilizan dos capas de protocolos de cifrado, IPsec y Protocolo de transporte seguro en tiempo real (SRTP), para proteger las comunicaciones de voz. El Samsung Galaxy S9 Tactical Edition también es un componente CSfC aprobado.
La figura muestra desde dentro hacia fuera el proceso de formación de la cápsula cifrada en el contexto del Protocolo Echo, utilizado por la aplicación de software GoldBug Messenger. [5] GoldBug ha implementado un sistema híbrido de autenticidad y confidencialidad. [4]
Primera capa del cifrado: el texto cifrado del mensaje legible original se codifica y, posteriormente, las claves simétricas se cifran mediante la clave asimétrica (por ejemplo, utilizando el algoritmo RSA). En un paso intermedio, el texto cifrado y el resumen del hash del texto cifrado se combinan en una cápsula y se empaquetan juntos. Se sigue el enfoque: cifrar y luego MAC . Para que el receptor verifique que el texto cifrado no ha sido alterado, se calcula el resumen antes de descifrarlo.
Segunda capa de cifrado: opcionalmente, todavía es posible cifrar la cápsula de la primera capa además con un AES-256 , -comparable a una contraseña simétrica de 32 caracteres de longitud compartida por todos-. A continuación, se añade el cifrado híbrido al cifrado múltiple. [ cita requerida ]
Tercera capa de cifrado: A continuación, esta cápsula se transmite a través de una conexión segura SSL/TLS al socio de comunicación.