¿Es posible alguna vez descifrar una clave de cifrado carácter por carácter?

4

En las películas y programas de televisión, los personajes se representan a menudo utilizando dispositivos y aplicaciones que pueden determinar una clave de cifrado o un código de acceso carácter por carácter (o dígito por dígito). Soy programador y creo que tengo una idea decente de cómo funciona el cifrado en general, pero no estoy seguro de si tomar esto como una forma simple de mostrar el progreso o si realmente hay algo en ello.

¿Es esto posible y, en caso afirmativo, qué propiedades de un algoritmo lo hacen susceptible a este tipo de grietas?

    
pregunta thesquaregroot 15.07.2014 - 03:33
fuente

5 respuestas

10

Si un sistema de encriptación permite el craqueo de caracteres por carácter, es muy débil y no debe utilizarse.

Matemáticamente, los cifrados de bloque se definen como permutaciones de pseudorandom . Un cifrado de bloque funciona en el espacio de bloques de longitud n bits; dicho espacio tiene un tamaño 2 n . Hay 2 n ! permutaciones sobre ese espacio (eso es un factorial, lo que significa que el número de posibles permutaciones es enorme ). Un cifrado de bloque seguro es tal que es indistinguible de una permutación seleccionada al azar, uniformemente, en el espacio de posibles permutaciones: se supone que cada clave corresponde a una elección aleatoria de permutación y, de manera crucial, todas las elecciones para todas las claves posibles los valores son independientes entre sí.

Lo que esto significa, en palabras mundanas, es que para un cifrado de bloque seguro, o tienes la clave completa, exactamente hasta el último bit, o no tienes nada. Contrariamente a las representaciones de Hollywood, una clave "casi buena" no da como resultado un "texto plano borroso": si incluso un bit de clave es incorrecto, debería recibir basura aleatoria (es decir, una salida lo suficientemente indistinguible de la basura aleatoria que no puede saber si estás cerca de la clave correcta o no).

Por supuesto, si el sistema de cifrado es débil, todo vale. @Mark cita un caso de "división" (en WPS) que es una debilidad atroz que puede, de hecho, ser explotada para ataques más rápidos. Los ataques de oráculo de relleno también funcionan en una fuga de byte por byte que permite la reconstrucción de byte por byte del texto plano ( no la clave, pero aún así).

Otro ejemplo más técnico es antiguo PKZip cifrado de flujo : un cifrado de flujo "casero" que resultó, con toda la inevitabilidad de la muerte en una tragedia griega, ser débil; El cifrado de flujo se basa en varias "claves" internas que se pueden desentrañar una por una. Aliento a las personas interesadas en la criptografía a que estudien ese ejemplo, ya que demuestra bastante bien la forma en que un criptoanalista piensa y por qué la simple acumulación de operaciones no garantiza la seguridad; y el ataque es lo suficientemente liviano como para implementarlo en la práctica (el costo total es aproximadamente 2 38 , que está dentro del rango de unas pocas horas de cómputo en una PC con una programación decente, no necesariamente un ensamblaje optimizado). / p>

Muchos sistemas criptográficos de antes de la era de la computadora podían romperse por carácter, ya que tenían que ser ejecutados por el cerebro humano de los operadores, y tales herramientas no son buenas para usar valores grandes o hacer mucho operaciones Los cifrados clásicos de transposición y sustitución (una familia muy grande) tienden a caer en el análisis de frecuencia de caracteres, que es, de hecho, una ruptura por carácter.

    
respondido por el Tom Leek 15.07.2014 - 14:41
fuente
6

Sí.

El ejemplo más conocido actual no es estrictamente carácter por carácter, pero Configuración protegida de Wi-Fi se divide La clave se divide en dos mitades y las verifica de forma independiente, lo que permite a un atacante forzar con fuerza bruta la primera mitad y luego la segunda mitad (y hace que sea mucho más fácil).

Menos conocidos pero posiblemente más dañinos son varios ataques de tiempo donde se verifica una clave, contraseña u otro secreto se realiza byte a byte, devolviendo el fallo en la primera falta de coincidencia. Esto le permite a un atacante saber el primer byte incorrecto al adivinar el secreto, para que puedan resolverlo un byte a la vez.

Dado que este es un tipo de ataque conocido, los buenos sistemas criptográficos están diseñados para evitarlo, pero como muestra el ejemplo de WPS, hay muchos sistemas criptográficos que no están bien diseñados.

    
respondido por el Mark 15.07.2014 - 07:13
fuente
2

Ciertos ataques de canales laterales, como el Análisis de potencia diferencial, funcionan recuperando el material clave un bit a la vez. Envían un número estadísticamente significativo de solicitudes de cifrado a través del procesador, y observan el consumo de energía que puede indicar que se realizó una determinada operación. Por ejemplo, cuando la llave se gira a la izquierda en DES después de cada ronda, la CPU podría consumir más energía si tiene que llevar una.

Ciertamente sería posible mostrar los bits recuperados a medida que avanza el ataque.

    
respondido por el John Deters 15.07.2014 - 15:04
fuente
1

No tengo conocimiento de ningún caso del mundo real en el que esto sea posible. Existen algunos criptosistemas en los que las debilidades le han permitido aprender sobre bits específicos (es decir, el sesgo del flujo de clave RC4), pero incluso estas son debilidades en gran medida teóricas.

Las películas y los programas de televisión representan la seguridad (y muchos otros temas) de una manera que pretende ser fascinante para su espectador promedio, no tecnológicamente precisa. Tener un montón de GPUs arrancando durante horas o días y luego de repente obtener una respuesta: no es interesante. Del mismo modo, mirando a proxy Burp, no es interesante; escribir una interfaz GUI utilizando Visual Basic para rastrear la dirección IP del asesino , interesante.

    
respondido por el David 15.07.2014 - 03:38
fuente
-2

La respuesta es sí, el método de fuerza bruta podría darte un personaje a la vez si lo haces en un orden. He aquí por qué:

Considere el código binario de la contraseña, que tendría n bits de longitud. Si establece el primer bit en 0 (o 1) y prueba todas las combinaciones posibles con los bits restantes y ninguno de ellos funciona, sabrá que el primer bit es un 1 (o 0). Luego haces lo mismo en el siguiente bit y así sucesivamente, revelando cada vez más la contraseña. Eventualmente tienes suficientes bits para formar una letra, si así es como prefieres leerla.

Puedes ver que con cada letra la contraseña se vuelve exponencialmente más fácil de resolver, y si la contraseña no es aleatoria, se vuelve más fácil de adivinar.

    
respondido por el user55318 11.09.2014 - 02:04
fuente

Lea otras preguntas en las etiquetas