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.