Me gustaría implementar algún tipo de cifrado simple (pero lo más sólido posible) para el tráfico de red de la aplicación cliente-servidor. Los datos que se van a cifrar pueden ser tanto de texto como binarios.
Ahora estoy pensando en usar solo un cifrado XOR trivial, pero con las siguientes funciones:
- La clave será aleatoria (es decir, secuencia aleatoria de bytes distribuida uniformemente) para cada sesión.
- El modo CBC con IV aleatorio se utilizará para cada sesión. Es decir, el texto simple será XORed con el texto cifrado anterior (o en el caso del primer "bloque" - el IV), y el resultado será XORed con (repetición de secuencias de) clave de cifrado. De esa manera, los ataques mencionados en ¿Qué hay de malo en el cifrado XOR no será posible, verdad?
Entonces, mi pregunta es: ¿qué tan fuerte es este cifrado? Muchos puntos mencionados en las respuestas de la pregunta ¿Qué hay de malo con el cifrado XOR no serán válidas? , como el IV aleatorio se asegurará de que los patrones de texto sin formato (por ejemplo, espacios, bytes NULOS, etc.) no serán observables, y el texto cifrado "parecerá más aleatorio".
¿Cuáles son las debilidades de dicho cifrado? Gracias!
P.S .: Sé que para mayor seguridad, implementar TLS con, por ejemplo. OpenSSL sería el camino a seguir, pero en realidad no necesito ese nivel de seguridad "teóricamente irrompible", usar certificados y grandes librerías como OpenSSL es una exageración para mi proyecto. Solo necesito la defensa más simple posible contra alguien que no comparta mi tráfico.