Come proteggere i dati sul proprio computer in modo sicuro, gratuito e appagante

Per me il problema della sicurezza di alcuni dati sul mio computer si è banalmente fatto avanti quando avevo troppe password e troppi username diversi.
Punto primo non li potevo ricordare a memoria e punto secondo non potevo lasciarli liberi di scorrazzare sul mio hard disk alla vista di tutti, quindi avevo bisogno di mettere tutto sotto una stessa password, cioè di fare una cartella criptata, seminascosta o nascosta, semisegreta o segreta, accessibile solo a chi conoscesse l’unica chiave.

 

 

Il programma più soddisfacente in circolazione da qualche tempo a questa parte per criptare dei dati in generale è TrueCrypt, che, buona notizia, è gratuito.

 

 

Esistono versioni per Windows 7/Vista/XP/2000, per Mac OS X e per Linux e si possono scaricare qui. Dopo averlo installato possiamo mettere la lingua italiana (che però è parziale in qualche grado, o almeno così è segnalata la traduzione), se l’inglese non è esteticamente di nostro gusto, rivolgendoci a questa pagina.

Vediamo in linea di massima come funziona, usando il popolare (forse ancora per poco?) sistema operativo Microsoft, Windows 7, e montando la traduzione italiana.
Ho fatto questa scelta perché i sistemi operativi Windows sono per il momento i più diffusi, in ogni caso non cambia granché da una versione all’altra.
E’ esaminata la versione di TrueCrypt 7.1.

 

 

Questo è l’aspetto iniziale di TrueCrypt quando lo avviamo.

 

 

Supponiamo di voler creare una cosa criptata di dimensione qualsiasi. Allora clicchiamo su “Crea un volume…” nella finestra iniziale e ci partirà la procedura guidata.

 

 

Questo è il primo passaggio della procedura guidata:

 

 

Possiamo creare un file criptato (prima opzione), che ci apparirà, a procedura finita e completata, come un file senza estensione, cioè uno di quelli che il sistema ci chiede con cosa aprire, tipo questo:

Il file criptato nell’immagine sopra è Bigabong e alla categoria “Tipo” c’è scritto solo “File”.

 

 

Volendo giocare a fare i misteriosi, possiamo per esempio rinominare lo stesso file, terminarlo con .dll, l’estensione che comunemente hanno alcuni file usati da Windows, e metterlo in una cartella di sistema, come in questo caso:

 

 

La seconda opzione ci permette di avere un’intera partizione dell’hard disk oppure un supporto esterno totalmente criptati, a patto che su di essi non giri il sistema operativo.

 

 

La terza opzione invece ci permette di criptare la partizione su cui c’è proprio il sistema operativo e significherebbe dover inserire sempre la password prima che Windows venga avviato.

 

 

Criptare l’intera partizione dove c’è il sistema operativo vorrebbe dire costringere il computer a criptare e decriptare continuamente i dati e questo processo potrebbe rallentare il sistema.
Si parla del problema del rallentamento del computer in questo caso, ma anche in generale, per esempio qui su un blog italiano, qui sul forum in inglese di Genmay, qui sul forum in inglese Wilders Security, qui (in inglese) su HardForum e qui (in inglese) su SuperUser. Qui versioni archiviate delle pagine nell’ordine, eccetto l’ultima: 1, 2, 3, 4.

 

 

Inoltre ci sarebbe persino un (in realtà non grave) problema di sicurezza nella terza opzione. Poiché anche se la cifratura riguarda tutta la partizione, una piccola parte dev’essere comunque non criptata e a disposizione dei dati che permetteranno il boot, cioè l’avvio. Sfruttando questo, chiamiamolo così, punto debole Peter Kleissner nel 2009 ha presentato un modo per rendere quasi completamente inutile la cifratura di una partizione con sistema operativo con TrueCrypt. La tecnica consiste nell’installazione sul computer da attaccare del suo programma Stoned Bootkit, che, una volta installato, si troverà sul MBR, la parte non criptata della partizione di cui abbiamo parlato prima, interverrà saltando TrueCrypt e potrà agire a sistema operativo avviato come se la cifratura non ci fosse. Quindi, una volta accompagnato lo Stoned Bootkit con un programmino per catturare la password al boot, un virus o un malware qualsiasi, i dati diventerebbero in pratica pienamente accessibili.

Ma i creatori di TrueCrypt non si sono scomposti più di tanto, né si sono lasciati impressionare. Infatti perché un attacco di questo tipo abbia successo bisogna installare lo Stoned Bootkit. E per farlo deve succedere almeno una delle due seguenti cose: deve essere presente sul sistema operativo un virus o un malware, che nessun software antivirus riconosca, con autorizzazioni da amministratore e che possa intervenire addirittura sul MBR, cosa non facile, come dice Simon Hunt, il Chief Technology Officer (una carica di solito vicina all’Amministratore Delegato per importanza nelle grandi aziende) di McAfee, sul suo blog qui; si deve avere a disposizione fisicamente il computer.
Poiché giustamente requisiti per criptare i dati sperando realisticamente che rimangano segreti sono: non avere virus o malware sul proprio computer, visto che alcuni possono per esempio riconoscere i tasti premuti sulla tastiera, oltre che installare Stoned Bootkit; non lasciare fisicamente il proprio computer in mani altrui o almeno non usarlo prima di aver verificato con certezza che non sia stato manomesso, i creatori di TrueCrypt hanno risposto assai piccati per email così a Peter Kleissner.

Altre fonti che ho consultato per ricavare queste informazioni: qui su The H Security e qui su Itwire.
Qui versioni archiviate delle fonti nell’ordine: 1, 2, 3, 4, 5, 6, 7, 8.

 

 

Peter Kleissner non è stato l’unico a seguire la strada del MRB per aggirare TrueCrypt su una partizione con sistema operativo. Anche l’esperta polacca di sicurezza informatica Joanna Rutkowska ci è riuscita, ma si è spinta oltre. Ha infatti messo a punto l’Evil Maid Attack: ha fatto un programmino che si può agevolmente mettere su una penna USB con cui, allontanatosi il proprietario del computer da attaccare, una volta inserita, si può infettare il sistema in 2 minuti. Quando il proprietario tornerà al lavoro al computer, scriverà la password e il programmino infettante la archivierà da qualche parte, in modo che poi potrà essere letto succcessivamente una volta avuto nuovamente a disposizione il computer, o lo spedirà a un qualche indirizzo email a scelta. Non a caso l’ha chiamato “Attacco della Cameriera Diabolica”.

Ovviamente anche questo espediente viola il principio base di non lasciare in mani altrui fisicamente il proprio computer o almeno di non usarlo senza aver controllato che non sia stato manomesso, come avverte Bruce Schneier, Chief Security Technology Officer di BT, qui sul suo blog.

Qui versioni archiviate delle fonti nell’ordine: 1, 2.

 

 

Andiamo avanti nella procedura guidata, prendendo in considerazione il caso in cui scegliamo la prima opzione. La finestra successiva è la seguente:

 

 

Il programma ci offre qui un’opzione molto interessante: creare un Volume TrueCrypt ignoto.
In cosa consiste? Consiste nella divisione dello spazio del volume criptato in due parti, la prima avente una certa password e la seconda un’altra. La prima conterrà il volume, diciamo così, in chiaro e il secondo quello ignoto. Nel primo metteremo dei file in realtà non importanti, per far vedere che tutto quello che contiene il nostro volume criptato è quello che avremo davanti ai nostri occhi inserendo la prima password, nel secondo metteremo i file che vogliamo tenere segreti veramente.
Il trucchetto mortale contro gli estorsori o chiunque volesse costringere a cantare la password risiede nel fatto che si può essere certi che un certo file sia una cosa criptata, quindi si può essere certi che ci sia una password e pretenderla (e si può rivelare la prima), ma non si può essere certi che la seconda parte del volume, quella apribile con la seconda password, contenga dati criptati.
Infatti i dati contenuti nella seconda parte risulterebbero essere soltanto dati casuali e provare l’esistenza di una cifratura potrebbe risultare difficile forse persino per le autorità. Tuttavia la segretezza della parte ignota potrebbe essere messa in pericolo per esempio da file temporanei generati da eseguibili legati ad essa, che potrebbero rimanere da qualche parte, magari in una cartella del sistema non cifrata. Allora per via di questo e anche altri problemi bisogna fare attenzione e vale la pena prendere in considerazione questi accorgimenti.

 

 

Saltiamo i passaggi della procedura guidata che riguardano il caso della creazione del Volume TrueCrypt ignoto, perché sono banali e chiedono semplicemente di indicare la dimensione della parte ignota del volume, la seconda password, i “dati fantoccio” della parte in chiaro e poco altro. Quindi andiamo avanti prendendo in considerazione la prima opzione.

 

 

Il passo successivo chiede di indicare l’indirizzo sull’hard disk e il nome del file del nuovo volume criptato. Attenzione a non indicare un file esistente se non lo si vuole cancellare. Indicando un file esistente TrueCrypt non lo cifrerà affatto, ma lo sovrascriverà cancellandolo.

 

 

Andiamo al passo ancora successivo, in cui potremo finalmente scegliere gli algoritmi di codifica:

Possiamo scegliere l’algoritmo principale tra AES, Serpent e Twofish, oppure usare due o tre di questi uno dopo l’altro.

I tre algoritmi di codifica sono nientemeno che i primi tre classificati nella competizione indetta dal National Institute of Standards and Technology, l’ente governativo americano che si occupa di tecnologia e standard, per scegliere una nuova tecnica di cifratura per i documenti governativi. Il cosiddetto Advanced Encryption Standard process, cioè la competizione per scegliere l’algoritmo, è partito nel 1997 (fonte: vedere il penultimo link) e si è concluso circa nel 2000 con la vittoria dell’algoritmo di nome Rijndael, che poi è stato rinominato Advanced Encryption Standard, AES, appunto.

La classifica finale con i voti nella competizione è stata la seguente:
Rijndael: 86 positivi, 10 negativi
Serpent: 59 positivi, 7 negativi
Twofish: 31 positivi, 21 negativi
RC6: 23 positivi, 37 negativi
MARS: 13 positivi, 84 negativi

Fonte: qui sul sito ufficiale del NIST.

L’algoritmo Twofish è stato creato con il contributo del prima citato Bruce Schneier. Fonte: qui sul suo sito. Qui la versione archiviata.

 

 

La sicurezza di un algoritmo di cifratura di questo tipo dipende dalla possibilità di trovare delle scorciatoie o delle relazioni per ridurre il numero, il volume e il tempo necessario per i calcoli da fare per arrivare alla soluzione.
Infatti la difficoltà nell’attaccare questo genere di cifratura è nel tempo: per provare tutte le chiavi, le password, e trovare quella giusta, con un cosiddetto “attacco a forza bruta”, ci possono volere per esempio 5 x 10^{21} anni per una chiave a 128 bit con AES (a una fissata velocità di calcolo, fonte: qui su arXiv).
Allora per attaccarlo ci si pone l’obiettivo ad esempio di individuare insiemi più piccoli di password con dentro quella corretta, in modo da diminuire il tempo necessario, oppure di ricavare delle informazioni che possano permettere di semplificare e accelerare in qualche grado i calcoli. Quindi un algoritmo è tanto più fiacco quanto più è possibile e facile trovare degli stratagemmi, delle regolarità e delle informazioni che permettano di diminuire il tempo necessario per raggiungere la soluzione.
Un attacco a un sistema di cifratura di questo tipo, in conclusione, perché sia sensato e si dica che ha avuto successo, deve poter raggiungere, almeno teoricamente, la soluzione in un tempo inferiore a quello che servirebbe provando tutte le chiavi possibili.

Al momento per tutti e tre gli algoritmi esistono degli attacchi parzialmente o completamente andati a buon fine, ma in tutti i casi si tratta di attacchi che abbassano il tempo di calcolo, ma non in modo sufficiente da essere il calcolo fattibile in pratica. Cioè in tutti i casi è ancora richiesto un tempo di calcolo irrealizzabile.

Un esempio recente riguarda l’algoritmo di cifratura AES. Qualche mese fa Andrey Bogdanov, Dmitry Khovratovich e Christian Rechberger hanno pubblicato un risultato con cui si riuscirebbe ad abbassare il tempo di calcolo (ma non in modo sufficiente da essere fattibile).
Un articolo sull’argomento qui su Threat Post. Qui la versione archiviata.

 

 

Cliccando su “Testata” possiamo provare l’algoritmo di codifica su un vettore, così, per giocare. Invece cliccando su “Comportamento” potremo conoscere la velocità con cui verranno elaborati i dati con i vari algoritmi.

 

 

Abbiamo poi la possibilità di scegliere quello che nella finestra viene indicato con “Algoritmo di confusione”. Si tratta in realtà di funzioni hash crittografiche e possiamo sceglierne una tra: RIPEMD-160, SHA-512 e Whirlpool.

 

 

Una funzione hash è, senza dare una definizione troppo precisa, una funzione h che associa elementi da un insieme più grande a uno finito più piccolo.
Niente di strano se diciamo che una funzione hash non è sicuramente ingettiva. Cioè esiste almeno un elemento y nell’insieme finito più piccolo, tale che esistono x_1\neq x_2 per cui vale h(x_1)=h(x_2)=y, con x_1 e x_2 elementi del dominio.

 

 

Una funzione hash crittografica è una funzione hash k per cui è difficile risolvere i seguenti problemi:

1. preso un elemento y dell’insieme finito più piccolo, trovare qual è l’elemento x del dominio tale che k(x)=y;

2. preso un elemento x_1 del dominio, trovare un altro elemento x_2 del dominio tale che k(x_1)=k(x_2);

3. trovare due elementi x_1\neq x_2 del dominio tali che k(x_1)=k(x_2). La difficoltà nel risolvere questo problema si chiama resistenza alle collisioni.

Qualche dispensina e materiale sull’argomento: qui, qui e qui. Qui le versioni archiviate: 1, 2, 3.

 

 

Non sono noti attacchi andati in porto in questo momento (a me e credo anche in assoluto) per le funzioni hash crittografiche RIPEMD-160 e SHA-512, invece c’è un lavoro di un paio d’anni fa su Whirlpool qui (sulla sua resistenza alle collisioni).

 

 

Una funzione hash crittografica in soldoni può essere usata per avere un modo per ottenere da piccole variazioni nell’input, per esempio nelle password, grandi variazioni nell’output.
Per rendere l’idea, per esempio una funzione hash crittografica potrebbe associare alle due password simili 0000 e 0001 i valori completamente diversi jo4 e gtp. Per questo il traduttore l’ha chiamata “Algoritmo di confusione”. Sono molteplici gli usi che in realtà si possono fare delle funzioni hash crittografiche e uno di questi è anche la firma digitale.
Senza andare fuori argomento, TrueCrypt la usa come un algoritmo di cifratura affiancato a quello principale.

 

 

I passi successivi ci chiederanno di scegliere la password e poco altro, dopodiché il volume criptato sarà creato.

Tutto quello che dovremo fare dopo per poterlo usare e metterci dei dati, sarà di scegliere una lettera qualsiasi nella finestra iniziale, cliccare su “Seleziona file”, poi su “Monta” e inserire la password. Il nostro volume criptato comparirà come una partizione o un disco esterno del nostro computer.
Se invece vorremo accedere alla parte del volume ignota, nel caso l’avessimo creata, sarà sufficiente inserire la seconda password.

 

 

Se invece volessimo criptare un’intera penna USB dovremmo selezionare la seconda opzione nella prima schermata della procedura guidata.
TrueCrypt poi ci chiederà se creare una parte del volume ignota, quale supporto criptare e le solite altre cose. Unica cosa da segnalare: in questo caso c’è un passo della procedura guidata in cui è possibile criptare i dati già presenti con tutto il supporto senza il vincolo della cancellazione o della formattazione.
Comunicando attraverso la porta USB il lavoro potrebbe essere più lento, per esempio la creazione di un volume criptato con formattazione su tutta una chiavetta di circa 500 MB mi ha richiesto 3 minuti di tempo:

 

 

Dopo aver criptato la chiavetta, il suo indirizzo precedente sul sistema operativo NON lo dovremo usare se vorremo essere sicuri di non danneggiare i dati.
Per accedere al volume cifrato invece dovremo cliccare su “Seleziona unità…” nella finestra iniziale di TrueCrypt e montare la chiavetta.

 

 

Il sistema crittografico che usa TrueCrypt si chiama sistema crittografico a chiave simmetrica. E il motivo è presto detto: sia per la codifica che per la decodifica si usa la stessa chiave, la stessa password.

Non è sempre così per tutti i sistemi, infatti questo sistema va bene perché tra la tastiera su cui scriviamo la password e TrueCrypt non c’è nessun pericolo. Ma se per esempio la password fosse mandata attraverso il Web a un computer lontano il problema ci sarebbe eccome, una volta intercettata l’ignoto possessore potrebbe aprire il nostro volume in tutta tranquillità.

Anche per risolvere questo problema e la comunicazione di questo tipo è stato partorito il sistema crittografico a chiave pubblica. In sostanza questo sistema si basa su una chiave pubblica per la cifratura e una privata per la decifratura (per questo è anche detto asimmetrico). Tuttavia è un discorso abbastanza diverso e non vale la pena affrontarlo qui.

 

 

Tutti gli algoritmi di cifratura che ho nominato fino ad ora sono violabili teoricamente, per esempio avendo a disposizione una velocità di calcolo arbitraria.

Claude Shannon nel 1949 ha scritto un articolo, Communication Theory of Secrecy Systems, ponendo le condizioni matematiche perché un sistema di cifratura sia teoricamente perfettamente sicuro.

Esiste ed è conosciuto un sistema che soddisfa queste condizioni ed è il sistema crittografico a chiave usa e getta. Questo sistema però è praticabile soltanto per quantità di dati piccolissime, visto che richiede una lunghezza della chiave proporzionale.

L’articolo di Shannon di cui ho parlato prima è un punto di riferimento ancora adesso per la crittografia e si può trovare qui.
Qui invece ho riportato l’indirizzo delle dispense di un corso di crittografia alla Cornell University.
Qui le versioni archiviate nell’ordine: 1, 2.

 

 

TrueCrypt senza dubbi non è teoricamente perfettamente sicuro alla maniera di Shannon, ma per esempio l’FBI ha cercato per un anno di decriptare un volume generato con esso dal banchiere brasiliano Daniel Dantas, sospettato di crimini finanziari, e alla fine ha dovuto ammettere il fallimento e di non essere in grado di farlo. Niente male.

Fonti: qui su The Register, qui su FinanceTechNews, qui su TechWorld, qui su Korben e qui su V3Labs. Qui le versioni archiviate: 1, 2, 3, 4, 5.

 

 

Molti riferimenti e informazioni di questo post non compaiono ad oggi su Wikipedia.it, assolutamente e ovviamente non avrei nulla in contrario se in futuro dovesse accadere oppure alcune cose dovessero coincidere, qui le voci archiviate: AES, TrueCrypt.

Annunci

2 commenti on “Come proteggere i dati sul proprio computer in modo sicuro, gratuito e appagante”

  1. andrea ha detto:

    complimenti per il buon articolo scritto
    interessante
    uso la crittografia da tempo ma è un mondo da scoprire giorno per giorno
    oltretutto quasi sconosciuto nel nostro BelPaese
    a proposito…
    sono sicuro anch’io che lo ricostruiremo meglio questo peccaminoso BelPaese

    ce ne sono molte di applicazioni di crittografia
    TrueCrypt è molto interessante
    anche se preferisco app Open Source
    soprattutto in campo sicurezza
    peccato per la brutta fine di PGP
    e grazie invece al progetto GNU Privacy Guard

    comunque grazie per l’articolo

    lascio ai posteri un paio di link utli

    http://it.wikipedia.org/wiki/Portale:Sicurezza_informatica

    http://www.pgpi.org/

    http://it.wikipedia.org/wiki/GNU_Privacy_Guard

    http://www.gnupg.org/

    ciao, andrea

    • eulerCM ha detto:

      Ciao Andrea, ti ringrazio infinitamente!

      E’ vero, TrueCrypt non è considerato OpenSource oppure non lo è considerato abbastanza da più fonti: qui per Debian e qui per Ubuntu. Infatti usa una licenza tutta sua chiamata TrueCrypt License, che fa sorgere dubbi legali.
      Tuttavia il suo codice sorgente è pienamente disponibile e scaricabile a questo indirizzo.

      Si è detto molto a proposito di TrueCrypt, persino che potesse contenere backdoor della CIA o della NSA, per esempio in questo articolo su Privacy Lover e qui. L’accusa è quella di essere poco trasparente, ma in realtà non è così e il programma è sicuro anche al di là del ragionevole, visto che il codice sorgente è pubblico e visibile a chiunque!
      Segnalo qui una discussione molto utile in merito con repliche sui dubbi avanzati, su Superuser.

      Versioni archiviate di alcuni link nell’ordine: 1, 2, 3, 4.


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...