¿Cuánta seguridad adicional realmente obtengo con un tamaño de clave más largo?

6

Imagina que tengo un cifrado que admite claves de 128, 192 o 256 bits. Supongamos que no hay vulnerabilidades en el cifrado independientemente de la longitud de la clave. Lo usaré para cifrar algo y usaré una contraseña o frase de contraseña.

Si utilizo la misma contraseña, ¿realmente importa cuál es el tamaño de la clave? , ya que parece que Brute Forcing All 2 128 posibles claves no es factible en lo previsible En el futuro, ¿tengo razón al suponer que la fuerza del cifrado se basa casi exclusivamente en la contraseña?

Suponiendo que la función de derivación de claves lleva la misma cantidad de tiempo para generar una clave de cualquier tamaño, ¿no significa esto que un ataque a la contraseña tomará la misma cantidad de tiempo independientemente del tamaño de la clave? Por lo tanto, ¿no es la fuerza del cifrado más una función de la fuerza de la contraseña que el tamaño de la clave?

Si eso se mantiene, ¿qué gano con una clave de 256 bits o 192 bits en lugar de una clave de 128 bits?

    
pregunta quantumSoup 19.10.2012 - 22:24
fuente

3 respuestas

9

Una vez que haya alcanzado la zona "no se puede romper", aumentar el tamaño de la clave no cambia la seguridad: no puede estar más seguro que eso. Una clave de 128 bits ya está lejos en la zona "no se puede romper". Las claves más grandes son para personas de mercadeo que necesitan impresionar a compradores crédulos, y para personas militares que deben, por ley, hacer demostraciones extensas de su virilidad colectiva.

(Los mejores gerentes de marketing intentan racionalizar tamaños de clave más grandes hablando de computadoras cuánticas .)

Si obtiene una clave de una contraseña y la amplía de 128 a 256 bits cambia su seguridad, entonces lo está haciendo muy mal.

    
respondido por el Thomas Pornin 19.10.2012 - 23:00
fuente
6

Suponiendo que no hay vulnerabilidades en el cifrado para diferentes longitudes de clave, y que la función de derivación de clave genera una salida indistinguible de aleatoria, sin colisiones, entonces:

Hablando matemáticamente 2 ^ 256 = 2 ^ 128 * 2 ^ 128. El álgebra 2^X en este caso se refiere al número total de claves únicas, llamado espacio de claves. Como cada bit puede ser cero o uno, hay dos posibilidades. Dos bits le da 2x2, tres 2x2x2 y así sucesivamente.

De todos modos, como digo, 2 ^ 256 = 2 ^ 128 * 2 ^ 128 desde 2 ^ 128 * 2 ^ 128 = 2 ^ (128 + 128). Al duplicar el espacio de direcciones, no se ha duplicado el número de claves posibles, sino que se han creado 340282366920938463463374607431768211456 claves adicionales posibles. Si 2 ^ 128 está fuera del alcance de la humanidad, entonces 2 ^ 256 está fuera del alcance de Skynet.

  

Si uso la misma contraseña, ¿realmente importa cuál es el tamaño de la clave?

Eso depende de KDF - PBKDF2, por ejemplo, genera bloques de la función de hash con clave suministrada como entrada - y luego alimenta esto en la siguiente iteración como la sal. Como tales, los primeros 160 bits de la clave generada para una clave de 128 bits son los mismos que los primeros 160 bits de la clave generada para una clave de 256 bits.

La pregunta es, entonces, ¿esto compromete la clave? Bueno, en realidad no tienes ningún valor almacenado con el que trabajar, para empezar, pero supongamos que de alguna manera tienes una clave de 128 bits. Necesitará poder generar de manera confiable los otros 128 bits para generar la clave de 256 bits, lo que no puede hacer desde la salida a menos que tenga la entrada. Así que necesitarías encontrar la preimagen, la contraseña. Eso podría considerarse fácil, excepto que tendría que interrumpir muchas de las iteraciones de la función HMAC que se utilizaron.

Otra pregunta sería ¿es reutilizable ? La implementación adecuada de PBKDF2 usa un salt, por lo que tendría el mismo problema que atacar cualquier función de hash con sal.

  

¿la fuerza del cifrado no es más una función de la fuerza de la contraseña que el tamaño de la clave?

En realidad no. Sin embargo, el problema es que una técnica deficiente de generación de claves puede llevarlo a reducir inadvertidamente el tamaño de su espacio de claves, lo que facilita la fuerza bruta de su contraseña. Por ejemplo:

char encryption_key[16] = {0};
strncpy(encryption_key, 16, source);

aes_with_some_mode(encryption_key, plaintext, &ciphertext);

es malo, ya que incluso si se asegura de que la contraseña tenga 16 bytes de longitud, ha restringido cada byte a uno de una serie de posibles caracteres y símbolos ASCII. Por lo tanto, asumiendo solo caracteres en mayúsculas, ha reducido el espacio clave a solo 26 ^ 16. Te acabas de disparar en el pie por un factor de aproximadamente 8 x 10 ^ 15.

Los KDF están diseñados para evitar esta situación (aunque una fuente verdaderamente aleatoria es más ideal) al asignar la contraseña al espacio clave. El problema de encontrar una clave coincidente se vuelve tan difícil como encontrar una imagen previa de un algoritmo hash en las condiciones en que se usa en el KDF.

Ciertamente, con PBKDF2 no sería cierto que el KDF tomaría el mismo tiempo para una clave de 128 y 256 bits.

    
respondido por el user2213 19.10.2012 - 22:31
fuente
6

En pocas palabras, el problema está en la suposición que has indicado.

  

Supongamos que no hay vulnerabilidades en el cifrado, independientemente de la longitud de la clave.

La seguridad se trata de defensa en profundidad . Así como un pirata no va a golpear una caja fuerte con un martillo durante días, los atacantes generalmente no están sentados alrededor de las claves de cifrado de fuerza bruta.

Probablemente sea inevitable que un día un investigador de seguridad descubra debilidades en AES (o cualquier otro estándar de cifrado simétrico actual). La trayectoria más probable es que las debilidades se volverán prácticamente explotables contra los textos cifrados con una longitud de clave más corta primero, y luego se extenderán (mediante investigación, hardware especializado o simplemente la ley de Moore) a los textos cifrados que usan claves más largas.

    
respondido por el Stephen Touset 19.10.2012 - 23:03
fuente

Lea otras preguntas en las etiquetas