Elenchi di hash crittografici
Da un punto di vista teorico, verificare l'integrità dei dati che verranno messi su un supporto non affidabile (come un server di backup remoto o un dispositivo di archiviazione non presidiato) richiede di mantenere qualcosa su un supporto sicuro che è affidabile e non può essere manomesso. Quel qualcosa ti consente di verificare che il resto dei dati non sia stato manomesso. In altre parole, trasferisci la fiducia dai dati stessi ad alcuni dati ausiliari (hash, una firma crittografica, ecc.). Ciò è auspicabile perché i dati ausiliari sono molto piccoli e possono essere memorizzati localmente sulla maggior parte dei supporti. Nel caso di un backup di unità, è possibile utilizzare un hash crittografico, ad esempio SHA-256, su ciascun file:
find /path/to/backup -type f -exec sha256sum -- {} + > hashlist.txt
Il file di testo risultante contiene un elenco di file e i relativi hash SHA-256. Il file stesso può essere memorizzato localmente su un computer attendibile o firmato crittograficamente (ad es. Con GnuPG o significare ) e conservati nel backup stesso. Ciò impedirà a chiunque abbia accesso in scrittura al backup (ma non scrive l'accesso all'elenco hash) di modificare, aggiungere o eliminare file senza essere rilevato.
Firme digitali
Se stai archiviando il backup in un file system o in un tarball di grandi dimensioni, puoi semplicemente eseguire l'hash, che ti darà l'ulteriore vantaggio di conservare directory e metadati:
tar cpf - /path/to/backup | tee backup.tar | sha256sum > backup.tar.sha256
Se si desidera memorizzare l'hash list nel backup stesso, è necessario assicurarsi che l'hash list non possa essere manomesso senza rilevamento. Il modo più comune per farlo è usare GPG. Una volta che hai creato una chiave di firma , puoi firma il file , indipendentemente dal fatto che il file sia un elenco hash o un intero tarball. La firma può essere archiviata insieme ai backup ed è possibile verificare in sicurezza i backup utilizzando la chiave pubblica corrispondente. Assicurati di tenere una copia locale della chiave pubblica e non permettere che la chiave privata cada nelle mani dei tuoi avversari. Questa tecnica ha il vantaggio di essere compatibile con un certo numero di orientate alla sicurezza
.
Utilità di backup sicuro
Ci sono alcuni strumenti progettati specificamente per i backup che forniscono integrità e riservatezza. Duplicità , ad esempio, supporta l'invio di backup incrementali crittografati lato client a un gran numero di host di dati online, incluso Google Drive. Crittografa e firma i backup utilizzando una coppia di chiavi pubblica e privata, sebbene supporti anche l'uso di una chiave simmetrica (passphrase semplice). Poiché i backup incrementali sono supportati, solo il backup iniziale di una grande unità richiederà molto tempo. I backup successivi trasmetteranno solo i file che sono stati modificati:
duplicity /path/to/backup gdocs://user[:password]@other.host/some_dir
Il ripristino dal backup verifica i dati e anche i dati possono essere verificati manualmente. Come con GPG, è necessario mantenere la coppia di chiavi su un supporto affidabile (un'unità locale o una smart card). L'accesso in lettura alla chiave privata consente di creare firme valide, così come l'accesso in scrittura alla chiave pubblica.
Questo è quello che uso io stesso.
Cose da sapere
Per garantire che i valori hash siano rappresentazioni fedeli del contenuto dei file sottoposti a hash, è necessario utilizzare una strong funzione di hash. Evita l'uso di MD5 o SHA-1 poiché sono entrambi guasti (in quanto è possibile creare due file con contenuti diversi ma lo stesso hash). L'algoritmo SHA-256 è il più popolare, ma anche SHA-3-256 e BLAKE2b sono accettabili.
Se si genera una coppia di chiavi (poiché si sta utilizzando GnuPG per firmare un elenco hash o un archivio o un'utilità di backup che richiede una coppia di chiavi come Duplicity), è necessario utilizzare un algoritmo strong. Lo standard del settore è RSA per la crittografia e la firma, con un codice di 2048 o superiore.
In un commento, dici che vuoi essere in grado di usarlo per dimostrare che i file incriminanti non sono stati aggiunti con le tue conoscenze. Non è probabile che voli in tribunale, perché sarebbe banale per te caricare un nuovo file compromettente e non firmarlo per sostenere che non è stato aggiunto da te. Tutto ciò ti consentirà di fare affidamento sul backup tanto quanto ti fidi dell'elenco di hash locale (o della chiave di firma).