# TrueCrypt

TrueCrypt è un software per computer di tipo open source usato per la crittazione "al volo" (in lingua inglese on-the-fly), sviluppato primariamente per Windows XP e per le versioni successive ufficialmente fino alla versione 7.1, ma disponibile anche per Linux e macOS. Lo sviluppo del programma è terminato nel mese di maggio del 2014 in concomitanza con la fine del supporto del sistema operativo Windows XP da parte di Microsoft.

## Caratteristiche

Il software è in grado di criptare interi dischi rigidi o loro partizioni (OTFE/On-the-fly-Encryption), oppure creare dei file criptati (chiamati contenitori) che possono essere montati come fossero dei veri dischi.
Qui di seguito un breve riassunto dell'evoluzione di TrueCrypt:
* Dalla versione 5 è capace di criptare la partizione di avvio (Boot) di Windows o un intero disco di avvio.
* Dalla versione 6 può creare ed accedere ad un hidden disk, nascosto all'interno della partizione crittata principale, la cui esistenza è impossibile da provare (negabilità plausibile).
* Dalla versione 7.0 TrueCrypt supporta l'accelerazione hardware per la cifratura e decifratura AES, utilizzando le apposite istruzioni di cui le CPU Intel Core i7/i5 dispongono.
* La versione 7.1a del software è l'ultima dotata di tutte le caratteristiche funzionanti. È stata sottoposta ad auditing per verificarne la sicurezza e ad aprile 2015 è stata pubblicata una relazione completa dei risultati di questa ricerca: non sono stati evidenziati problemi significativi. Questa versione è stata in seguito resa nuovamente disponibile su internet da diversi siti perché considerata l'ultima affidabile e priva di eventuali backdoor. Funziona anche su Windows 10 seppure con alcune limitazioni; è confermato il funzionamento della crittografia della partizione di avvio fino alla build 2004 di Windows 10 con partizione MBR e senza Secure Boot.
* La versione 7.2 è l'ultima versione "ufficiale" del software pubblicata dal gruppo di sviluppo. È stata distribuita in concomitanza all'annuncio della fine dello sviluppo di TrueCrypt e permette solo la decrittazione dei dischi cifrati ma non la creazione di nuovi contenitori. Non sono disponibili informazioni specifiche sui motivi della sua esistenza e riguardo a migliorie o correzioni rispetto alla precedente versione.
Punti forti di TrueCrypt sono la disponibilità per sistemi operativi Windows, MacOS e GNU/Linux e l'esistenza di molti language pack, anche se alcuni ancora incompleti, per la versione Windows. È distribuito sotto la licenza TrueCrypt Collective.
Gli algoritmi supportati da TrueCrypt sono l'AES, il Serpent e il Twofish. È possibile però usarli in cascata (avendo così maggiore sicurezza), ad esempio: AES-Twofish, AES-Twofish-Serpent, Serpent-AES, Serpent-Twofish-AES e Twofish-Serpent.

## Creazione e gestione "sicura" di un volume nascosto

Sul sito di TrueCrypt erano disponibili (in inglese) una serie di raccomandazioni per proteggere al meglio l'invisibilità dei dati contenuti nei volumi nascosti (hidden). Qui sotto sono raggruppate in breve:
* La deframmentazione delle partizioni in cui sono contenuti i volumi nascosti (files) di TrueCrypt può svelare tracce del contenuto di questi ultimi, in quanto alcuni frammenti di file possono finire in aree decriptate. Per evitare questo problema sono disponibili varie soluzioni:
** creare partizioni criptate anziché file criptati;
** non deframmentare mai le partizioni coi volumi criptati;
** partizionare con un filesystem che non necessita di deframmentazione (ext2). I driver per le partizioni ext non sono disponibili di norma su Windows ma possono essere rinvenuti su internet a questo indirizzo.
* Non usare un filesystem journaled per tenere i file criptati, in quanto pezzi dei contenuti nascosti possono essere immagazzinati da questo tipo di partizionamento in chiaro. Esempi di filesystem di questo tipo sono l'NTFS (quello usato da windows di default) ma anche la maggioranza dei filesystem per linux (ext3, ext4, ReiserFS, XFS). Per evitare questo rischio anche qui è possibile usare partizioni criptate invece di file oppure usare dei filesystem non journaled come il FAT32 (quello usato per formattare le chiavette USB) o ext2.
* Anche le chiavette USB e le memorie SSD non sono sicure per tenere volumi nascosti in quanto possono immagazzinare parte delle informazioni in chiaro.
* Quando si vuole fare una copia di backup dei dati contenuti nei volumi nascosti (cosa peraltro consigliata) è bene non fare copie "intermedie" dei file in volumi non criptati o non nascosti.
* Non usare la funzione di formattazione veloce quando si vuole creare un volume da criptare.
* In Linux e Mac OS X non usare come file contenitore per i volumi nascosti dei file sparsi.
* Una volta che i volumi criptati sono montati, i dati ivi contenuti sono criptati, ma quelli che vengono usati di volta in volta per lavorare sono immagazzinati in chiaro in appositi file temporanei, per permetterne l'utilizzo. Questi file possono rimanere in chiaro lasciando tracce dell'utilizzo dei volumi nascosti. Per evitare questo inconveniente fare quanto segue:
** Se si usa Windows, creare un sistema operativo nascosto (in questo modo i temporanei saranno criptati con tutto il sistema). Nel far ciò accertarsi di:
*** usare il sistema nascosto con la stessa frequenza di quello in chiaro (per attività che non impiegano l'uso di dati sensibili) in modo da rendere credibile la negabilità plausibile.
*** non attivare la versione di Windows nascosta (i dati ad essa relativi verrebbero spediti ai server di Microsoft, rivelandone la presenza); lo stesso vale per tutti i software che richiedono un'attivazione.
*** non collegarsi mai alla rete (soprattutto ad Internet) col sistema nascosto; nel caso qualcuno intercettasse il flusso di dati, ne svelerebbe l'esistenza.
*** tutte le attività che pongono rischio ad essere rilevate da qualcuno per le stesse ragioni vanno disabilitate (ad esempio, la sincronizzazione automatica dell'orario di sistema).
*** disabilitare ogni sistema in grado di elaborare log relativi allo spegnimento del PC (controllare le impostazioni del BIOS; rivelerebbero anche questi l'esistenza del sistema nascosto).
** Usando Linux è bene usare TrueCrypt tramite Live CD o USB (in sola lettura). In questo modo, si è sicuri che i dati temporanei non verranno salvati sull'hard disk. La distro live con dentro TrueCrypt la si può scegliere tra le molte disponibili in rete (anche italiane), oppure, se si ha esperienza con Linux, farsela da sé usando gli appositi tools, oppure ancora, è possibile usare una qualunque altra live usando la versione portatile di TrueCrypt per Linux memorizzata sul disco fisso.
** Con Mac OS-X non è possibile risolvere questo problema. Volendo si può usare anche in questo caso un Live CD di Linux.

## Fine del supporto

Il 28 maggio 2014 gli sviluppatori hanno annunciato la fine del supporto e dello sviluppo di TrueCrypt, dichiarando che l'uso del software non è sicuro per via di problemi di sicurezza non risolti. L'ultima versione pubblicata, la 7.2, non permette di creare nuovi volumi cifrati, ma solo il montaggio degli stessi, ovvero l'accesso in lettura/scrittura dei volumi creati con versioni precedenti. Per la creazione di volumi cifrati è necessario l'utilizzo della versione 7.1a. Secondo quanto comunicato dagli stessi sviluppatori tramite il sito del progetto, alla base della decisione di interrompere lo sviluppo di TrueCrypt c'è il termine del supporto di Windows XP da parte di Microsoft e l'aggiunta, nelle versioni successive di Windows, ma anche nelle altre piattaforme supportate da TrueCrypt ossia Linux e OS X, di supporti integrati per la creazione di dischi cifrati.
Dopo l'abbandono del progetto da parte del gruppo di sviluppo è stata condotta un'analisi di tutto il codice sorgente del programma alla ricerca di backdoor o falle nella sua sicurezza che, però, non ha dimostrato alcun problema rilevante. Dopo la pubblicazione dell'analisi del sorgente l'ultima versione pienamente funzionante, la 7.1a, è stata nuovamente messa online per il download da un sito indipendente, con l'intento di mantenere vivo il progetto TrueCrypt. Un fork di TrueCrypt al momento mantenuto, compatibile con i suoi volumi e che ha già provveduto a risolvere i pochi problemi rilevati nell'analisi citata prima, è VeraCrypt. Un altro progetto nato dalle ceneri di TrueCrypt con l'obiettivo di proseguirne lo sviluppo è CipherShed, di cui però ancora non esiste una versione stabile. TCplay e cryptsetup consentono la creazione e la gestione da riga di comando dei volumi di TrueCrypt su Linux (sono integrati in Tails). Esiste una GUI che consente di utilizzare questi strumenti più agevolmente senza l'utilizzo della riga di comando: Zulucrypt. Gli sviluppatori di Tails stanno ipotizzando una sua possibile integrazione.