I moderni browser Web permettono di utilizzare le API Web Crypto: si tratta di un insieme di procedure che permettono di usare le principali funzionalità crittografiche senza la necessità di ricorrere a componenti esterni.
Abbiamo visto le differenze tra crittografia simmetrica e asimmetrica. La crittografia simmetrica prevede lo scambio della password di decodifica attraverso un canale sicuro, diverso da quello usato per inviare la comunicazione cifrata.
Per questo motivo su Internet di norma si utilizza la crittografia asimmetrica o a chiave pubblica: per inviare e poi decifrare un messaggio crittografato i due interlocutori non devono preventivamente scambiarsi alcuna password. È sufficiente infatti che mittente e destinatario usino la chiave pubblica dell’altro soggetto (che può essere tranquillamente nota a chiunque). Per le operazioni di codifica e decodifica del messaggio, invece, mittente e destinatario devono usare le rispettive chiavi private che invece devono essere gelosamente mantenute segrete.
In un altro articolo abbiamo visto cos’è e quanto e davvero sicuro RSA, uno degli algoritmi a chiave pubblica più noti, più utilizzati e più efficaci in assoluto.
Di base uno strumento come Proton Mail utilizza la crittografia a chiave pubblica per rendere private le comunicazioni via email degli utenti: la crittografia è in questo caso end-to-end nel senso che nessun soggetto, neppure Proton Mail, può risalire al contenuto dei messaggi.
Parlando invece di crittografia a chiave simmetrica, cifrare i dati con 7Zip (usando l’algoritmo AES-256) è una buona idea, ad esempio, per salvare informazioni riservate sul cloud. Per crittografare file sul cloud abbiamo visto anche Cryptomator, un’applicazione che poggia sullo stesso principio di funzionamento.
Private Secret, per scambiare dati crittografati sul Web usando solo il browser
Abbiamo detto che non è buona norma usare la crittografia simmetrica per scambiare dati sul Web: la password di codifica e decodifica è la stessa e deve essere scambiata usando un canale sicuro diverso da quello adoperato per inviare il messaggio cifrato.
Il progetto Portable Secret appena presentato da uno sviluppatore indipendente è comunque interessante perché mostra com’è possibile crittografare file, immagini e testi usando soltanto il browser Web, senza installare alcun software aggiuntivo.
Portable Secret utilizza le Web Crypto API che abbiamo citato in apertura e si occupa della generazione delle chiavi in locale, senza appoggiarsi ad alcun server remoto. Le asserzioni dell’autore di Portable Secret sono facilmente verificabili accedendo al sorgente della pagina ed esaminando il codice del progetto, pubblicato su GitHub.
Per provare Portable Secret basta visitare la pagina dimostrativa specificando una password nell’apposito campo quindi indicando l’elemento da crittografare (testo, immagine o file). Si può anche indicare un suggerimento per ricordare la password (password hint).
Cliccando su Save secret.html si ottiene un documento HTML che può essere trasferito a terzi e che contiene il messaggio cifrato oltre alla routine di decodifica.
Ovviamente, come evidenziato in precedenza, il destinatario dovrebbe già conoscere la password di decodifica.
L’autore di Portable Secret è certo della bontà del lavoro svolto che lancia una sfida: questa pagina creata con Portable Secret contiene la chiave di decodifica di un portafoglio Bitcoin: chi riuscisse a trovarla può accedere al wallet e tenersi il denaro ivi presente.