Si alguien rompe el cifrado, ¿cómo saben que tienen éxito?

36

Digamos que tengo un archivo que contiene un grupo aleatorio de bits y luego lo cifro usando un algoritmo moderno (Blowfish, AES, o lo que sea). Si alguien captura el archivo y monta un ataque de fuerza bruta en él, ¿cómo sabrán que lo han descifrado con éxito? Sería obvio si la entrada original fuera significativa, pero en este caso la entrada original era solo un grupo de bytes aleatorios. ¿Cómo sabrían, en todo caso, que este era el grupo CORRECTO de bytes aleatorios?

    
pregunta M. Evans 18.01.2011 - 04:56
fuente

8 respuestas

30

No lo harían. El problema que describiste está bien abordado en el artículo de Wikipedia sobre Unicity Distance . Ese artículo también contiene enlaces a uno de Bruce Schneier que puede ser más accesible.

    
respondido por el PulpSpy 18.01.2011 - 05:02
fuente
12

Generalmente las personas no cifran basura aleatoria. Suponiendo que lo hicieran, un ataque de solo texto cifrado sería imposible.

Sin embargo, tenga en cuenta que los esquemas criptográficos comunes agregan datos no aleatorios al mensaje, como datos de relleno y códigos de autenticación de mensajes . En algunos esquemas, se pueden usar para verificar si una clave adivinada es correcta.

    
respondido por el Giacomo Verticale 18.01.2011 - 09:59
fuente
5

De manera general, no pueden romper el cifrado (si encripta el archivo aleatorio (por ejemplo, la clave secreta) o incluso comprime el archivo), pero si el sniffer tiene algún otro acceso al sistema del remitente o del receptor, puede realizar otro tipo de ataque y puede romper el cifrado de archivos aleatorios. usted lee más allí:

respondido por el Am1rr3zA 18.01.2011 - 10:15
fuente
3

Si el texto claro es aleatorio, no lo sabrán. Sin embargo, la mayoría de los tipos de archivos tienen algún tipo de estructura reconocible. Al pasar el blob A por el algoritmo B con la tecla C se obtendrá una salida de alguna . Si esa salida tiene estructura, entonces tienes un ganador.

    
respondido por el bahamat 18.01.2011 - 09:36
fuente
2

No lo hacen. TrueCrypt aprovecha este hecho para ofrecer una negación plausible a través de 'volúmenes ocultos': enlace

    
respondido por el Rushyo 18.01.2011 - 17:32
fuente
2

Tu pregunta me parece doble. En primer lugar, un buen algoritmo de cifrado es indistinguible de la aleatoriedad. Por lo tanto, nadie podrá distinguir su texto cifrado de los datos aleatorios. Además, un texto cifrado descifrado también se verá aleatorio. Por lo tanto, no podrá encontrar los datos aleatorios que se ingresaron originalmente en el cifrado con una búsqueda exhaustiva de claves.

En segundo lugar, el punto es que las personas generalmente no introducen datos aleatorios en el cifrado. Los estándares de cifrado actuales no solo cubren el algoritmo sino también los datos utilizados. La gente generalmente precede y fija sus datos siempre con un cierto relleno y ciertos metadatos (los esquemas de encriptación tienen una longitud fija. De alguna manera, debe especificar la duración del texto). Conocer estos bits estándar obviamente facilitará la decisión entre la clave correcta y la incorrecta :) Si bien el relleno sirve principalmente para fines prácticos, también puede mejorar o incluso garantizar características de seguridad (consulte el ataque de texto sin formato elegido en el libro de texto RSA).

    
respondido por el freddyb 23.03.2011 - 23:20
fuente
0

Si el archivo es unicode / ansi / etc, puede crear un algoritmo para analizar algo como el primer carácter de un archivo y ver si hay más caracteres latinos que otros caracteres.

Recuerdo que me molesté bastante cuando probé el ataque de fuerza bruta XOR en un ejercicio simple de euler-project, pero fue fácil y solo tuve que buscar palabras comunes en inglés.

Leí en alguna parte que en el software de encriptación, la implementación es muy importante, a veces más importante que los algoritmos. Cuando leo eso, todavía me pregunto si uno está hablando de temas obvios como los generadores pseudoaleatorios, o detalles menos obvios como cómo ocultar el formato del archivo que cifras.

Por ejemplo, si cifra un archivo, si es un archivo PNG o GIF, asegúrese de eliminar el número / cadena mágica que contienen esos formatos de archivo, y si es un archivo de texto, no use una tabla ASCII : use su propia tabla de caracteres, por ejemplo, simplemente ponga todos los caracteres latinos en 0, los números en 245-255, y así sucesivamente. también podría permutar, o rot13, o bien.

Algoritmos como AES o Blowfish / TwoFish son "matemáticamente" seguros, porque se ha comprobado que no hay ataques OTROS QUE BRUTEFORCE ha sido probado como suficientemente eficiente: solo puedes descifrar el texto encontrando la clave real.

Pero esos algoritmos solo son teóricamente eficientes, DEBES implementarlos considerando otros factores de práctica como el tamaño del archivo, el uso de compresión, la codificación de texto, etc.

Por ejemplo, debes saber que sería simplemente estúpido almacenar el nombre del archivo en texto plano junto a tu archivo cifrado.

    
respondido por el jokoon 18.01.2011 - 17:41
fuente
0

Además del enfoque teóricamente ignorante de algunos "profesionales" en el campo, hay una respuesta bastante simple a su pregunta: comparando los "resultados del descifrado por fuerza bruta" con cosas obvias para propósitos de categorización.

Permítame darle ejemplos prácticos: los archivos de texto probablemente contengan "palabras vacías" ( enlace ). Encuentra más de una palabra de parada después del descifrado y lo más probable es que hayas decodificado algún texto con éxito.

Los archivos multimedia, como las imágenes y la mayoría de los otros tipos de archivos (audio, video, etc.) tienen encabezados específicos, lo que facilita la identificación del tipo de datos. ¿Crees que has descifrado un jpeg porque detectaste un encabezado similar? Compruebe el formato de archivo. Parece que es correcto? Entonces es muy probable que haya descifrado correctamente un archivo multimedia jpeg.

Podría proporcionar libros de ejemplos ... pero sé que entiendes lo que quiero decir ahora, ¿no? ;)

El resto depende de una pequeña "verificación humana" para que sepas cuándo parar de forzar lo que sea que estés intentando descifrar.

¿Es práctico? No. Pero se puede hacer cuando se codifica correctamente y facilita el trabajo. Lo he visto en acción varias veces; no solo en un entorno corporativo.

    
respondido por el user6373 27.12.2011 - 12:58
fuente

Lea otras preguntas en las etiquetas