{"id":172,"date":"2026-06-16T16:31:48","date_gmt":"2026-06-16T16:31:48","guid":{"rendered":"https:\/\/shattered.io\/it\/2026\/06\/16\/luks-cifrare-disco-ubuntu\/"},"modified":"2026-06-16T16:33:14","modified_gmt":"2026-06-16T16:33:14","slug":"luks-cifrare-disco-ubuntu","status":"publish","type":"post","link":"https:\/\/shattered.io\/it\/luks-cifrare-disco-ubuntu\/","title":{"rendered":"LUKS su Ubuntu: Cifrare il Disco in 12 Step [2026]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Un portatile rubato, un disco dismesso senza wipe, un backup finito nelle mani sbagliate: in tutti questi casi la differenza tra un incidente trascurabile e una violazione di dati seria sta in una sola cosa, la crittografia del disco. Su Linux lo standard di riferimento si chiama <strong>LUKS<\/strong> (Linux Unified Key Setup) e su Ubuntu si gestisce con lo strumento <code>cryptsetup<\/code>. In questa guida pratica configuriamo un volume cifrato <strong>LUKS2<\/strong> da zero, passo dopo passo, con cifrario AES-256 in modalit\u00e0 XTS e derivazione della chiave Argon2id.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;obiettivo \u00e8 concreto: al termine avrai un disco (o una partizione) completamente cifrato, sbloccabile con passphrase o file di chiave, con backup dell&#8217;header, montaggio automatico al boot e una procedura di ri-crittografia testata. Tutti i comandi sono verificati su Ubuntu 24.04 LTS e versioni successive, ma valgono per qualsiasi distribuzione basata su <code>cryptsetup<\/code> 2.7 o superiore. Tempo stimato: circa 35 minuti, esclusa la ri-crittografia di dischi molto grandi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una premessa che ripeteremo pi\u00f9 volte perch\u00e9 \u00e8 quella che fa perdere i dati a chi sbaglia: <strong>l&#8217;header LUKS contiene il materiale necessario a sbloccare il volume. Se si corrompe e non hai un backup, i dati sono persi per sempre.<\/strong> Non esiste recupero. La cifratura funziona, ed \u00e8 proprio questo il problema quando la usi senza rete di sicurezza.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cose-luks-e-perche-cifrare-il-disco-nel-2026\">Cos&#8217;\u00e8 LUKS e perch\u00e9 cifrare il disco nel 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">LUKS \u00e8 il formato standard per la crittografia dei dischi a blocchi su Linux. Non \u00e8 un algoritmo di cifratura: \u00e8 uno strato di gestione delle chiavi costruito sopra il sottosistema <code>dm-crypt<\/code> del kernel. In pratica LUKS definisce come l&#8217;header del volume memorizza i parametri crittografici (cifrario, modalit\u00e0, dimensione della chiave) e fino a pi\u00f9 chiavi utente, ognuna in uno spazio chiamato <em>keyslot<\/em>. La chiave master che cifra davvero i dati resta una sola; le passphrase la proteggono in copie multiple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il default di LUKS2 nel 2026 \u00e8 solido e non richiede tuning per la maggior parte degli utenti: cifrario <code>aes-xts-plain64<\/code> con chiave da 512 bit. Attenzione al numero: in modalit\u00e0 XTS la chiave da 512 bit corrisponde a <strong>AES-256<\/strong>, perch\u00e9 XTS usa due chiavi AES separate da 256 bit ciascuna. La derivazione della passphrase passa per <strong>Argon2id<\/strong>, la funzione vincitrice della Password Hashing Competition, progettata per resistere sia ad attacchi su GPU sia ad attacchi side-channel. Questo \u00e8 il cambiamento crittografico pi\u00f9 importante rispetto a LUKS1, che usava PBKDF2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perch\u00e9 farlo nel 2026? Tre motivi pratici. Primo, la crittografia del disco \u00e8 l&#8217;unica difesa contro l&#8217;accesso fisico: un firewall non serve a niente se qualcuno smonta il tuo SSD e lo collega a un&#8217;altra macchina. Secondo, \u00e8 un requisito di conformit\u00e0 sempre pi\u00f9 esplicito. Il <a href=\"https:\/\/shattered.io\/it\/regolamento-dora-2026\/\">Regolamento DORA<\/a> e la direttiva NIS2 trattano la protezione dei dati a riposo come misura tecnica attesa, e il GDPR la cita come esempio di misura adeguata all&#8217;articolo 32. Terzo, il costo prestazionale \u00e8 quasi nullo su qualsiasi CPU moderna grazie all&#8217;accelerazione hardware AES-NI: parliamo di pochi punti percentuali di overhead, non di un dimezzamento delle prestazioni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una distinzione utile rispetto ad altri strumenti: LUKS \u00e8 la cifratura nativa di Linux, integrata nel kernel e nel processo di boot. Soluzioni come <a href=\"https:\/\/shattered.io\/it\/veracrypt-cifrare-disco-aes-256\/\">VeraCrypt<\/a> sono multipiattaforma e lavorano in user space tramite container, scelta migliore se devi spostare dati cifrati tra Linux, Windows e macOS. Per cifrare il disco di sistema di un server o di un portatile Ubuntu, LUKS \u00e8 la risposta corretta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"luks1-vs-luks2-header-json-argon2id-e-32-keyslot\">LUKS1 vs LUKS2: header JSON, Argon2id e 32 keyslot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Da diversi anni LUKS2 \u00e8 il formato predefinito quando crei un nuovo volume su Ubuntu, ma capire le differenze ti aiuta a non commettere errori e a sapere quando, eccezionalmente, conviene ancora LUKS1 (per esempio con bootloader datati che non supportano LUKS2). La tabella seguente riassume i punti che contano nella pratica.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Caratteristica<\/th><th>LUKS1<\/th><th>LUKS2<\/th><\/tr><\/thead><tbody><tr><td>Formato header<\/td><td>Binario, struttura rigida<\/td><td>JSON, estensibile e leggibile<\/td><\/tr><tr><td>KDF predefinito<\/td><td>PBKDF2<\/td><td>Argon2id (resistente a GPU e ASIC)<\/td><\/tr><tr><td>Keyslot disponibili<\/td><td>8<\/td><td>Fino a 32<\/td><\/tr><tr><td>Cifrario predefinito<\/td><td>aes-xts-plain64, 256 bit<\/td><td>aes-xts-plain64, 512 bit (AES-256)<\/td><\/tr><tr><td>Backup ridondante dell&#8217;header<\/td><td>No<\/td><td>S\u00ec, due copie su disco<\/td><\/tr><tr><td>Token e metadati<\/td><td>Non supportati<\/td><td>Token JSON (es. sblocco con TPM, FIDO2)<\/td><\/tr><tr><td>Ri-crittografia online<\/td><td>Limitata<\/td><td>S\u00ec, con ripresa dopo interruzione<\/td><\/tr><tr><td>Compatibilit\u00e0 GRUB<\/td><td>Ampia, anche versioni datate<\/td><td>Richiede GRUB recente per \/boot cifrato<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il passaggio a Argon2id \u00e8 la ragione di sicurezza principale per cui dovresti usare LUKS2. PBKDF2 difende dagli attacchi a forza bruta aumentando il numero di iterazioni, ma \u00e8 un calcolo che le GPU eseguono in parallelo con grande efficienza. Argon2id aggiunge un costo in memoria deliberatamente alto: per ogni tentativo di passphrase l&#8217;attaccante deve allocare centinaia di megabyte di RAM, il che rende l&#8217;attacco massivo su schede grafiche economicamente proibitivo. \u00c8 la stessa famiglia di funzioni che consigliamo per <a href=\"https:\/\/shattered.io\/it\/hashing-password-bcrypt-nodejs\/\">l&#8217;hashing delle password lato server<\/a>, applicata qui alla protezione della chiave del disco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;header JSON di LUKS2 introduce anche i <em>token<\/em>, metadati che descrivono metodi di sblocco alternativi alla passphrase. Sono il fondamento dello sblocco tramite chip TPM o chiave hardware FIDO2, tecniche che vedremo nella sezione avanzata. LUKS2 mantiene inoltre due copie dell&#8217;header sul disco, una ridondanza che riduce (ma non elimina) il rischio di perdita per corruzione di un singolo settore.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisiti-versioni-hardware-aes-ni-e-backup\">Prerequisiti: versioni, hardware AES-NI e backup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di toccare un disco, mettiamo in fila gli strumenti e una verifica di sicurezza non negoziabile. Questa guida richiede:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Ubuntu 24.04 LTS o successiva<\/strong> (o qualsiasi distribuzione con kernel 5.15+). I comandi sono identici su Debian 12, Fedora 40+ e derivate.<\/li><li><strong>cryptsetup 2.7.x<\/strong> o superiore. La serie 2.7 \u00e8 quella stabile pi\u00f9 diffusa nel 2026; il ramo 2.8.x ha introdotto mitigazioni aggiuntive per scenari di macchine virtuali confidenziali. Verificheremo la versione nel primo passo.<\/li><li><strong>Privilegi di root<\/strong> tramite <code>sudo<\/code>. Tutti i comandi che toccano i dispositivi a blocchi li richiedono.<\/li><li><strong>Un disco o una partizione di test dedicati.<\/strong> Non usare per esercizio un disco con dati che non puoi perdere.<\/li><li><strong>CPU con AES-NI<\/strong> (qualsiasi processore Intel o AMD degli ultimi quindici anni). Non \u00e8 obbligatoria ma rende l&#8217;overhead trascurabile.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La verifica di sicurezza che precede tutto: <strong>identifica con certezza il dispositivo corretto<\/strong>. Il comando <code>luksFormat<\/code> distrugge in modo irreversibile qualsiasi dato presente sul disco indicato. Confondere <code>\/dev\/sdb<\/code> con <code>\/dev\/sda<\/code> significa cancellare il sistema operativo. Esegui sempre <code>lsblk<\/code> prima di formattare e leggi la dimensione, il punto di montaggio e l&#8217;etichetta per confermare di star puntando al disco giusto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Elenca tutti i dischi con dimensione e punto di montaggio\nlsblk -o NAME,SIZE,TYPE,MOUNTPOINT,LABEL\n\n# Output di esempio\nNAME   SIZE TYPE MOUNTPOINT LABEL\nsda    476G disk\n\u251c\u2500sda1 512M part \/boot\/efi\n\u2514\u2500sda2 475G part \/          ubuntu-root\nsdb     32G disk                       &lt;- disco di test, nessun mount<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In questo esempio il sistema \u00e8 su <code>sda<\/code> e il nostro disco di test \u00e8 <code>sdb<\/code> da 32 GB, senza punto di montaggio. Da qui in avanti useremo <code>\/dev\/sdb<\/code> come dispositivo di destinazione. <strong>Sostituiscilo con il tuo identificativo reale<\/strong> a ogni comando.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-1-e-2-installare-cryptsetup-e-verificare-il-supporto\">Step 1 e 2: installare cryptsetup e verificare il supporto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Su Ubuntu il pacchetto <code>cryptsetup<\/code> \u00e8 spesso gi\u00e0 presente, ma installarlo esplicitamente garantisce anche gli script di integrazione con initramfs necessari per il montaggio al boot. Lo strumento <code>cryptsetup-bin<\/code> contiene il binario, mentre <code>cryptsetup<\/code> porta con s\u00e9 gli hook di sistema.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Step 1: installazione\nsudo apt update\nsudo apt install -y cryptsetup\n\n# Step 2: verifica della versione e del supporto kernel\ncryptsetup --version\n# Output atteso: cryptsetup 2.7.x\n\n# Conferma che il kernel esponga dm-crypt\nsudo modprobe dm_crypt\nlsmod | grep dm_crypt\n# Output: dm_crypt ... presente<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se <code>cryptsetup --version<\/code> riporta una versione inferiore alla 2.4, alcune opzioni Argon2id avanzate potrebbero non essere disponibili e conviene aggiornare la distribuzione. Su una Ubuntu LTS aggiornata non avrai questo problema. La presenza del modulo <code>dm_crypt<\/code> conferma che il kernel pu\u00f2 creare i dispositivi mappati su cui LUKS appoggia la cifratura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifica anche la presenza dell&#8217;accelerazione hardware, perch\u00e9 determina le prestazioni del volume cifrato. La flag <code>aes<\/code> tra i flag della CPU indica il supporto AES-NI.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -m1 -o aes \/proc\/cpuinfo\n# Output: aes  (AES-NI disponibile)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-3-eseguire-il-benchmark-crittografico\">Step 3: eseguire il benchmark crittografico<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di cifrare conviene misurare quanto \u00e8 veloce la tua macchina con i cifrari disponibili. Il comando <code>cryptsetup benchmark<\/code> non tocca alcun disco: gira solo in memoria e ti d\u00e0 due informazioni preziose, la velocit\u00e0 di cifratura\/decifratura dei cifrari e il costo della funzione di derivazione della chiave.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cryptsetup benchmark\n\n# Output di esempio (i numeri variano in base alla CPU)\n# Tests are approximate using memory only (no storage IO).\nPBKDF2-sha256     1850431 iterations per second for 256-bit key\nPBKDF2-sha512     1290877 iterations per second for 256-bit key\nargon2id          4 iterations, 1048576 memory, 4 threads (CPU)\n#     Algorithm |       Key |      Encryption |      Decryption\n        aes-xts        256b      3650.4 MiB\/s      3720.9 MiB\/s\n        aes-xts        512b      3110.2 MiB\/s      3180.5 MiB\/s\n    serpent-xts        256b       520.1 MiB\/s       540.3 MiB\/s\n    twofish-xts        256b       380.7 MiB\/s       395.2 MiB\/s<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Due letture dell&#8217;output. La riga <code>aes-xts 512b<\/code> mostra la velocit\u00e0 del default LUKS2 (AES-256): valori sopra i 3000 MiB\/s confermano che AES-NI \u00e8 attivo e che la cifratura non sar\u00e0 il collo di bottiglia, perch\u00e9 \u00e8 molto pi\u00f9 veloce di qualsiasi SSD SATA e in linea con NVMe di fascia media. Il confronto con <code>serpent-xts<\/code> e <code>twofish-xts<\/code> (privi di accelerazione hardware) spiega da solo perch\u00e9 AES resta la scelta predefinita: \u00e8 un ordine di grandezza pi\u00f9 rapido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La riga <code>argon2id<\/code> mostra i parametri che <code>cryptsetup<\/code> ha calibrato per la tua macchina: numero di iterazioni, memoria in kibibyte (1048576 = 1 GiB) e thread. Questi valori vengono scelti puntando a un tempo di derivazione di circa due secondi. \u00c8 un compromesso deliberato: due secondi sono accettabili all&#8217;avvio per un utente legittimo, ma moltiplicati per miliardi di tentativi rendono la forza bruta impraticabile.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-4-preparare-e-azzerare-il-disco-di-destinazione\">Step 4: preparare e azzerare il disco di destinazione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Questo passo \u00e8 opzionale ma consigliato per i dischi nuovi o riutilizzati. Sovrascrivere il dispositivo con dati casuali prima di cifrarlo nasconde quanto spazio \u00e8 effettivamente in uso: senza questo passaggio, un osservatore potrebbe distinguere i blocchi scritti (con dati cifrati) da quelli mai toccati. Con un volume pieno la differenza si annulla, ma partire da rumore casuale \u00e8 la prassi pulita.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Metodo veloce: una sola passata di dati casuali\nsudo dd if=\/dev\/urandom of=\/dev\/sdb bs=1M status=progress\n\n# Alternativa molto pi\u00f9 rapida su dischi grandi: cifratura di zeri\n# (si crea un mapping temporaneo che produce rumore ad alta velocit\u00e0)\nsudo cryptsetup open --type plain -d \/dev\/urandom \/dev\/sdb wipe_tmp\nsudo dd if=\/dev\/zero of=\/dev\/mapper\/wipe_tmp bs=1M status=progress\nsudo cryptsetup close wipe_tmp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il primo metodo legge direttamente da <code>\/dev\/urandom<\/code> ed \u00e8 limitato dalla velocit\u00e0 del generatore di numeri casuali, in genere qualche centinaio di MiB\/s. Il secondo \u00e8 un trucco classico: si apre un dispositivo cifrato temporaneo con una chiave usa e getta e si scrivono zeri, lasciando che sia AES (accelerato in hardware) a trasformarli in rumore alla massima velocit\u00e0 del disco. Su un disco da 32 GB il primo metodo richiede pochi minuti; su dischi da diversi terabyte il secondo \u00e8 nettamente preferibile.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-5-creare-il-volume-luks2-con-luksformat\">Step 5: creare il volume LUKS2 con luksFormat<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c8 il cuore della procedura. <code>luksFormat<\/code> scrive l&#8217;header LUKS2 sul disco, genera la chiave master casuale e protegge quella chiave con la passphrase che inserisci nel primo keyslot. Specifichiamo i parametri esplicitamente anche se coincidono con i default: rende il comando documentato e riproducibile.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cryptsetup luksFormat \\\n  --type luks2 \\\n  --cipher aes-xts-plain64 \\\n  --key-size 512 \\\n  --hash sha256 \\\n  --pbkdf argon2id \\\n  --use-random \\\n  \/dev\/sdb\n\n# Avviso e conferma richiesti dallo strumento\nWARNING!\n========\nThis will overwrite data on \/dev\/sdb irrevocably.\n\nAre you sure? (Type 'yes' in capital letters): YES\nEnter passphrase for \/dev\/sdb: ********************\nVerify passphrase: ********************<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nota che la conferma richiede <code>YES<\/code> in maiuscolo: \u00e8 una barriera deliberata contro le formattazioni accidentali. La passphrase che inserisci qui \u00e8 l&#8217;unica via per recuperare i dati: <strong>se la dimentichi, non esiste backdoor<\/strong>. Usa una frase lunga e ad alta entropia, idealmente una sequenza di parole casuali memorizzabile (passphrase tipo diceware) piuttosto che una password corta e complicata. Per la teoria su entropia e robustezza, vedi la nostra guida alla <a href=\"https:\/\/shattered.io\/it\/password-security\/\">sicurezza delle password<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifichiamo subito il risultato con <code>luksDump<\/code>, che mostra l&#8217;header in chiaro (i metadati, non la chiave): \u00e8 il modo per confermare che cifrario, KDF e keyslot siano quelli attesi.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cryptsetup luksDump \/dev\/sdb\n\n# Estratto dell'output\nLUKS header information\nVersion:        2\nEpoch:          3\nCipher name:    aes\nCipher mode:    xts-plain64\nKeyslots:\n  0: luks2\n        Key:        512 bits\n        Priority:   normal\n        Cipher:     aes-xts-plain64\n        PBKDF:      argon2id\n        Time cost:  4\n        Memory:     1048576\n        Threads:    4<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-6-aprire-e-formattare-il-filesystem\">Step 6: aprire e formattare il filesystem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il volume esiste ma \u00e8 cifrato e non utilizzabile finch\u00e9 non lo &#8220;apri&#8221;. <code>luksOpen<\/code> chiede la passphrase, ricostruisce la chiave master e crea un dispositivo mappato sotto <code>\/dev\/mapper\/<\/code>. Quel dispositivo si comporta come un disco normale: tutto ci\u00f2 che ci scrivi viene cifrato in modo trasparente prima di toccare il supporto fisico.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Apertura del volume con nome logico \"datavault\"\nsudo cryptsetup open \/dev\/sdb datavault\nEnter passphrase for \/dev\/sdb: ********************\n\n# Ora esiste il dispositivo mappato\nls -l \/dev\/mapper\/datavault\n\n# Creazione del filesystem sul dispositivo mappato, NON sul disco grezzo\nsudo mkfs.ext4 -L datavault \/dev\/mapper\/datavault<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Punto critico da non sbagliare: il filesystem va creato su <code>\/dev\/mapper\/datavault<\/code>, mai su <code>\/dev\/sdb<\/code>. Formattare il disco grezzo sovrascriverebbe l&#8217;header LUKS appena creato e distruggerebbe il volume. La regola mnemonica \u00e8 semplice: dopo <code>luksFormat<\/code>, tutto il lavoro si fa sul dispositivo <code>\/dev\/mapper\/&lt;nome&gt;<\/code>, mai pi\u00f9 sul dispositivo fisico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-7-montare-usare-e-smontare-il-volume\">Step 7: montare, usare e smontare il volume<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con il filesystem creato, montare il volume \u00e8 identico a montare qualsiasi disco. Creiamo un punto di montaggio, lo colleghiamo e verifichiamo che la scrittura funzioni.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/mnt\/datavault\nsudo mount \/dev\/mapper\/datavault \/mnt\/datavault\n\n# Test di scrittura e lettura\necho \"dati riservati\" | sudo tee \/mnt\/datavault\/test.txt\ncat \/mnt\/datavault\/test.txt\n\n# Verifica dello spazio\ndf -h \/mnt\/datavault\n\n# Chiusura ordinata: prima smonta, poi chiudi il volume LUKS\nsudo umount \/mnt\/datavault\nsudo cryptsetup close datavault<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;ordine di chiusura conta. Devi sempre smontare il filesystem (<code>umount<\/code>) prima di chiudere il volume LUKS (<code>cryptsetup close<\/code>). Se inverti i due passi otterrai un errore &#8220;device is busy&#8221; perch\u00e9 il filesystem sta ancora usando il dispositivo mappato. Dopo <code>cryptsetup close<\/code> il dispositivo sotto <code>\/dev\/mapper\/<\/code> sparisce e i dati tornano inaccessibili senza la passphrase: questo \u00e8 esattamente lo stato in cui il disco offre protezione.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-8-aggiungere-e-gestire-le-passphrase-nei-keyslot\">Step 8: aggiungere e gestire le passphrase nei keyslot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">LUKS2 offre fino a 32 keyslot, e questo abilita scenari reali: una passphrase principale per l&#8217;amministratore, una secondaria per un collega, una di emergenza conservata in cassaforte. Ogni keyslot protegge una copia della stessa chiave master, quindi revocare un keyslot non richiede di ri-cifrare i dati.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Aggiungere una nuova passphrase (richiede una esistente per autorizzare)\nsudo cryptsetup luksAddKey \/dev\/sdb\nEnter any existing passphrase: ********************\nEnter new passphrase: ********************\nVerify passphrase: ********************\n\n# Cambiare una passphrase esistente in uno slot\nsudo cryptsetup luksChangeKey \/dev\/sdb\n\n# Vedere quali keyslot sono occupati\nsudo cryptsetup luksDump \/dev\/sdb | grep -A1 Keyslots\n\n# Revocare (cancellare) il keyslot numero 1\nsudo cryptsetup luksKillSlot \/dev\/sdb 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Attenzione a <code>luksKillSlot<\/code>: cancella lo slot indicato senza chiedere quale passphrase corrisponda. Prima di rimuovere uno slot, assicurati di sapere quale passphrase stai eliminando e di averne almeno un&#8217;altra funzionante. <strong>Cancellare l&#8217;ultimo keyslot rende il volume permanentemente inaccessibile<\/strong>, perch\u00e9 senza alcuna passphrase non c&#8217;\u00e8 modo di ricostruire la chiave master. Lo strumento ti avvisa se stai per rimuovere l&#8217;ultimo slot, ma non fare affidamento solo su quel controllo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-9-backup-e-ripristino-dellheader-luks\">Step 9: backup e ripristino dell&#8217;header LUKS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Questo \u00e8 il passo che separa chi usa LUKS con criterio da chi un giorno perder\u00e0 i dati. L&#8217;header contiene i keyslot e i metadati: un settore corrotto, un comando sbagliato o un firmware difettoso possono danneggiarlo. Se succede e non hai un backup, nessuna passphrase potr\u00e0 pi\u00f9 sbloccare il volume. Il backup dell&#8217;header \u00e8 la tua polizza assicurativa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Creare il backup dell'header su file\nsudo cryptsetup luksHeaderBackup \/dev\/sdb \\\n  --header-backup-file ~\/datavault-header.img\n\n# Proteggi il file: contiene i keyslot cifrati\nchmod 600 ~\/datavault-header.img\n\n# Ripristino dell'header in caso di corruzione\nsudo cryptsetup luksHeaderRestore \/dev\/sdb \\\n  --header-backup-file ~\/datavault-header.img<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Due avvertenze fondamentali. Primo: <strong>conserva il backup dell&#8217;header su un supporto diverso e in luogo sicuro<\/strong>, non sullo stesso disco che stai cifrando. Un backup dell&#8217;header che vive sul disco fallito non serve a nulla. Secondo: il file dell&#8217;header \u00e8 sensibile quanto il disco stesso. Contiene i keyslot, quindi chiunque lo ottenga pu\u00f2 tentare un attacco a forza bruta offline sulle tue passphrase con tutta la potenza di calcolo che vuole. Trattalo come un segreto e considera di cifrarlo a sua volta (per esempio con <a href=\"https:\/\/shattered.io\/it\/gpg-cifrare-firmare-file\/\">GPG<\/a>) prima di archiviarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un dettaglio di sicurezza che molti ignorano: se cambi o revochi una passphrase dopo aver fatto il backup, il vecchio backup dell&#8217;header contiene ancora il keyslot della passphrase rimossa. Per una revoca davvero efficace devi aggiornare anche il backup, altrimenti la passphrase che credevi cancellata resta valida tramite la copia dell&#8217;header.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-10-montaggio-automatico-con-crypttab-e-fstab\">Step 10: montaggio automatico con crypttab e fstab<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Finora abbiamo aperto e montato il volume a mano. Per un disco dati che deve essere disponibile a ogni avvio, configuriamo lo sblocco automatico con il file <code>\/etc\/crypttab<\/code> (che gestisce l&#8217;apertura LUKS) e <code>\/etc\/fstab<\/code> (che gestisce il montaggio del filesystem). Identifichiamo il disco tramite UUID, perch\u00e9 i nomi come <code>\/dev\/sdb<\/code> possono cambiare tra un boot e l&#8217;altro.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ricava l'UUID del dispositivo fisico cifrato\nsudo blkid \/dev\/sdb\n# \/dev\/sdb: UUID=\"a1b2c3d4-....\" TYPE=\"crypto_LUKS\"\n\n# \/etc\/crypttab  (nome_logico  sorgente  chiave  opzioni)\ndatavault  UUID=a1b2c3d4-....  none  luks\n\n# Ricava l'UUID del filesystem interno (a volume aperto)\nsudo blkid \/dev\/mapper\/datavault\n\n# \/etc\/fstab\n\/dev\/mapper\/datavault  \/mnt\/datavault  ext4  defaults  0  2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con la chiave impostata a <code>none<\/code>, al boot il sistema chieder\u00e0 la passphrase in modo interattivo. Dopo aver modificato <code>crypttab<\/code> bisogna rigenerare l&#8217;initramfs perch\u00e9 lo sblocco al boot funzioni: <code>sudo update-initramfs -u<\/code>. Prova sempre la configurazione con un riavvio controllato e tieni a portata di mano un supporto di ripristino: un errore in <code>fstab<\/code> con un volume cifrato pu\u00f2 bloccare l&#8217;avvio del sistema. Per il root cifrato vale la stessa logica di <a href=\"https:\/\/shattered.io\/it\/chiavi-ssh-ed25519-hardening-server\/\">hardening del server<\/a>: piccoli errori di configurazione hanno conseguenze grandi, quindi si testa in ambiente controllato.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-11-sblocco-con-file-di-chiave-e-detached-header\">Step 11: sblocco con file di chiave e detached header<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Inserire la passphrase a ogni avvio non \u00e8 pratico sui server. La soluzione \u00e8 un file di chiave: un file di byte casuali registrato in un keyslot, che <code>crypttab<\/code> pu\u00f2 leggere automaticamente. La sicurezza si sposta allora sulla protezione di quel file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Genera un file di chiave da 4096 byte casuali\nsudo dd if=\/dev\/urandom of=\/root\/datavault.key bs=512 count=8\nsudo chmod 600 \/root\/datavault.key\n\n# Registra il file di chiave in un nuovo keyslot\nsudo cryptsetup luksAddKey \/dev\/sdb \/root\/datavault.key\n\n# In \/etc\/crypttab usa il file al posto di \"none\"\ndatavault  UUID=a1b2c3d4-....  \/root\/datavault.key  luks<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il file di chiave va conservato su un volume gi\u00e0 protetto, tipicamente il disco di sistema cifrato: mettere la chiave di un disco dati in chiaro sullo stesso disco non protetto annullerebbe la cifratura. Una variante avanzata \u00e8 l&#8217;<strong>header separato<\/strong> (detached header), in cui i metadati LUKS non risiedono sul disco dati ma su un dispositivo distinto, per esempio una chiavetta USB. Senza quella chiavetta il disco appare come rumore casuale indistinguibile, senza nemmeno la firma <code>crypto_LUKS<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Creare un volume con header separato su un altro dispositivo\nsudo cryptsetup luksFormat --type luks2 \\\n  --header \/mnt\/usb\/datavault.hdr \/dev\/sdb\n\n# Aprirlo richiede di indicare l'header\nsudo cryptsetup open --header \/mnt\/usb\/datavault.hdr \/dev\/sdb datavault<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-12-ri-crittografia-con-cryptsetup-reencrypt\">Step 12: ri-crittografia con cryptsetup reencrypt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A volte serve cambiare la chiave master vera e propria, non solo una passphrase: dopo il sospetto di una compromissione, o per migrare i parametri crittografici di un vecchio volume. <code>cryptsetup reencrypt<\/code> ri-cifra l&#8217;intero contenuto sul posto, senza decifrarlo a plaintext intermedio, e pu\u00f2 riprendere se l&#8217;operazione viene interrotta.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Backup dell'header PRIMA di iniziare (obbligatorio)\nsudo cryptsetup luksHeaderBackup \/dev\/sdb \\\n  --header-backup-file ~\/pre-reencrypt.img\n\n# Ri-crittografia con nuova chiave master\nsudo cryptsetup reencrypt \/dev\/sdb\nEnter passphrase: ********************\nProgress: 64.2%, ETA 00:03, ... written\n\n# In caso di interruzione, riprendere con\nsudo cryptsetup reencrypt --resume-only \/dev\/sdb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La ri-crittografia \u00e8 un&#8217;operazione lunga e a rischio per definizione: sposta ogni blocco del disco. Esegui sempre un backup dell&#8217;header prima di iniziare e, se possibile, un backup completo dei dati. Per un disco da diversi terabyte parliamo di ore. Una interruzione di corrente durante <code>reencrypt<\/code> senza UPS \u00e8 lo scenario in cui i metadati di avanzamento (che LUKS2 salva nell&#8217;header) e l&#8217;opzione <code>--resume-only<\/code> ti salvano: ecco perch\u00e9 si ri-cifra solo su LUKS2 e mai senza copia dell&#8217;header.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6-errori-comuni-da-evitare-con-luks\">6 errori comuni da evitare con LUKS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La maggior parte delle perdite di dati con LUKS non dipende da debolezze della cifratura, ma da errori operativi. Ecco i sei pi\u00f9 frequenti e come prevenirli.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Nessun backup dell&#8217;header.<\/strong> \u00c8 l&#8217;errore numero uno. Un header corrotto senza backup significa dati persi al 100%. Esegui <code>luksHeaderBackup<\/code> subito dopo <code>luksFormat<\/code> e dopo ogni modifica ai keyslot.<\/li><li><strong>Formattare il dispositivo sbagliato.<\/strong> Confondere <code>\/dev\/sdb<\/code> con <code>\/dev\/sda<\/code> cancella il sistema. Esegui <code>lsblk<\/code> e conferma dimensione ed etichetta prima di ogni <code>luksFormat<\/code>.<\/li><li><strong>Creare il filesystem sul disco grezzo.<\/strong> <code>mkfs<\/code> va eseguito su <code>\/dev\/mapper\/&lt;nome&gt;<\/code>, mai sul dispositivo fisico, altrimenti distruggi l&#8217;header appena scritto.<\/li><li><strong>Passphrase debole.<\/strong> AES-256 \u00e8 inattaccabile, ma una passphrase corta no. La forza dell&#8217;intero sistema \u00e8 quella della passphrase pi\u00f9 debole tra i keyslot attivi.<\/li><li><strong>File di chiave su volume non cifrato.<\/strong> Tenere il file di chiave in chiaro accanto al disco che dovrebbe proteggere vanifica la cifratura. La chiave va su un supporto gi\u00e0 protetto.<\/li><li><strong>Dimenticare di rigenerare l&#8217;initramfs.<\/strong> Dopo aver modificato <code>crypttab<\/code> per il volume di root, saltare <code>update-initramfs -u<\/code> pu\u00f2 rendere il sistema non avviabile.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"risoluzione-dei-problemi-8-casi-frequenti\">Risoluzione dei problemi: 8 casi frequenti<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una raccolta dei messaggi di errore pi\u00f9 comuni con LUKS e cryptsetup, con la causa e la soluzione pratica.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Sintomo \/ errore<\/th><th>Causa<\/th><th>Soluzione<\/th><\/tr><\/thead><tbody><tr><td><code>No key available with this passphrase<\/code><\/td><td>Passphrase errata o keyslot revocato<\/td><td>Riprova; verifica i keyslot con <code>luksDump<\/code>; prova una passphrase di emergenza<\/td><\/tr><tr><td><code>Device \/dev\/mapper\/x is busy<\/code><\/td><td>Filesystem ancora montato<\/td><td>Esegui <code>umount<\/code> prima di <code>cryptsetup close<\/code>; usa <code>lsof<\/code> per trovare i processi<\/td><\/tr><tr><td><code>Device already exists or active<\/code><\/td><td>Nome di mapping gi\u00e0 in uso<\/td><td>Scegli un altro nome o chiudi il mapping esistente con <code>cryptsetup close<\/code><\/td><\/tr><tr><td><code>Cannot read device ... header<\/code><\/td><td>Header corrotto o dispositivo sbagliato<\/td><td>Ripristina con <code>luksHeaderRestore<\/code> dal backup<\/td><\/tr><tr><td>Boot bloccato dopo modifica a crypttab<\/td><td>UUID errato o initramfs non aggiornato<\/td><td>Avvia da live USB, correggi <code>crypttab<\/code>, esegui <code>update-initramfs -u<\/code><\/td><\/tr><tr><td>Prestazioni di I\/O molto basse<\/td><td>AES-NI non attivo o cifrario lento<\/td><td>Verifica <code>grep aes \/proc\/cpuinfo<\/code>; usa <code>aes-xts<\/code>, non serpent\/twofish<\/td><\/tr><tr><td><code>Requested offset is beyond real size<\/code><\/td><td>Header separato non corrispondente al disco<\/td><td>Indica l&#8217;header corretto con <code>--header<\/code><\/td><\/tr><tr><td><code>Cannot wipe device header<\/code><\/td><td>Permessi insufficienti o disco protetto in scrittura<\/td><td>Usa <code>sudo<\/code>; controlla che il disco non sia in sola lettura<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per il caso pi\u00f9 temuto, l&#8217;header danneggiato, la sequenza di recupero \u00e8: avvia da supporto live, collega il backup dell&#8217;header, esegui <code>luksHeaderRestore<\/code> sul dispositivo, poi prova ad aprire il volume. Se non hai un backup dell&#8217;header, l&#8217;unica speranza residua \u00e8 che la chiave master sia ancora caricata in un sistema attivo (recuperabile da utenti esperti con <code>dmsetup<\/code>), ma \u00e8 uno scenario eccezionale e non una procedura su cui contare. La lezione resta una sola: fai il backup dell&#8217;header.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tecniche-avanzate-tpm-fido2-lvm-e-trim\">Tecniche avanzate: TPM, FIDO2, LVM e TRIM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta padroneggiate le basi, LUKS2 si presta a configurazioni pi\u00f9 sofisticate che migliorano sicurezza o usabilit\u00e0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sblocco-automatico-con-tpm-2-0\">Sblocco automatico con TPM 2.0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il chip TPM presente sulle macchine moderne pu\u00f2 conservare un segreto e rilasciarlo solo se lo stato di boot non \u00e8 stato manomesso. Con <code>systemd-cryptenroll<\/code> puoi legare un keyslot LUKS2 al TPM, cos\u00ec il disco si sblocca automaticamente all&#8217;avvio sulla macchina autorizzata, senza passphrase, ma resta cifrato se il disco viene spostato altrove. Le versioni recenti di Ubuntu offrono una variante sperimentale di cifratura del disco completa con sblocco basato su TPM direttamente dall&#8217;installer. Il compromesso da capire: lo sblocco automatico via TPM protegge dal furto del disco, non da chi accende il tuo portatile gi\u00e0 configurato.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Legare un keyslot LUKS2 al TPM 2.0\nsudo systemd-cryptenroll --tpm2-device=auto \/dev\/sdb\n\n# Sblocco con chiave hardware FIDO2 (es. token compatibile)\nsudo systemd-cryptenroll --fido2-device=auto \/dev\/sdb<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"luks-sotto-lvm-e-gestione-del-trim\">LUKS sotto LVM e gestione del TRIM<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;installer di Ubuntu propone uno schema LVM-on-LUKS: un unico volume LUKS che contiene un gruppo LVM, dentro cui vivono le partizioni logiche (root, swap, home). Il vantaggio \u00e8 un solo header da sbloccare e la flessibilit\u00e0 di LVM per ridimensionare i volumi. \u00c8 la configurazione consigliata per i sistemi desktop e server con cifratura completa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sugli SSD esiste un compromesso noto con il TRIM (l&#8217;opzione <code>discard<\/code>). Abilitarlo migliora le prestazioni e la longevit\u00e0 del disco, ma rivela quali blocchi sono inutilizzati, una piccola fuga di informazioni sul pattern di utilizzo. Per la maggior parte degli utenti il guadagno prestazionale supera il rischio teorico; per ambienti ad alta sensibilit\u00e0 si lascia disattivato. La scelta si esprime nelle opzioni di <code>crypttab<\/code> con <code>discard<\/code> o la sua assenza.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"verso-la-crittografia-post-quantistica\">Verso la crittografia post-quantistica<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una nota di prospettiva. AES-256, il cifrario simmetrico di LUKS, \u00e8 considerato resistente anche agli attacchi quantistici: l&#8217;algoritmo di Grover dimezza la sicurezza effettiva, lasciando comunque 128 bit, ben oltre la soglia pratica. Il punto debole quantistico riguarda la crittografia asimmetrica, non la cifratura simmetrica del disco. In altre parole, un volume LUKS cifrato oggi con AES-256 non \u00e8 tra i bersagli della transizione post-quantistica, a differenza di TLS e firme digitali. Per il quadro completo vedi il nostro approfondimento sulla <a href=\"https:\/\/shattered.io\/it\/cryptography\/\">crittografia<\/a> e i suoi sviluppi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"checklist-finale-del-progetto-completo\">Checklist finale del progetto completo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Riassumiamo l&#8217;intero progetto in una sequenza verificabile. Se hai seguito tutti i passi, dovresti poter spuntare ogni voce.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Fase<\/th><th>Comando chiave<\/th><th>Esito atteso<\/th><\/tr><\/thead><tbody><tr><td>Verifica strumenti<\/td><td><code>cryptsetup --version<\/code><\/td><td>Versione 2.7.x o superiore<\/td><\/tr><tr><td>Benchmark<\/td><td><code>cryptsetup benchmark<\/code><\/td><td>aes-xts oltre 3000 MiB\/s<\/td><\/tr><tr><td>Creazione volume<\/td><td><code>luksFormat --type luks2<\/code><\/td><td>Header LUKS2, keyslot 0 attivo<\/td><\/tr><tr><td>Apertura e filesystem<\/td><td><code>open<\/code> + <code>mkfs.ext4<\/code><\/td><td>Dispositivo in \/dev\/mapper<\/td><\/tr><tr><td>Backup header<\/td><td><code>luksHeaderBackup<\/code><\/td><td>File header in luogo sicuro<\/td><\/tr><tr><td>Montaggio automatico<\/td><td><code>\/etc\/crypttab<\/code> + <code>fstab<\/code><\/td><td>Sblocco al boot funzionante<\/td><\/tr><tr><td>Gestione chiavi<\/td><td><code>luksAddKey<\/code> \/ <code>luksKillSlot<\/code><\/td><td>Keyslot multipli controllati<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"domande-frequenti-su-luks-e-la-cifratura-del-disco\">Domande frequenti su LUKS e la cifratura del disco<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"luks-rallenta-il-computer\">LUKS rallenta il computer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Su qualsiasi CPU con AES-NI (tutte le Intel e AMD degli ultimi quindici anni) l&#8217;overhead \u00e8 di pochi punti percentuali e impercettibile nell&#8217;uso quotidiano. Il benchmark dimostra che AES-XTS supera i 3000 MiB\/s, pi\u00f9 veloce di un SSD SATA e in linea con NVMe di fascia media. Senza accelerazione hardware il costo sale, ma resta accettabile per i carichi normali.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"posso-cifrare-un-disco-gia-pieno-di-dati-senza-perderli\">Posso cifrare un disco gi\u00e0 pieno di dati senza perderli?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ec, con <code>cryptsetup reencrypt --encrypt<\/code> \u00e8 possibile cifrare sul posto un dispositivo esistente, ma \u00e8 un&#8217;operazione lunga e a rischio. Esegui sempre un backup completo dei dati prima di iniziare e usa un gruppo di continuit\u00e0 per evitare interruzioni di corrente. Per i dati che puoi permetterti di copiare, creare un nuovo volume cifrato e trasferire i file \u00e8 pi\u00f9 semplice e sicuro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cosa-succede-se-dimentico-la-passphrase\">Cosa succede se dimentico la passphrase?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Non esiste recupero. LUKS \u00e8 progettato proprio perch\u00e9 senza una passphrase valida (o un file di chiave registrato in un keyslot) la chiave master non pu\u00f2 essere ricostruita. \u00c8 la ragione per cui si configurano pi\u00f9 keyslot: una passphrase principale e almeno una di emergenza conservata in luogo sicuro. La forza di LUKS \u00e8 anche il suo rischio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"luks-protegge-i-dati-mentre-il-computer-e-acceso\">LUKS protegge i dati mentre il computer \u00e8 acceso?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No, e questo \u00e8 un punto cruciale spesso frainteso. Quando il volume \u00e8 aperto e montato, la chiave master \u00e8 in RAM e i dati sono accessibili in chiaro al sistema. LUKS protegge i dati a riposo: disco spento, rubato o smontato. Per proteggere un sistema acceso servono altre misure (blocco schermo, controllo degli accessi e attenzione agli attacchi cold boot sulla RAM).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"luks2-e-compatibile-con-windows-o-macos\">LUKS2 \u00e8 compatibile con Windows o macOS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LUKS \u00e8 nativo di Linux. Su Windows esistono strumenti sperimentali per leggere volumi LUKS, ma non sono affidabili per l&#8217;uso quotidiano. Se ti serve cifratura interoperabile tra sistemi operativi, valuta VeraCrypt, che gira nativamente su tutte le piattaforme. Per i dischi Linux, LUKS resta la scelta corretta e meglio integrata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"devo-usare-aes-o-un-cifrario-diverso\">Devo usare AES o un cifrario diverso?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Usa AES-256 (il default <code>aes-xts-plain64<\/code> a 512 bit). \u00c8 lo standard riconosciuto, beneficia dell&#8217;accelerazione hardware ed \u00e8 considerato sicuro a lungo termine, anche contro gli attacchi quantistici noti. Cifrari come Serpent o Twofish sono robusti ma molto pi\u00f9 lenti senza accelerazione dedicata, senza un reale vantaggio di sicurezza per l&#8217;uso comune.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ogni-quanto-devo-fare-il-backup-dellheader\">Ogni quanto devo fare il backup dell&#8217;header?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Subito dopo la creazione del volume, e di nuovo dopo ogni modifica ai keyslot (aggiunta, cambio o revoca di passphrase). Un backup dell&#8217;header obsoleto pu\u00f2 contenere keyslot che credevi rimossi, riaprendo passphrase revocate. Conserva i backup su un supporto separato e proteggili come segreti, perch\u00e9 consentono attacchi offline alle passphrase.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"luks-e-vulnerabile-ci-sono-falle-note\">LUKS \u00e8 vulnerabile? Ci sono falle note?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il formato e gli algoritmi (AES-256, Argon2id) sono solidi. Le vulnerabilit\u00e0 storiche di cryptsetup hanno riguardato casi limite, come la gestione dei metadati durante la ri-crittografia, e sono state corrette nelle versioni successive; una segnalazione del 2025 ha riguardato debolezze dei metadati LUKS2 in scenari di macchine virtuali confidenziali, mitigate nel ramo 2.8.x. Mantenere <code>cryptsetup<\/code> aggiornato all&#8217;ultima versione stabile \u00e8 la misura pi\u00f9 efficace contro queste classi di problemi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"related-coverage\">Related Coverage<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/shattered.io\/it\/veracrypt-cifrare-disco-aes-256\/\">VeraCrypt: Cifrare un Disco AES-256 in 12 Step [2026]<\/a><\/li><li><a href=\"https:\/\/shattered.io\/it\/gpg-cifrare-firmare-file\/\">GPG: Cifrare e Firmare File in 12 Step [2026]<\/a><\/li><li><a href=\"https:\/\/shattered.io\/it\/openssl-certificati-chiavi\/\">OpenSSL 3.5 LTS: Chiavi e Certificati in 12 Step [2026]<\/a><\/li><li><a href=\"https:\/\/shattered.io\/it\/chiavi-ssh-ed25519-hardening-server\/\">Chiavi SSH Ed25519: Hardening Server in 12 Step [2026]<\/a><\/li><li><a href=\"https:\/\/shattered.io\/it\/hashing-password-bcrypt-nodejs\/\">Hashing Password con bcrypt in Node.js: 12 Step [2026]<\/a><\/li><li><a href=\"https:\/\/shattered.io\/it\/cryptography\/\">Crittografia: guida e approfondimenti<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fonti-e-riferimenti-esterni\">Fonti e riferimenti esterni<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/gitlab.com\/cryptsetup\/cryptsetup\" target=\"_blank\" rel=\"noopener\">Progetto cryptsetup (repository ufficiale GitLab)<\/a><\/li><li><a href=\"https:\/\/gitlab.com\/cryptsetup\/cryptsetup\/-\/wikis\/FrequentlyAskedQuestions\" target=\"_blank\" rel=\"noopener\">cryptsetup FAQ ufficiale<\/a><\/li><li><a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/cryptsetup.8.html\" target=\"_blank\" rel=\"noopener\">Manuale cryptsetup(8)<\/a><\/li><li><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/device-mapper\/dm-crypt.html\" target=\"_blank\" rel=\"noopener\">Documentazione kernel dm-crypt<\/a><\/li><li><a href=\"https:\/\/ubuntu.com\/server\/docs\" target=\"_blank\" rel=\"noopener\">Documentazione ufficiale Ubuntu Server<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Ultimo aggiornamento: 16 giugno 2026. I comandi sono stati verificati su Ubuntu 24.04 LTS con cryptsetup 2.7.x. Verifica sempre la versione installata e mantieni un backup dell&#8217;header LUKS prima di qualsiasi operazione sui dischi.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un portatile rubato, un disco dismesso senza wipe, un backup finito nelle mani sbagliate: in tutti questi casi la differenza tra un incidente trascurabile e una violazione di dati seria\u2026<\/p>\n","protected":false},"author":9,"featured_media":173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-172","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":1,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":174,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/172\/revisions\/174"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media\/173"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}