Difference between revisions of "Disk encryption (Italiano)"

From ArchWiki
Jump to: navigation, search
(performance features: Traduzione)
(Keys, keyfiles and passphrases: Traduzione incompleta)
(9 intermediate revisions by the same user not shown)
Line 413: Line 413:
 
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |
 
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |
  
=====''block device encryption specific''=====
+
=====''specifiche della cifratura dei dispositivi a blocchi''=====
 
! scope="col" style="background:#E2E2E2" | Loop-AES
 
! scope="col" style="background:#E2E2E2" | Loop-AES
 
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS
 
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS
Line 421: Line 421:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
support for (manually) resizing the encrypted block device in-place
+
supporto per il ridimensionamento manuale del dispositivo a blocchi cifrato
 
| ?
 
| ?
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
Line 431: Line 431:
 
|-
 
|-
 
| colspan="6" style="border-left-color:transparent; text-align:left;" |
 
| colspan="6" style="border-left-color:transparent; text-align:left;" |
=====''stacked filesystem encryption specific''=====
+
 
 +
=====''specifiche della cifratura del filesystem stacked''=====
 
! scope="col" style="background:#E2E2E2" | eCryptfs
 
! scope="col" style="background:#E2E2E2" | eCryptfs
 
! scope="col" style="background:#E2E2E2" | EncFs
 
! scope="col" style="background:#E2E2E2" | EncFs
Line 437: Line 438:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
supported file systems
+
filesystem supportati
 
| ext3, ext4, xfs (with caveats), jfs, nfs...
 
| ext3, ext4, xfs (with caveats), jfs, nfs...
 
| ?
 
| ?
Line 443: Line 444:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
ability to encrypt filenames
+
capacità di cifrare i nomi dei file
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
Line 449: Line 450:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
ability to ''not'' encrypt filenames
+
capacità di ''non'' cifrare i nomi dei file
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
 
| <span style="font-size:210%; color:#5F9E23;">✔</span>
Line 457: Line 458:
 
|-
 
|-
 
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |
 
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |
=====''compatibility & prevalence''=====
+
 
 +
=====''compatibilità & popolarità''=====
 
! scope="col" style="background:#E2E2E2" | Loop-AES
 
! scope="col" style="background:#E2E2E2" | Loop-AES
 
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS
 
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS
Line 466: Line 468:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
supported Linux kernel versions
+
versioni del kernel Linux supportate
 
| 2.0 or newer
 
| 2.0 or newer
 
| ?
 
| ?
Line 474: Line 476:
 
|- valign="top"
 
|- valign="top"
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
! scope="row" rowspan="3" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | encrypted data can also be accessed from...
+
! scope="row" rowspan="3" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | i dati cifrati possono essere letti da...
 
! scope="row" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | Windows
 
! scope="row" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | Windows
 
| <span style="font-size:210%; color:#5F9E23;">✔</span> (with <sup>[[#Notes_.26_References|[3]]]</sup>)
 
| <span style="font-size:210%; color:#5F9E23;">✔</span> (with <sup>[[#Notes_.26_References|[3]]]</sup>)
Line 500: Line 502:
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
| style="border-left-color:transparent; border-bottom-color:transparent" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
 
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |
used by
+
usato da
 
| ?
 
| ?
 
|  
 
|  
Line 512: Line 514:
 
|}
 
|}
  
==Preparation==
+
==Preparazione==
  
===Choosing a setup===
+
===Scegliere un setup===
  
Which disk encryption setup is appropriate for you will depend on your goals (please read [[#Why_use_encryption?]] above) and system parameters.<br>
+
Il setup di cifratura dei dischi appropriato per te dipende dai tuoi scopi (per favore leggi [[#Perché_usare_la_crittografia?]] sopra) e le specifiche del tuo sistema..<br>
Among other things, you will need to answer the following questions:
+
Tra le altre cose, dovrai rispondere alle seguenti domande:
  
 
<ul>
 
<ul>
<li>What kind of "attacker" do you want to protect against?
+
<li>Da che tipo di hacker (attacker) ti vuoi proteggere?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>Casual computer user trying to passively spy on your disk contents while your system is turned off / stolen / etc.</li>
+
<li>Utente di computer casuale che sta provando a spiare passivamente i contenuti del tuo disco mentre il tuo sistema è spento/non funzionante.</li>
<li>Professional cryptanalyst who can get repeated read/write access to your system before and after you use it</li>
+
<li>Studente di crittogrammi che può ottenere ripetuti accessi in lettura/scrittura nel tuo sistema dopo che lo hai usato.</li>
<li>anything in between</li>
+
<li>niente di simile</li>
 
</ul></li>
 
</ul></li>
 
</ul>
 
</ul>
  
 
<ul>
 
<ul>
<li>What encryption strategy shall be employed?
+
<li>Quale strategia di cifratura sarà impiegata?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>data encryption</li>
+
<li>cifratura dei dati</li>
<li>system encryption</li>
+
<li>cifratura del sistema</li>
<li>something in between</li>
+
<li>qualcosa di simile</li>
 
</ul><ul>
 
</ul><ul>
<li>How should swap, {{ic|/tmp}}, etc. be taken care of?
+
<li>Come ci si potrebbe occupare dello swap? {{ic|/tmp}}?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>ignore, and hope no data is leaked</li>
+
<li>lo ignoro, e spero che nessun dato sia stato rubato</li>
<li>disable or mount as ramdisk</li>
+
<li>Swap disabilitato, oppure montato come ramdisk</li>
<li>encrypt ''(as part of full disk encryption, or separately)''</li>
+
<li>Swap cifrato ''(come parte di una completa cifratura del disco)''</li>
 
</ul></li></ul></li>
 
</ul></li></ul></li>
 
</ul>
 
</ul>
  
 
<ul>
 
<ul>
<li>How should encrypted parts of the disk be unlocked?
+
<li>Come dovrebbero essere sbloccati le parti del disco cifrate?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>passphrase ''(same as login password, or separate)''</li>
+
<li>password ''(la stessa del login, o diversa)''</li>
<li>keyfile ''(e.g. on a USB stick, that you keep in a safe place or carry around with yourself)''</li>
+
<li>file con la chiave ''(es. dentro a una pen drive USB, che bisogna tenere in posto sicuro)''</li>
<li>both</li>
+
<li>Tutti e due</li>
 
</ul></li>
 
</ul></li>
 
</ul>
 
</ul>
  
 
<ul>
 
<ul>
<li>''When'' should encrypted parts of the disk be unlocked?
+
<li>''Quando'' le parti cifrate del disco dovrebbero essere sbloccare?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>before boot</li>
+
<li>prima dell'avvio</li>
<li>during boot</li>
+
<li>durante l'avvio</li>
<li>at login</li>
+
<li>al login</li>
<li>manually on demand ''(after login)''</li>
+
<li>manualmente ''(after login)''</li>
 
</ul></li>
 
</ul></li>
 
</ul>
 
</ul>
  
 
<ul>
 
<ul>
<li>How should multiple users be accomodated?
+
<li>Come sarebbero sistemati gli utenti multipli?
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
 
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0">
<li>not at all</li>
+
<li>non ci sono</li>
<li>using a shared passphrase/key</li>
+
<li>usando una chiave condivisa</li>
<li>idependently issued and revocable passphrases/keys for the same encrypted part of the disk</li>
+
<li>più chiavi indipendenti e revocabili per la stessa parte di disco</li>
<li>separate encrypted parts of the disk for different users</li>
+
<li>parti del disco cifrate separate per utenti diversi</li>
 
</ul></li>
 
</ul></li>
 
</ul>
 
</ul>
  
Then you can go on to make the required technical choices (see [[#Available_methods]] above, and [[#How_the_encryption_works]] below), regarding:
+
Dopo puoi fare le scelte tecniche richieste (vedi [[#Metodi_disponibili]] e [[#How_the_encryption_works]] circa:
  
* stacked filesystem encryption vs. blockdevice encryption
+
* crittografia stacked filesystem vs. cifratura dei dispositivi a blocchi
* key management
+
* amministrazioni delle chiavi
* cipher and mode of operation
+
* cifratura
* metadata storage
+
* memorizzazione dei metadatim
* location of the "lower directory" (in case of stacked filesystem encryption)
+
* posizione della "cartella inferiore" (in caso di cifratura stacked filesystem)
 
* ...
 
* ...
  
In practice, it could turn out something like:
+
In pratica, puoi scegliere qualcosa di simile a questo:
  
<dl><dt style="font-weight:normal">'''''Example 1:''''' simple data encryption (internal hard drive)
+
<dl><dt style="font-weight:normal">'''''Esempio 1:''''' cifratura dei dati semplice (hard disk interno)
<dd>
+
<dd>ve)
  &bull; '''a folder called "~/Private"''' in the user's home dir encrypted with ''EncFS''
+
  &bull; '''una cartella chiamata "~/Private"''' nella cartella home dell'utente cifrata con ''EncFS''
   <span style="color:#777">'' ├──> encrypted versions of the files end up in ~/.Private''</span>
+
   <span style="color:#777">'' ├──> versioni cifrate dei file dentro  ~/.Private''</span>
   <span style="color:#777">'' └──> unlocked on demand with dedicated passphrase''</span>
+
   <span style="color:#777">'' └──> sbloccate al momento con una password dedicata''</span>
 
</dl>
 
</dl>
  
<dl><dt style="font-weight:normal">'''''Example 2:''''' simple data encryption (removable media)
+
<dl><dt style="font-weight:normal">'''''Esempio 2:''''' cifratura dei dati semplice (disco rimobivile)
 
<dd>
 
<dd>
  &bull; '''whole external USB drive''' encrypted with ''TrueCrypt''
+
  &bull; '''intero disco USBw''' cifrato con ''TrueCrypt''
   <span style="color:#777">'' └──> unlocked when attached to the computer''</span>
+
   <span style="color:#777">'' └──> sbloccato quando collegato al computer''</span>
   <span style="color:#777">''      (using dedicated passphrase + using ~/photos/2006-09-04a.jpg as covert keyfile)''</span>
+
   <span style="color:#777">''      (usando una password dedicata + un file .jpg che sarebbe un keyfile''</span>
 
</dl>
 
</dl>
  
<dl><dt style="font-weight:normal">'''''Example 3:''''' partial system encryption
+
<dl><dt style="font-weight:normal">'''''Esempio 3:''''' cifratura del sistema parziale
 
<dd>
 
<dd>
  &bull; each user's '''home directory''' encrypted with ''eCryptfs''
+
  &bull; ogni '''cartella home''' dell'utente cifrata con ''eCryptfs''
   <span style="color:#777">'' └──> unlocked on login, using login passphrase''</span>
+
   <span style="color:#777">'' └──> sbloccata al login, usando la password di login''</span>
  &bull; '''swap''' and '''/tmp''' partitions encrypted with ''dm-crypt+LUKS''
+
  &bull; le partizioni '''swap''' e '''/tmp''' cifrate con ''dm-crypt+LUKS''
   <span style="color:#777">'' └──> using automatically generated per-session throwaway key''</span>
+
   <span style="color:#777">'' └──> usando un chiave portabile automaticamente generata per sessione''</span>
  &bull; indexing/caching of contents of /home by slocate (and similar apps) disabled
+
  &bull; indicizzazione/cache dei contenuti di /home da slocate (e applicazioni simili) non cifrate
 
</dl>
 
</dl>
  
<dl><dt style="font-weight:normal">'''''Example 4:''''' system encryption
+
<dl><dt style="font-weight:normal">'''''Example 4:''''' cifratura del sistema
 
<dd>
 
<dd>
  &bull; '''whole hard drive except /boot partition''' encrypted with ''dm-crypt+LUKS''
+
  &bull; '''intero hard disk eccetto la partizione di boot''' cifrato con ''dm-crypt+LUKS''
   <span style="color:#777">'' └──> unlocked during boot, using USB stick with keyfile (shared by all users)''</span>
+
   <span style="color:#777">'' └──> sbloccato durante l'avvio, usando una pen drive USB con keyfile (condiviso da tutti gli utenti)''</span>
 
</dl>
 
</dl>
  
<dl><dt style="font-weight:normal">'''''Example 5:''''' paranoid system encryption
+
<dl><dt style="font-weight:normal">'''''Example 5:''''' cifratura del sistema paranoica
 
<dd>
 
<dd>
  &bull; '''whole hard drive''' encrypted with ''dm-crypt+LUKS''
+
  &bull; '''intero hard disk''' cifrato con ''dm-crypt+LUKS''
   <span style="color:#777">'' └──> unlocked before boot, using dedicated passphrase + USB stick with keyfile''</span>
+
   <span style="color:#777">'' └──> sbloccato prima dell'avvio usando una password dedicata più un keyfile dentro a una pen drive USB''</span>
   <span style="color:#777">''      (different one issued to each user - independently revocable)''</span>
+
   <span style="color:#777">''      (differente per ogni utente - indipendentemente revocabile''</span>
  &bull; '''/boot partition''' located on aforementioned USB stick
+
  &bull; '''partizione di /boot''' posizionata sulla pen drive USB usata prima
 
</dl>
 
</dl>
  
Many many other combinations are of course possible. You should carefully plan what kind of setup will be appropriate for your system.
+
Molte e molte altre combinazioni sono possibili. Dovresti pianificare che tipo di setup sarà appropriato per il tuo sistema.
  
===Choosing a strong passphrase===
+
===Scegliere una buona password===
  
When relying on a passphrase, it must be complex enough to not be easy to guess or break using brute-force attacks. The tenets of strong passphrases are based on ''length'' and ''randomness''.<br>
+
Quando fai affidamento a una password, essa deve essere completa abbastanza da non essere facile da indovinare o scavalcare usando attacchi brute-force. I princìpi di una buona password sono basati sulla ''lunghezza'' e ''casualità d'ordine''<br>
Refer to [http://www.iusmentis.com/security/passphrasefaq/ The passphrase FAQ] for a detailed discussion, and especially consider the [http://world.std.com/~reinhold/diceware.html Diceware Passphrase] method.
+
Vedi [http://www.iusmentis.com/security/passphrasefaq/ The passphrase FAQ] e considera di usare il metodo [http://world.std.com/~reinhold/diceware.html Diceware Passphrase].
  
Another aspect of the strength of the passphrase is that it must not be easily recoverable from other places.
+
Un altro aspetto della forza di una password è che non deve essere facilmente recuperabile da altri posti. Se si usa la stessa password per la cifratura del disco e per il login (utile per esempio auto montare la partizione o la cartella cifrata al login), assicurati che {{ic|/etc/shadow}} non finisca su una partizione cifrata, oppure usa un buon algoritmo hash (cioè sha512/bcrypt, non md5) per la password memorizzata (vedi [[SHA_password_hashes]] per altre info).
If you use the same passphrase for disk encryption as you use for your login password (useful e.g. to auto-mount the encrypted partition or folder on login), make sure that {{ic|/etc/shadow}} either also ends up on an encrypted partition, or uses a strong hash algorithm (i.e. sha512/bcrypt, not md5) for the stored password hash (see [[SHA_password_hashes]] for more info).
+
  
===Preparing the disk===
+
===Preparare il disco===
  
Before setting up disk encryption on a (part of a) disk, consider securely wiping it first. This consists of overwriting the entire drive or partition with a stream of zero bytes or random bytes, and is done for one or both of the following reasons:
+
Prima di iniziare il setup della cifratura del disco su un (parte di un) disco, considera di eseguire una pulizia accurata di esso. Questo consiste nel sovrascrivere l'intero disco o partizione con un flusso di zero byte, e va fatto ciò per le seguenti ragioni:
  
 
<ul>
 
<ul>
<li><p>'''prevent recovery of previously stored data'''</p>
+
<li><p>'''prevenire il recupero dei dati memorizzati precedentemente'''</p>
Disk encryption doesn't change the fact that individual sectors are only overwritten on demand, when the file system creates or modifies the data those particular sectors hold (see [[#How_the_encryption_works]] below). Sectors which the filesystem considers "not currently used" are not touched, and may still contain remnants of data from previous filesystems. The only way to make sure that all data which you previously stored on the drive can not be [[Wikipedia:Data_recovery|recovered]], is to manually erase it.<br>
+
La cifratura non cambia il fatto che i settori individuali vengano scritti al momento, quando il sistema crea o modifica dei dati in quei particolari settori (vedi [[#How_the_encryption_works]] sotto). I settori che il filesystem considera "non usati al momento" non sono toccati, e potrebbero ancora contenere rimasugli di dati dei filesystem precedenti. L'unico modo per essere sicuri che tutti i dati memorizzati precedentemente sul disco non possano essere [[Wikipedia:Recupero_dati|recuperati]], è di cancellarli manualmente.<br>
For this purpose it does not matter whether zero bytes or random bytes are used (although wiping with zero bytes will be much faster).
+
 
</li>
 
</li>
  
<li><p>'''prevent disclosure of usage patterns on the encrypted drive'''</p>
+
<li><p>'''prevenire la divulgazione dei modelli d'uso del disco cifrato'''</p>
Ideally, the whole encrypted part of the disk should be indistinguishable from uniformly random data. This way, no unauthorized person can know which and how many sectors actually contain encrypted data - which may be a desirable goal in itself (as part of true confidentiality), and also serves as an additional barrier against attackers trying to break the encryption.<br>
+
Idealmente, l'intera parte cifrata del disco dovrebbe essere indistinguibile dai dati casuali. In questo modo, le persone non autorizzate non possono conoscere quali settori contengono effettivamente dati cifrati - che potrebbe essere un obbiettivo desiderabile (come parte della vera riservatezza), ed anche funziona da ostacolo aggiuntivo contro gli attacker che cercano di rompere la cifratura.<br>
For this purpose, wiping the disk using high-quality random data is crucial.
+
Per questi motivi, ripulire l'hard disk usando dei dati casuali d'alta qualità è decisivo.
 
</li>
 
</li>
 
</ul>
 
</ul>
  
The second reason only makes sense in combination with block device encryptions, because in the case of stacked filesystem encryption the encrypted data is easily identifiable anyways (in the form of distinct encrypted files in the host filesystem). Also note that even if you only intend to encrypt a particular folder, you will have to erase the whole partition if you want to get rid of files that were previously stored in that folder in unencrypted form. If there are other folders on the same partition, you will have to back them up and move them back afterwards.
+
Il secondo motivo ha senso con la cifratura del dispositivo a blocchi, perché in caso di cifratura stacked filesystem i dati cifrati sono comunque facilmente identificabili (in forma di distinti file cifrati nel filesystem ospitante). Ricordare anche che se si intende cifrare una cartella particolare, si dovrà cancellare l'intera partizione se si vuole sbarazzare completamente dei file precedentemente memorizzati in quella cartella in forma non cifrata. Se ci sono altre cartelle sulla stessa partizione, si dovrà fare il backup di essi e riposizionarli a fine pulizia.
  
Once you have decided which kind of disk erasure you want to perform, refer to the [[Securely_wipe_disk]] article for technical instructions.
+
Non appena si ha deciso quale tipo di disco si vuole impegnare, vedere l'articolo [[Securely_wipe_disk]] per istruzioni tecniche.
  
{{Tip|In deciding which method to use for secure erasure of a hard disk drive, remember that this will not need to be performed more than once for as long as the drive is used as an encrypted drive.}}
+
{{Tip|Nel decidere quale metodo usare per una sicura cancellazione dell'hard disk, ricorda che non ci sarò bisogno di rifarlo più di una volta fino a quando l'unità non è utilizzata come unità crittografata.}}
  
==How the encryption works==
+
==Come funziona la crittografia==
  
This section is intended as a high-level introduction to the concepts and processes which are at the heart of usual disk encryption setups.
+
Questa sezione è intesa come un'introduzione di alto livello ai concetti e i processi che sono il cuore delle configurazioni di crittografia del disco.
  
It does not go into technical or mathematical details (consult the appropriate literature for that), but should provide a system administrator with a rough understanding of how different setup choices (especially regarding key management) can affect usability and security.
+
Essa non va dentro dettagli di tipo tecnico e matematico (consulta l'appropriata letteratura per questo), ma dovrebbe far capire ad un amministratore di sistema come le diverse configurazioni (specialmente l'amministrazione delle chiavi) possono influire sulla sicurezza e l'usabilità.
  
===Basic principle===
+
===Princìpio di base===
  
For the purposes of disk encryption, each blockdevice (or individual file in the case of stacked filesystem encryption) is divided into '''sectors''' of equal lenght, for example 512 bytes (4,096 bits). The encryption/decryption then happens on a per-sector basis, so the n'th sector of the blockdevice/file on disk will store the encrypted version of the n'th sector of the original data.
+
Per i fini della crittografia del disco, ogni dispositivo a blocchi (o file nel caso di crittografia di stacked filesystem) è diviso in '''settori''' di uguale lunghezza, per esempio 512 byte (4096 bit). La cifratura/decifratura avviene per ogni singolo settore, quindi il settore "n" del dispositivo a blocchi/file immagazzinerà la versione cifrata del settore "n" dei dati originali.
  
Whenever the operating system or an application requests a certain fragment of data from the blockdevice/file, the whole sector (or sectors) that contains the data will be read from disk, decrypted on-the-fly, and temporarily stored in memory:
+
Ogni volta che il sistema operativo o l'applicazione richiede un certo frammento di dato dal dispositivo a blocchi/file, l'intero settore/i che contiene i dati sarà letto dal disco, decifrato al volo, e temporaneamente immagazzinato nella memoria:
  
          ╔═══════╗
+
            ╔═══════╗
   sector 1 ║"???.."║
+
   settore 1 ║"???.."║
          ╠═══════╣        ╭┈┈┈┈┈╮
+
            ╠═══════╣        ╭┈┈┈┈┈┈╮
   sector 2 ║"???.."║        ┊ key ┊
+
   settore 2 ║"???.."║        ┊chiave┊
          ╠═══════╣        ╰┈┈┬┈┈╯
+
            ╠═══════╣        ╰┈┈┬┈┈┈╯
                         
+
                              │  
          ╠═══════╣            ▼             ┣┉┉┉┉┉┉┉┫
+
            ╠═══════╣            ▼             ┣┉┉┉┉┉┉┉┫
   sector n ║"???.."║━━━━━━━(decryption)━━━━━━▶┋"abc.."┋ sector n
+
   settore n ║"???.."║━━━━━━━(decifratura)━━━━━━▶┋"abc.."┋ sector n
          ╠═══════╣                         ┣┉┉┉┉┉┉┉┫
+
            ╠═══════╣                           ┣┉┉┉┉┉┉┉┫
               
+
                 
          ╚═══════╝
+
            ╚═══════╝
 
    
 
    
           encrypted                          unencrypted
+
           file o                              dati non
      blockdevice or                          data in memory
+
          dispositivo a blocchi                cifrati in
         file on disk
+
          cifrato                              memoria
 +
          
  
Similarly, on each write operation, all sectors that are affected must be re-encrypted complelety (while the rest of the sectors remain untouched).
+
Analogamente, in ogni operazione di scrittora, tutti i settori interessati devono essere ri-cifrati completamente (mentre il resto dei settore rimane uguale).
  
===Keys, keyfiles and passphrases===
+
===Keyfile e password===
  
In order to be able to de/encrypt data, the disk encryption system needs to know the unique secret "key" associated with it. This is a randomly generated byte string of a certain length, for example 32 bytes (256 bits).
+
Prima di cifrare/decifrare i dati, il sistema di cifratura del disco deve conoscere la "chiave" univoca associata ad esso. Questa è una stringa generata casualmente di una certa lunghezza, per esempio 32 byte (256 bit).
  
Whenever the encrypted block device or folder in question is to be mounted, its corresponding key (called henceforth its "master key") must be retrieved - usually from one of the following locations:
+
Ogni volta che il dispositivo a blocchi o la cartella cifrata in questione deve essere montata, la sua chiave corrispondente (chiamata d'ora in avanti "master key") deve essere ripresa - di solito da una delle seguenti posizioni:
  
 
<ul>
 
<ul>
<li><p>'''''stored in a plaintext keyfile'''''</p>
+
<li><p>'''''memorizzata in un keyfile'''''</p>
  
Simply storing the master key in a file (in readable form) is the simplest option. The file - called a "keyfile" - can be placed on a USB stick that you keep in a secure location and only connect to the computer when you want to mount the encrypted parts of the disk (e.g. during boot or login).
+
Semplicemente memorizzando la master key in un file (in forma leggibile), è l'opzione più semplice. Il file - chiamato keyfile - può essere posizionato su una pen drive USB riposta in una posizione sicura e essere usato soltanto quando bisogna montare una parte cifrata del disco (es. durante il boot o il login).
 
</li>
 
</li>
  
<li><p>'''''stored in passphrase-protected form in a keyfile or on the disk itself'''''</p>
+
<li><p>'''''memorizzata in un keyfile o nel disco stesso in modalità cifrata con password'''''</p>
  
The master key (and thus the encrypted data) can be protected with a secret passphrase, which you will have to remember and enter each time you want to mount the encrypted block device or folder.
+
La master key (e quindi i dati cifrati) può essere protetta con una password segreta, che bisogna ricordare ed immettere ogni volta che si vuole montare il dispositivo a blocchi o cartella cifrato.
  
A common setup is to apply so-called "key stretching" to the passphrase (via a "key derivation function"), and use the resulting enhanced passphrase as the mount key for decrypting the actual master key (which has been previously stored in encrypted form):
+
Una configurazione comune è applicare la -così chiamata- "key stretching" alla password (attraverso la funzione "key derivation"), e usare la password risultante come chiave per decifrare la master key attuale (che è stata precedentemente memorizzata in forma cifrata):
  
 
<pre>
 
<pre>
  ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮                         ╭┈┈┈┈┈┈┈┈┈┈┈╮
+
  ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮                         ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
  ┊ mount passphrase ┊━━━━━⎛key derivation⎞━━━▶┊ mount key ┊
+
  ┊ password di mount ┊━━━━━⎛key derivation⎞━━━▶┊chiave di mount┊
  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯ ,───⎝  function  ⎠    ╰┈┈┈┈┈┬┈┈┈┈┈╯
+
  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯ ,───⎝  function  ⎠    ╰┈┈┈┈┬┈┈┈┈┈┈┈┈┈┈╯
 
  ╭──────╮            ╱                              │
 
  ╭──────╮            ╱                              │
 
  │ salt │───────────´                              │
 
  │ salt │───────────´                              │
 
  ╰──────╯                                          │
 
  ╰──────╯                                          │
  ╭─────────────────────╮                            ▼         ╭┈┈┈┈┈┈┈┈┈┈┈┈╮
+
  ╭─────────────────────╮                            ▼         ╭┈┈┈┈┈┈┈┈┈┈┈┈╮
  │ encrypted master key│━━━━━━━━━━━━━━━━━━━━━━(decryption)━━━▶┊ master key ┊
+
  │ master key cifrata  │━━━━━━━━━━━━━━━━━━━━━━(decifratura)━━━▶┊ master key ┊
  ╰─────────────────────╯                                     ╰┈┈┈┈┈┈┈┈┈┈┈┈╯
+
  ╰─────────────────────╯                                       ╰┈┈┈┈┈┈┈┈┈┈┈┈╯
 
</pre>
 
</pre>
  
The '''key derivation function''' (e.g. PBKDF2 or scrypt) is deliberately slow (it applies many iterations of a hash function, e.g. 1000 iterations of HMAC-SHA-512), so that brute-force attacks to find the passphrase are rendered infeasible. For the normal use-case of an authorized user, it will only need to be calculated once per session, so the small slowdown is not a problem.<br>It also takes an additional blob of data, the so-called "'''salt'''", as an argument - this is randomly generated once during set-up of the disk encryption and stored unprotected as part of the cryptographic metadata. Because it will be a different value for each setup, this makes it infeasible for attackers to speed up brute-force attacks using precomputed tables for the key derivation function.
+
La '''key derivation function''' (es. PBKDF2 o scrypt) è deliberatamente lenta (applica molte ripetizioni alla funzione has, es. 1000 ripetizione di HMAC-SHA-512), quindi gli attacchi brute-force che cercano la password sono inattuabili. Per un uso normale di un utente autorizzato, la chiave dovrà essere calcolata solo una volta per sessione, quindi il rallentamento non è un problema.<br> Inoltre essa richiede dei dati addizionati, chiamati "'''salt'''", questo è generato casualmente durante la configurazione della cifratura del disco e memorizzato in modo non protetto come una parte dei metadati cifrati. Poiché ci sarà un valore differente per ogni configurazione, sarà inattuabile per gli hacker velocizzare gli attacchi brute-force unando tabelle 'precomputed' per la 'key derivation function'.
  
 
The '''encrypted master key''' can be stored on disk together with the encrypted data. This way, the confidentiality of the encrypted data depends completely on the secret passphrase.
 
The '''encrypted master key''' can be stored on disk together with the encrypted data. This way, the confidentiality of the encrypted data depends completely on the secret passphrase.

Revision as of 19:35, 31 October 2012

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese. (Discuss in Talk:ArchWiki Translation Team (Italiano)#Pagine Marcate come "out of date" e "Traslateme")
Template:Article summary start

Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Questo articolo discute le comuni tecniche disponibili in Arch Linux per proteggere in modo crittografico una parte di un disco dati (cartella, partizione, un intero disco, quindi tutti i dati che sono scritti in esso sono automaticamente criptati, e decriptati "al volo" quando sono letti.

"Dischi dati" in questo contesto possono essere hard disk di computer, dispositivi esterni come pen drive USB oppure DVD, così come dischi dati virtuali come dispositivi loop-back o cloud (finché Arch Linux può riconoscerli come dispositivi a blocchi o filesystem)

Perché usare la crittografia?

La crittografia dei dischi assicura che tutti i file immagazzinati sul disco sono criptati. I file diventeranno disponibili al sistema operativo e alle applicazioni solo quando il sistema corrente sarà sbloccato da un utente fidato. Leggere settori criptati senza i permessi restituirà dati messi a caso invece dei file effettivi.

Per esempio, la crittografia può prevenire visioni non autorizzate dei dati quando il computer o l'hard disk:

  • è situato in un posto dove persono non fidate possono avere accesso mentre voi non ci siete
  • è perso o rubato, come i computer portatili, netbook o dispositivi esterni di dati
  • è in riparazione
  • ha finito il suo ciclo di vita

In aggiunta, la crittografia può essere usata anche per aumentare la sicurezza in caso di attacchi informatici. Per esempio, l'installazione di keyloggers o di cavalli di troia (Trojan) da parte di hacker che hanno l'accesso fisico al sistema mentre non ci siete.

Attenzione: La crittografia non protegge i tuoi dati da tutti gli attacchi.

Compreso quanto segue:

  • Hacker che possono entrare nel tuo sistema (es. attraverso internet) mentre è acceso e dopo che le parti del disco criptate sono state sbloccate e mountate.
  • Hacker che sono capaci di avere l'accesso fisico al computer mentre è acceso, e hanno le risorse per portare a termine un cold boot attack.
  • Un'entità governativa che non solo ha le risorse per (...), ma può semplicemente forzarvi a consegnare le password usando varie tecniche di coercizione.Nella maggior parte delle nazioni non democratiche nel mondo, così come negli Stati Uniti e nel Regno Unito, questo è legale per la polizia federale se ha dei sospetti che voi stiate nascondendo qualcosa nel loro interesse.

Un'impostazione di crittografia molto forte (es. crittografia di sistema completa con partizione di boot senza plaintext e controllo di autenticità) è richiesta per avere una possibilità di resistere a hacker professionisti, i quali sono capaci di corrompere il vostro sistema prima che di usarlo. E anche in quel caso non si sa se può davvero prevenire tutti i tipi di attacchi (es. hardware keylogger). Il miglior rimedio potrebbe essere hardware-based full disk encryption (es. trusted computing.)

Attenzione: La crittografia dei dischi non vi proteggerà da qualcuno semplicemente cancellando il tuo disco. backup regolari sono raccomandati per mantenere i tuoi dati sicuri.

Crittografia dei dati vs crittografia di sistema

Template:Wikipedia Crittografia dei dati, definita come crittografia solo dei dati dell'utente (spesso situati in /home, o in un dispositivo rimovibile come un DVD dati) è il metodo più semplice e meno intrusivo di crittografare i dati, ma ha alcuni inconvenienti. Nei moderni sistemi di computer, ci sono molto processi in background che potrebbero immagazzinare informazioni sui dati dell'utente in aree non protette del disco, come:

  • partizioni di swap
    • (rimedio: disabilitare la partizione di swap)
  • /tmp (file temporanei creati dalle applicazioni dell'utente)
    • (rimedio: evitare queste applicazioni; montare /tmp in un ramdisk)
  • /var (file di log e database; per esempio mlocate immagazzina un catalogo di tutti i file in /var/lib/mlocate/mlocate.db)

In aggiunta, una crittografia dei dati pura lascerà il sistema vulnerabile agli attacchi offline (guarda sopra).


Crittografia di sistema, definita come crittografia del sistema operativo e dei dati dell'utente, aiuta a indirizzare alcune incapacità della crittografia dei dati.

Vantaggi:

  • Previene accessi fisici non autorizzati ai file del sistema operativo (guarda sopra).
  • Previene accessi fisici non autorizzati ai dati privati che potrebbero essere immagazzinati dal sistema.

Svantaggi:

  • Sbloccare/bloccare le parti criptate del disco può non coincidere con il login/logout dell'utente, poichè ora lo sblocco richiede di essere verificato prima o durante l'avvio.


In pratica, non c'è sempre una linea tra la crittografia dei dati e la crittografia di sistema, e non ci sono molti compromessi e impostazioni personalizzate.

In ogni caso, la crittografia dovrebbe essere vista solo come un aggiunta ai meccanismi di sicurezza del sistema operativo - concentrata sul mettere al sicuro accessi fisici offline, mentre si affida a altre parti del sistema per fornire cose come la sicurezza della rete e il controllo dell'accesso degli utenti.

Metodi disponibili

Tutti i metodi di cifratura operano in modo tale che anche se il disco contiene effettivamente dati crittografati, il sistema operativo e le applicazioni vedono essi come i corrispondenti dati normali leggibili finché il contenitore crittografico (ossia la parte logica del disco che contiene i dati crittografati) è "sbloccato" e montato.

Per far accadere questo, alcune informazioni segrete (di solito sono keyfile e/o password) devono essere fornite dall'utente, dal quale la reale chiave di cifratura può essere derivata (e immagazzinata nel portachiavi del kernel per la durata della sessione).

Se non si è del tutto pratici con questo tipo di operazione, per favore leggi prima la sezione #How the encryption works.

I seguenti metodi di cifratura possono essere distinti in due tipi dal layer dell'operazione:

Cifratura stacked filesystem

Le soluzioni della cifratura Stacked filesystem sono messe impratica come uno strato che immagazzina all'inizio del filesystem esistente, scrivendo tutti i file in una cartella a cifratura-attiva per essere cifrati 'on-the-fly' prima che il filesystem li scriva nel disco, e decifrati ogni volta che il filesystem li legge dal disco. Con questo metodo, i file sono immagazzinati nel filesystem ospitante in forma cifrata (significa che i loro contenuti, e di solito anche i noi dei file/cartelle, sono sostituiti da caratteri casuali della stessa lunghezza), ma diversamente essi esistono in quel filesystem come se non fossero cifrati, come file normali.

Il modo in cui è applicato, è che per sbloccare la cartella che contiene i file raw cifrati nel filesystem ospitante ("cartella inferiore"), è montato (usando uno speciale stacked pseudo-filesystem) su se stesso o facoltativamente in una posizione differente ("cartella superiore"), dove gli stessi file poi compaiono in forma leggibile - fincheé non è smontato di nuovo, o il sistema si spegne.

Le soluzioni disponibili in questa categoria sono:

eCryptfs
...
EncFS
...

Cifratura dei dispositivi a blocchi

I metodi di cifratura dei dispositivi a blocchi, d'altronde, operano sotto lo strato del filesystem e assicurano che tutto sia scritto in un dispositivo a blocchi (ossia un disco intero, o una partizione, o un file che si comporta come un dispositivo virtuale loop-back) cifrato. Ciò significa che mentre il dispositivo a blocchi è spento, il suo intero contenuto assomiglia a una grande macchia di dati casuali, senza la possibilità di determinare che tipo di filesystem sia e quali dati contenga. Si può accedere ai dati, montando il contenitore protetto (in questo caso un dispositivo a blocchi) in una posizione arbitraria in un modo speciale.

Le seguenti soluzioni di cifratura di un dispositivo a blocchi sono disponibili in Arch Linux:

loop-AES
loop-AES è un discendente di cryptoloop ed è una soluzione sicura e veloce per i sistemi di crittografia.
Tuttavia loop-AES è considerato meno user-friendly rispetto alle altre soluzioni e richiede un supporto kernel non-standard.
dm-crypt + LUKS
dm-crypt è la funzionalità standard per cifrare fornita dal kernel Linux. Esso può essere usato direttamente da chi vuole avere il completo controllo di tutti gli aspetti di partizioni e amministrazione delle chiavi.
LUKS è uno strato ulteriore di comodità che memorizza tutti i dati di configurazione necessari per dm-crypt sul disco stesso e riassume l'amministrazione delle partizioni e delle chiavi per migliorare la facilità d'uso.
TrueCrypt
...

Per le implicazioni pratiche del livello di operazione scelto vedi la seguente tabella di confronto così come [1].

Tabella di confronto

sommario
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

tipo

cifratura di un dispositivo a blocchi cifratura stacked filesystem

principali punti di forza

il meno recente; probabilmente il più veloce; funziona sui sistemi legacy lo standard di fatto per la cifratura dei dispositivi a blocchi su Linux; molto flessibile molto portabile, ben mantenuto, soluzione auto controllata leggermente più veloce rispetto a EncFS; cifra file singoli portabili tra i sistemi il più facile da usare; supporta amministrazione non-root

disponibilità in Arch Linux

bisogna ricompilare il kernel moduli kernel: già caricati con il kernel di default; strumenti: device-mapper, cryptsetup [core] truecrypt [extra] moduli kernel: già caricati con il kernel di default; strumenti: ecryptfs-utils [community] encfs [community]

license

GPL GPL custom[1] GPL GPL
classificazione di base
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

cifra...

interi dispositivi a blocchi file

contenitore per i dati cifrati può essere...

  • un disco o una partizione
  • un file che si comporta come una partizione virtuale
  • una cartella in un filesystem esistente

relazione con il filesystem

opera sotto lo strato del filesystem - non importa se il contenuto del dispositivo a blocchi cifrato è un filesystem, un partition table, un LVM setup, o altro. aggiunge uno strato aggiuntivo nel filesystem esistente, per cifrare/decifrare automaticamente i file quando sono scritti/letti

cifratura implementata nel...

kernelspace kernelspace kernelspace kernelspace userspace
(usando FUSE)

metadati cifrati memorizzati in...

 ?  ?  ? l'inizio di ogni file cifrato file di controllo al livello superiore di ogni contenitore EncFS

chiave di cifratura memorizzata in...

 ?  ?  ? la chiave può essere posizionata ovunque nel file di controllo all'inizio di ogni contenitore EncFS
applicazioni pratiche
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

metadati (numero di file, struttura delle cartelle, dimensioni dei file, permessi mtimes, etc.) cifrati


(è possibile anche cifrare i nomi dei file e delle cartelle)

può essere usato per cifrare interi dischi rigidi (incluse tabelle di partizioni)

può essere usato per cifrare le partizioni di swap

può essere usato senza pre-allocare una quantità fissa di spazio per il contenitore di dati cifrati

può essere usato per proteggere filesystem esistenti senza l'accesso ai dispositivi a blocchi, es. filesystem NFS e Samba, cloud, etc.

    [2]

permette backup dei file cifrati offline

caratteristiche di fruibilità
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

permette il montaggio automatico dei filesystem al login

 ?  ?  ?  ?

permette lo smontaggio automatico dei filesystem in caso di inattività

 ?  ?  ?  ?

utenti non-root posso creare/eliminare contenitori per dati cifrati

fornisce una GUI

caratteristiche di sicurezza
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

cifrature supportate

AES AES, Twofish, Serpent  ? AES, blowfish, twofish... AES, Twofish

supporto per il salting

 ?
(with LUKS)
 ?

supporto per cifrature multiple scalate

 ?  ?  ?

supporto per la diffusione di key-slot

 ?
(with LUKS)
 ?  ?  ?

protezione contro la forzatura delle chiavi

 ?  ?  ?  ?

supporto per chiavi multiple usate sugli stessi dati

 ?
(with LUKS)
 ?  ?
caratteristiche di performance
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

supporto per il multithreading

 ?  ?  ?

supporto per la cifratura con accelerazione hardware

 ?  ?  ?

ottimizzato per il trattamento di file sparsi

 ?  ?  ?  ?
specifiche della cifratura dei dispositivi a blocchi
Loop-AES dm-crypt + LUKS Truecrypt

supporto per il ridimensionamento manuale del dispositivo a blocchi cifrato

 ?
specifiche della cifratura del filesystem stacked
eCryptfs EncFs

filesystem supportati

ext3, ext4, xfs (with caveats), jfs, nfs...  ?

capacità di cifrare i nomi dei file

capacità di non cifrare i nomi dei file

compatibilità & popolarità
Loop-AES dm-crypt + LUKS Truecrypt eCryptfs EncFs

versioni del kernel Linux supportate

2.0 or newer  ?  ?  ? 2.4 or newer
i dati cifrati possono essere letti da... Windows (with [3]) (with [4])  ?  ?
Mac OS X  ?  ?  ?     [5]
FreeBSD  ?  ?  ?     [6]

usato da

 ?
  • Arch Linux installer (system encryption)
  • Ubuntu alternate installer (system encryption)
 ?
  • Ubuntu installer (home dir encryption)
  • Chromium OS (encryption of cached user data[7])
 ?

Preparazione

Scegliere un setup

Il setup di cifratura dei dischi appropriato per te dipende dai tuoi scopi (per favore leggi #Perché_usare_la_crittografia? sopra) e le specifiche del tuo sistema..
Tra le altre cose, dovrai rispondere alle seguenti domande:

  • Da che tipo di hacker (attacker) ti vuoi proteggere?
    • Utente di computer casuale che sta provando a spiare passivamente i contenuti del tuo disco mentre il tuo sistema è spento/non funzionante.
    • Studente di crittogrammi che può ottenere ripetuti accessi in lettura/scrittura nel tuo sistema dopo che lo hai usato.
    • niente di simile
  • Quale strategia di cifratura sarà impiegata?
    • cifratura dei dati
    • cifratura del sistema
    • qualcosa di simile
    • Come ci si potrebbe occupare dello swap? /tmp?
      • lo ignoro, e spero che nessun dato sia stato rubato
      • Swap disabilitato, oppure montato come ramdisk
      • Swap cifrato (come parte di una completa cifratura del disco)
  • Come dovrebbero essere sbloccati le parti del disco cifrate?
    • password (la stessa del login, o diversa)
    • file con la chiave (es. dentro a una pen drive USB, che bisogna tenere in posto sicuro)
    • Tutti e due
  • Quando le parti cifrate del disco dovrebbero essere sbloccare?
    • prima dell'avvio
    • durante l'avvio
    • al login
    • manualmente (after login)
  • Come sarebbero sistemati gli utenti multipli?
    • non ci sono
    • usando una chiave condivisa
    • più chiavi indipendenti e revocabili per la stessa parte di disco
    • parti del disco cifrate separate per utenti diversi

Dopo puoi fare le scelte tecniche richieste (vedi #Metodi_disponibili e #How_the_encryption_works circa:

  • crittografia stacked filesystem vs. cifratura dei dispositivi a blocchi
  • amministrazioni delle chiavi
  • cifratura
  • memorizzazione dei metadatim
  • posizione della "cartella inferiore" (in caso di cifratura stacked filesystem)
  • ...

In pratica, puoi scegliere qualcosa di simile a questo:

Esempio 1: cifratura dei dati semplice (hard disk interno)
ve) • una cartella chiamata "~/Private" nella cartella home dell'utente cifrata con EncFS ├──> versioni cifrate dei file dentro ~/.Private └──> sbloccate al momento con una password dedicata
Esempio 2: cifratura dei dati semplice (disco rimobivile)
intero disco USBw cifrato con TrueCrypt └──> sbloccato quando collegato al computer (usando una password dedicata + un file .jpg che sarebbe un keyfile
Esempio 3: cifratura del sistema parziale
• ogni cartella home dell'utente cifrata con eCryptfs └──> sbloccata al login, usando la password di login • le partizioni swap e /tmp cifrate con dm-crypt+LUKS └──> usando un chiave portabile automaticamente generata per sessione • indicizzazione/cache dei contenuti di /home da slocate (e applicazioni simili) non cifrate
Example 4: cifratura del sistema
intero hard disk eccetto la partizione di boot cifrato con dm-crypt+LUKS └──> sbloccato durante l'avvio, usando una pen drive USB con keyfile (condiviso da tutti gli utenti)
Example 5: cifratura del sistema paranoica
intero hard disk cifrato con dm-crypt+LUKS └──> sbloccato prima dell'avvio usando una password dedicata più un keyfile dentro a una pen drive USB (differente per ogni utente - indipendentemente revocabilepartizione di /boot posizionata sulla pen drive USB usata prima

Molte e molte altre combinazioni sono possibili. Dovresti pianificare che tipo di setup sarà appropriato per il tuo sistema.

Scegliere una buona password

Quando fai affidamento a una password, essa deve essere completa abbastanza da non essere facile da indovinare o scavalcare usando attacchi brute-force. I princìpi di una buona password sono basati sulla lunghezza e casualità d'ordine
Vedi The passphrase FAQ e considera di usare il metodo Diceware Passphrase.

Un altro aspetto della forza di una password è che non deve essere facilmente recuperabile da altri posti. Se si usa la stessa password per la cifratura del disco e per il login (utile per esempio auto montare la partizione o la cartella cifrata al login), assicurati che /etc/shadow non finisca su una partizione cifrata, oppure usa un buon algoritmo hash (cioè sha512/bcrypt, non md5) per la password memorizzata (vedi SHA_password_hashes per altre info).

Preparare il disco

Prima di iniziare il setup della cifratura del disco su un (parte di un) disco, considera di eseguire una pulizia accurata di esso. Questo consiste nel sovrascrivere l'intero disco o partizione con un flusso di zero byte, e va fatto ciò per le seguenti ragioni:

  • prevenire il recupero dei dati memorizzati precedentemente

    La cifratura non cambia il fatto che i settori individuali vengano scritti al momento, quando il sistema crea o modifica dei dati in quei particolari settori (vedi #How_the_encryption_works sotto). I settori che il filesystem considera "non usati al momento" non sono toccati, e potrebbero ancora contenere rimasugli di dati dei filesystem precedenti. L'unico modo per essere sicuri che tutti i dati memorizzati precedentemente sul disco non possano essere recuperati, è di cancellarli manualmente.

  • prevenire la divulgazione dei modelli d'uso del disco cifrato

    Idealmente, l'intera parte cifrata del disco dovrebbe essere indistinguibile dai dati casuali. In questo modo, le persone non autorizzate non possono conoscere quali settori contengono effettivamente dati cifrati - che potrebbe essere un obbiettivo desiderabile (come parte della vera riservatezza), ed anche funziona da ostacolo aggiuntivo contro gli attacker che cercano di rompere la cifratura.
    Per questi motivi, ripulire l'hard disk usando dei dati casuali d'alta qualità è decisivo.

Il secondo motivo ha senso con la cifratura del dispositivo a blocchi, perché in caso di cifratura stacked filesystem i dati cifrati sono comunque facilmente identificabili (in forma di distinti file cifrati nel filesystem ospitante). Ricordare anche che se si intende cifrare una cartella particolare, si dovrà cancellare l'intera partizione se si vuole sbarazzare completamente dei file precedentemente memorizzati in quella cartella in forma non cifrata. Se ci sono altre cartelle sulla stessa partizione, si dovrà fare il backup di essi e riposizionarli a fine pulizia.

Non appena si ha deciso quale tipo di disco si vuole impegnare, vedere l'articolo Securely_wipe_disk per istruzioni tecniche.

Tip: Nel decidere quale metodo usare per una sicura cancellazione dell'hard disk, ricorda che non ci sarò bisogno di rifarlo più di una volta fino a quando l'unità non è utilizzata come unità crittografata.

Come funziona la crittografia

Questa sezione è intesa come un'introduzione di alto livello ai concetti e i processi che sono il cuore delle configurazioni di crittografia del disco.

Essa non va dentro dettagli di tipo tecnico e matematico (consulta l'appropriata letteratura per questo), ma dovrebbe far capire ad un amministratore di sistema come le diverse configurazioni (specialmente l'amministrazione delle chiavi) possono influire sulla sicurezza e l'usabilità.

Princìpio di base

Per i fini della crittografia del disco, ogni dispositivo a blocchi (o file nel caso di crittografia di stacked filesystem) è diviso in settori di uguale lunghezza, per esempio 512 byte (4096 bit). La cifratura/decifratura avviene per ogni singolo settore, quindi il settore "n" del dispositivo a blocchi/file immagazzinerà la versione cifrata del settore "n" dei dati originali.

Ogni volta che il sistema operativo o l'applicazione richiede un certo frammento di dato dal dispositivo a blocchi/file, l'intero settore/i che contiene i dati sarà letto dal disco, decifrato al volo, e temporaneamente immagazzinato nella memoria:

           ╔═══════╗
 settore 1 ║"???.."║
           ╠═══════╣         ╭┈┈┈┈┈┈╮
 settore 2 ║"???.."║         ┊chiave┊
           ╠═══════╣         ╰┈┈┬┈┈┈╯
           ⁝        ⁝             │ 
           ╠═══════╣            ▼              ┣┉┉┉┉┉┉┉┫
 settore n ║"???.."║━━━━━━━(decifratura)━━━━━━▶┋"abc.."┋ sector n
           ╠═══════╣                           ┣┉┉┉┉┉┉┉┫
           ⁝        ⁝
           ╚═══════╝
 
          file o                               dati non
          dispositivo a blocchi                cifrati in
          cifrato                              memoria
       

Analogamente, in ogni operazione di scrittora, tutti i settori interessati devono essere ri-cifrati completamente (mentre il resto dei settore rimane uguale).

Keyfile e password

Prima di cifrare/decifrare i dati, il sistema di cifratura del disco deve conoscere la "chiave" univoca associata ad esso. Questa è una stringa generata casualmente di una certa lunghezza, per esempio 32 byte (256 bit).

Ogni volta che il dispositivo a blocchi o la cartella cifrata in questione deve essere montata, la sua chiave corrispondente (chiamata d'ora in avanti "master key") deve essere ripresa - di solito da una delle seguenti posizioni:

  • memorizzata in un keyfile

    Semplicemente memorizzando la master key in un file (in forma leggibile), è l'opzione più semplice. Il file - chiamato keyfile - può essere posizionato su una pen drive USB riposta in una posizione sicura e essere usato soltanto quando bisogna montare una parte cifrata del disco (es. durante il boot o il login).

  • memorizzata in un keyfile o nel disco stesso in modalità cifrata con password

    La master key (e quindi i dati cifrati) può essere protetta con una password segreta, che bisogna ricordare ed immettere ogni volta che si vuole montare il dispositivo a blocchi o cartella cifrato.

    Una configurazione comune è applicare la -così chiamata- "key stretching" alla password (attraverso la funzione "key derivation"), e usare la password risultante come chiave per decifrare la master key attuale (che è stata precedentemente memorizzata in forma cifrata):

     ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮                         ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
     ┊ password di mount ┊━━━━━⎛key derivation⎞━━━▶┊chiave di mount┊
     ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯ ,───⎝   function   ⎠    ╰┈┈┈┈┬┈┈┈┈┈┈┈┈┈┈╯
     ╭──────╮            ╱                              │
     │ salt │───────────´                               │
     ╰──────╯                                           │
     ╭─────────────────────╮                            ▼          ╭┈┈┈┈┈┈┈┈┈┈┈┈╮
     │ master key cifrata  │━━━━━━━━━━━━━━━━━━━━━━(decifratura)━━━▶┊ master key ┊
     ╰─────────────────────╯                                       ╰┈┈┈┈┈┈┈┈┈┈┈┈╯
    

    La key derivation function (es. PBKDF2 o scrypt) è deliberatamente lenta (applica molte ripetizioni alla funzione has, es. 1000 ripetizione di HMAC-SHA-512), quindi gli attacchi brute-force che cercano la password sono inattuabili. Per un uso normale di un utente autorizzato, la chiave dovrà essere calcolata solo una volta per sessione, quindi il rallentamento non è un problema.
    Inoltre essa richiede dei dati addizionati, chiamati "salt", questo è generato casualmente durante la configurazione della cifratura del disco e memorizzato in modo non protetto come una parte dei metadati cifrati. Poiché ci sarà un valore differente per ogni configurazione, sarà inattuabile per gli hacker velocizzare gli attacchi brute-force unando tabelle 'precomputed' per la 'key derivation function'.

    The encrypted master key can be stored on disk together with the encrypted data. This way, the confidentiality of the encrypted data depends completely on the secret passphrase.

    Additional security can be attained by instead storing the encrypted master key in a keyfile on e.g. a USB stick. This provides two-factor authentication: Accessing the encrypted data now requires something only you know (the passphrase), and additionally something only you have (the keyfile).

    Another way of achieving two-factor authentication is to augment the above key retrieval scheme to mathematically "combine" the passphrase with byte data read from one or more external files (located on a USB stick or similar), before passing it to the key derivation function.
    The files in question can be anything, e.g. normal JPEG images, which can be beneficial for #Plausible Deniability. They are still called "keyfiles" in this context, though.
  • randomly generated on-the-fly for each session

    In some cases, e.g. when encrypting swap space or a /tmp partition, it is not necessary to keep a persistent master key at all. A new throwaway key can be randomly generated for each session, without requiring any user interaction. This means that once unmounted, all files written to the partition in question can never be decrypted again by anyone - which in those particular use-cases is perfectly fine.


After is has been derived, the master key is securely stored in memory (e.g. in a kernel keyring), for as long as the encrypted block device or folder is mounted.

It is usually not used for de/encrypting the disk data directly, though. For example, in the case of stacked filesystem encryption, each file can be automatically assigned its own encryption key. Whenever the file is to be read/modified, this file key first needs to be decrypted using the main key, before it can itself be used to de/encrypt the file contents:

                          ╭┈┈┈┈┈┈┈┈┈┈┈┈╮
                          ┊ master key ┊
  file on disk:           ╰┈┈┈┈┈┬┈┈┈┈┈┈╯
 ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐        │
 ╎╭───────────────────╮╎        ▼          ╭┈┈┈┈┈┈┈┈┈┈╮
 ╎│ encrypted file key│━━━━(decryption)━━━▶┊ file key ┊
 ╎╰───────────────────╯╎                   ╰┈┈┈┈┬┈┈┈┈┈╯
 ╎┌───────────────────┐╎                        ▼           ┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐
 ╎│ encrypted file    │◀━━━━━━━━━━━━━━━━━(de/encryption)━━━▶┊ readable file ┊
 ╎│ contents          │╎                                    ┊ contents      ┊
 ╎└───────────────────┘╎                                    └┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘
 └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘

In a similar manner, a separate key (e.g. one per folder) may be used for the encryption of file names in the case of stacked filesystem encryption.

In the case of block device encryption, ...

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Further reading:

Ciphers and modes of operation

The actual algorithm used for translating between pieces of unencrypted and encrypted data (so-called "plaintext" and "ciphertext") which correspond to each other with respect to a given encryption key, is called a "cipher".

Disk encryption employs "block ciphers", which operate on fixed-length blocks of data, e.g. 16 bytes (128 bits). At the time of this writing, the predominantly used ones are:

block size key size comment
AES 128 bits 128, 192 or 256 bits approved by the NSA for protecting "SECRET" and "TOP SECRET" classified US-government information (when used with a key size of 192 or 256 bits)
Blowfish 64 bits 32–448 bits one of the first patent-free secure ciphers that became publicly available, hence very well established on Linux
Twofish 128 bits 128, 192 or 256 bits developed as successor of Blowfish, but has not attained as much widespread usage

Encrypting/decrypting a sector (see above) is achieved by dividing it into small blocks matching the cipher's block-size, and following a certain rule-set (a so-called "mode of operation") for how to consecutively apply the cipher to the individual blocks.

Simply applying it to each block separately without modification (dubbed the "electronic codebook (ECB)" mode) would not be secure, because if the same 16 bytes of plaintext always produce the same 16 bytes of ciphertext, an attacker could easily recognize patterns in the ciphertext that is stored on disk.

The most basic (and common) mode of operation used in practice is "cipher-block chaining (CBC)". When encrypting a sector with this mode, each block of plaintext data is combined in a mathematical way with the ciphertext of the previous block, before encrypting it using the cipher. For the first block, since it has no previous ciphertext to use, a special pre-generated data block stored with the sector's cryptographic metadata and called an "initialization vector (IV)" is used:

                                  ╭──────────────╮
                                  │initialization│
                                  │vector        │
                                  ╰────────┬─────╯
          ╭  ╠══════════╣        ╭─key     │      ┣┉┉┉┉┉┉┉┉┉┉┫        
          │  ║          ║        ▼         ▼      ┋          ┋         . START
          ┴  ║"????????"║◀━━━━(cipher)━━━━(+)━━━━━┋"Hello, W"┋ block  ╱╰────┐
    sector n ║          ║                         ┋          ┋ 1      ╲╭────┘
  of file or ║          ║──────────────────╮      ┋          ┋         ' 
 blockdevice ╟──────────╢        ╭─key     │      ┠┈┈┈┈┈┈┈┈┈┈┨
          ┬  ║          ║        ▼         ▼      ┋          ┋
          │  ║"????????"║◀━━━━(cipher)━━━━(+)━━━━━┋"orld !!!"┋ block
          │  ║          ║                         ┋          ┋ 2
          │  ║          ║──────────────────╮      ┋          ┋
          │  ╟──────────╢                  │      ┠┈┈┈┈┈┈┈┈┈┈┨
          │  ║          ║                  ▼      ┋          ┋
          ⁝  ⁝   ...    ⁝        ...      ...     ⁝   ...    ⁝ ...
 
               ciphertext                         plaintext
                  on disk                         in memory

When decrypting, the procedure is reversed analogously.

One thing worth noting is the generation of the unique initialization vector for each sector. The simplest choice is to calculate it in a predictable fashion from a readily available value such as the sector number. However, this might allow an attacker with repeated access to the system to perform a so-called watermarking attack. To prevent that, a method called "Encrypted salt-sector initialization vector (ESSIV)" can be used to generate the initialization vectors in a way that makes them look completely random to a potential attacker.

There are also a number of other, more complicated modes of operation available for disk encryption, which already provide built-in security agains such attacks. Some can also additionally guarantee authenticity (see below) of the encrypted data.

Further reading:

Cryptographic metadata

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Data integrity/authenticity

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Further reading:

Plausible deniability

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Notes & References

  1. ^ see http://www.truecrypt.org/legal/license
  2. ^ well, a single file in those filesystems could be used as a container (virtual loop-back device!) but then one wouldn't actually be using the filesystem (and the features it provides) anymore
  3. ^ CrossCrypt - Open Source AES and TwoFish Linux compatible on the fly encryption for Windows XP and Windows 2000
  4. ^ FreeOTFE - supports Windows 2000 and later (for PC), and Windows Mobile 2003 and later (for PDA)
  5. ^ see EncFs build instructions for Mac
  6. ^ see http://www.freshports.org/sysutils/fusefs-encfs/
  7. ^ see http://www.chromium.org/chromium-os/chromiumos-design-docs/protecting-cached-user-data