Algoritmo de cifrado simétrico

3

Estoy tratando de aprender más sobre la criptografía y he ideado un algoritmo a continuación para el cifrado simétrico. Sé que no deberíamos usar algoritmos diseñados por nosotros mismos, pero este parece increíblemente simple y basado en SHA-256.

1) Take an input and a numeric key, k.
2) Pad i with 0s until its length has 256 as a factor.
3) Generate pseudo random bits using SHA-256(k), incrementing k each time.
4) XOR the input with the pseudo random bits.

Por qué creo que esto es tan irrompible como SHA-256:

  • El cifrado XOR con números verdaderamente aleatorios que no se reutilizan en absoluto es perfectamente seguro
  • El algoritmo SHA-256 no se ha roto aún, pero no hay pruebas matemáticas de que sea irrompible, por lo tanto, mi algoritmo es al menos tan fuerte como SHA-256

¿Hay algún problema con este algoritmo y encriptación de este tipo?

    
pregunta Lolums 03.09.2018 - 21:05
fuente

1 respuesta

3

Veo un par de problemas aquí.

No hay IV

Eso significa que si cifras dos mensajes idénticos con la misma clave, el texto cifrado es el mismo. Si incluso parte del mensaje es el mismo, es posible determinar el contenido de los otros mensajes, e incluso la clave. Lea sobre crib-dragging y verá por qué.

Tan fuerte como SHA-256

En realidad no. Es tan fuerte como la llave. Está utilizando una tecla numérica, pero ¿por cuánto tiempo? ¿Tiene 4 bytes de largo, 16 bytes de largo, 512 bytes de largo? Eso hace toda la diferencia.

Tecla numérica y SHA-256

Una clave numérica de incremento automático es incorrecta. Los equipos de fuerza bruta SHA-256 son abundantes, por lo general, se venden como Bitcoin Miners. Son baratos, eficientes y muy, muy poderosos. Usa uno para generar Terahashes por segundo, aplica tu muy rápido y rápido cálculo de XOR, calcula la entropía del mensaje y un atacante puede forzar tu mensaje secreto en minutos, tal vez menos.

Encriptación XOR con números verdaderamente aleatorios

No son aleatorios, son deterministas. Fuerza bruta el primer bloque, y todos sus datos están rotos. Si los primeros bytes del mensaje son deterministas (como un encabezado de solicitud, un encabezado de tipo de archivo o el tipo de mensaje Saludos, querido usuario ), el atacante puede usar el ataque de arrastre de cuna para inferir parte del mensaje. hash y alimentar a Bruteforcer.

Vulnerable a Know Plaintext Attack

Si algún atacante conoce el par de texto simple-cyphertext, conoce la clave XOR, porque plaintext XOR cyphertext = KEY . Esa información va a la fuerza bruta y usted sabe lo que sucede.

Vulnerable a análisis de frecuencia

256 bytes de datos son suficientes para reconstruir parte del mensaje utilizando el análisis de frecuencia. La reconstrucción del resto de los primeros 256 bytes es trivial, y resulta en un par de texto simple-cyphertext. Esto permite el ataque de texto plano conocido en los primeros 256 bytes, lo que permite que la clave XOR sea descubierta y forzada por la fuerza bruta.

Sé que estás tratando de aprender, pero tratar de aprender criptografía al hacerlo es como hacer un arma por prueba y error. Te dispararás en el pie, o en la cabeza. Wikipedia tiene un buen artículo sobre cifrado simétrico , con una lista de algoritmos, los principios detrás de ellos y las deficiencias.

    
respondido por el ThoriumBR 03.09.2018 - 21:41
fuente

Lea otras preguntas en las etiquetas