it-swarm-es.com

Cuando se utiliza DES de fuerza bruta, ¿ayuda saber algo sobre el texto plano?

Estándar de cifrado de datos (Wikipedia)

Sé que con la fuerza bruta hay 2 ^ 56 claves posibles para verificar (56 bits, cada uno un 1 o un 0). Pero digamos que sé que el mensaje en sí solo está compuesto por letras (a-z, A-Z).

¿Saber cosas (como la limitación a solo letras) sobre el texto sin formato facilitaría la ruptura del cifrado?

10
AStanton

En una búsqueda de fuerza bruta estándar, se asume que ya conoce al menos un texto plano y su cifrado asociado con una clave determinada. Por lo tanto, que el texto sin formato sea de un conjunto restringido no ayudará a menos que haya alguna otra debilidad de la que se esté aprovechando.

Para que un ataque de fuerza bruta tenga éxito (incluso de forma teórica), el atacante debe saber "algo" sobre el texto sin formato, para saber si encontró la clave correcta o no. Dicho de otra manera: si todo lo que el atacante sabe sobre el texto sin formato es que se trata de un montón de bytes aleatorios, entonces, por cada clave probada, eso es exactamente lo que obtendrá: un montón de bytes de aspecto aleatorio.

Por otro lado, si el atacante considera que vale la pena atacar el sistema (porque un 256 La búsqueda exhaustiva es, aunque factible, bastante cara), entonces él debe tener algún conocimiento a priori de lo que encontrará. Esto puede ser cualquier cosa como un formato estándar (por ejemplo, los datos son XML, comenzando con un encabezado XML; o los datos están comprimidos con gzip y, por lo tanto, comienzan con un encabezado gzip) o incluso alguna información básica como "el texto llano es un texto que 'tiene sentido'".

El texto en inglés con codificación ASCII usará solo algunos valores de bytes, es decir, valores de bytes de 32 a 126 (inclusive), y posiblemente también 9 (tabulación horizontal), 10 y 13 (LF y CR, respectivamente) , para finales de línea), 12 (tabulación vertical) y posiblemente 26 (final de archivo en sistemas DOS/Windows). Eso es 100 de 255 valores de bytes posibles. Un descifrado de un solo DES bloque (8 bytes) con una clave incorrecta tiene una probabilidad de (100/255)8 consistir sólo en este conjunto de "personajes plausibles". Dado que el atacante tiene 256 claves para probar, debe descifrar n bloques para que la probabilidad de aceptar una clave incorrecta no sea mayor a 2-56. Esto se logra tan pronto como n = 6 (porque (100/255)8 * 6 ≤ 2-56). Esto conduce a un ataque de búsqueda exhaustivo donde el atacante descifra 6 bloques por clave potencial, filtrando claves incorrectas mirando los caracteres obtenidos.

Ahora, seamos realistas, "8g.; = 7Zf" no es exactamente "texto que tiene sentido". Por lo tanto, el atacante sabe mucho más que "el texto sin formato consiste solo en ASCII caracteres) imprimibles". Podría filtrar el descifrado incorrecto que produce solo caracteres imprimibles pero no extractos de texto plausibles. También podría obtener , digamos, mil "claves posibles" (cada una de las cuales produce algo que, desde el punto de vista de una computadora, es un texto con sentido) y terminan el trabajo a mano (el cerebro humano es muy bueno para detectar texto real entre una lista de caracteres que parecen galimatías), por lo que un atacante podría usar, digamos, dos o tres bloques y aún así hacer las cosas.

Es muy difícil cuantificar qué tan eficiente será el atacante para filtrar el descifrado incorrecto, porque depende de lo que el atacante "adivine", algo que pertenece al ámbito de la psicología, no de la informática. Por lo tanto, los académicos utilizan la "convención segura" de considerar que el atacante tiene un bloque de texto plano conocido: conoce con un 100% de certeza un texto plano de 8 bytes para el que también tiene el texto cifrado correspondiente. Puede que esto no sea cierto en una situación de ataque real, pero realmente no puede preverlo.

3
Thomas Pornin

Dependerá de cómo esté comprobando cada tecla. Si comienza en 0 y sigue aumentando, tendrá que convertir al juego de caracteres y verificar si ese carácter es válido. O podría trabajar al revés, comenzar con un carácter y solo ir incrementando un carácter dentro del conjunto.

Creo que si aumentara por carácter en lugar de bit, tendría un conjunto de trabajo mucho más pequeño y, por lo tanto, tomaría menos tiempo ejecutar todas las combinaciones.

2
Steve

Saber que las posibles soluciones pertenecen a un conjunto restringido le ayudará porque puede finalizar antes el proceso de descifrado.
En su caso, puede descifrar solo una cantidad limitada de texto cifrado/cifrado (los primeros 8/16/... bytes, por ejemplo) y guardar para una ronda posterior solo los textos descifrados/sin formato que estén compuesto únicamente por letras (az, AZ). A continuación, puede aumentar la cantidad que descifra si el espacio de las soluciones guardadas es demasiado grande o simplemente revisarlas todas y decidir cuál es la correcta.

0

La respuesta corta es "teóricamente sí" .

Pero: esa no es la razón principal por la que DES tropezar con sus propios pies.

Déjame darte un poco más de información ...

Hoy en día, DES se considera inseguro para la mayoría de las aplicaciones. Esto se debe principalmente a que el tamaño de la clave de 56 bits es demasiado pequeño. Lo que esto significa se vuelve obvio cuando se sabe que en enero de 1999, el "Electronic Frontier Foundation" y "distribution.net" colaboraron para romper con éxito una clave DES en 22 horas y 15 minutos ... en público.

El pequeño tamaño de la clave fue una de las razones por las que DES ha sido retirado como estándar por el Instituto Nacional de Estándares y Tecnología.

Pero: se cree que el algoritmo es prácticamente seguro en forma de Triple DES, aunque hay ataques teóricos. En años más recientes, el cifrado ha sido reemplazado por el Estándar de cifrado avanzado (AES).

Mis 2 centavos: "¡Si puedes evitar DES, evita DES!"

0
user6373