Domanda

Attenzione: Questa domanda è stato pesantemente modificato. Ho fatto del mio meglio per indovinare le intenzioni dell'autore originale. Si prega di vedere la versione originale .


Sono sicuro su come utilizzare lo strumento da riga di comando GPG, che stiamo usando per crittografare i file.

File.txt è un semplice file di testo:

Testing
hello world  
My security things.

Questo è come mi crittografare il file:

gpg --symmetric File.txt 

Questo mi dà un nuovo file, criptato: File.txt.gpg

Se qualcun altro ora modifica il file crittografato, non sono più in grado di decifrare.

$ gpg --decrypt File.txt.gpg 
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof

Come posso ottenere il contenuto del mio file, anche se qualcuno ha modificato vero?

È stato utile?

Soluzione

La tipica modalità cifratura simmetrica opera su blocchi di dati, ed i risultati di ogni blocco sono utilizzati per cifrare il blocco successivo.

Un blocco è tipicamente lungo 128 a 256 bit. Se un po 'all'interno di un blocco è danneggiato, quindi l'intero blocco non può essere decifrato. Se così non fosse, allora sarebbe possibile ottenere alcune informazioni sul contenuto del blocco, anche senza la chiave. Una parte importante di qualsiasi algoritmo di crittografia buona è che un cambiamento di un singolo bit sia il testo in chiaro o testo cifrato può causare cambiamenti a qualsiasi numero di bit nel testo cifrato o testo in chiaro corrispondente.

Un'altra caratteristica importante del meccanismo di crittografia è che blocca identici nelle crittografato non sono cifrati per blocchi identici nel cifrato. Se lo fossero, allora sarebbe possibile ottenere informazioni sul contenuto del testo in chiaro. Ad esempio, file di immagine bitmap può essere leggibile quando criptato se ogni blocco fosse cifrato esattamente allo stesso modo, a causa dei motivi che emergono. Per questo motivo, i risultati criptando un blocco sono talvolta utilizzati per cifrare il blocco successivo. Ci sono anche le modalità comuni in cui solo la chiave influisce sulla crittografia dei blocchi successivi, non il testo in chiaro.

Se i risultati di cifrare un blocco influenzano il modo i seguenti blocchi sono criptati, quindi la corruzione ad un singolo bit in un unico blocco causerà il resto del testo cifrato che segue quel blocco di essere irreversibile.

Altri suggerimenti

Rispondendo alla domanda iniziale in termini profani;

A meno che non si sa esattamente quali cambiamenti qualcuno ha fatto al vostro file crittografato, il contenuto è andato, e probabilmente non può tornare indietro.

Questo è il motivo per cui i file crittografati vengono utilizzati per proteggere i dati; sono davvero, davvero difficile da all'indietro di lavoro.

Si dovrebbe produrre e distribuire un digest del file crittografato insieme con il file crittografato in sé.

Prima di decifrare il file, calcolare il digest e verificare se è uguale a quello fornito. Se i digest non corrisponde quindi il file crittografato è stato danneggiato e non è valido.

Non è possibile crittografare un file, modificarlo e fingere di essere ancora valido criptato.

Non c'è modo sarete in grado di fare questo con appena il file crittografato.

Credo che quello che stai cercando è ridondanza dei dati . CD per esempio, hanno. È possibile effettuare un graffio su uno e l'intero dati sono ancora leggibili, nonostante il fatto che molti dati sono persi con il graffio.

Il modo più semplice di farlo è quello di memorizzare solo il file due volte, utilizzando un checksum è possibile determinare se uno di loro è stato modificato. Tecniche più avanzate utilizzano checksum intercalati e bit di parità / byte. Una panoramica delle tecniche sopra può essere trovato su wikipedia.

Non consiglio di implementare da soli. E 'molto più semplice e più sicuro utilizzare solo un'implementazione già esistente. (Sono sicuro che ci sono un po 'là fuori, ma io non li conosco.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top