En criptografía , una clave débil es una clave que, utilizada con un cifrado específico , hace que el cifrado se comporte de alguna manera indeseable. Las claves débiles generalmente representan una fracción muy pequeña del espacio de claves general, lo que generalmente significa que, si se genera una clave aleatoria para cifrar un mensaje, es muy poco probable que las claves débiles den lugar a un problema de seguridad. Sin embargo, se considera deseable que un cifrado no tenga claves débiles. Un sistema de cifrado con claves débiles no se dice que tiene una plana o lineal , espacio de claves .
Orígenes históricos
Prácticamente todas las máquinas de cifrado basadas en rotor (desde 1925 en adelante) tienen fallas de implementación que conducen a la creación de una cantidad sustancial de claves débiles. Algunas máquinas tienen más problemas con las claves débiles que otras, como lo hacen los cifrados modernos de bloques y flujos.
Las primeras máquinas de cifrado de flujo, que también eran máquinas de rotor, tenían algunos de los mismos problemas de claves débiles que las máquinas de rotor más tradicionales. El T52 era una de esas máquinas de cifrado de flujo que tenía problemas de claves débiles.
Los británicos detectaron por primera vez el tráfico T52 en verano y otoño de 1942. Un enlace era entre Sicilia y Libia , con el nombre en código " Sturgeon ", y otro desde el Egeo a Sicilia , con el nombre en código " Mackerel ". Los operadores de ambos enlaces tenían la costumbre de cifrar varios mensajes con la misma configuración de la máquina, produciendo una gran cantidad de profundidades .
Había varias versiones (en su mayoría incompatibles) del T52: el T52a y T52b (que se diferenciaban solo en su supresión de ruido eléctrico), T52c, T52d y T52e. Si bien el T52a / by el T52c eran criptológicamente débiles, los dos últimos eran dispositivos más avanzados; el movimiento de las ruedas era intermitente, la decisión de avanzar o no estaba controlada por circuitos lógicos que tomaban como entrada los datos de las propias ruedas.
Además, se han eliminado una serie de defectos conceptuales (incluidos algunos muy sutiles). Una de esas fallas fue la capacidad de restablecer el flujo de claves a un punto fijo, lo que llevó a la reutilización de claves por parte de operadores de máquinas indisciplinados.
Claves débiles en DES
El cifrado de bloque DES tiene algunas claves específicas denominadas "claves débiles" y "claves semifábiles". Estas son claves que hacen que el modo de cifrado de DES actúe de manera idéntica al modo de descifrado de DES (aunque potencialmente el de una clave diferente).
En funcionamiento, la clave secreta de 56 bits se divide en 16 subclaves de acuerdo con la programación de claves DES ; se utiliza una subclave en cada una de las dieciséis rondas DES. Las claves débiles DES producen dieciséis subclaves idénticas. Esto ocurre cuando la clave (expresada en hexadecimal ) es: [1]
- Alternando unos + ceros (0x0101010101010101)
- Alternando 'F' + 'E' (0xFEFEFEFEFEFEFEFE)
- '0xE0E0E0E0F1F1F1F1'
- '0x1F1F1F1F0E0E0E0E'
Si una implementación no considera los bits de paridad, las claves correspondientes con los bits de paridad invertidos también pueden funcionar como claves débiles:
- todos ceros (0x0000000000000000)
- todos unos (0xFFFFFFFFFFFFFFFFFF)
- '0xE1E1E1E1F0F0F0F0'
- '0x1E1E1E1E0F0F0F0F'
Al usar claves débiles, el resultado de la Elección permutada 1 (PC-1) en el programa de claves DES lleva a que las claves redondas sean todas ceros, todos unos o patrones alternados de cero-uno.
Dado que todas las subclaves son idénticas y DES es una red Feistel , la función de cifrado se invierte automáticamente; es decir, a pesar de que el cifrado una vez proporciona un texto cifrado de aspecto seguro, el cifrado dos veces produce el texto sin formato original.
DES también tiene claves semi-débiles , que solo producen dos subclaves diferentes, cada una usada ocho veces en el algoritmo: Esto significa que vienen en pares K 1 y K 2 , y tienen la propiedad de que:
donde E K (M) es el algoritmo de encriptación de cifrado de mensaje M con la clave K . Hay seis pares de claves semi-débiles:
- 0x011F011F010E010E y 0x1F011F010E010E01
- 0x01E001E001F101F1 y 0xE001E001F101F101
- 0x01FE01FE01FE01FE y 0xFE01FE01FE01FE01
- 0x1FE01FE00EF10EF1 y 0xE01FE01FF10EF10E
- 0x1FFE1FFE0EFE0EFE y 0xFE1FFE1FFE0EFE0E
- 0xE0FEE0FEF1FEF1FE y 0xFEE0FEE0FEF1FEF1
También hay 48 claves posiblemente débiles que producen solo cuatro subclaves distintas (en lugar de 16). Se pueden encontrar en una publicación del NIST. [2]
Estas claves débiles y semi-débiles no se consideran "fallas fatales" de DES. Hay 2 56 (7,21 × 10 16 , alrededor de 72 cuatrillones) claves posibles para DES, de las cuales cuatro son débiles y doce son semi-débiles. Esta es una fracción tan pequeña del posible espacio de teclas que los usuarios no deben preocuparse. Si lo desean, pueden comprobar si hay claves débiles o semi-débiles cuando se generan las claves. Son muy pocos y fáciles de reconocer. Sin embargo, tenga en cuenta que actualmente DES ya no se recomienda para uso general, ya que todas las claves DES pueden ser forzadas. Han pasado décadas desde que la máquina Deep Crack las descifró en el orden de los días y, como tienden a hacer las computadoras, soluciones más recientes. son mucho más baratos en esa escala de tiempo. Hay ejemplos de progreso en el artículo de Deep Crack.
Lista de algoritmos con claves débiles
- DES, como se detalla anteriormente.
- RC4 . Los vectores de inicialización débiles de RC4 permiten a un atacante montar un ataque de texto plano conocido y se han utilizado ampliamente para comprometer la seguridad de WEP . [3]
- IDEA . Las claves débiles de IDEA se pueden identificar en un ataque de texto sin formato elegido . Hacen que la relación entre la suma XOR de los bits de texto sin formato y los bits de texto cifrado sea predecible. No existe una lista de estas claves, pero se pueden identificar por su "estructura".
- Blowfish . Las claves débiles de Blowfish producen cajas S malas , ya que las cajas S de Blowfish dependen de la clave. Hay un ataque de texto plano elegido contra una variante de asalto reducido de Blowfish que se hace más fácil mediante el uso de claves débiles. Esto no es una preocupación para Blowfish completo de 16 rondas.
- GMAC . Se utiliza con frecuencia en la construcción AES-GCM. Las claves débiles se pueden identificar por el orden de grupo de la clave de autenticación H (para AES-GCM, H se deriva de la clave de cifrado cifrando el bloque cero).
- RSA y DSA . Agosto de 2012 Nadia Heninger, Zakir Durumeric, Eric Wustrow, J. Alex Halderman descubrieron que los certificados TLS que evaluaron comparten claves debido a una entropía insuficiente durante la generación de claves, y pudieron obtener claves privadas DSA y RSA de hosts TLS y SSH conociendo solo el público clave. [4]
Sin claves débiles como objetivo de diseño
El objetivo de tener un espacio de claves "plano" (es decir, todas las claves igualmente fuertes) es siempre un objetivo de diseño de cifrado. Como en el caso de DES, a veces es aceptable una pequeña cantidad de claves débiles, siempre que todas estén identificadas o identificables. Un algoritmo que tiene claves débiles desconocidas no inspira mucha confianza. [ cita requerida ]
Las dos principales contramedidas contra el uso inadvertido de una clave débil:
- Verificar las claves generadas con una lista de claves débiles conocidas o incorporar el rechazo de claves débiles en la programación de claves.
- Cuando se sabe que el número de claves débiles es muy pequeño (en comparación con el tamaño del espacio de claves), generar una clave uniformemente al azar asegura que la probabilidad de que sea débil es un número (conocido) muy pequeño.
Una gran cantidad de claves débiles es una falla seria en cualquier diseño de cifrado, ya que entonces habrá una posibilidad (quizás demasiado) grande de que una generada aleatoriamente sea débil, comprometiendo la seguridad de los mensajes cifrados bajo ella. También llevará más tiempo verificar las claves generadas aleatoriamente en busca de debilidades en tales casos, lo que tentará a los atajos en interés de la 'eficiencia'.
Sin embargo, las claves débiles son un problema mucho más frecuente cuando el adversario tiene cierto control sobre las claves que se utilizan, como cuando se utiliza un cifrado de bloque en un modo de operación destinado a construir una función hash criptográfica segura (por ejemplo, Davies-Meyer ).
Ver también
Referencias
- ^ FIPS, Directrices para implementar y usar el estándar de cifrado de datos NBS , FIPS-PUB 74, http://www.itl.nist.gov/fipspubs/fip74.htm
- ^ NIST, Recomendación para el cifrado en bloque del algoritmo de cifrado de datos triple (TDEA), publicación especial 800-67 , página 14
- ^ Fluhrer, S., Mantin, I., Shamir, A. Debilidades en el algoritmo de programación clave de RC4. Octavo taller anual sobre áreas seleccionadas en criptografía (agosto de 2001), http://citeseer.ist.psu.edu/fluhrer01weakness.html
- ^ "Trabajo de investigación - factorable.net" . factorable.net . Consultado el 26 de junio de 2020 .