Decrittografa i blocchi di pgp crittografati

2

Supponiamo di avere un file .csv crittografato molto grande (troppo grande per adattarsi alla memoria). C'è un modo per decodificare N byte del testo cifrato? Il mio obiettivo è quello di elaborare ogni riga di .csv in memoria senza mai scrivere sul disco.

    
posta Tom 05.02.2016 - 20:23
fonte

2 risposte

5

PGP Utilizza sia la crittografia asimmetrica che simmetrica .
I dati vengono crittografati con una chiave casuale utilizzando la crittografia simmetrica utilizzando uno di questi algoritmi:

Come per RFC 4880 :

  • IDEA
  • TripleDES
  • CAST5 (chiave a 128 bit, come [RFC2144])
  • Blowfish (chiave a 128 bit, 16 colpi)
  • AES con chiave a 128 bit
  • AES con chiave a 192 bit
  • AES con chiave a 256 bit
  • Twofish con chiave a 256 bit

E in RFC 5581 :

  • Chiave a 128 bit Camellia
  • Chiave Camellia a 192 bit
  • Chiave a 256 bit Camellia

Quindi questa chiave, chiamata "chiave di sessione", è crittografata usando la chiave pubblica del destinatario.
Wikipedia: PGP

Oraguardando RFC 4880 Sezione 13.9 per OpenPGP, si dice che una variazione della modalità CFB è usato per le cifre.

La decifrazione CFB si presenta così:

Come mostrato nell'immagine, inizi con iv, key e il primo blocco di testo cifrato e mentre vai avanti hai il tuo testo semplice blocco per blocco decrittografato.

Quindi in teoria è possibile avere il messaggio decrittografato parte per parte, ma non ho visto uno strumento farlo fuori dagli schemi probabilmente a causa della mancanza di casi d'uso. Ma si può andare avanti e sviluppare uno strumento per farlo.

    
risposta data 05.02.2016 - 22:19
fonte
3

My goal is to process each row of the .csv in memory without ever writing to disk.

Sì, è possibile. In Linux, se colleghi l'output di gpg al tuo programma, gpg scriverà nella pipe tanto quanto il tuo programma può gestire più una piccola quantità extra per riempire il buffer del pipe. Se il tuo programma ha bisogno di tempo per elaborare il CSV e non sta leggendo dalla pipe, la decodifica e la scrittura sul file sono sospese finché non leggi di nuovo dalla pipe. Questo non è però univoco per gpg, questo è il modo in cui funzionano le pipe Unix / Linux.

In questo modo, finché il parser CSV è in grado di gestire l'analisi incrementale (CSV è facile da analizzare in modo incrementale), dovresti essere in grado di gestire facilmente i file molto più grandi della memoria che hai.

PGP non è progettato per l'accesso casuale; quindi se la tua analisi richiede un accesso casuale al file, allora PGP probabilmente non è il modo appropriato per farlo.

    
risposta data 11.02.2016 - 01:24
fonte

Leggi altre domande sui tag