Estoy cifrando una secuencia de mensajes con AES/CTR
.
Para cada secuencia, genero una inicial IV aleatoria, por ejemplo, IV(0)
.
Defina IV(i) = MD5(IV(i - 1))
para i = 1, ..., n
.
Luego para cada mensaje m(i)
,
Transmito IV(i) . e(key, IV(i), m(i))
sobre el canal,
donde .
denota la operación de adición y e(.)
es la función de cifrado.
En otras palabras,
el IV de cada mensaje se deriva del IV anterior mediante la aplicación de una función hash y
Transmito los IV a lo largo del texto cifrado.
Por lo tanto,
Las IV son distintas (con alta probabilidad),
pero predecible,
si tienes el anterior.
¿Hay algún problema con este esquema de cifrado?
Editar:
Tengo que usar CTR, debido a algunas restricciones de implementación. Quiero almacenar los datos cifrados en un dispositivo de almacenamiento inseguro y descifrarlos una vez que haya recuperado la información. La confidencialidad es mi principal prioridad. La integridad o maleabilidad del mensaje son de menor importancia. De hecho, El contenido de los mensajes es una versión comprimida de algunos archivos altamente estructurados. Es decir, la modificación de algunos bytes del texto cifrado sin saber todo el texto llano arruina la integridad del mensaje. Entonces, asumo que la estructura del archivo impone algún tipo de integridad.