Descifrar trozos de pgp encriptados

1

Supongamos que tengo un archivo .csv encriptado muy grande (demasiado grande para caber en la memoria). ¿Hay una manera de descifrar N bytes del cyphertext? Mi objetivo es procesar cada fila del .csv en la memoria sin tener que escribir en el disco.

    
pregunta Tom 05.02.2016 - 20:23
fuente

2 respuestas

5

PGP utiliza el cifrado asimétrico y simétrico .
Los datos se cifran con una clave aleatoria utilizando el cifrado simétrico utilizando uno de estos algoritmos:

Según RFC 4880 :

  • IDEA
  • TripleDES
  • CAST5 (clave de 128 bits, según [RFC2144])
  • Blowfish (clave de 128 bits, 16 rondas)
  • AES con clave de 128 bits
  • AES con clave de 192 bits
  • AES con clave de 256 bits
  • Twofish con clave de 256 bits

Y en RFC 5581 :

  • Camellia 128-bit key
  • clave de 192 bits de camelia
  • Camellia 256-bit key

Luego esta clave, llamada "clave de sesión" se cifra mediante la clave pública del destinatario.
Wikipedia: PGP

Ahora,mirando RFC 4880 Sección 13.9 para OpenPGP, dice que una variación del modo CFB es utilizado para los cifrados.

El desencriptado de CFB tiene este aspecto:

Como se muestra en la imagen, comienza con iv, la clave y el primer bloque de texto cifrado y, a medida que avanza, tiene el bloque de texto simple por bloque descifrado.

Por lo tanto, en teoría, es posible tener el mensaje descifrado parte por parte, pero no he visto una herramienta que lo haga de forma inmediata debido a la falta de uso. Pero uno puede seguir adelante y desarrollar una herramienta para hacer esto.

    
respondido por el Silverfox 05.02.2016 - 22:19
fuente
3
  

Mi objetivo es procesar cada fila del archivo .csv en la memoria sin tener que escribir en el disco.

Sí, es posible. En Linux, si canaliza la salida de gpg a su programa, gpg solo escribirá en la tubería tanto como su programa pueda manejar más una pequeña cantidad extra para llenar el búfer de tubería. Si su programa se está demorando en procesar el CSV y no está leyendo desde la tubería, el descifrado y la escritura en el archivo se suspenden hasta que vuelva a leer la tubería. Sin embargo, esto no es exclusivo de gpg, así es como funcionan las tuberías Unix / Linux.

De esta manera, siempre que su analizador CSV pueda manejar el análisis incremental (CSV es fácil de analizar incrementalmente), debería poder manejar fácilmente archivos mucho más grandes que la memoria que tiene.

Sin embargo, PGP no está diseñado para acceso aleatorio; por lo tanto, si su análisis requiere acceso aleatorio al archivo, es probable que PGP no sea la forma adecuada de hacerlo.

    
respondido por el Lie Ryan 11.02.2016 - 01:24
fuente

Lea otras preguntas en las etiquetas