Clave débil
En criptografía una clave débil es aquella que, cuando es usada con un algoritmo de cifrado específico, hace que dicho algoritmo funcione de alguna manera no deseada. Las claves débiles generalmente representan un a fracción muy pequeña del espacio de clave total, lo que significa que si se genera una clave aleatoria para el cifrado, la posibilidad de que aparezca dicha clave débil es muy pequeña y que por lo tanto de que exista un problema de seguridad. Sin embargo, se considera deseable para un cifrador carecer de claves débiles.
Claves débiles en DES
El algoritmo DES tiene unas pocas claves débiles y semi-débiles. Son las claves que causan que el modo de cifrado de DES funcione de manera idéntica al modo de descifrado de DES.
Durante una operación, la clave secreta de 56 bits se descompone en 16 sub-claves de acuerdo con el procedimiento de clave de DES, una de cada cual es usada en cada uno de las dieciséis ronda de DES. Las claves débiles de DES son aquellas que producen 16 subclaves idénticas. Esto ocurre cuando los bits de la clave son:
- Todo ceros.
- Todo unos.
- La primera mitad ceros y la segunda unos.
- La primera mitad unos y la segunda ceros.
Dado que todas las subclaves son idénticas y que DES es una red de Feistel, el cifrado es autoreversible, esto es, cifrar dos veces produce el texto plano original.
DES tiene también claves semi-débiles. Vienen en pares K1 and K2 y poseen la siguiente propiedad:
donde EK(M) es el algoritmo de cifrado cifrando el mensaje M con la clave K. Existen seis pares de claves semi-débiles.
Las claves débiles y semi-débiles no son fallos totales de DES. Existen 256 (7.21 × 1016, alrededor de 72 cuadrillones) posibles claves para DES, de las cuales cuatro son débiles y doce semi-débiles. Esta es una fracción tan pequeña del espacio total de claves que los usuarios no deben preocuparse, ya que dichas claves pueden ser detectadas al ser generadas. Sin embargo, DES no es un algoritmo de cifrado recomendado para su uso general, ya que puede ser roto por un ataque de fuerza bruta en un día por el coste en hardware similar a lo que costaría un coche nuevo.
Algoritmos con claves débiles
- RC4: Los débiles vectores de inicialización permiten a un atacante realizar un ataque de texto plano conocido y han sido ampliamente usados para comprometer la seguridad WEP.
- IDEA: Las claves débiles de IDEA son identificables en un ataque de texto plano escogido. Estos hacen establecen una relación predecible entre la suma XOR de bits del texto plano y los bits del texto cifrado. No hay una lista de estas claves, pero pueden ser identificadas por su estructura.
- Blowfish: Las claves débiles en Blowfish producen malas S-Boxes, dado que las S-Boxes de Blowfish dependen de la clave. Existe un ataque de texto plano escogido contra una variante de Blowfish con rondas reducidas que se hace más fácil debido a las claves débiles. Sin embargo, no existe aún riesgo para un cifrador que use las 16 rondas de Blowfish.
Diseño orientado a la no aparición de claves débiles
El objetivo de tener un espacio de claves homogéneo (con todas las claves igualmente fuertes) es siempre el objetivo del diseño de un algoritmo de cifrado. Como en el caso de DES, algunas veces un reducido número de claves débiles son aceptables, siempre que esas claves sean todas identificables. Sin embargo, algoritmos con claves débiles desconocidas no presentan una auténtica seguridad.
Las dos principales contramedidas contra el uso inadvertido de claves débiles son:
- Comprobar la clave generada en una lista de claves débiles conocidas, o construir un rechazo de claves débiles en el proceso de clave.
- Cuando las claves débiles son conocidas y muy pocas (en comparación con el espacio de clave), la geberación de claves aleatorias asegura que la probabilidad de la obtención de una clave débil es muy pequeña.
Un gran número de claves débiles es un serio fallo en el diseño de un cifrador, dado que existirá una probabilidad mayor que las claves aleatorias sean débiles, comprometiendo la seguridad de los mensajes cifrados. Además, se tardará más tiempo en comprobar que las claves generadas de manera aleatoria contra una lista de claves débiles conocidas, lo que reduce la eficiencia de dicho algoritmo.
Sin embargo, el uso de claves débiles se convierte en un problema mucho mayor cuando el posible interceptador tiene cierto control sobre qué claves serán usadas, como cuando un cifrador por bloques se usa en un modo de operación orientado a la construcción de una función criptográfica de hash segura.