Crittografia
adv

Il termine Crittografia viene dal greco kryptos che significa nascosto, oscuro, misterioso, segreto. L’arte di occultare i messaggi affonda le radici in tempi ancestrali ed è giunta fino a noi, regolarmente usata nella vita quotidiana

Esempi documentati di crittografia sono presenti in scritti ritrovati in Mesopotamia e nell’antico Egitto anche se il modello per antonomasia, il caso più noto, è costituito dal Cifrario di Cesare. Esso è caratterizzato da un algoritmo molto semplice: ciascuna lettera viene traslata di 3 posizioni nell’ordine alfabetico, l’entità della traslazione costituisce la chiave di lettura. La parola Ciao, ad esempio, diventa Fldr, includendo nell’alfabeto lettere come j,k,w, etc.

Probabile emulo, il noto boss Provenzano utilizzava un cifrario simile nei suoi pizzini, cambiando le lettere con i corrispondenti numeri di posizione nell’alfabeto e sommando 3.

Crittografia ad uso domestico

Oggi utilizziamo la crittografia, in modo anche più complesso di quello illustrato negli esempi precedenti, senza neanche rendercene conto. Essa serve, infatti, a stabilire connessioni https su internet, a firmare documenti in modo digitale, ad accedere alle reti wireless ed in generale ai meccanismi di login ed a proteggere i documenti ed i pacchetti compressi con apposite password.

Tutto ciò avviene in modo più o meno trasparente per l’utente finale, il quale si limita ad utilizzare dei programmi che faranno il “lavoro sporco” al posto suo.

I servizi essenziali della crittografia

La crittografia è una scienza matematica ed una disciplina ingegneristica che consente comunicazioni private in ambienti non privati.

Possiamo classificare tre servizi fondamentali in tale ambito, questi, combinati assieme, possono generarne altri come, ad esempio, la firma digitale. Essi sono:

  • Encryption: mira a proteggere la confidenzialità delle informazioni. Il processo è reversibile, ma soltanto da specifici destinatari possessori delle chiavi.

  • Hashing: verifica l’integrità delle informazioni. Si avvale di funzioni che elaborano il dato in ingresso e producono, indipendentemente dalla sua dimensione, una sequenza di caratteri di lunghezza fissa, chiamata hash value. Piccole variazioni nel contenuto dell’input produrranno sostanziali variazioni dell’output e l’algoritmo è irreversibile: non si può risalire al documento originale, a differenza di quanto avviene per encryption ed encoding. Esistono vari algoritmi che consentono di fare ciò ed algoritmi diversi, a parità di input, produrranno risultati diversi. Utilizzando lo stesso algoritmo, il raffronto tra l’hash value inviato con il file e l’hash value ottenuto processando il file inviato indicherà al ricevente se il dato è stato corrotto o meno.

  • Encoding: processo reversibile di trasformazione dei dati da un formato ad un altro, secondo schemi noti. Il processo facilita lettura, salvataggio e trasmissione dei dati binari nei sistemi informatici. Molti protocolli internet, infatti, gestiscono caratteri tipo ASCII e potrebbero non processare correttamente dati binari o altri set di caratteri. Il protocollo di posta SMTP, ad esempio, gestisce solo testo, gli allegati sono un caso in cui l’encoding è necessario per renderli parte integrante del messaggio, grazie alla codifica MIME. Una rappresentazione ormai standard di conversione in ASCII è la codifica Base64, che usa una rappresentazione a 6bit dell’informazione. Data la sua caratteristica di reversibilità con schemi pubblici, non fornisce sicurezza.

Crittografia simmetrica

La crittografia simmetrica è un tipo di encryption che prevede una sola chiave, detta chiave privata o chiave segreta. L’algoritmo fa sì che la chiave usata per criptare il dato sia identica a quella necessaria per decriptarlo. Tale tipologia è molto veloce, consente chiavi più corte e gode del supporto di accelerazioni hardware, favore concesso da molti processori moderni, dotati di istruzioni built-in, cioè natie, per l’esecuzione di certi algoritmi.

Il grande svantaggio di questa cifratura è la distribuzione della chiave. Finché il numero di persone è limitato essa può essere scambiata ma più aumenta il numero dei possessori, più aumenta la possibilità che uno di loro possa perderla. Basti immaginare che per 100 persone dovranno esserci 4950 condivisioni di chiavi, più in generale, n(n-1)/2, dove n è il numero di persone che scambiano informazioni.

Crittografia asimmetrica

Tale cifratura si avvale di una doppia chiave: pubblica e privata. Il mittente utilizzerà la chiave pubblica del destinatario per criptare i dati e solo la corrispondente chiave privata sarà in grado di decriptare il messaggio. La chiave privata, in tal caso chiave segreta, non dovrà mai essere condivisa con nessuno, la sua perdita significa una breccia nella sicurezza ed occhi indiscreti abilitati a leggere messaggi privati.

Tale sistema è più oneroso, in termini di prestazioni, per l’elaboratore e genera chiavi più lunghe.

D’altro canto, però, risolve il problema della distribuzione delle chiavi che, essendo pubbliche, possono essere liberamente scaricate ed usate da chiunque senza creare falle nella sicurezza.

Tale cifratura è utilizzata anche nella firma digitale.

Certificati digitali

Da dove si scaricano le chiavi pubbliche e come si fa ad essere sicuri che non siano state alterate?

Il certificato digitale risponde a queste esigenze. Esso è un documento elettronico contenente una data di scadenza, la chiave pubblica, il suo proprietario (il possessore della corrispondente chiave privata), il nome dell’ente certificatore e la firma digitale di quest’ultimo. Ci si avvale quindi di una terza parte, un garante, chiamato registrar. I registrar sono compagnie come Verisign, DigiCert, etc., che agiscono come Registration Authority (RA) e, spesso, ricoprono anche il ruolo di Certificate Authority (CA) .

Il ruolo della CA è quello di creare i certificati digitali e mantenere il database che li censisce, con i relativi stati: valido, revocato (se scaduto o revocato per richiesta del possessore) o sconosciuto, relativo ai certificati che non sono nel database della CA. Qualunque certificato che abbia stato diverso da valido dovrebbe implicare il rifiuto.

Il ruolo della RA, invece, è quello di validare l’identità del richiedente ed interfacciarsi con la CA per rendere disponibile il certificato. La RA si occuperà anche della procedura di revoca dei certificati notificando il cambio stato alla CA.

Non esiste solo un livello di RA. Considerando un ente certificato che definiremo root, esso potrà delegare altre entità a fungere da RA a loro volta, certificandole per tale scopo. Si crea così una chain of trust in cui si dà per buona l’attendibilità del garante.

Dato il gran numero di certificati da gestire, è stato creato l’OCSP (Online Certificate Status Protocol) che consente, tramite interrogazioni real-time, di ottenere lo stato del certificato. Tale protocollo ha, però, introdotto alcune problematiche come la latenza e problemi di privacy: una RA, ad esempio, potrebbe tracciare i siti visitati dagli utenti. L’OCSP attualmente resta, comunque, il male minore.

HTTPS

Il protocollo internet per la connessione sicura, https, che usa il Transport Layer Security (TLS), è un interessante esempio di utilizzo dell’encryption, in quanto si avvale di ambedue le cifrature. In un primo momento, TLS crea una connessione criptata utilizzando chiavi asimmetriche, con questa connessione scambia la chiave segreta per una cifratura simmetrica e, quindi, stabilisce una nuova connessione criptata usando quest’ultimo tipo di encryption. Così facendo, elimina il problema della distribuzione delle chiavi usando la connessione criptata più lenta all’inizio ma avvalendosi, a regime, di quella più veloce.

Quanto è sicura la crittografia?

Sviluppare un buon sistema crittografico è un compito difficile e, tanto più è complesso, tanto più è facile che ci siano errori. Gli errori di architettura e di realizzazione possono facilmente sfociare in debolezze del sistema capaci di comprometterlo e rendere i dati attaccabili.

Altre debolezze sono state viste nella definizione dei protocolli, per non parlare degli utenti che, a volte inconsapevoli delle dinamiche in gioco, potrebbero non custodire le chiavi con la dovuta accuratezza oppure, pervasi da un falso senso di sicurezza, non prestare le dovute attenzioni, informatiche e non.

La crittografia, sebbene sistema passibile di errore, resta comunque un opzione più valida della gestione in chiaro per la sicurezza di dati e sistemi.