Come posso confrontare i file crittografati GPG per caricare solo quelli che sono stati modificati? [duplicare]

2

Questa domanda segue questo , per quanto riguarda la crittografia dei file singolarmente per caricarli su un servizio cloud.

--- Scenario:

  1. Ho la mia cartella piena di file non criptati

  2. Tramite lo script creo una copia shadow di tutti loro

  3. Tramite lo script li crittografo uno ad uno con i comandi ricorsivi di crittografia GPG utilizzando la mia propria chiave pubblica l'opzione --symmetric e una passphrase dedicata

  4. Tramite l'app di sincronizzazione li carico

  5. Tramite lo script, elimino la copia shadow (non sono sicuro di questo: ma come potrei successivamente confrontare i file non crittografati e crittografati per capire quali sono quelli da sostituire?)

  6. Quando eseguo nuovamente la procedura, alcuni dei miei file originali ora sono cambiati. Idealmente, solo questi dovranno essere caricati. Ripeto i punti 2 e 3. Quindi il confronto con i file crittografati sul cloud (tramite app di sincronizzazione) può avvenire.

--- Domanda Problema principale:

Considerando che due copie degli stessi file crittografati con GPG non saranno mai uguali (vedi le risposte a questa domanda ), come posso ottenere un confronto tra i file crittografati?

O la mia procedura dovrebbe essere completamente diversa?

    
posta nico 10.02.2017 - 08:11
fonte

1 risposta

2

Non puoi confrontare i contenuti dei file crittografati se stai utilizzando gpg.

Hai due modi di vedere che posso vedere:

  1. Costruisci un hash (ad esempio, sha256) di ogni file prima che lo cripti e lo memorizzi da qualche parte. Confronta gli hash anziché i file. Questo potrebbe diventare un collo di bottiglia per le prestazioni se i tuoi file sono molto grandi. Puoi controllare interi alberi costruendo hash di hash come Git. Ho uno script di backup python che fa questo per rilevare le modifiche in una base di file di grandi dimensioni; puoi avere lo script se sei interessato. Dovresti aggiungere un passaggio di crittografia ad esso, però.
  2. Guarda il tempo di modifica del contenuto del file (questo è memorizzato da ogni file system insieme al contenuto del file) per scoprire se un file è più nuovo di un altro. Questo è incredibilmente veloce, ma è necessario avere cura di ottenere un sistema funzionante.

Tuttavia, non importa in che direzione vai, il seguente problema (dal tuo primo commento) ti perseguiterà:

But I'm still confused as to when the comparison of timestamps should happen, and between which groups of files. [the emphasis is mine]

Questo è un problema abbastanza difficile sepolto in ogni scenario di sincronizzazione: se hai due set di file (es. due file tree), hai bisogno di un modo per capire quali file dell'albero A dovrebbero essere confrontati con i file nell'albero B Questo non è un problema quando si modifica solo il contenuto del file, ma cosa succede quando si aggiungono alcuni file, si rinomina e si eliminano altri ancora? Fondamentalmente è necessario un algoritmo per determinare la distanza di modifica e un editor di alberi (per determinare e applicare un piccolo, o il più piccolo, insieme di operazioni che trasformeranno l'albero A nell'albero B). Credo che questo sia un problema di O (n ^ 2) ed è una domanda di algoritmi , non una domanda di sicurezza (ad esempio dovresti chiederla a uno dei siti gemelli di stackexchange) .

Inoltre, se vuoi che la tua soluzione funzioni per gli alberi di file, non solo una singola cartella, dubito che tu possa risolvere questo problema con un piccolo script batch; come ho detto, ho fatto qualcosa di simile per scopi di backup e il mio script ha raggiunto dimensioni considerevoli (ad esempio migliaia di righe).

    
risposta data 10.02.2017 - 08:38
fonte

Leggi altre domande sui tag