Ormai da tempo si vocifera con sempre più insistenza che la National Security Agency (meglio nota come NSA) sia in grado di decrittare gran parte del traffico internet. Nel 2012 in un articolo su Wired di James Bamford, un anonimo ex-ufficiale della NSA riportava come l’agenzia avesse scovato una vulnerabilità che le permetteva di decrittare il traffico internet cifrato. Il tutto è stato poi successivamente confermato dai documenti pubblicati da Edward Snowden nel 2013, dai quali si evince a chiare lettere come la NSA si sia dotata di una grande infrastruttura in grado di intercettare e decrittare il traffico VPN e diverse connessioni HTTPS e SSH.
Se siete dubbiosi e pensate che tutte queste siano informazioni false e paranoiche perchè prima di affidarvi al servizio di home banking della vostra banca piuttosto che di fare acquisti su eBay o Amazon, vi siete documentati a dovere e gli esperti a cui vi siete rivolti vi hanno garantito che potete dormire sonni tranquilli perchè Internet non è il posto dove vi ruberanno il numero della vostra carta di credito ma semplicemente quello dove lo useranno per fare acquisti, avete tutte le ragioni di questo mondo.
Io personalmente la pensavo come voi fino a qualche settimana fa, un po’ perchè non mi ero documentato e un po’ perchè ho sempre nutrito una fiducia smisurata nell’aritmetica modulare e in tutti i quei protocolli ed applicazioni che la utilizzano. Dopo aver letto questo articolo di Daniel Miessler e la sua fonte, la mia opinione sulla vicenda è decisamente cambiata.
L’anello debole della catena è l’algoritmo di Diffie-Hellman.
Se infatti idealmente utilizzassimo solo ed esclusivamente protocolli di cifratura asimmettrica per cifrare il traffico internet che necessita di un elevato livello di riservatezza, i possibili spioni (siano esse istituzioni per motivi di sicurezza o malviventi per motivi fraudolenti) avrebbero sicuramente la vita più difficile. Certo è che anche per noi le cose sarebbero più difficili in quanto dovremmo dotarci di chiavi pubbliche e private e certificati di sicurezza che ci permettano di identificarci come i legittimi proprietari di quelle chiavi e le comunicazioni andrebbero sicuramente più a rilento (in quanto lo sforzo computazionale di cifrare con un algoritmo asimmetrico è nettamente maggiore rispetto all’uso di un protocollo simmetrico) e quindi le rogne sarebbero non poche.
Ecco che per semplificare da un punto di vista computazionale (e quindi velocizzare) il traffico internet cifrato, mantenendo comunque un sufficiente livello di sicurezza per noi comuni mortali, in molti casi si usano gli algoritmi di cifratura asimmetrici solo per lo scambio della chiave simmetrica da usare per cifrare il resto della comunicazione. Se la chiave dell’algoritmo di cifratura simmetrica che si sceglie è un numero primo (secondo l’aritmetica modulare) sufficientemente grande, si ha la garanzia che gli eventuali spioni che vorranno scoprire il contenuto del nostro traffico via internet dovranno essere particolarmente pazienti e/o avere una dotazione a livello computazionale non di comune utilizzo.
Ecco perchè generalmente quando un client (che può essere il vostro browser) ha verificato che il server con cui sta parlando è effettivamente il server che ospita il sito web con il quale voi volete interagire (verificando il certificato X.509 con la Certification Autority di turno), sceglie di sfidarlo e scambiarsi una chiave segreta da usare per cifrare in maniera simmetrica il resto della comunicazione usando l’algoritmo di Diffie-Hellman.
Il problema in tutto questo è che se i programmi che normalmente vengono utilizzati da noi comuni mortali per cifrare il traffico internet usano sempre gli stessi numeri primi come chiave condivisa ecco che il lavoro di un facoltoso attaccante come può essere un ente come la NSA è facilitato di molto. Se infatti le applicazioni che utilizziamo quotidianamente per navigare su intenert, utilizzassero numeri primi di grandi dimensioni sempre diversi le cose cambierebbero e la sicurezza sarebbe effettivamente sufficiente per mantenere la nostra privacy sifficientemente al riparo.
Il problema è che purtroppo vengono usati sempre gli stessi numeri primi dalle principali applicazioni usate da noi comuni (sbadati mortali) e questo ha permesso ad agenzie come la NSA di costruirsi delle infrastrutture in grado di decrittare in tempi ragionevoli il traffico internet che utilizza questi numeri primi per mantenere la segrettezza delle comunicazioni al suo interno: una semplice scommessa che da quanto trapela in giro sembrerebbe aver dato ampiamente i suoi frutti.
Detto ciò la domanda che viene spontanea è: come posso proteggermi da tutto questo?
Ovviamente ci sono delle accortezze che possono essere prese per cercare di evitare di essere spiati dall’agenzia per la sicurezza nazionale di turno di cui magari parlerò in un altro momento se a qualcuno l’argomento potrà interessare.