Cifrado XOR básico para mensajes más largos

1

¿Cuánta fuerza efectiva se agrega a un cifrado XOR básico de 512 bits?

Clave privada = La clave0 consta de 512 bits generados aleatoriamente. Esta clave nunca se utiliza para cifrar o descifrar nada.

El mensaje de texto sin formato debe estar cifrado.

  1. Genere sal de 16 bytes aleatoria única para este mensaje en particular.

  2. Salt Key0 y ejecute el hash SHA512 para crear Key1.

  3. Primer bloque XOR con Key1.

  4. Ejecute la Clave1 (sin sal aquí y en todos los demás bloques) a través de SHA512 para crear la Clave2.

  5. Segundo bloque XOR con Key2.

  6. Continuar hasta que todo el mensaje haya sido cifrado.

  7. Almacena texto cifrado de sal +.

    Dado que cada bloque individual de cada mensaje está encriptado con una clave diferente, a menos que la misma sal se genere de forma aleatoria más de una vez y las colisiones de hashing, se debe evitar la repetición del patrón. Además, enviar una cadena de 0 binarios solo revelaría el hash con sal de la clave, por lo que sería inútil en otros mensajes. ¿Sería factible aplicar fuerza bruta al hash de la clave para recuperar la clave real?

pregunta tartstbwtp 18.07.2015 - 03:09
fuente

1 respuesta

1

Lo que esencialmente estás tratando de hacer es construir un generador de números pseudoaleatorios (con salt + Key0 como semilla) y usar la salida de este como un flujo clave para construir un cifrado de flujo. Algunos comentarios:

  1. Considere que si el primer bloque es todo 0 , entonces se pueden recuperar todas las claves subsiguientes. Esto se deduce del hecho de que el primer bloque es XOR-ed con Key1 y Key1 XOR 0 = Key1 . Si se conoce Key1 , se puede pasar a SHA512 para producir Key2 y así sucesivamente.
  2. Este no es un escenario ideado, incluso si el primer bloque no es todo 0 , suponga que es un tipo de datos de encabezado donde se conocen k bits. Esos k bits ahora pueden ser XORed contra el primer bloque de texto cifrado para recuperar k bits de Key1 . El espacio de búsqueda ahora se reduce a 2^(512-k) .
  3. Las funciones Hash (criptográficas) en general solo proporcionan garantías de que no se pueden invertir (dado que H(m) no puede encontrar m ) y son resistentes a las colisiones (es difícil encontrar m' != m de manera que H(m) == H(m') . No dicen nada acerca de proporcionar una salida indistinguible de la aleatoria, que se requiere de un generador de números pseudoaleatorios criptográficamente seguro.

Suponiendo un modelo de oráculo aleatorio (por lo que el punto 3 se puede ignorar y la salida de un hash se trata como aleatorio verdadero) y un texto plano uniformemente aleatorio tendría una seguridad de 512 bits. Sin embargo, dudo mucho que este sea el caso, aunque es difícil poner un número exacto en la seguridad del esquema. Mi recomendación es usar un cifrado de flujo bien estudiado y aleatorio.

    
respondido por el puzzlepalace 18.07.2015 - 04:41
fuente

Lea otras preguntas en las etiquetas