Cloudflare traduce le foto di 100 lampade di lava in dati casuali da utilizzare nella crittografia SSL.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è la crittografia?
Crittografia a chiave pubblica
Crittografia asimmetrica
Che cosa è l’SSL?
Cos'è un certificato SSL?
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
La casualità è estremamente importante per una crittografia sicura. Ogni nuova chiave utilizzata da un computer per crittografare i dati deve essere veramente casuale, in modo che un autore di un attacco non sia in grado di comprendere la chiave e decrittografare i dati. Tuttavia, i computer sono progettati per fornire output logici prevedibili basati su un determinato input. Non sono progettati per produrre i dati casuali necessari per creare chiavi di crittografia imprevedibili.
Per produrre i dati imprevedibili e caotici necessari per una crittografia avanzata, un computer deve disporre di una fonte di dati casuali. Il "mondo reale" si rivela una grande fonte di casualità, perché gli eventi nel mondo fisico sono imprevedibili.
Come ci si potrebbe aspettare, le lampade di lava sono costantemente casuali. La "lava" in una lampada di lava non assume mai la stessa forma due volte e, di conseguenza, l'osservazione di un gruppo di lampade di lava è un'ottima fonte di dati casuali.
Per raccogliere questi dati, Cloudflare ha sistemato circa 100 lampade di lava su una delle pareti dell'atrio della sede centrale di Cloudflare e ha montato una telecamera puntata verso queste. La fotocamera scatta foto di queste a intervalli regolari e invia le immagini ai server di Cloudflare. Tutte le immagini digitali sono in realtà memorizzate dai computer come una serie di numeri, con ogni pixel che ha il proprio valore numerico, e quindi ogni immagine diventa una stringa di numeri totalmente casuali che i server Cloudflare possono quindi utilizzare come punto di partenza per creare chiavi di crittografia sicure.
Pertanto, con il supporto delle lampade di lava, Cloudflare è in grado di offrire ai propri clienti una crittografia SSL/TLS estremamente potente (e sufficientemente casuale). Ciò è particolarmente importante considerando che milioni di proprietà Internet utilizzano Cloudflare.
In crittografia, casuale non significa solo statisticamente casuale; significa anche imprevedibile.
I dati crittografati devono apparire come dati totalmente casuali, poiché è possibile risalire ai dati prevedibili. Se esiste un modello (se determinati valori vengono utilizzati per la crittografia più di altri o se i valori appaiono in un certo ordine in modo coerente), l'analisi matematica riprenderà il modello e consentirà a un autore di un attacco di risalire molto più facilmente alla chiave utilizzata per la crittografia. In sostanza, se i dati crittografati sono prevedibili, potrebbero anche essere già compromessi.
Il processo di crittografia stesso è prevedibile: i dati crittografati più la chiave giusta equivalgono ai dati decrittografati e i dati decrittografati sono gli stessi di prima di essere crittografati. Ma le chiavi di crittografia utilizzate devono essere imprevedibili.
Per capire perché l'imprevedibilità è così importante, immagina due giocatori di poker: Roberto scommette sempre quando ha carte buone e si rifiuta di eguagliare le scommesse degli altri giocatori quando ha brutte carte. Alice, nel frattempo, confonde la sua strategia di scommessa in modo che non ci sia uno schema distinguibile: a volte scommette quando ha carte buone, a volte si accontenta di eguagliare le scommesse di altri giocatori e a volte bluffa persino scommettendo in grande quando ha brutte carte. Quando Alice e Roberto partecipano allo stesso torneo di poker, Alice riesce a giocare per molto più tempo rispetto a Roberto, perché quest'ultimo è troppo prevedibile. Gli avversari capiscono subito quando Roberto ha buone carte e reagiscono di conseguenza. Anche se non possono vedere le sue carte, possono più o meno immaginare cosa nascondono.
Allo stesso modo, anche se autore di un attacco non può vedere le "carte", o il contenuto crittografato, inviato su una rete, può risalire a questo se il metodo per nascondere il contenuto è troppo prevedibile.
I computer funzionano in base alla logica. Un programma informatico è basato su istruzioni if-then: Se vengono soddisfatte determinate condizioni, esegue l'azione specificata. Lo stesso input in un programma si traduce sempre nello stesso output.
È tutto predefinito fin dall'ideazione. Un input dovrebbe portare a un output previsto, non inaspettato. Immagina il caos se una stampante stampasse un testo casuale diverso dal testo nel documento che è stato inviato o se gli smartphone dovessero chiamare un numero di telefono diverso da quello inserito dall'utente. I computer sono utili solo per la loro (relativa) affidabilità e prevedibilità. Tuttavia, tale prevedibilità è un ostacolo quando si tratta di generare chiavi di crittografia sicure.
Alcuni programmi informatici sono capaci di simulare la casualità, ma non abbastanza per creare chiavi di crittografia.
Un programma software chiamato generatore di numeri pseudocasuali (PRNG, Pseudo-Random Number Generator) è in grado di prendere un input imprevedibile e utilizzarlo per generare output imprevedibili. In teoria, un PRNG può produrre output casuali illimitati da un input casuale.
Tale algoritmo è chiamato "pseudocasuale" e non "casuale" perché i suoi output non sono in realtà completamente casuali. Perché è così? Ci sono due motivi principali:
A causa del secondo motivo, l'algoritmo ha continuamente bisogno di nuovi input di casualità. Un input casuale è noto come "seed crittografico".
Un generatore di numeri pseudocasuali crittograficamente sicuro, o CSPRNG (Pseudo-Random Number Generator), è un PRNG che soddisfa standard più rigorosi, rendendolo più sicuro da usare per la crittografia. Un CSPRNG soddisfa due requisiti che i PRNG non potrebbero necessariamente soddisfare:
Come un PRNG, un CSPRNG ha bisogno di dati casuali (il seed crittografico) come punto di origine da cui partire per produrre più dati casuali.
Per generare chiavi di crittografia per la crittografia SSL/TLS, Cloudflare utilizza un CSPRNG, con i dati raccolti dalle lampade di lava come parte del seed crittografico.
Un seed crittografico è il dato di origine di un CSPRNG per la generazione di dati casuali. Sebbene un CSPRNG possa teoricamente produrre output casuali illimitati da un singolo seed crittografico, è molto più sicuro aggiornare regolarmente il seed crittografico. Un autore di un attacco può eventualmente compromettere il seed crittografico iniziale. Ricorda: un CSPRNG produrrà di nuovo esattamente gli stessi output se viene alimentato con lo stesso seed, quindi l'autore di un attacco potrebbe duplicare gli output casuali. Inoltre, non è garantito che anche il CSPRNG più rigorosamente testato produca risultati imprevedibili a tempo indeterminato.
Con le lampade di lava, Cloudflare ha una fonte continua di nuovi dati di seed crittografici. Ogni immagine delle lampade scattata dalla fotocamera è diversa, creando come risultato una diversa sequenza casuale di valori numerici che possono essere utilizzati come seed.
Molti sistemi operativi hanno le proprie fonti di dati casuali da utilizzare nei seed crittografici, ad esempio dalle azioni dell'utente (movimenti del mouse, digitazione su una tastiera ecc.), sebbene ottengano questi dati in modo relativamente lento. Cloudflare mescola i dati casuali ottenuti dalle lampade di lava con i dati generati dal sistema operativo Linux su due macchine diverse per sfruttare al massimo l'entropia durante la creazione di seed crittografici per la crittografia SSL/TLS.
In generale, "entropia" significa disordine o caos. Ma l'entropia ha un significato specifico in crittografia: si riferisce all'imprevedibilità. I crittografi misurano effettivamente quanta entropia ha un dato insieme di dati in termini di numero di bit di entropia. Per questo motivo, Cloudflare si riferisce alla parete di lampade di lava come alla "Parete dell'entropia".
Poiché la parete delle lampade di lava si trova nell'atrio affollato della sede centrale di Cloudflare, questo accade sempre. Le persone vanno e vengono nell'atrio, passeggiano o si fermano a parlare davanti alle lampade. Tali ostruzioni diventano parte della casualità che la telecamera acquisisce, quindi le persone che bloccano parzialmente la vista della telecamera sulle lampade di lava contribuiscono effettivamente a generare entropia.
Se questo dovesse accadere, Cloudflare ha ancora altre due fonti per la randomizzazione dal sistema operativo Linux in esecuzione sui server di Cloudflare. Inoltre, Cloudflare ha un facile accesso fisico alla telecamera perché si trova in uno spazio di proprietà di Cloudflare e Cloudflare può riattivarla o sostituirla rapidamente, se necessario.
Le altre due sedi principali di Cloudflare si trovano a Londra e Singapore e ognuna di queste ha il proprio metodo per generare dati casuali da input del mondo reale. La sede di Londra scatta foto di un sistema a doppio pendolo montato in ufficio (un pendolo collegato a un pendolo, i cui movimenti sono matematicamente imprevedibili). La sede di Singapore misura il decadimento radioattivo di una pallina di uranio (una quantità abbastanza piccola da essere innocua).
Sorprendentemente no: una società chiamata Silicon Graphics ha progettato un sistema simile chiamato "Lavarand" nel 1996, anche se il brevetto è scaduto.
Per saperne di più sulla parete delle lampade di lava di Cloudflare, dai un'occhiata a questi due post del blog:
Consulta questa pagina per scoprire come utilizzare la crittografia SSL gratuita di Cloudflare.