¿Puedo cifrar un archivo de manera incremental?

4

¿Hay alguna forma de cifrar un archivo de manera incremental? El problema es que recibo un archivo por porciones a través de Internet (es una aplicación cliente-servidor y envío matrices de bytes a través de un servicio WCF) y no sé cuándo llegará la próxima porción (si corresponde) y cual es su tamaño Todo lo que sé es que no puedo almacenarlo en la memoria RAM, necesito cifrarlo inmediatamente y agregarlo a los fragmentos anteriores.

Restricciones:

  • No puedo imponer un tamaño de trozo;
  • Me gustaría (si es posible) descifrar el archivo como si estuviera cifrado como un solo archivo;
  • No puedo almacenar los trozos sin cifrarlos;
  • No puedo almacenar los distintos tamaños de trozos ni almacenarlos en diferentes archivos;
  • Estoy usando un algoritmo AES;
  • No puedo cambiar mi trabajo.

¿Alguna idea o sugerencia?

    
pregunta Fabio 05.11.2012 - 18:27
fuente

1 respuesta

8

Sí. La mayoría de los algoritmos de cifrado de clave simétrica admiten un modo de transmisión, en el que usted cifra el mensaje de manera incremental a medida que llega. Esto incluye el modo CTR, el modo CBC y la mayoría de los otros modos.

De forma similar, la mayoría de los códigos de autenticación de mensajes (MAC) admiten un modo de funcionamiento de transmisión cuando se genera el MAC. Por otro lado, al verificar un MAC, mientras puede procesar los datos de forma continua, no puede verificar si el MAC es válido hasta que haya procesado todos los datos, por lo que no puede actuar sobre el contenido de ningún fragmento hasta que Los recibí todos y verifiqué que el MAC en todo el archivo es válido.

En su situación, hay otra solución que es probablemente más sencilla: cifre cada fragmento de datos tan pronto como llegue, y almacene todos los fragmentos cifrados. Cuando desee descifrar, descifre cada fragmento y concatene los resultados. Si sigue este enfoque, asegúrese de incluir un número de secuencia y el nombre de archivo en cada fragmento, para que no se puedan volver a ordenar. Además, asegúrese de usar cifrado autenticado (como siempre). Este enfoque es probablemente más sencillo y, por lo tanto, puede ser más adecuado para sus necesidades.

    
respondido por el D.W. 05.11.2012 - 19:08
fuente

Lea otras preguntas en las etiquetas