En criptografía , Triple DES ( 3DES o TDES ), oficialmente el Algoritmo de Cifrado de Datos Triple ( TDEA o Triple DEA ), es un cifrado de bloques de clave simétrica , que aplica el algoritmo de cifrado DES tres veces a cada bloque de datos. La clave de 56 bits del Estándar de Cifrado de Datos (DES) ya no se considera adecuada frente a las técnicas criptoanalíticas modernas y la potencia de la supercomputación; Triple DES aumenta la seguridad efectiva a 112 bits. Una CVE publicada en 2016, CVE-2016-2183 , reveló una importante vulnerabilidad de seguridad en los algoritmos de cifrado DES y 3DES. Esta CVE, combinada con el tamaño de clave inadecuado de 3DES, llevó a que el NIST desestimara 3DES en 2019 y prohibiera todos los usos (excepto el procesamiento de datos ya cifrados) para fines de 2023. [1] Ha sido reemplazado por el AES más seguro y más robusto .
Si bien los estándares del gobierno y de la industria de los EE. UU. abrevian el nombre del algoritmo como TDES (Triple DES) y TDEA (Triple Data Encryption Algorithm), [2] RFC 1851 se refirió a él como 3DES desde el momento en que promulgó la idea por primera vez, y desde entonces este homónimo ha sido ampliamente utilizado por la mayoría de los proveedores, usuarios y criptógrafos. [3] [4] [5] [6]
En 1978, Walter Tuchman propuso un método de cifrado triple utilizando DES con dos claves de 56 bits ; en 1981, Merkle y Hellman propusieron una versión de triple clave de 3DES más segura con 112 bits de seguridad. [7]
El algoritmo de triple cifrado de datos se define de diversas formas en varios documentos estándar:
El tamaño de clave del cifrado DES original , de 56 bits, se consideró generalmente suficiente cuando se diseñó, pero la disponibilidad de una mayor potencia computacional hizo que los ataques de fuerza bruta fueran factibles. El triple DES proporciona un método relativamente simple para aumentar el tamaño de clave de DES para protegerse contra tales ataques, sin la necesidad de diseñar un algoritmo de cifrado de bloques completamente nuevo.
Un enfoque ingenuo para aumentar la fuerza de un algoritmo de cifrado de bloques con una longitud de clave corta (como DES) sería utilizar dos claves en lugar de una y cifrar cada bloque dos veces: . Si la longitud de la clave original es de bits, se esperaría que este esquema proporcione una seguridad equivalente a utilizar una clave de bits de longitud. Desafortunadamente, este enfoque es vulnerable al ataque de encuentro en el medio : dado un par de texto simple conocido , tal que , se puede recuperar el par de claves en pasos, en lugar de los pasos que se esperarían de un algoritmo idealmente seguro con bits de clave.
Por lo tanto, Triple DES utiliza un "paquete de claves" que comprende tres claves DES , , y , cada una de 56 bits (excluidos los bits de paridad ). El algoritmo de cifrado es:
Es decir, cifrar con , descifrar con , luego cifrar con .
El descifrado es al revés:
Es decir, descifrar con , cifrar con , luego descifrar con .
Cada cifrado triple cifra un bloque de 64 bits de datos.
En cada caso, la operación intermedia es la inversa de la primera y la última. Esto mejora la solidez del algoritmo cuando se utiliza la opción de codificación 2 y proporciona compatibilidad con versiones anteriores de DES con la opción de codificación 3.
Las normas definen tres opciones de codificación:
Este es el más fuerte, con 3 × 56 = 168 bits de clave independientes. Aún es vulnerable al ataque de encuentro en el medio , pero el ataque requiere 2 pasos de 2 × 56 .
Esto proporciona una longitud de clave más corta de 56*2 o 112 bits y un compromiso razonable entre DES y la opción de clave 1, con la misma salvedad que la anterior. [18] Esto es una mejora con respecto al "DOBLE DES", que solo requiere 2 pasos de 56 para atacar. El NIST desautorizó esta opción en 2015. [16]
Esto es compatible con versiones anteriores de DES, ya que dos de las operaciones se cancelan. La norma ISO/IEC 18033-3 nunca permitió esta opción y el NIST ya no permite K 1 = K 2 o K 2 = K 3 . [16] [13]
Cada clave DES tiene 8 bytes de paridad impar , con 56 bits de clave y 8 bits de detección de errores. [9] Un paquete de claves requiere 24 bytes para la opción 1, 16 para la opción 2 u 8 para la opción 3.
El NIST (y las especificaciones TCG versión 2.0 actuales de algoritmos aprobados para el Módulo de Plataforma Confiable ) también prohíben el uso de cualquiera de los siguientes 64 valores de 64 bits en ninguna clave (tenga en cuenta que 32 de ellos son el complemento binario de los otros 32; y que 32 de estas claves también son la permutación inversa de bytes de las otras 32), que se enumeran aquí en hexadecimal (en cada byte, el bit menos significativo es un bit generado por paridad impar, que se descarta al formar la clave efectiva de 56 bits):
01.01.01.01.01.01.01.01.01, FE.FE.FE.FE.FE.FE.FE.FE, E0.FE.FE.E0.F1.FE.FE.F1, 1F.01.01.1F.0E.01.01.0E,01.01.FE.FE.01.01.FE.FE, FE.FE.01.01.FE.FE.01.01, E0.FE.01.1F.F1.FE.01.0E, 1F.01.FE.E0.0E.01.FE.F1,01.01.E0.E0.01.01.F1.F1, FE.FE.1F.1F.FE.FE.0E.0E, E0.FE.1F.01.F1.FE.0E.01, 1F.01.E0.FE.0E.01.F1.FE,01.01.1F.1F.01.01.0E.0E, FE.FE.E0.E0.FE.FE.F1.F1, E0.FE.E0.FE.F1.FE.F1.FE, 1F.01.1F.01.0E.01.0E.01,01.FE.01.FE.01.FE.01.FE, FE.01.FE.01.FE.01.FE.01, E0.01.FE.1F.F1.01.FE.0E, 1F.FE.01.E0.0E.FE.01.F1,01.FE.FE.01.01.FE.FE.01, FE.01.01.FE.FE.01.01.FE, E0.01.01.E0.F1.01.01.F1, 1F.FE.FE.1F.0E.FE.FE.0E,01.FE.E0.1F.01.FE.F1.0E, FE.01.1F.E0.FE.01.0E.F1, E0.01.1F.FE.F1.01.0E.FE, 1F.FE.E0.01.0E.FE.F1.01,01.FE.1F.E0.01.FE.0E.F1, FE.01.E0.1F.FE.01.F1.0E, E0.01.E0.01.F1.01.F1.01, 1F.FE.1F.FE.0E.FE.0E.FE,01.E0.01.E0.01.F1.01.F1, FE.1F.FE.1F.FE.0E.FE.0E, E0.1F.FE.01.F1.0E.FE.01, 1F.E0.01.FE.0E.F1.01.FE,01.E0.FE.1F.01.F1.FE.0E, FE.1F.01.E0.FE.0E.01.F1, E0.1F.01.FE.F1.0E.01.FE, 1F.E0.FE.01.0E.F1.FE.01,01.E0.E0.01.01.F1.F1.01, FE.1F.1F.FE.FE.0E.0E.FE, E0.1F.1F.E0.F1.0E.0E.F1, 1F.E0.E0.1F.0E.F1.F1.0E,01.E0.1F.FE.01.F1.0E.FE, FE.1F.E0.01.FE.0E.F1.01, E0.1F.E0.1F.F1.0E.F1.0E, 1F.E0.1F.E0.0E.F1.0E.F1,01.1F.01.1F.01.0E.01.0E, FE.E0.FE.E0.FE.F1.FE.F1, E0.E0.FE.FE.F1.F1.FE.FE, 1F.1F.01.01.0E.0E.01.01,01.1F.FE.E0.01.0E.FE.F1, FE.E0.01.1F.FE.F1.01.0E, E0.E0.01.01.F1.F1.01.01, 1F.1F.FE.FE.0E.0E.FE.FE,01.1F.E0.FE.01.0E.F1.FE, FE.E0.1F.01.FE.F1.0E.01, E0.E0.1F.1F.F1.F1.0E.0E, 1F.1F.E0.E0.0E.0E.F1.F1,01.1F.1F.01.01.0E.0E.01, FE.E0.E0.FE.FE.F1.F1.FE, E0.E0.E0.E0.F1.F1.F1.F1, 1F.1F.1F.1F.0E.0E.0E.0E
Con estas restricciones sobre las claves permitidas, se volvió a aprobar Triple DES con las opciones de codificación 1 y 2 únicamente. Generalmente, las tres claves se generan tomando 24 bytes de un generador aleatorio fuerte, y solo se debe utilizar la opción de codificación 1 (la opción 2 necesita solo 16 bytes aleatorios, pero los generadores aleatorios fuertes son difíciles de aplicar y se considera que la mejor práctica es utilizar solo la opción 1).
Al igual que con todos los cifrados de bloques, el cifrado y descifrado de múltiples bloques de datos se puede realizar utilizando una variedad de modos de operación , que generalmente se pueden definir independientemente del algoritmo de cifrado de bloques. Sin embargo, ANS X9.52 especifica directamente, y NIST SP 800-67 especifica a través de SP 800-38A, [19] que algunos modos solo se utilizarán con ciertas restricciones que no se aplican necesariamente a las especificaciones generales de esos modos. Por ejemplo, ANS X9.52 especifica que para el encadenamiento de bloques de cifrado , el vector de inicialización debe ser diferente cada vez, mientras que ISO/IEC 10116 [20] no lo hace. FIPS PUB 46-3 e ISO/IEC 18033-3 definen solo el algoritmo de bloque único y no imponen ninguna restricción a los modos de operación para múltiples bloques.
En general, Triple DES con tres claves independientes (opción de codificación 1) tiene una longitud de clave de 168 bits (tres claves DES de 56 bits), pero debido al ataque de encuentro en el medio , la seguridad efectiva que proporciona es de solo 112 bits. [16] La opción de codificación 2 reduce el tamaño de clave efectivo a 112 bits (porque la tercera clave es la misma que la primera). Sin embargo, esta opción es susceptible a ciertos ataques de texto simple elegido o de texto simple conocido , [21] [22] y, por lo tanto, el NIST la designa para que tenga solo 80 bits de seguridad . [16] Esto puede considerarse inseguro; como consecuencia, el NIST anunció la desaprobación planificada de Triple DES en 2017. [23]
El tamaño de bloque reducido de 64 bits hace que 3DES sea vulnerable a ataques de colisión de bloques si se utiliza para cifrar grandes cantidades de datos con la misma clave. El ataque Sweet32 muestra cómo se puede explotar esto en TLS y OpenVPN. [24] Un ataque Sweet32 práctico a conjuntos de cifrados basados en 3DES en TLS requirió bloques (785 GB) para un ataque completo, pero los investigadores tuvieron suerte de obtener una colisión justo después de alrededor de 25 bloques, lo que llevó solo 25 minutos.
La seguridad de TDEA se ve afectada por la cantidad de bloques procesados con un paquete de claves. No se debe utilizar un paquete de claves para aplicar protección criptográfica (por ejemplo, cifrar) a más de 64 bloques de datos.
— Recomendación para el cifrado de bloques del algoritmo de cifrado de datos triple (TDEA) (SP 800-67 Rev2) [13]
OpenSSL no incluye 3DES por defecto desde la versión 1.1.0 (agosto de 2016) y lo considera un "cifrado débil". [25]
A partir de 2008, la industria de pagos electrónicos utiliza Triple DES y continúa desarrollando y promulgando estándares basados en él, como EMV . [26]
Las versiones anteriores de Microsoft OneNote , [27] Microsoft Outlook 2007 [28] y Microsoft System Center Configuration Manager 2012 [29] utilizan Triple DES para proteger con contraseña el contenido del usuario y los datos del sistema. Sin embargo, en diciembre de 2018, Microsoft anunció el retiro de 3DES en todo su servicio Office 365. [30]
Firefox y Mozilla Thunderbird [31] utilizan Triple DES en modo CBC para cifrar las credenciales de inicio de sesión de autenticación del sitio web cuando se utiliza una contraseña maestra.
A continuación se muestra una lista de bibliotecas de criptografía que admiten Triple DES:
Es posible que algunas implementaciones anteriores no incluyan 3DES en la compilación predeterminada, en versiones posteriores o más recientes.
El algoritmo de cifrado triple DES de clave de doble longitud (véase ISO/IEC 18033-3) es el algoritmo criptográfico aprobado para su uso en los mecanismos de cifrado y MAC especificados en el Anexo A1. El algoritmo se basa en el algoritmo DES (único) estandarizado en ISO 16609.
Válido para: Microsoft Office Outlook 2007