›
Algoritmi simmetrici
Algoritmi simmetrici
Nella cifratura simmetrica mittente e destinatario possiedono la stessa chiave segreta: quella che serve per cifrare è identica a quella che serve per decifrare. È il modello più antico di crittografia — dai bastoni di legno spartani ai cifrari a rotori, fino agli standard digitali come AES che oggi proteggono la maggior parte del traffico cifrato del mondo. Il suo tallone d'Achille è sempre lo stesso: come si scambiano la chiave due persone che non si sono mai incontrate? È un problema che resterà aperto fino all'invenzione della crittografia asimmetrica, nel 1976.
~VI sec. a.C.
Cifrario Atbash
›
Cifrario Atbash
Atbash sostituisce ogni lettera con la sua speculare nell'alfabeto: la prima diventa l'ultima, la seconda la penultima, e così via (A↔Z, B↔Y, C↔X…). Il nome deriva proprio dalle lettere ebraiche coinvolte: Aleph-Taw-Beth-Shin, cioè prima-ultima-seconda-penultima. Nel Libro di Geremia il nome "Babele" (בבל) compare cifrato come "Sheshach" (ששך) proprio con questa tecnica.
È uno dei più antichi cifrari documentati e anche uno dei più deboli: non ha alcuna chiave. Chiunque conosca il metodo può decifrare all'istante. Una sua proprietà elegante: applicarlo due volte restituisce il testo originale — cifrare e decifrare sono la stessa identica operazione.
La chiave: qui non esiste una chiave da scegliere — la corrispondenza A↔Z, B↔Y, C↔X… è fissa e pubblica: è l'unico caso di questo dossier in cui il “segreto” è semplicemente il metodo stesso.
~V sec. a.C.
Scytale
›
Scytale
La Scytale non nasconde le lettere, le rimescola. Si avvolge una striscia di cuoio o papiro a spirale attorno a un bastone di legno di diametro preciso, poi si scrive il messaggio lungo il bastone, una lettera per giro. Svolgendo la striscia, le lettere appaiono in un ordine senza senso: sono state trasposte, non sostituite. Chi riceve la striscia deve avvolgerla su un bastone dello stesso identico diametro per far riallineare le lettere e tornare a leggere il testo originale.
La "chiave" è quindi puramente fisica: il diametro del bastone, che determina quante lettere stanno in un giro completo. È il primo esempio conosciuto in cui lo strumento stesso, e non un calcolo, custodisce il segreto.
La chiave: è il diametro del bastone (nel nostro strumento, il numero di righe): determina quante colonne servono per scrivere il messaggio e quindi in che ordine le lettere vengono lette scrivendo e rilette srotolando.
~II sec. a.C.
Quadrato di Polibio
›
Quadrato di Polibio
Le 25 lettere dell'alfabeto (I e J condivise) vengono disposte in una griglia 5×5. Ogni lettera si trasforma nella coppia di numeri riga-colonna della sua casella: con la griglia standard, A=11, B=12, T=44. Polibio la ideò per le segnalazioni a distanza: due gruppi di torce, uno per la riga e uno per la colonna, permettevano di trasmettere qualsiasi lettera oltre la portata della voce.
Da solo protegge poco — è una sostituzione monoalfabetica con simboli numerici — ma la sua vera eredità è il frazionamento: spezzare ogni lettera in due parti apre la porta a manipolazioni impossibili sulle lettere intere. È il mattone su cui si costruiranno cifrari ben più forti come il Bifid e l'ADFGVX, e persino il "tap code" battuto sui muri dai prigionieri di guerra.
La chiave: è opzionale, ed è una parola che determina l'ordine delle lettere nella griglia — le sue lettere occupano le prime caselle, seguite dal resto dell'alfabeto. Senza chiave si usa la griglia standard in ordine alfabetico.
~I sec. a.C.
Cifrario di Cesare
›
Cifrario di Cesare
Ogni lettera del messaggio viene sostituita con quella che si trova un certo numero fisso di posizioni più avanti nell'alfabeto. Con chiave 3, la A diventa D, la B diventa E, e così via, tornando all'inizio dopo la Z. Svetonio racconta che Giulio Cesare lo usasse con uno scorrimento di 3 per le comunicazioni militari riservate.
È un cifrario a sostituzione monoalfabetica: ogni lettera corrisponde sempre alla stessa lettera cifrata. Proprio per questo è debolissimo — con sole 25 chiavi possibili, si rompe per tentativi in pochi minuti, e l'analisi delle frequenze delle lettere lo tradisce ancora più in fretta.
La chiave: è un singolo numero, lo scorrimento, usato come offset sommato (modulo 26) alla posizione di ogni lettera: nell'animazione corrisponde esattamente a quante posizioni la ruota interna viene fatta ruotare rispetto a quella esterna.
1553
Cifrario di Vigenère
›
Cifrario di Vigenère
Invece di un unico scorrimento fisso come in Cesare, Vigenère usa una parola chiave che si ripete lungo tutto il messaggio: ogni sua lettera indica uno scorrimento diverso. Con chiave "LUPO", la prima lettera del messaggio scorre secondo L, la seconda secondo U, la terza secondo P, la quarta secondo O, poi si ricomincia da L.
È un cifrario polialfabetico: la stessa lettera del testo in chiaro può diventare lettere cifrate diverse a seconda della posizione, il che rende inutile la semplice analisi delle frequenze. Per oltre 300 anni fu considerato "le chiffre indéchiffrable", finché nell'Ottocento Kasiski e Babbage non svilupparono tecniche per sfruttare la ripetizione periodica della chiave.
La chiave: è una parola le cui lettere, una per una, indicano lo scorrimento da applicare — nell'animazione, ogni lettera della chiave sposta la ruota cifrante in una posizione diversa prima di cifrare la lettera corrispondente del messaggio.
1854
Cifrario di Playfair
›
Cifrario di Playfair
Si costruisce una griglia 5×5 con le lettere di una parola chiave seguite dal resto dell'alfabeto (I e J condivise nella stessa casella). Il messaggio viene diviso in coppie di lettere, e ogni coppia viene cifrata secondo quattro regole, in base alla posizione delle due lettere nella griglia:
• stessa riga → si prende la lettera a destra di ciascuna (tornando all'inizio della riga se serve)
• stessa colonna → si prende la lettera sotto ciascuna (tornando in cima se serve)
• rettangolo (riga e colonna diverse) → si scambiano le colonne, mantenendo la riga di ciascuna lettera
• lettere identiche → non si può formare una coppia valida: si inserisce una lettera di riempimento (di norma X) tra le due, e si ricomincia ad accoppiare da lì in poi
Cifrando coppie invece di singole lettere, Playfair resiste all'analisi delle frequenze molto meglio di Cesare o Vigenère. Fu usato dall'esercito britannico dalla guerra boera fino alla Seconda guerra mondiale.
La chiave: è la parola che semina la griglia — le sue lettere (senza ripetizioni) occupano le prime caselle nell'ordine in cui compaiono, seguite dal resto dell'alfabeto: chiavi diverse producono griglie diverse, e quindi cifrati diversi per lo stesso messaggio.
~XX sec.
Cifrario affine
›
Cifrario affine
Il cifrario affine trasforma ogni lettera con una formula: E(x) = (a·x + b) mod 26, dove x è la posizione della lettera nell'alfabeto (A=0, B=1…), e la chiave è la coppia di numeri (a, b). Per poter decifrare, a deve essere coprimo con 26 (cioè uno tra 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25): solo così esiste l'inverso moltiplicativo a⁻¹ che permette di invertire la formula: D(y) = a⁻¹·(y − b) mod 26.
Il totale delle chiavi possibili è 12×26 = 312 — meglio delle 25 di Cesare, ma comunque irrisorio. Il suo valore è concettuale: con a=1 si ottiene esattamente Cesare, con a=25 e b=25 si ottiene Atbash. È il momento in cui i cifrari smettono di essere trucchi e diventano formule: la stessa matematica modulare che, portata su numeri giganteschi, un secolo dopo farà funzionare RSA.
La chiave: è la coppia di numeri (a, b) usata direttamente nella formula (a·x + b) mod 26 — a agisce come moltiplicatore, b come offset additivo; entrambi vanno noti a chi decifra per invertire il calcolo.
1901
Cifrario Bifido
›
Cifrario Bifido
Il francese Delastelle prese il Quadrato di Polibio e vi aggiunse l'idea che lo rende davvero potente: il frazionamento con trasposizione. Ogni lettera viene convertita nelle sue coordinate riga-colonna, ma poi tutte le righe vengono scritte in sequenza, seguite da tutte le colonne. Rileggendo la lunga fila di numeri a coppie, si ottengono coordinate nuove — che mescolano la riga di una lettera con la colonna di un'altra.
Il risultato: ogni lettera cifrata dipende da due lettere diverse del messaggio originale. È il principio di diffusione che Claude Shannon formalizzerà nel 1949 come requisito di ogni buon cifrario — e che ritroveremo, in forma matematica, dentro DES e AES. Il Bifido è il ponte concettuale tra i cifrari a matita e la crittografia moderna.
La chiave: è opzionale, ed è una parola che riordina la griglia 5×5 esattamente come nel Quadrato di Polibio — cambia quindi le coordinate assegnate a ogni lettera prima ancora del frazionamento.
1917
Cifrario di Vernam
›
Cifrario di Vernam
Vernam lavorava sui telescriventi e cercava un modo per rendere sicuro il codice Baudot. La sua idea: combinare ogni carattere del messaggio con un carattere di una chiave casuale lunga quanto il messaggio, usando l'operazione XOR sui bit. Nella versione didattica su lettere, equivale a una somma modulo 26 come in Vigenère — ma con una differenza cruciale.
Se la chiave è veramente casuale, lunga quanto il messaggio, e usata una sola volta, Claude Shannon dimostrò nel 1949 che il cifrario risultante — detto One-Time Pad — è matematicamente impossibile da rompere, anche con potenza di calcolo infinita: ogni testo in chiaro della stessa lunghezza è ugualmente probabile. Il prezzo di questa perfezione è enorme: le due parti devono scambiarsi in anticipo, e con un canale sicuro, una chiave grande quanto tutti i messaggi che invieranno mai — e non riutilizzarla mai.
La chiave: è la stringa casuale stessa, lunga quanto il messaggio: ogni suo carattere si combina one-to-one con il carattere corrispondente del messaggio, e senza quella esatta sequenza non c'è alcun modo di risalire al testo.
1918
Enigma
›
Enigma
Ogni tasto premuto chiude un circuito elettrico che attraversa una tastiera, un eventuale quadro di permutazione (plugboard), poi tre o quattro rotori in serie, un riflettore che rimanda la corrente indietro attraverso i rotori per una strada diversa, e infine accende una lampadina sul quadro luminoso: quella lampadina è la lettera cifrata. Prima che il circuito si chiuda, il rotore più a destra avanza di una posizione — per questo la stessa lettera premuta due volte di seguito produce quasi sempre due lettere cifrate diverse: è un cifrario polialfabetico con un periodo enorme.
Ogni rotore realizza una sostituzione fissa ma il suo cablaggio interno ruota fisicamente a ogni pressione, come un contachilometri: quando il rotore veloce completa un giro, fa avanzare quello centrale (a volte con la curiosa anomalia del "doppio scatto"), e così via. Il riflettore garantisce una proprietà elegante e insieme una debolezza fatale: applicando la stessa procedura due volte con le stesse impostazioni si torna al testo originale (cifrare e decifrare sono la stessa identica operazione) — ma nessuna lettera può mai essere cifrata in se stessa, un indizio che i crittoanalisti polacchi e poi quelli di Bletchley Park (Alan Turing in testa) sfruttarono per violarla sistematicamente.
La chiave: qui non è un solo valore ma una combinazione di impostazioni — quali rotori usare e in che ordine, la posizione dell'anello di ciascuno, la posizione di partenza visibile nelle finestrelle, e le coppie del plugboard: tutti questi elementi insieme, concordati in anticipo, formano la chiave del giorno.
Ricostruzione fedele nella logica e nella disposizione (tastiera QWERTZ tedesca, quadro luminoso, rotori, plugboard): disegnata in SVG/HTML, non fotografata — vedi la nota in fondo alla pagina.
1918
Cifrario ADFGVX
›
Cifrario ADFGVX
ADFGVX combina in serie le due grandi famiglie di tecniche classiche. Fase 1 — sostituzione: una griglia 6×6 (26 lettere + 10 cifre) con righe e colonne etichettate dalle sole lettere A, D, F, G, V, X — scelte perché in Morse sono difficilissime da confondere tra loro. Ogni carattere diventa una coppia di queste sei lettere. Fase 2 — trasposizione: le coppie vengono scritte sotto una parola chiave e le colonne rilette in ordine alfabetico della chiave, spezzando ogni coppia e disperdendone le metà.
Il frazionamento più la trasposizione lo resero il cifrario da campo più temibile della Grande Guerra. Il crittoanalista francese Georges Painvin lo violò nel giugno 1918 in condizioni disperate, perdendo — si racconta — 15 chili nello sforzo: la sua decifratura del "Radiogramma della Vittoria" contribuì a fermare l'offensiva tedesca su Parigi.
La chiave: nel nostro strumento è la sola parola usata per la trasposizione a colonne (l'ordine con cui vengono rilette) — determina in che sequenza le colonne della griglia intermedia vengono ricomposte in cifrato. Storicamente anche la disposizione della griglia 6×6 faceva parte del segreto condiviso; qui la teniamo fissa per semplicità didattica.
1977
DES — Data Encryption Standard
›
DES — Data Encryption Standard
DES è il primo cifrario pensato per i computer a diventare uno standard pubblico. Cifra il messaggio a blocchi di 64 bit usando una chiave di 56 bit effettivi, applicando 16 round identici di una struttura chiamata rete di Feistel: a ogni round il blocco viene diviso in due metà, una metà viene mescolata con una sotto-chiave derivata e il risultato scambiato con l'altra metà. Ripetuto 16 volte con sotto-chiavi diverse, questo processo produce una diffusione tale che cambiare anche un solo bit della chiave o del messaggio stravolge completamente il risultato.
DES fu rivoluzionario ma la sua chiave da 56 bit invecchiò rapidamente: nel 1998 la macchina Deep Crack la rompeva in giorni per forza bruta. Restò comunque lo standard mondiale per oltre vent'anni, e la sua struttura a round ha influenzato quasi ogni cifrario simmetrico successivo.
La chiave: è la stringa di 8 caratteri, usata per derivare le 16 sotto-chiavi diverse impiegate in altrettanti round della rete di Feistel — la stessa chiave, applicata in cifratura e decifratura, genera esattamente le stesse sotto-chiavi nello stesso ordine (invertito in decifratura).
1987
RC4
›
RC4
RC4 è un cifrario a flusso: invece di lavorare a blocchi come DES o AES, genera dalla chiave un flusso continuo di byte pseudo-casuali (il keystream) che viene combinato in XOR con il messaggio, byte per byte. Il cuore è un array di 256 byte permutato dalla chiave (fase KSA) e poi rimescolato continuamente durante la generazione (fase PRGA). Poche righe di codice, velocissimo anche su hardware degli anni '90.
Proprio per questa semplicità dominò il web per vent'anni: proteggeva le reti Wi-Fi (WEP) e gran parte del traffico SSL/TLS. Ma il suo keystream ha bias statistici: i primi byte non sono davvero casuali. Questi difetti demolirono WEP nel 2001 e portarono al divieto formale di RC4 in TLS nel 2015 (RFC 7465). Resta un capitolo fondamentale: il cifrario più usato della storia di Internet, e la dimostrazione che "semplice e veloce" non basta.
La chiave: è la passphrase che permuta inizialmente l'array di 256 byte (fase KSA): da quello stato iniziale, diverso per ogni chiave, viene poi generato il flusso di byte pseudo-casuali con cui il messaggio viene combinato in XOR.
2001
AES — Advanced Encryption Standard
›
AES — Advanced Encryption Standard
Dopo un concorso pubblico internazionale durato cinque anni, il NIST scelse l'algoritmo Rijndael come successore di DES, ribattezzandolo AES. A differenza della rete di Feistel di DES, AES organizza il blocco di 128 bit come una matrice 4×4 di byte e applica per più round quattro trasformazioni: SubBytes (sostituzione non lineare byte per byte), ShiftRows (scorrimento delle righe della matrice), MixColumns (mescolamento algebrico delle colonne) e AddRoundKey (XOR con una sotto-chiave derivata da quella principale). Il numero di round dipende dalla lunghezza della chiave: 10 round per chiavi a 128 bit, 12 per 192, 14 per 256.
Oltre vent'anni dopo la sua adozione, AES non ha subito attacchi pratici che ne minaccino l'uso reale con chiavi a 256 bit: è lo standard con cui oggi si cifrano HTTPS, dischi, messaggi, VPN.
La chiave: la passphrase scelta viene prima trasformata in una chiave di lunghezza fissa (qui tramite hash), poi usata per derivare una sotto-chiave diversa per ogni round, combinata col blocco nel passo AddRoundKey.
›
Algoritmi asimmetrici
Algoritmi asimmetrici
Nella cifratura asimmetrica ognuno possiede una coppia di chiavi matematicamente collegate: una pubblica, che può essere condivisa con chiunque, e una privata, che non lascia mai il proprietario. Quello che una chiave cifra, solo l'altra può decifrare. Per la prima volta nella storia, due persone che non si sono mai incontrate — e che comunicano solo su un canale intercettato da chiunque — possono accordarsi su un segreto condiviso, oppure scambiarsi messaggi cifrati senza aver mai portato una chiave segreta a mano. È l'invenzione, nel 1976, che rende possibile l'e-commerce, l'HTTPS e le firme digitali.
1976
Scambio di chiavi Diffie-Hellman
›
Scambio di chiavi Diffie-Hellman
Diffie-Hellman non cifra messaggi: permette a due persone di costruire lo stesso segreto condiviso parlando su un canale pubblico, senza mai trasmettere il segreto stesso. Si basa su un problema matematico facile da fare in un verso e difficile da invertire: l'esponenziazione modulare. Alice e Bob concordano pubblicamente due numeri, un primo p e un generatore g. Ciascuno sceglie in segreto un numero privato, lo usa come esponente di g modulo p, e si scambia solo il risultato — mai l'esponente segreto.
La classica analogia è quella dei colori: Alice e Bob condividono pubblicamente un colore di base (giallo). Ognuno aggiunge in segreto un proprio colore personale e manda all'altro la miscela risultante — impossibile da "smiscelare" per un osservatore. Ricevuta la miscela dell'altro, ciascuno vi aggiunge di nuovo il proprio colore segreto: il risultato finale è identico per entrambi, ma nessuno che abbia visto solo le miscele scambiate può ricostruirlo.
La chiave: qui non c'è una sola chiave ma due esponenti privati, uno per parte (nell'animazione, i “segreti” di Alice e Bob): ciascuno resta sempre solo presso il proprio proprietario, e serve da esponente nell'elevazione a potenza modulare.
1977
RSA
›
RSA
RSA sfrutta un'asimmetria matematica: moltiplicare due numeri primi grandi è facile, ma fattorizzare il loro prodotto è difficilissimo. Si scelgono due primi segreti p e q, si calcola il loro prodotto n = p×q (che diventa pubblico) e la funzione di Eulero φ(n). Si sceglie un esponente pubblico e coprimo con φ(n), e si calcola il suo inverso modulare d, che resta segreto. La coppia (n, e) è la chiave pubblica; d è la chiave privata.
Per cifrare un messaggio (rappresentato come numero m minore di n) si calcola c = m^e mod n. Per decifrare, si calcola c^d mod n, che restituisce esattamente m: una proprietà garantita dal piccolo teorema di Fermat e dal teorema cinese del resto. Chiunque può cifrare con la chiave pubblica, ma solo chi possiede d può decifrare.
La chiave: in realtà sono due, generate insieme dalla stessa coppia di primi — la pubblica (n, e), che chiunque può usare per cifrare, e la privata d, che serve solo per decifrare e va tenuta segreta.
1985
ElGamal
›
ElGamal
Diffie-Hellman produce una chiave condivisa ma non cifra messaggi; nel 1985 Taher Elgamal mostrò come trasformarlo in un vero crittosistema a chiave pubblica. Bob pubblica (p, g, y) dove y = g^x mod p, tenendo segreto x. Per cifrare, Alice sceglie un numero effimero casuale k e invia la coppia: c₁ = g^k mod p e c₂ = m·y^k mod p. In pratica esegue un mini scambio Diffie-Hellman "al volo" e usa il segreto risultante per mascherare il messaggio.
Bob calcola s = c₁^x mod p — lo stesso segreto, ottenuto dall'altra sponda — e recupera m = c₂·s⁻¹ mod p. Una caratteristica distintiva: la cifratura è probabilistica (il k casuale cambia ogni volta), quindi lo stesso messaggio produce cifrati sempre diversi. ElGamal è alla base delle firme DSA e vive ancora oggi dentro GnuPG/OpenPGP.
La chiave: Bob ha una coppia — il numero privato x, mai condiviso, e il valore pubblico y = g^x mod p derivato da esso; Alice non ha una propria chiave fissa, ma genera un numero effimero k diverso a ogni cifratura.
1991
PGP
›
PGP
PGP non è un nuovo algoritmo ma un'architettura ibrida che combina il meglio dei due mondi: per ogni messaggio genera una chiave di sessione simmetrica casuale (veloce, adatta a messaggi lunghi), cifra il messaggio con quella, e poi cifra la sola chiave di sessione con la chiave pubblica RSA del destinatario. Il pacchetto inviato contiene entrambe le parti: la busta grande (simmetrica) e la chiavetta chiusa nel lucchetto pubblico.
La sua storia è leggendaria: Zimmermann lo pubblicò gratuitamente nel 1991 e finì sotto indagine federale per "esportazione di munizioni senza licenza" — la crittografia forte era classificata come arma. Per aggirare il divieto, il codice sorgente fu stampato come libro, protetto dal Primo emendamento. L'indagine fu archiviata nel 1996 e PGP divenne lo standard OpenPGP (RFC 4880), tuttora alla base della posta cifrata.
La chiave: qui ce ne sono due di natura diversa — una chiave di sessione simmetrica, generata a caso per ogni messaggio e usata per la busta veloce, e la chiave pubblica RSA del destinatario, usata solo per proteggere quella chiave di sessione.
1999
GPG (GnuPG)
›
GPG (GnuPG)
GnuPG è l'implementazione libera e gratuita dello standard OpenPGP nato da PGP: stessa architettura ibrida, ma senza algoritmi brevettati e con codice sorgente aperto e verificabile da chiunque. Scritto dal tedesco Werner Koch e sostenuto dal progetto GNU, è diventato l'infrastruttura invisibile della fiducia digitale: firma i pacchetti delle distribuzioni Linux, autentica gli aggiornamenti software, e nel 2013 era lo strumento con cui Edward Snowden comunicava coi giornalisti.
Qui mostriamo l'altra metà della crittografia asimmetrica, complementare alla cifratura: la firma digitale. Si calcola l'impronta (hash) del messaggio e la si "cifra" con la chiave privata; chiunque può verificarla con la chiave pubblica. Se il messaggio cambia anche di una virgola, l'impronta non corrisponde più: la firma garantisce autenticità, integrità e non ripudio — senza nascondere nulla.
La chiave: per firmare si usa la chiave privata del firmatario (elevando l'impronta alla d); per verificare chiunque usa invece la sua chiave pubblica (elevando la firma alla e) — sono la stessa coppia RSA, usata nei due versi opposti rispetto alla cifratura.
›
Hashing
Hashing
Le funzioni di hashing non nascondono un messaggio nel senso classico: lo trasformano in un'impronta di lunghezza fissa (il "digest"), da cui è — nelle intenzioni del progettista — impossibile risalire al messaggio originale. Non esiste una "chiave" da condividere e non esiste decifratura: la stessa entrata produce sempre la stessa impronta, entrate anche minimamente diverse producono impronte completamente diverse (l'effetto valanga), e trovare due entrate diverse con la stessa impronta (una "collisione") deve essere quasi impossibile. Per questo l'hashing non serve a tenere un segreto tra due persone, ma a verificare che un messaggio, un file o una password non siano stati alterati — il concetto di "nascondere" qui riguarda l'irreversibilità, non la segretezza.
1991
MD5 — Message Digest 5
›
MD5 — Message Digest 5
MD5 elabora il messaggio in blocchi di 512 bit e produce sempre un'impronta di 128 bit (32 caratteri esadecimali), indipendentemente dal fatto che l'entrata sia una parola o un intero libro. Applica una serie di operazioni bit a bit (rotazioni, XOR, somme modulari) ripetute in 64 passi, mescolando ogni blocco con lo stato risultante dal blocco precedente.
Fu per anni lo standard per firme, checksum di file e — purtroppo — memorizzazione di password. Nel 2004 furono trovate collisioni pratiche (due entrate diverse con lo stesso hash), rendendolo non sicuro per qualsiasi uso crittografico serio. Resta comune solo per verifiche di integrità non critiche, come controllare che un file scaricato non sia corrotto.
La chiave: MD5 non ne usa alcuna — è una funzione hash, non un cifrario: lo stesso messaggio produce sempre la stessa impronta, per chiunque la calcoli, senza alcun segreto condiviso.
1995
SHA-1
›
SHA-1
Progettato dalla NSA come evoluzione di MD5, SHA-1 produce un'impronta di 160 bit (40 caratteri esadecimali) elaborando il messaggio in blocchi di 512 bit attraverso 80 round di operazioni bit a bit. Per due decenni è stato lo standard di fatto del web: firmava i certificati TLS dei siti HTTPS, identificava i commit di Git, autenticava firme digitali di ogni tipo.
Nel 2005 la crittografa cinese Xiaoyun Wang mostrò i primi attacchi teorici; nel febbraio 2017 Google e CWI Amsterdam annunciarono SHAttered: due file PDF diversi con lo stesso identico SHA-1, prodotti con circa 9 quintilioni di calcoli. Da quel momento SHA-1 è formalmente deprecato per ogni uso di sicurezza — la sua storia è la dimostrazione pratica che le funzioni hash invecchiano, e che la migrazione va pianificata prima della rottura.
La chiave: come MD5, anche SHA-1 non usa alcuna chiave — è una funzione hash pubblica: la sicurezza sta nella difficoltà di trovare collisioni, non nel nascondere un segreto.
1996
HMAC
›
HMAC
Un hash normale prova che un messaggio non è cambiato — ma chiunque può ricalcolarlo, quindi non prova chi lo ha scritto. HMAC risolve il problema mescolando all'impronta una chiave segreta, con una costruzione a doppio passaggio: HMAC(K, m) = H( (K⊕opad) ∥ H( (K⊕ipad) ∥ m ) ). La chiave, combinata con due costanti di riempimento (ipad e opad), entra sia nell'hash interno sia in quello esterno.
Solo chi possiede K può generare o verificare il codice: HMAC garantisce insieme integrità e autenticità. Il doppio passaggio non è un vezzo — blocca l'attacco "length extension" a cui un ingenuo H(chiave∥messaggio) sarebbe vulnerabile. Oggi HMAC firma i token JWT, autentica i webhook, protegge le sessioni TLS: è ovunque due sistemi debbano fidarsi di un messaggio in transito.
La chiave: è il segreto condiviso K, che entra due volte nel calcolo — combinato con ipad prima dell'hash interno, e con opad prima dell'hash esterno: senza la stessa identica chiave non si può né generare né verificare il codice.
2001
SHA-256
›
SHA-256
SHA-256 segue la stessa filosofia di MD5 — comprimere blocchi di dati in un'impronta fissa attraverso molti round di mescolamento bit a bit — ma con un'impronta più lunga (256 bit, 64 caratteri esadecimali), 64 round invece di 64 passi più semplici, e una costruzione interna (Merkle–Damgård con funzioni di compressione più robuste) che ad oggi non ha collisioni note.
È lo hash alla base della blockchain di Bitcoin, dei certificati TLS che proteggono i siti HTTPS, e — combinato con tecniche di "salting" — della memorizzazione sicura delle password. Anche cambiando un singolo carattere del messaggio, l'impronta risultante cambia in modo completamente imprevedibile: è l'effetto valanga che rende l'hashing utile per rilevare qualunque alterazione, anche minima.
La chiave: SHA-256 non ne usa alcuna — è una funzione hash pubblica come MD5 e SHA-1: la stessa entrata produce sempre la stessa impronta, per chiunque la calcoli.
›
Steganografia
Steganografia
La steganografia ("scrittura nascosta", dal greco) prende una strada diversa da tutti gli altri algoritmi di questo dossier: invece di rendere un messaggio illeggibile a chi non ha la chiave, lo occulta dentro un altro contenuto innocuo, in modo che un osservatore non sospetti nemmeno che ci sia un segreto da cercare. Un cifrario ben fatto grida "sono un messaggio segreto, provate a rompermi"; un messaggio steganografato ben fatto passa inosservato. Le due tecniche sono complementari, non alternative: i messaggi più protetti della storia sono spesso stati prima cifrati e poi nascosti.
Antichità
Steganografia classica
›
Steganografia classica
Erodoto racconta due episodi spesso citati come i primi esempi noti di steganografia. Il primo: uno schiavo si fa tatuare un messaggio sul cuoio capelluto rasato, aspetta che i capelli ricrescano e nascondano il tatuaggio, poi viaggia fino a destinazione dove i capelli vengono rasati di nuovo per rivelare il messaggio. Il secondo: un messaggio viene inciso su una tavoletta di legno, poi ricoperta di cera vergine e apparentemente vuota — un oggetto innocuo che passa i controlli.
Un'altra famiglia di tecniche storiche usa l'inchiostro simpatico (succo di limone, latte, soluzioni chimiche) che diventa invisibile una volta asciutto e riappare solo se scaldato o trattato con un reagente. Una variante testuale è il cifrario nullo (o acrostico): il messaggio segreto è nascosto prendendo, per esempio, solo la prima lettera di ogni parola di un testo dall'aspetto innocente — è la tecnica che riproponiamo nello strumento interattivo qui sotto.
La chiave: non c'è una chiave in senso crittografico — il “segreto” è la convenzione concordata in anticipo tra mittente e destinatario su dove guardare (ad esempio, le iniziali di ogni parola): chiunque altro legge solo un testo innocuo.
Anni '90
Steganografia digitale — LSB
›
Steganografia digitale — LSB
Ogni pixel di un'immagine digitale è descritto da tre valori (rosso, verde, blu), ciascuno tipicamente un numero da 0 a 255 — 8 bit. Cambiare l'ultimo bit di questo numero (il "bit meno significativo") altera il valore al massimo di 1 su 255: un cambiamento impercettibile all'occhio umano. La tecnica LSB sostituisce sistematicamente l'ultimo bit di ogni canale colore con un bit del messaggio segreto da nascondere: bit dopo bit, pixel dopo pixel, il messaggio si "scrive" dentro l'immagine senza alterarne visibilmente l'aspetto.
Chi conosce la tecnica (e, spesso, quanti bit leggere) può ricostruire il messaggio rileggendo gli ultimi bit di ogni pixel nello stesso ordine. È una tecnica fragile: comprimere l'immagine (JPEG), ridimensionarla o convertirla di formato distrugge quasi sempre il messaggio nascosto, perché altera proprio quei bit meno significativi in cui è scritto.
La chiave: non è richiesta alcuna chiave crittografica in senso stretto — il “segreto” è sapere che il messaggio è nascosto negli ultimi bit e in che ordine leggerli; strumenti più avanzati aggiungono anche una vera cifratura del messaggio prima di nasconderlo.
›
Alfabeti di comunicazione
Alfabeti di comunicazione
Questi non sono cifrari: nessuno di questi alfabeti vuole tenere un segreto. Sono modi alternativi di rappresentare le lettere, nati ciascuno per uno scopo preciso: leggere con le dita quando gli occhi non possono (Braille), trasmettere lungo un filo elettrico (Morse) o con cinque bit (Baudot), farsi vedere a distanza (semaforico), farsi capire in una linea disturbata (fonetici). Compaiono in questo dossier perché condividono con la crittografia il gesto fondamentale — trasformare un messaggio secondo una tabella condivisa — ma con l'obiettivo opposto: massimizzare la comprensione invece di negarla. Conoscerli aiuta anche a non confonderli con le cifrature: un testo in Morse sembra segreto, ma la sua "chiave" è pubblica da due secoli.
1829
Linguaggio Braille
›
Linguaggio Braille
Louis Braille, cieco dall'età di tre anni, aveva quindici anni quando ideò il suo sistema partendo dalla "scrittura notturna" di Charles Barbier, un codice militare per leggere ordini al buio. Ogni carattere è una cella di sei punti in rilievo, disposti in una griglia 2×3: 64 combinazioni possibili, sufficienti per lettere, numeri, punteggiatura e persino notazione musicale e matematica.
Il sistema è progettato per il tatto: la cella ha esattamente la dimensione di un polpastrello, e le lettere più frequenti usano meno punti. Non è una cifratura — non nasconde nulla — ma è la dimostrazione più bella che la stessa informazione può viaggiare su canali sensoriali diversi: dalla vista al tatto, senza perdere niente.
La chiave: nessuna — la corrispondenza tra lettere e celle a sei punti è uno standard pubblico e internazionale, pensato per essere conosciuto da chiunque, non per restare segreto.
1838
Codice Morse
›
Codice Morse
Nato per il telegrafo elettrico, il Morse rappresenta ogni lettera con una sequenza di impulsi brevi (punti) e lunghi (linee). L'intuizione geniale di Vail fu statistica: analizzò le cassette dei caratteri di una tipografia per stimare la frequenza delle lettere, e assegnò i codici più corti alle più comuni — la E è un solo punto, la T una sola linea. Un secolo prima della teoria dell'informazione di Shannon, il Morse era già un codice a lunghezza variabile ottimizzato.
Ha attraversato telegrafo, radio e marina per oltre 150 anni; il segnale di soccorso SOS (· · · — — — · · ·) fu scelto proprio perché inconfondibile. Non nasconde nulla — chiunque con una tabella lo decodifica — ma resta l'antenato di ogni codifica digitale: informazione trasformata in impulsi.
La chiave: nessuna — la tabella punti/linee è pubblica e universale fin dall'Ottocento: la comprensione dipende solo dal conoscere il codice, non da un segreto condiviso.
1866
Alfabeto semaforico
›
Alfabeto semaforico
Il segnalatore impugna due bandierine e compone ogni lettera con una combinazione di posizioni delle braccia, come le lancette di un orologio: otto direzioni possibili per braccio. Il sistema discende dai telegrafi ottici di fine Settecento — torri con bracci meccanici che rimbalzavano messaggi attraverso la Francia di Chappe — miniaturizzato in un corpo umano.
In mare è sopravvissuto a telegrafo e radio perché non richiede alcuna tecnologia: funziona finché c'è luce e linea di vista, ed è immune a guasti e intercettazioni radio. Curiosità pop: il simbolo della pace ☮ disegnato nel 1958 sovrappone le lettere semaforiche N e D, iniziali di "Nuclear Disarmament".
La chiave: nessuna — le posizioni delle braccia per ogni lettera sono uno standard pubblico e condiviso da chiunque operi in mare, pensato apposta per essere universalmente comprensibile.
1874
Codice Baudot
›
Codice Baudot
Baudot progettò per le telescriventi il primo codice a lunghezza fissa: ogni carattere è esattamente 5 bit, battuti simultaneamente su una tastiera a cinque tasti come un accordo di pianoforte. Con 5 bit si rappresentano solo 32 simboli, troppo pochi per lettere e cifre insieme: due caratteri speciali di controllo (LTRS e FIGS) commutano l'intera tastiera tra il registro lettere e il registro cifre/simboli — lo stesso trucco del tasto Shift.
La versione standardizzata ITA2 (1924) ha dominato telex e telescriventi per mezzo secolo, e la velocità di trasmissione si misura ancora oggi in baud, in suo onore. È l'anello di congiunzione tra Morse e ASCII — e non a caso il cifrario di Vernam nacque proprio per cifrare il Baudot, applicando lo XOR sui suoi 5 bit.
La chiave: nessuna — la tabella a 5 bit per carattere è uno standard tecnico pubblico (poi ITA2), non un segreto: qualunque telescrivente compatibile la conosce.
~anni '20
Alfabeto fonetico italiano
›
Alfabeto fonetico italiano
Su una linea telefonica disturbata, B, C, D, E, G, P, T e V suonano quasi identiche. La soluzione, nata spontaneamente con la diffusione del telefono, è sostituire ogni lettera con una parola che inizia per quella lettera — in Italia, tradizionalmente nomi di città: Ancona, Bologna, Como, Domodossola… Le parole si distinguono anche in mezzo al rumore, perché il cervello riconosce l'intera parola e non deve isolare un singolo fonema.
Per le lettere straniere si ricorre a nomi comuni o esteri (Hotel, Jolly, Kursaal, Washington, York). È il fratello "domestico" dell'alfabeto NATO: stesso principio, ma cresciuto dal basso, con varianti regionali (Bari o Bologna? Padova o Palermo?) che ne raccontano l'origine popolare.
La chiave: nessuna — l'associazione lettera→città è una convenzione pubblica diffusa per uso comune, pensata per farsi capire meglio al telefono, non per nascondere nulla.
1956
Alfabeto fonetico NATO
›
Alfabeto fonetico NATO
Dopo che la Seconda guerra mondiale aveva mostrato il caos di alfabeti radio incompatibili tra alleati (Able-Baker americano, altre varianti britanniche), l'ICAO commissionò studi linguistici per trovare 26 parole comprensibili da parlanti di qualsiasi lingua, anche su canali disturbati. Ogni candidata fu testata in condizioni di rumore reale; il risultato del 1956 — Alfa, Bravo, Charlie, Delta… — è ancora oggi lo standard di aviazione, marina, forze armate e soccorso di tutto il mondo.
Anche le grafie sono calcolate: Alfa con la F (non "Alpha") e Juliett con doppia T, perché francesi e altri parlanti non anglofoni le pronuncino correttamente. Non nasconde nulla: al contrario, è progettato per massimizzare la comprensione — l'esatto opposto di una cifratura, con cui condivide però l'idea di trasformare le lettere secondo una tabella condivisa.
La chiave: nessuna — la tavola Alfa-Bravo-Charlie è uno standard internazionale pubblico, scelto apposta per essere riconoscibile da chiunque parli qualsiasi lingua.
›
Encoding e escaping
Encoding e escaping
Codificare non è cifrare. Un encoding trasforma i dati in una forma adatta a un canale o a un contesto — testo in bit, byte in caratteri stampabili, simboli pericolosi in equivalenti inerti — seguendo regole pubbliche e senza alcuna chiave: chiunque può invertirlo. L'escaping è il caso particolare in cui si "disinnescano" caratteri che verrebbero interpretati invece che mostrati. Questa famiglia chiude il dossier con un avvertimento pratico: confondere encoding e cifratura è uno degli errori di sicurezza più comuni — un dato in Base64 sembra protetto, ma è solo vestito in modo diverso.
1963
Binary encoding (ASCII)
›
Binary encoding (ASCII)
Un computer conosce solo bit; per fargli maneggiare del testo serve una tabella che assegni a ogni carattere un numero. Lo standard ASCII del 1963 fissò quella tabella: 7 bit per carattere, 128 simboli — lettere, cifre, punteggiatura e caratteri di controllo ereditati dalle telescriventi. La "A" maiuscola è il numero 65, cioè 01000001 in binario.
Rappresentare un testo come sequenza di bit non lo nasconde in alcun modo: la tabella è pubblica e la conversione è meccanica in entrambe le direzioni. Oggi ASCII vive come sottoinsieme di UTF-8, che estende lo stesso principio a oltre un milione di caratteri di tutte le scritture del mondo — il nostro strumento usa proprio UTF-8, quindi funziona anche con accenti ed emoji.
La chiave: nessuna — la tabella dei codici (ASCII/UTF-8) è uno standard tecnico pubblico e universale: la conversione è meccanica e reversibile da chiunque, senza alcun segreto.
1964
Esadecimale
›
Esadecimale
Il binario è ciò che la macchina capisce, ma per un occhio umano 01001000 01101001 è illeggibile. La notazione esadecimale (base 16, cifre 0–9 e A–F) comprime ogni byte in esattamente due caratteri: 01001000 diventa 48. La corrispondenza è perfetta perché 16 = 2⁴: ogni cifra esadecimale rappresenta esattamente quattro bit, senza resti né ambiguità.
Fu l'IBM System/360 del 1964 a imporla come convenzione universale dei programmatori. Oggi la incontri ovunque i byte debbano essere mostrati a un umano: i colori CSS (#c69447), gli indirizzi MAC, i dump di memoria — e le impronte hash di questo stesso dossier, che sono proprio byte scritti in esadecimale.
La chiave: nessuna — la corrispondenza tra byte e cifre esadecimali è una convenzione tecnica pubblica: due cifre per byte, sempre le stesse per chiunque la usi.
1987
Base64
›
Base64
I primi sistemi email trasportavano solo testo a 7 bit: allegare un'immagine o un file binario li mandava in tilt. Base64 risolve il problema riscrivendo qualunque sequenza di byte usando solo 64 caratteri "sicuri" (A–Z, a–z, 0–9, + e /): prende i dati 3 byte alla volta (24 bit) e li spezza in 4 gruppi da 6 bit, ognuno mappato su un carattere. Il segno = finale è solo riempimento quando i byte non sono multipli di 3.
Il costo è un +33% di dimensione; il beneficio è l'universalità: allegati email, immagini incorporate nelle pagine web (data URI), token JWT. Attenzione all'equivoco più diffuso della sicurezza informatica: Base64 sembra cifrato perché illeggibile, ma non ha chiave e chiunque lo inverte in un millisecondo. Codificare non è cifrare — e questa pagina esiste anche per questo.
La chiave: nessuna — l'alfabeto dei 64 caratteri usati è fissato dallo standard: chiunque conosca la tabella (pubblica) può invertire la codifica all'istante.
~1993
HTML escaping
›
HTML escaping
In una pagina web, i caratteri < e & non sono testo qualunque: aprono tag e entità, e il browser li interpreta. Per mostrarli letteralmente bisogna "scappare" (escape) verso una rappresentazione alternativa: < per <, & per &, " per le virgolette.
Non è pedanteria: è la prima linea di difesa contro gli attacchi XSS (Cross-Site Scripting). Se un sito mostra testo scritto dagli utenti senza escaping, un utente ostile può inserire <script> e far eseguire il proprio codice nel browser delle vittime. L'escaping trasforma il codice ostile in testo inerte: come le cifrature nascondono il contenuto, l'escaping ne disinnesca il significato.
La chiave: nessuna — la tabella di corrispondenza tra caratteri speciali ed entità (come < per <) è parte dello standard HTML, pubblica e identica ovunque.
1994
URL encoding
›
URL encoding
Un URL può contenere solo un ripertorio ristretto di caratteri: niente spazi, niente accenti, e simboli come ? & / # hanno significati strutturali riservati. Il percent-encoding rappresenta ogni carattere "proibito" con % seguito dal valore esadecimale dei suoi byte: lo spazio diventa %20, la è diventa %C3%A8 (i suoi due byte UTF-8).
È il motivo per cui i link che condividi sono pieni di %: è l'encoding che permette a qualsiasi testo — una ricerca, un nome file, un parametro — di viaggiare dentro un indirizzo web senza romperne la struttura. Come tutti gli encoding, è pubblico, senza chiave, e perfettamente reversibile: trasporta, non protegge.
La chiave: nessuna — la codifica percent-encoding segue una regola fissa e pubblica (RFC): ogni byte proibito diventa % seguito dal suo valore esadecimale, sempre allo stesso modo.