¿Cuánto tiempo tomaría un solo procesador con el conjunto de instrucciones AES-NI para aplicar fuerza bruta a una clave AES?

2

Sé que parece una pregunta estúpida, ya que es factible romper AES sin una computadora cuántica, pero de todos modos tengo curiosidad.

Leí en wikipedia que el ataque más conocido en AES-128 toma 2 ^ 126 operaciones. ¿Cuánto tiempo demoraría un procesador moderno en aplicar la fuerza bruta a la clave?

Continuamente pierdo mis pensamientos cuando trato de comparar los 3.5 ciclos por AES-bytes (conjunto de instrucciones AES-NI (ver wikipedia) con el Ghz que ofrece un moderno procesador. Wolfram Alpha no puede convertir esas unidades.

¿Cuántas operaciones puede realizar un procesador de gama alta por segundo?

    
pregunta theXs 20.10.2012 - 16:18
fuente

2 respuestas

8

Para calcular esto necesitas:

  • El tamaño de bloque (16 bytes)
  • Coste por byte (1.30 ciclos por byte)
  • Frecuencia de la CPU (3.8 GHz)
  • Número de núcleos (2)
  • Número de teclas (2 ^ 128)

Estoy usando "amd64; Piledriver (610f01); 2012 AMD A10-5800K; 2 x 3800MHz; hydra9, supercop-20121016" de eBACS como mi ejemplo de CPU.

Para calcular las claves probadas por segundo, usted calcula:

(cpu-frequency * number-of-cores) / (block-size * cost-per-byte) =
(3.8E9 * 2) / (16*1.3) =
6.70E8 =
670 million

Para que te prueben las llaves por año, obtienes:

 keys-per-second * seconds-per-year =
 6.70E8 * (365 * 24 * 3600) =
 2.11E16

Esto corresponde a romper una clave de 54 bits en un año.

Para obtener el tiempo que demora, divide la mitad del número de claves totales por el número de claves que intentas por año, lo que te da aproximadamente 10 ^ 22 años, lo que es casi siempre desde que el universo es solo 10 ^ 10 años de edad.

Pero ningún atacante sensato usaría tal CPU. Usaría un hardware especializado que es mucho más eficiente que una CPU de propósito general. Pero incluso con ese hardware, el AES de fuerza bruta está muy por encima de lo que la humanidad puede pagar actualmente.

    
respondido por el CodesInChaos 20.10.2012 - 16:40
fuente
-1
  

Para que te prueben las llaves por año, obtienes:

keys-per-second * seconds-per-year =
6.70E8 * (365 * 24 * 3600) =
2.11E16

Sí, eso sería si la CPU fuera al inicio y probara todas las permutaciones de las expansiones clave.

Pero, hay otra manera: intentar adivinar probando cada contraseña posible, hay un tiempo de configuración significativo, sin embargo, cada vez que se muda a una nueva contraseña, ya que es necesario realizar el proceso de expansión de la clave, donde cada contraseña se extiende desde los caracteres de la contraseña hasta una longitud uniforme, es esta clave expandida que se utiliza para decodificar el flujo.

  

¿Cuánto tiempo tomaría un solo procesador con el conjunto de instrucciones AES-NI para forzar la fuerza bruta en una clave > AES?

Debido a la forma en que AES codifica los bloques, el atacante solo tendría que intentar cada contraseña posible para intentar decodificar los primeros bytes de los datos cifrados, en lugar de todo el archivo, y solo si parece un buen encabezado de archivo o texto simple: luego puede probar algunos bloques más para verificar que la contraseña sea correcta.

El uso de las nuevas instrucciones AES en una CPU Intel de baja especificación para la computadora portátil: alrededor de 10 a 15 millones de intentos de contraseñas (Expansión de claves + descifrar 16 bytes) por segundo por hilo es fácilmente alcanzable.

Hay optimizaciones que se pueden aplicar (como hacer varias contraseñas a la vez, mediante el uso de subprocesos o el modo canalizado), y tienes hasta 12 subprocesos para usar en algunos equipos de gran potencia.

Por lo tanto, todo depende de la contraseña elegida: una contraseña de 6 dígitos se puede romper en unos minutos o incluso segundos, 7 dígitos en menos de un día.

characters password can contain:    67   (a-z A-Z and usual 'leet' special characters)
Typical 7 digit password:       67 ^ 7
Passwords per sec per thread:   15,000,000
(67 ^ 7 / 15M/s )= 112 hours
Now use 4 threads of a I7 CPU:  = 112/4 hours= about 28 hours (MAX time)

Las contraseñas más largas y más caracteres lo harán más difícil También puede obtener un resultado similar o mejor utilizando CUDA (Graphics Card Computing). Más PC, por supuesto, también reducirá el tiempo necesario. Podría tener suerte y obtener la contraseña en los primeros intentos ...

    
respondido por el Ozmo 15.03.2013 - 11:53
fuente

Lea otras preguntas en las etiquetas