Se la domanda è presa alla lettera, allora sì, non è possibile aggiungere un nuovo file a un disco rigido crittografato. Se la tua domanda è meglio formulata come "può un utente malintenzionato modificare i dati su un disco rigido crittografato senza conoscere la chiave?", La risposta è che dipende dalla modalità di funzionamento utilizzata, ma è molto possibile.
La crittografia dei dati richiede due algoritmi: il codice stesso (come AES) e una modalità operativa (come CBC). Si può presumere che il cifrario sia sicuro in tutte le circostanze realistiche, ma la modalità di funzionamento può essere piuttosto sicura, oppure può fornire una grande quantità di informazioni sui dati crittografati o, peggio, a seconda di come viene utilizzata. Ogni modalità di funzionamento ha i suoi pro e contro, e dovrebbe essere utilizzata solo per scopi specifici. Alcuni esempi:
- ECB: estremamente semplice, sicuro se usato solo per crittografare un singolo blocco di dati con un determinato tasto
- CTR: molto veloce e non ha bisogno di crittografare in multipli di un blocco, così comune in rete
- GCM: simile al CTR, ma impedisce la manomissione a scapito dell'efficienza dello spazio
- CBC: piuttosto semplice, utile per crittografare singoli file in cui l'integrità non è importante
- XTS: più complicato degli altri, ma utile per crittografare i dispositivi a blocchi come i dischi rigidi
- EME: migliore per la crittografia dei dispositivi a blocchi rispetto a XTS, ma il brevetto ingombrato così raramente utilizzato
I dischi rigidi crittografati utilizzano in genere CBC o XTS. Con CBC, la risposta alla tua domanda è no, non impedisce a qualcuno di aggiungere o modificare i dati, anche se fa impedisce loro di aggiungere interi file intatti in quanto richiederebbe un controllo preciso su vari file system complicati strutture. CBC è vulnerabile ai cosiddetti attacchi di malleabilità, che consentono una manipolazione mirata di dati già crittografati (si veda Attacco pratico di malleabilità contro le partizioni LUKS cifrate CBC ). Mentre qualcuno non poteva semplicemente aggiungere un intero nuovo file, poteva, ad esempio, modificare un file eseguibile esistente per aggiungere un comportamento malevolo. Una descrizione delle funzionalità di questo attacco contro CBC, dal documento sopra:
We can use this technique to change every 2nd plaintext block in a sector to anything we want to while destroying the blocks between the manipulated blocks. Given a blocksize of 16 bytes (128 bits) this does allow injecting more or less arbitrary shellcode to an executable file by dividing the shellcode to small chunks and adding JMP instructions to jump over the garbage blocks.
Ciò consente un livello spaventoso di controllo sui dati crittografati. Mentre la riservatezza dei dati stessi è ancora garantita con praticamente tutte le modalità di funzionamento (ad eccezione di ECB, che risulta nel famoso Pinguino ECB se usato per crittografare più di un singolo blocco di dati), probabilmente non vorrai usare questa modalità se ti aspetti che qualcuno possa essere in grado di manomettere i tuoi dati.
XTS è non perfetto e non garantisce l'integrità dei dati , evita tali modifiche mirate. Con XTS, è possibile corrompere un blocco arbitrario di 16 byte di dati, ma non è possibile scegliere a quale decodifica i dati modificati. Anche se non è così male come poter inserire dati arbitrari, può comunque essere pericoloso. Ad esempio, potrebbe essere utilizzato per ritirare i controlli delle autorizzazioni vitali dal codice macchina di un eseguibile, rendendolo vulnerabile.
Esistono speciali modalità di blocco chiamate modalità wide-block (come XCB ed EME / EME2) che sono simili a XTS, ma aumentano la dimensione minima del blocco per la manomissione fino alla dimensione di un singolo settore (in genere 512 byte). Un utente malintenzionato che può corrompere un arbitrario 512 byte è molto meno pericoloso di uno che può corrompere un arbitrario di 16 byte (o 1 bit, se viene usato qualcosa di stupido come CTR!). Sfortunatamente, queste modalità di blocco sono o sono state brevettate per gran parte della loro vita, il che ne ostacola l'adozione.
Le modalità autenticate come GCM garantiscono una perfetta integrità oltre alla riservatezza fornita dal codice, in modo che se qualsiasi testo cifrato viene modificato senza conoscere la chiave, non decodificherà affatto, piuttosto che decrittografare in testo in chiaro corrotto. Il problema con le modalità autenticate è che richiedono un po 'di dati di integrità extra chiamati MAC dopo ogni messaggio. Questo va bene per cose come il networking per sostituire CTR, dove il MAC viene inviato dopo un lungo flusso di testo cifrato, ma un disco rigido richiede di essere in grado di leggere e scrivere con granularità per settore, quindi ogni settore dovrebbe contenere il proprio MAC , riducendo notevolmente la quantità di spazio disponibile per la memorizzazione dei dati.
La maggior parte dei software di crittografia dei dischi rigidi utilizza CBC o XTS, sebbene alcune versioni di Windows includano un "diffusore", che agisce in modo simile alle modalità a blocco esteso aumentando le dimensioni minime di manomissione. Per qualcosa come Linux, un'unità può essere crittografata con aes-cbc-essiv quando è in modalità CBC, o aes-xts-plain64 quando è in modalità XTS. Puoi verificare quale modalità viene utilizzata eseguendo il comando dmsetup table
come root.