Implementación de cifrado de bloque en C ++

4

Estoy escribiendo una implementación de un cifrado de bloque en C ++. Me gustaría estudiar el criptoanálisis diferencial del cifrado, por lo que estoy generando claves y claves aleatorias al azar y luego las cifro.

¿Cuál es la mejor manera de generar estas palabras y claves aleatorias? ¿Es la función aleatoria ofrecida por C ++ suficientemente aleatoria? ¿Debo usar algunas funciones hash o el mismo cifrado que las permeaciones pseudoaleatorias para generarlas?

    
pregunta hashed 18.10.2012 - 13:51
fuente

2 respuestas

8

Cryptanalysis diferencial es un tipo de ataque que explota algunos detalles finos en la estructura del cifrado atacado; nos fijamos en pares de plaintexts, encriptados con la misma clave, y los textos cifrados correspondientes. Los pares deben elegirse con cuidado para que la diferencia entre los dos colores de la tabla (generalmente, la diferencia a nivel de bits, es decir, un XOR) ejerza con "alta" probabilidad la debilidad del algoritmo exacto a la que se dirige. No hay un criptoanálisis diferencial "genérico" en el que solo se lancen imágenes aleatorias al cifrado, y esperamos que de alguna manera se combinen en un Megazord , como un ataque.

En palabras sencillas, para realizar un criptoanálisis diferencial, debes entender lo que estás haciendo, hasta los detalles matemáticos. Y cuando alcanza el punto ese , ve que los bits de base para el criptoanálisis diferencial no son muy importantes (lo que importa es la diferencia entre los dos puntos de luz). Por lo tanto, en el contexto de un experimento de laboratorio , la mayoría de los generadores aleatorios funcionarán, pero es probable que tenga que generar muchos pares de plaintexts, por lo que puede encontrar algún cuello de botella si el PRNG es demasiado lento. (pero no lo creas todavía; mídelo ).

Si desea obtener la esencia del criptoanálisis diferencial, lea este libro e intente implementarlo en una versión reducida de DES (hasta, por ejemplo, 8 rondas en lugar del estándar 16).

    
respondido por el Thomas Pornin 18.10.2012 - 14:43
fuente
2

Para las claves, deben ser lo más aleatorias que puedas, así que usa un generador de números aleatorios verdaderos (poco probable) o un generador de números pseudoaleatorios seguro criptográficamente .

El texto sin formato puede ser aleatorio desde cualquier generador, sin embargo, no desea que el texto sin formato refleje con mayor precisión los datos reales donde ciertas cadenas de bits pueden ser más común ?

    
respondido por el ewanm89 18.10.2012 - 13:59
fuente

Lea otras preguntas en las etiquetas