Da un punto di vista strettamente crittografico, il modello Duplicity non presenta punti deboli.
Duplicity è progettato specificamente per un modello di minaccia quando il server di destinazione non è affidabile. Migliora drasticamente i backup incrementali, perché invece di trasferire un diff dei dati già crittografati, invia nuovi file crittografati, con una nuova chiave. Non c'è modo di dire che una data istantanea incrementale e un'altra da una data successiva hanno delle somiglianze. Ogni istantanea ha una dimensione fissa (25 MiB per impostazione predefinita). Dal punto di vista di un utente malintenzionato, una nuova istantanea potrebbe contenere 25 MiB di file interamente nuovi, 25 MB di modifiche incrementali o anche 25 MiB di metadati (record di eliminazione file e così via). Ciò è in contrasto con un dispositivo a blocchi che utilizza la modalità XTS che tende a perdere informazioni quando è possibile monitorare le variazioni nel tempo.
La duplicità firma inoltre i file usando GnuPG, che fornisce una garanzia di integrità. La modalità XTS è spesso considerata "scarsa resistenza alla malleabilità", ma in realtà è molto povera, consentendo modifiche con precisione a 16 byte. Le firme digitali di Duplicity assicurano che venga rilevato anche un singolo bit modificato, anche quando si utilizza la modalità CBC.
I backup di Duplicity sono eseguiti in più fasi:
- rsync è usato per confrontare le differenze tra un record memorizzato nella cache di file e il tuo filesystem
- tar viene utilizzato per archiviare 25 MiB di modifiche incrementali in un singolo file
- gpg è usato per crittografare e firmare il tarball
- il tarball crittografato viene inviato al server di destinazione tutto in una volta
Sebbene la modalità XTS fornisca molte informazioni quando vengono osservate modifiche nel tempo, tutto il server di destinazione può vedere con la duplicità la quantità di dati modificati. Supponete di prendere un file 50 MiB, di eseguirne il backup, quindi di modificarne la metà prima di eseguirne nuovamente il backup in modo incrementale. Se questo viene fatto con XTS, le aree precise che sono state modificate sono visibili. Con la duplicità, ciò che vedi sono 2 file 25 MiB crittografati e successivamente un altro file 25 MiB crittografato. Non è possibile confrontare il primo backup con il secondo backup incrementale per vedere quali dati sono stati modificati. Tutto quello che puoi vedere è quanto è cambiato.
Le informazioni precise che il server non attendibile può osservare con la duplicità sono molto limitate:
- la quantità totale di dati memorizzati
- la quantità di dati trasferiti in ciascun backup (approssimativamente corrispondente al numero di modifiche)
- la dimensione approssimativa del totale dei dati memorizzati (a causa di backup periodici non incrementali)