PM - HOME PAGE ITALIANA PM-TELEMATIC PUBLISHING PSYCHO-BOOKS

PM-TP
PSYCHOMEDIA
Psycho-Books


SICUREZZA INFORMATICA
PER PSICOLOGI E PSICHIATRI

Luca Pezzullo @ 2002 per Psychomedia Telematic Review

PARTE QUINTA




Crittografia

Giungiamo quindi a parlare della crittografia, ovvero l'ultima, potentissima, linea di difesa per la privacy e la sicurezza dei nostri dati. A scanso di equivoci, è necessario sottolineare subito che è una cosa IMPORTANTE, SICURA e relativamente SEMPLICE.
La crittografia, ovvero la possibilità di codificare i messaggi in modo tale che siano decifrabili e leggibili solo da chi ne ha effettivo diritto, ha avuto un forte impulso negli ultimi anni, con il grande sviluppo dei sistemi informatici; per molti aspetti, essa riveste un ruolo di primo piano nella "pianificazione di sicurezza" del professionista Psi-.
Anche ammesso che un attaccante riuscisse a superare tutte le nostre precedenti linee di difesa, e ci rubasse dei files contenenti informazioni molto delicate, se noi abbiamo avuto l'accortezza di crittografarli, il ladro si troverebbe davanti solo lunghissime sequenze caotiche di simboli causali, assolutamente indecifrabili (anche se disponesse di appositi “programmi-pirata”, e di un computer molto potente) senza la password giusta. Crittografati bene, i nostri documenti potrebbero quindi anche finire in mano a malintenzionati o pirati dilettanti, ma sarebbero totalmente inutilizzabili, garantendo così la riservatezza necessaria a noi ed ai nostri clienti/pazienti.

La crittografia ha una storia antichissima: fin dalle origini della civiltà, l'esigenza di comunicare in una maniera che fosse comprensibile solo ai membri "legittimi" della catena comunicativa è sempre stata pressante. In tempi moderni, la crittografia è diventata uno strumento di lavoro quotidiano nel settore diplomatico, militare, economico, commerciale. Negli ultimi anni, in particolare, l'utilizzo della crittografia si è diffuso moltissimo tramite Internet: i rischi di intercettazione, hacking, e “spionaggio telematico” delle comunicazioni più delicate (si pensi al numero della carta di credito quando si fa un acquisto online…), hanno reso necessario lo sviluppo di tecniche di protezione della riservatezza dei dati in transito sulle reti telematiche.
Nei primi anni '90, un programmatore di nome Phil Zimmermann rivoluzionò la storia della crittografia e della sicurezza su Internet creando e distribuendo PGP, Pretty Good Privacy, un programma per la crittografia delle email eccezionalmente sicuro, relativamente “semplice” da usare ed assolutamente gratuito. Nelle intenzioni di Zimmermann, PGP doveva servire a tutelare le comunicazioni e la sicurezza individuale degli oppositori politici (leader sindacali, esponenti dei movimenti per i diritti civili, etc.) nei paesi dove il rispetto dei diritti umani non era “particolarmente sviluppato”. In realtà, PGP si è progressivamente affermato, anche grazie ai suoi continui miglioramenti, come lo “standard de facto” della crittografia delle email in Internet. Per dare un'idea della sua potenza, è sufficiente dire che può eseguire crittografie asimmetriche a 4096 bit, e simmetriche a 128-256 bit con alcuni dei migliori algoritmi di crittografia forte esistenti al mondo (IDEA, Triple-DES, CAST). Cosa significa ? Vuol dire che garantisce un fattore di protezione virutalmente insuperabile: fino ad un paio di anni fa, PGP era inserito dal governo statunitense nell'elenco delle “Armi da Guerra di cui è vietata l'Esportazione” (come del resto tutti gli algoritmi con chiavi superiori a 40-56 bit).

FBI e CIA hanno sempre visto con ostilità le proposte di esportarlo all'estero, perchè PGP garantisce un livello di crittografia inaccessibile alle stesse Agenzie di sicurezza americane. Non a caso, dopo i tragici eventi dell'11 settembre, è stato proposto da più parti di bandirne l'uso, perchè faciliterebbe lo scambio di informazioni non decifrabili tra i terroristi internazionali. Per contro, i sostenitori della libera diffusione della crittografia replicano che lo strumento in sè è neutro, ed anzi nella quasi totalità dei casi viene utilizzato a fin di bene (organizzazioni umanitarie, tutela diritti umani, etc.), e per tutelare fortemente la privacy e la riservatezza delle persone che ne fanno uso.

Tutto questo come si collega all'attività professionale dello psicologo e dello psichiatra? Pensate alle occasioni di scambio di email con contenuti riservati, magari discutendo di un delicato caso clinico con un collega, od addirittura scambiando materiali e comunicazioni riservate con un paziente (contatti a distanza, counselling online, etc.). In tutti questi casi, per evitare che messaggi “delicati” possano essere intercettati e letti dal primo script kiddie che ha “bucato” il mail server od il nostro PC (o, peggio, da chi lo dovesse fare dolosamente), il ricorso alla crittografia delle email appare fondamentale.
Allo stesso modo, può essere caldamente consigliabile (anzi, è forse ormai una necessità deontologica) la cifratura della directory dove teniamo i documenti riservati ed i dati clinici "sensibili". È un'operazione che con gli appositi programmini è semplice, veloce e decisamente sicura.


Crittografia in pratica

Per crittografare, e per valutare la “forza” di una crittografia, è necessario avere tre parametri: il tipo di algoritmo di crittografia utilizzato, la lunghezza della chiave dell'algoritmo, e la qualità della password utilizzata per applicare l'algoritmo. Niente panico, è molto semplice !
La crittazione e la decrittazione avvengono attraverso una complicata serie di operazioni matematiche (algoritmi), gestite in automatico dal nostro computer.
Crittografare un documento è come nascondere un tesoro (il documento) in un robusto scrigno (la crittografia). Il “tipo di algoritmo”, che può essere più o meno forte e sofisticato, rappresenta la “durezza” del materiale con cui è costruito lo scrigno; la “lunghezza della chiave dell'algoritmo” (espressa in numero di bit) rappresenta lo “spessore” di questo materiale; la qualità (lunghezza unita a “stranezza” dei caratteri usati) della nostra password rappresenta la “complessità” della serratura. È inutile avere uno scrigno di titanio, se per chiuderlo usiamo una chiave semplicissima, da cassetta delle lettere (password breve o “stupida”: ci si mette pochi secondi a forzarla). Allo stesso modo, è inutile usare una chiave complicatissima in uno scrigno di carta velina (password ben scelta ma algoritmo debolissimo). Ed anche un buon algoritmo, unito ad una buona password, possono essere di scarsa utilità se lo spessore dello scrigno (lunghezza della chiave dell'algoritmo) è piccolissimo: un attacco può “sfondare” una simile crittografia in poco tempo.

Dunque, è necessario scegliere un buon algoritmo (“robusto”), dotato di una soddisfacente lunghezza della chiave (dai 56-64 bit in su, anche se la lunghezza necessaria varia in base al variare dell'algoritmo utilizzato; si parla di “crittografia forte” dai 128 bit in su, di solito) ed unito ad una password molto lunga e ben scelta.
In questo modo siamo ragionevolmente sicuri dell'inviolabilità del nostro “tesoro”.
Tra gli algoritmi più robusti (matematicamente inattaccabili), si possono citare il CAST, l'IDEA, il Triple-DES, il Rjindael/AES, il TwoFish, il BlowFish. Da evitare assolutamente il vecchio DES.
Le lunghezze delle chiavi (che dipendono anche dal tipo di algoritmo utilizzato) dovrebbero essere il più alte possibili, minimo 64 bit (molto meglio da 128-256 bit).

Gli attacchi possibili sono sostanzialmente di quattro tipi (i primi due li abbiamo già accennati parlando dell'impostazione delle passwords):

  • Brute Force
  • Attacco a Dizionario
  • Attacco all'Algoritmo
  • Password Sniffing

Nel primo caso, il cosiddetto attacco a forza bruta, un apposito programma informatico “spara” ad altissima velocità tutte le possibili combinazioni di chiavi per decrittare il file protetto;. L'attacco a forza bruta, teoricamente, può “rompere” qualunque algoritmo (e si tratta quindi del tipo di attacco più efficace in assoluto)… ma data la tempistica necessaria in caso di lunghezze eccessive, è anche il meno pragmatico: richiedendo anche migliaia di anni per rompere le cifrature più forti, è il tipo di attacco più inefficiente.

L'Attacco “a Dizionario”
è una variante dell'attacco a forza bruta, ma molto più efficiente. Vi ricordate il discorso fatto nella sezione dedicata alla scelta di una buona password ? Come abbiamo detto, la stragrande maggioranza degli utenti scegli password brevi e semplici: solitamente nomi propri (del figlio o della fidanzata), o parole elementari (quando non ridicole, tipo “password”). Partendo da questa consapevolezza, sono stati costruiti dei “dizionari”, ovvero dei lunghissimi elenchi di parole, nomi e sigle di uso comune in una data lingua. Un apposito software “sparerà” come tentativi di password l'intero elenco di parole contenute nel dizionario; nella maggior parte dei casi di utenti “sprovveduti”, la password viene trovata in un tempo infinitamente inferiore a quello necessario ad un attacco a forza bruta. Se il dizionario dovesse essere esaurito senza trovare la password corretta, il programma passa in modalità “forza bruta”. Ovviamente, con questo sistema “dizionario + forza bruta” si ottiene un enorme aumento di efficienza rispetto al semplice attacco a forza bruta.

L'Attacco all'Algoritmo
prevede la possibilità di approfittare di particolari “debolezze matematiche o computazionali” dell'algoritmo utilizzato, soprattutto se ha una lunghezza di chiave limitata a 40 bit o meno. Il DES, che fino a 10 anni fa rappresentava lo standard internazionale per la sicurezza crittografica dei dati informatici aziendali, nonostante la cura messa nel concepirlo ha diversi difetti matematici; unito ad uno scarso numero di bit di chiave, è “sfondabile” in poche decine di minuti con un qualunque PC da tavolo prodotto negli ultimi anni. Un attacco del genere non è invece effettuabile, ad esempio, sul Triple-DES (un algoritmo basato sulla tripla reiterazione del DES, con piccole modifiche): non solo il numero di bit della lunghezza di chiave è superiore, ma anche da un punto di vista matematico “qualitativo” l'algoritmo è molto più “robusto”.

Il Password
Sniffing, più che un attacco all'algoritmo è un “attacco all'utilizzatore”: si tratta di “rubare” la password (“sniffare”) con qualche trucco “psicologico” (farsela dire con una scusa, o fingendosi responsabili di un servizio assistenza clienti, o della sicurezza aziendale – questi atti vengono definiti di “ingegneria sociale”, e sono molto diffusi), oppure tecnologico (un troiano od un keysniffer installato fraudolentemente sul nostro computer, si veda la sezione apposita). Disponendo della password, si può accedere al file protetto con la stessa facilità del proprietario del documento.
Esistono anche altri tipi di attacchi, molto più sofisticati (TEMPEST, o simili), basati sulla registrazione dei microimpulsi elettromagnetici generati dalla pressione dei tasti (ed in base ai quali è poi possibile ricostruire le passwords digitate), ma come si può bene immaginare, stiamo entrando nel settore dei romanzi di spionaggio più che della prassi quotidiana.


Crittografia Simmetrica

Dopo la teoria, vediamo adesso di occuparci della pratica: come proteggere i nostri dati sensibili, ovvero come crittografare i nostri documenti sul disco fisso in modo che nessuno possa leggerli.
Iniziamo a procurarci i software giusti.
Un programma di crittografia che ci sentiamo di suggerire, come particolarmente indicato per i nostri usi professionali, è “Cryptext”. È piccolo, gratuito, è di una semplicità di utilizzo assolutamente elementare, e garantisce un livello di protezione particolarmente elevato (codifica a 160 bit con un ottimo mix di algoritmi di alta qualità). Lo potete scaricare gratuitamente, in versione italiana, dal sito del creatore.
Dalla pagina principale dello stesso sito trovate del materiale illustrativo (in inglese).
Possiamo essere sicuri che Cryptext garantisca la riservatezza dei dati ? Essendo un cifrario a 160 bit, per romperlo con attacchi a forza bruta possono essere necessari molti anni. Molti. Se un miliardo di computer, ognuno dei quali fosse in grado di provare un miliardo di chiavi al secondo, lavorassero a tempo pieno sulla decifrazione di un documento criptato a 160 bit, potrebbero essere necessari un numero di anni pari a 10.000 miliardi (no, non è un errore: si tratta di 10 alla tredicesima di anni, ovvero circa 800 volte la vita dell'Universo).
Ovviamente, tali attacchi non hanno senso; scegliete quindi con cura la vostra password, perchè tale potenza di calcolo non vada sprecata !

Dopo esservelo scaricato, aprite il file .exe: è un autoinstallante che farà tutto da solo.
La prima volta che lo usate, dovrete impostare la password di utilizzo, che vi servirà per crittare e decrittare i documenti. Sceglietela secondo le regole esposte nella sezione apposita: come abbiamo ripetuto più volte, è fondamentale, assolutamente fondamentale, scegliere una password MOLTO lunga e robusta (caratteri speciali, numeri, lettere minuscole e maiuscole, etc.).
Siamo pronti a partire. Iniziate a fare una prova con un file di testo qualunque (con dei dati che non vi servono, ad esempio pippo.doc). Andate in Esplora Risorse, trovate "pippo.doc" nella sua directory, selezionatelo, cliccate col tasto destro del mouse e selezionate, nel menu a tendina che vi apparirà, la voce "Codifica". Apparirà (solo questa volta) una finestrella che vi chiederà, appunto, di inserire per la prima volta la password che utilizzerete sempre per cifrare e decifrare. Mettetela e confermatela.
A questo punto apparirà una seconda finestrella, in cui la dovrete reinserire per cifrare il file "pippo.doc" che avete appena selezionato. In pochi secondi il file "pippo.doc" scomparirà, sostituito da un file con lo stesso nome ma una diversa icona (se aprite il nome del file in Proprietà, vedrete che gli è stata aggiunta una seconda estensione, da non togliere assolutamente: $#!). Il vecchio file in chiaro è stato riscritto in maniera criptata, cancellando il vecchio documento e riscrivendoci direttamente sopra in cifra (in modo da ridurre i rischi di un “ripescaggio” dei vecchi dati in chiaro dall'Hard Disk, usando appositi software).
Provate ad aprirlo col Blocco Note: è una sequenza casuale di lettere e simboli strani. Per decifrarlo, selezionatelo da Esplora Risorse, cliccateci sopra una volta col tasto destro del mouse, selezionate "Decodifica" nel menu a tendina ed inserite la password che avete impostato nella finestrella che vi apparirà. Pochi attimi, ed il vostro file tornerà ad essere leggibile.

La stessa procedura la potete fare selezionando più files alla volta: selezionateli da Esplora risorse, tasto destro, Codifica, inserite la password. Per decrittarli, idem come sopra. Potete farlo anche a livello di directory: selezionate la directory che vi interessa crittografare (ad es., Cartelle Cliniche), tasto destro del mouse, Codifica, inserite la password, et voilà. Per decrittare, solita procedura. Se vi tenete sempre crittografata la directory Cartelle Cliniche, in questo modo, all'inizio di ogni sessione di lavoro potete decrittare il file su cui dovete lavorare, lo leggete o modificate ed alla fine lo cifrate di nuovo con un click. Massima sicurezza, con uno sforzo quasi impercettibile.


Crittografia Asimmetrica

Un'ipotesi interessante è quella per cui un professionista abbia bisogno di scambiare delle email “ben chiuse” (cioè crittografate) con un paziente od un collega, data la delicatezza del materiale discusso. In questo caso, è però necessario che tutti e due i partecipanti allo scambio conoscano la password per decrittare i files cifrati. Ma come trasmettersela in chiaro senza che venga intercettata ? Se non è possibile deciderla a voce (ad esempio dopo una seduta, od ad una riunione professionale), allora è necessario ricorrere ad un sistema di “crittografia asimmetrica”. In questo tipo di programmi si usano due chiavi di cifratura, una pubblica (che può essere distribuita liberamente) ed una privata (da conservare gelosamente). Scambiandosi le chiavi pubbliche, è possibile comunicare in maniera sicura.

L'utilizzo di un programma di crittografia asimmetrica, quale ad esempio il celebre e già citato PGP (Pretty Good Privacy), fornisce indubbiamente dei fortissimi vantaggi in termini di sicurezza dei dati scambiati tramite email. La crittografia forte implementabile tramite PGP garantisce, oltre all'inviolabilità dei dati trasmessi, anche processi secondari quali l'identificazione sicura dei mittenti, la non ripudiabilità dei messaggi scambiati, la garanzia della non manipolazione dei contenuti delle email. Il contraltare a tutto questo è rappresentato dalla difficoltà di apprendimento di PGP, che seppur molto facilitato nelle recenti versioni per Windows, rimane un programma di non immediata utilizzazione. L'utilizzo del PGP (o di programma equivalente) è fortemente consigliabile nel caso si debbano scambiare dati molto delicati (perizie, situazioni speciali, etc.); in tutti gli altri casi l'utilizzazione di crittografia asimmetrica per la protezione delle email appare utile, ma necessita di un'adeguata valutazione del problema costi/benefici (vantaggi in termini di sicureza vs. comodità di utilizzo).

Ma come funziona ? La risorsa più importante è sicuramente il sito PGP International: è il sito della versione internazionale del PGP (la versione originale ha avuto per molti anni vincoli di esportabilità da parte del Governo Statunitense, per motivi di sicurezza nazionale, ora in parte decaduti), dove trovate molto materiale illustrativo e la possibilità di scaricarvi gratuitamente le più recenti versioni del programma.
Cerchiamo però di vedere, in alcune righe, il funzionamento del programma.
Un piccolo sforzo di attenzione sarà ripagato con la comprensione del più sicuro sistema per lo scambio di informazioni esistente a tutt'oggi su Internet.

PGP, come abbiamo detto, è un programma di "crittografia a chiave pubblica" (o asimmetrica), che si basa sulla generazione di una coppia di chiavi: una "segreta" (o privata) e l'altra "pubblica" .
Eliminando la necessità di trasmettere una chiave segreta si riducono praticamente a zero i rischi di frode. L'utente tiene al sicuro la propria chiave segreta mentre diffonde e rende disponibile la chiave pubblica. Le due chiavi sono collegate tra loro tramite una procedura matematica di fattorializzazione di due numeri molto grandi, che richiede (per essere computata, e quindi “risolta”) una potenza di calcolo gigantesca. Un documento cifrato con PGP con chiave asimmetrica a 1024 bit (vi ricordate il discorso sulle dimensioni delle chiavi ?) richiede almeno l'età dell'universo per essere violato, se un milione di computer molto potenti lavorano esclusivamente per quello. E' necessario sottolineare che la lunghezza della chiave asimmetrica non è direttamente comparabile ad una simmetrica: cifrature a 1024 bit in asimmetrica corrispondono (molto orientativamente) a circa 128 bit di simmetrica, in quanto a capacità di calcolo necessaria per violarle.

Ma come funziona il meccanismo della doppia chiave ? La prima volta che lo si legge richiede sempre un attimo di attenzione, ma in realtà è piuttosto semplice (se avete capito gli scritti della Klein, questo è uno scherzo, in confronto).
Innanzitutto, bisogna fare generare matematicamente al programma due chiavi, quella segreta e quella pubblica. La chiave segreta me la tengo io, quella pubblica la spedisco su Internet, su appositi server sparsi per il mondo che mantengono gli elenchi delle chiavi pubbliche di tutti coloro che usano PGP (viene fatto in automatico dal programma). La chiave pubblica si può diffondere in tutta tranquillità, perchè virtualmente impossibile ricostruire la chiave privata corrispondente partendo dalla pubblica. Se voglio cercare la chiave pubblica di un mio corrispondente, mi basterà collegarmi ad un apposito server internet. Codifico il messaggio segreto con la SUA chiave pubblica, e glielo spedisco. A questo punto, a lui basterà usare la sua chiave privata, ed il messaggio cifrato sarà decrittato. Se qualcuno lo intercettasse, non potrebbe mai decifrarlo: solo ed esclusivamente con la chiave privata di qualcuno (conservata gelosamente) è possibile decifrare un messaggio crittato con la corrispondente chiave pubblica.

Vediamo qualche esempio (adattati dalla Guida Italiana al PGP di Max Pastore):

La chiave privata consente di decodificare il messaggio che è stato cifrato con la corrispondente chiave pubblica;
Per esempio:
- Io sono in possesso della chiave pubblica di Freud e pertanto, volendo inviargli una mail riservata, effettuo la cifratura del messaggio usando la SUA chiave pubblica. Solo Freud, che ha la chiave privata, potrà decodificare la mail.
- In modo analogo, quindi, con la mia chiave privata posso decodificare tutte le mail che mi pervengo cifrate con la mia chiave pubblica.

La chiave privata consente di apporre al messaggio una "firma" elettronica che identifica univocamente il mittente, lasciandone però eventualmente inalterato (non cifrato) il suo contenuto;

Per esempio:
- Anche Freud, come molti altri, è in possesso della MIA chiave pubblica. Se volessi inviargli una mail non riservata, dandogli però nel contempo la certezza che sono proprio io ad averla spedita, posso effettuare la "firma in chiaro" del messaggio usando la mia chiave privata. Freud, usando la mia chiave pubblica, potrà verificare che il messaggio è stato inviato proprio dal sottoscritto ed inoltre che non è stato in alcun modo alterato da estranei.
- Anche io, usando la chiave pubblica di un utente, posso verificare l'autenticità della "firma" che lui ha effettuato con la sua chiave privata.
- Questo sistema può anche essere usato nelle mail pubbliche in quanto, non essendo cifrato il corpo del messaggio, chiunque può leggerne il contenuto e può anche verificare che sono stato proprio io a scriverlo procurandosi la mia chiave pubblica.

La chiave pubblica di un utente codifica il messaggio, la propria chiave privata lo firma;

Per esempio:
- Quello che io ho scritto a Freud usando la sua chiave pubblica lo può decifrare solo Freud (con la sua corrispondente chiave privata), ma chiunque potrebbe avergli mandato quella email fingendo di essere me (infatti, come abbiamo detto, la sua chiave pubblica è liberamente scaricabile da Internet). Pertanto, oltre a codificare il messaggio per Freud con la sua chiave pubblica, io lo firmo anche con la mia chiave privata (che solo io posso avere).
- mi è pervenuta una mail che Freud ha codificato con la mia chiave pubblica e firmato con la sua chiave privata. Oltre ad essere io l'unico a poter leggere quella mail (la mia chiave privata è l'unica che permette di leggere documenti cifrati con la mia chiave pubblica, che è appunto strettamente collegata con la mia chiave privata), sono anche assolutamente certo che l'ha scritta Freud e non qualcun altro (perché è firmata con la sua chiave privata, ed io lo posso verificare scaricandomi la sua chiave pubblica da Internet)

Siete un pò confusi ? È normale; la maggior parte delle persone devono rileggere questa spiegazione due o tre volte, prima di afferrarla. Ma se siete arrivati fin qui, capendone un pochino, siete molto bravi !
Bene, a questo punto potete iniziare a scaricarvi una versione gratuita per Windows di PGP dal sito PGPI, e provate ad usarla seguendo l'help tecnico in linea. Una volta capito il meccanismo di funzionamento, usarlo è più semplice di quello che sembra in un primo momento. PGP in fondo è come il dentista: fa più impressione che male reale, ed è molto utile.
Ricordatevi solo, nelle impostazioni, di usare una lunghezza di chiave asimmetrica adeguata: almeno a 1024 bit, meglio ancora se a 2048 o 4096 bit.
All'interno di PGP è inoltre spesso compresa una piccola ma efficiente utility di Wiping (vi ricordate ? Serve per cancellare in maniera sicura, sovrascrivendoli più volte, gli originali in chiaro dei documenti che avete appena cifrato).
Buon divertimento !


PM - HOME PAGE ITALIANA NOVITÁ RIVISTA TELEMATICA EDITORIA MAILING LISTS