¿Es AES256 más seguro que AES128? Cual es la diferencia?

Como Bakhtiyar Farayev señaló correctamente en su respuesta, AES puede tomar tres tamaños de clave diferentes de 128 bits, 192 y 256. Cuando se observa la fuerza bruta de una clave (simplemente adivinando cada clave posible), se necesitan [matemáticas] 2 ^ {128} [ / math] intenta probar cada una de las posibles claves de 128 bits, y [math] 2 ^ {256} [/ math] adivina para probar cada una de las posibles claves de 256 bit. El último número de conjeturas es enormemente mayor que el primero, por lo que , en ese sentido, AES256 es enormemente más fuerte .

¿Pero mejora tu seguridad?

El hecho del asunto es que simplemente no hay forma de que alguien fuerce la fuerza bruta de una clave de 128 bits elegida correctamente. Las posibilidades de que alguien lo fuerce brutalmente son efectivamente cero. Por lo tanto, el uso de una clave de 256 bits no lo defiende contra ningún riesgo plausible de que una clave de 128 bits no lo defienda .

Las posibilidades de que alguien fuerce la clave de 128 bits son efectivamente cero. Claro que es enormemente más difícil forzar la fuerza bruta de una clave de 256 bits, pero hay poca ganancia para la mayoría de los propósitos al reducir un riesgo que ya es “efectivamente cero”. Y la diferencia entre efectivamente cero y efectivamente cero es efectivamente cero. Por lo tanto, existe efectivamente una reducción cero del riesgo.

Como dije en Adivina por qué nos estamos moviendo a las claves AES de 256 bits, que habla de Molly, uno de mis perros, escondiendo los juguetes de Patty (otro perro) en una de las escondidas [matemáticas] 2 ^ {128} [/ matemáticas] espacios,

Las posibilidades de que Patty y todos sus amigos súper rápidos encuentren el escondite de Molly son tan cercanas a cero como podríamos desear. Llamemos a las posibilidades de Patty en este caso [math] \ epsilon_1 [/ math], un número realmente pequeño. Si Molly usa [matemática] 2 ^ {256} [/ matemática] posibles espacios para esconderse en lugar de [matemática] 2 ^ {128} [/ matemática], las posibilidades de que Patty y sus amigas encuentren la que tiene los juguetes es otro número como cerca de cero como pudiéramos querer. Llamaremos a estas posibilidades [math] \ epsilon_2 [/ math]. Claro, [math] \ epsilon_2 [/ math] es muchas veces más pequeño que [math] \ epsilon_1 [/ math], pero tanto [math] \ epsilon_1 [/ math] como [math] \ epsilon_2 [/ math] ya son tan cerca de cero como posiblemente podríamos querer. La ganancia de seguridad práctica de Molly al usar la mayor cantidad de espacios ocultos es más o menos la diferencia entre [math] \ epsilon_1 [/ math] y [math] \ epsilon_2 [/ math]. Esa diferencia, para todos los propósitos significativos, es cero.

El indicio de una posible excepción

Si se construye una computadora cuántica lo suficientemente grande y estable para que pueda realizar el algoritmo de Grover, entonces deberíamos duplicar nuestros tamaños de clave. Y duplicar de 128 a 256 sería lo correcto. En los últimos 25 años, el progreso en el tipo correcto de computadoras cuánticas ha sido más lento de lo que la gente esperaba. Y entonces no estoy preocupado por esto.

Si cree que tales computadoras cuánticas podrían aparecer dentro de los próximos 30 años (no lo hago), y necesita cifrar los datos ahora que deberán permanecer seguros en 30 años, entonces use 265 bits.

AES de 256 bits consume tiempo y energía, pero …

Bakhtiyar también tenía razón al decir que AES256 es más lento. También consume más energía. Entonces, particularmente en dispositivos de baja potencia o en cosas que tienen que encriptar / desencriptar una gran cantidad de datos rápidamente, hay buenas razones para quedarse con las claves AES de 128 bits.

Pero si está produciendo una aplicación para el consumidor, no solo nos preocupan los requisitos de tiempo y energía de la aplicación real, sino también su tiempo y energía. Si usa claves de 128 bits, pasará mucho tiempo y energía explicando todo esto a las personas que (erróneamente) insisten en claves de 256 bits . Entonces, si el costo de rendimiento del uso de claves de 256 bits no va a ser un problema real, puede ahorrarse (usted mismo) una gran cantidad de tiempo con solo usar claves de 256 bits.

Una debilidad real con claves de 256 bits

Solo hay un giro más en todo esto. En realidad, hay un defecto en el diseño de la programación clave para AES256 que no se cumple para AES128. Hace que AES256 sea vulnerable a ataques clave relacionados. (Ver: Distinguidor y ataque de clave relacionada en el AES-256 completo). Hasta ahora, esto no hace que AES256 sea más débil que AES128, pero es motivo de preocupación. También es importante que diseñe su cifrado para que no dependa de la resistencia a los ataques clave relacionados en AES. Es decir, todas sus claves de cifrado deben elegirse al azar y ser independientes entre sí.

De todos modos, gran parte de lo que he escrito en esta respuesta aquí se extrae de algo que escribí en 2013 para el blog AgileBits: Adivina por qué nos estamos moviendo a las claves AES de 256 bits. Mira eso. Proporciona más antecedentes y tiene historias sobre perros.

A primera vista, sí, la diferencia es la longitud de la clave de cifrado utilizada: cuanto más larga sea la clave, más difícil será para un atacante adivinar qué clave aleatoria eligió usar.

Imagina que tienes “AES2”, que significa dos bits, así que cuatro opciones: 00, 01, 10 u 11. ¿Cuánto tiempo le tomaría a tu amigo adivinar qué código elegiste? Solo tendría que hacer (en promedio) un par de conjeturas antes de hacerlo bien.

AES256 usa 256 bits, por lo que hay 2 ^ 256 posibles códigos secretos. Eso es mucho. AES128 tiene 2 ^ 128 opciones: eso no es la mitad, es menos de la mitad de opciones, por lo que es menos seguro.

Puede usar 3 tamaños de clave diferentes para AES; 128, 192 y 256. AES128 es lo suficientemente seguro si tiene que implementarlo en su aplicación.

Sí, AES256 es más seguro pero más lento.

AES256 usa una clave de 256 bits y AES128 usa una clave de 128 bits. Cuanto más grande sea la clave, más tiempo le tomará a la fuerza bruta, aproximadamente el doble de tiempo, lo que significa más seguridad.