CAS@WEB – LE PULIZIE AUTUNNALI
22 Dicembre 2020CAS@WEB – “ESSE O NON ESSE, QUESTO È IL PROBLEMA!”
18 Gennaio 2021NULLA È VIENE MAI VERAMENTE LASCIATO AL CASO
Il “lucchetto” in alto a sinistra nella pagina internet da cui state leggendo questo articolo, ci dice che “la connessione è protetta” e, approfondendo l’argomento, si scoprirebbe facilmente che questa garanzia si basa sulla generazione continua di numeri casuali assegnati alle sue chiavi di accesso.
Se ci fermiamo a riflettere, però, sul fatto che ogni componente del computer è studiata per essere rigorosamente “prevedibile”, ci risulterebbe che i computer sono, per loro stessa definizione, i peggiori generatori di numeri o sequenze casuali.
Ogni macchina elettronica deve infatti seguire dei percorsi logici prefissati in modo tale che se riceve più volte uno stesso impulso (input) reagisce dando un risultato atteso: per questo siamo sicuri che ogni volta che chiediamo ad una calcolatrice di fare 1+1 ci restituirà sempre e soltanto “2”.
Questo potrebbe essere un serio problema, perché tutte le tecnologie odierne di criptografia (come quella del nostro “lucchetto”) si basano su numeri enormi e dichiaratamente “casuali”, tutti creati da un computer.
È evidente che se in qualche modo riusciamo a “predire” questi numeri, possiamo aprire ognuno di questi lucchetti.
Per la criptografia la chiave (in tutti i sensi) è quel termine “casuale”, usato comunemente per indicare cose leggermente diverse, ma tutte basate su criteri logici e quindi non utili al suo scopo.
Basti pensare che, in alcuni campi, un processo è definito “casuale” se risponde ad alcune proprietà statistiche: ad esempio si dice che le cifre di pi-greco siano “casuali” perché tutte le sequenze di numeri, comunque scelte, appaiono con la stessa frequenza.
Per la criptografia questo non può essere sufficiente, perché i numeri “casuali” devono essere anche “imprevedibili”, altrimenti sarebbe sufficiente conoscere l’elemento di riferimento per trovarne la chiave di previsione (ed aprire il lucchetto).
Per essere imprevedibile, il numero generato deve fare forza anche e soprattutto su un’”asimmetria delle informazioni”.
Se stai tentando di eseguire in modo sicuro un’operazione criptografica è perché non vuoi che qualcuno possa violare la tua sicurezza, ma l’unica cosa che ti distingue dall’avversario è la possibilità di conoscere alcune cose che lui non sa (o che non può sapere): compito della criptografia è assicurarsi che questa asimmetria di informazioni sia sufficiente allo scopo.
Chiedere ad una macchina di generare dentro se stessa questa imprevedibilità è chiedergli di andare contro la sua stessa natura: dove può, allora, un computer ottenere un input sufficientemente “imprevedibile”?
La risposta a questa domanda è tanto geniale quanto semplice: dalla grossolana imprecisione del mondo reale!
Ci sono vari modi grazie ai quali un computer può ricevere un input “imprevedibile” dal mondo reale: ad esempio da un sensore di temperatura, una telecamera puntata su una strada trafficata, ecc.
Ogni strumento che è capace di effettuare misurazioni del mondo reale è inevitabilmente limitato proprio da suo stesso grado di imprecisione intrinseca, la cui inesattezza è però un potente generatore di fruibili imprevedibilità.
Non è fantascienza, ma addirittura storia!
La Cloudflare INC (società americana che si occupa anche di servizi di sicurezza internet e servizi di DNS distribuiti) attivò un geniale sistema di imprevedibilità utilizzando il brevetto della Silicon Graphics nel 1966 (scaduto pochi anni dopo) della Lampada “Lava”.
Il loro sistema, chiamato “LavaRand”, utilizza infatti le lampade “Lava” come fonte secondaria di casualità.
Semplificando: il sistema era composto letteralmente da un muro di lampade Lava nella hall del loro ufficio di San Francisco che forniva un input (imprevedibile) a una telecamera, che raccoglieva quelle immagini per poi convertirle in un codice casuale; quest’ultimo, inserito nel computer principale, integrava la produzione del codice di criptografia finale, aggiornandolo continuamente da immagini sempre diverse.
Il sistema LavaRand era talmente caotico e variabile che cercare di simularne un suo preciso fotogramma di ripresa sarebbe risultato più complicato che cercare di forzare l’intero sistema.
La domanda “qualcosa in questo mondo è davvero casuale?” è una domanda più filosofica che matematica o fisica, ma anche se tutto fosse veramente solo un complicato sistema schematico che segue regole prefissate, simulare un sistema reale di generazione casuale di questo tipo potrebbe dare solo un pezzo del puzzle, per di più influenzabile dall’esterno e quindi variabile anch’esso.
Esistono oggi moltissimi modi meno artistici o appariscenti (oltre che più pratici) per registrare elementi casuali sfruttando il mondo che ci circonda utili a generare efficaci numeri imprevedibili, ma lo scopo di questo articolo era far vedere cosa c’era dietro le quinte, non rivelare tutte le sceneggiature.
Dietro il nostro “lucchetto” c’è quindi qualcosa di più di un programma (algoritmo) che genera numeri complessi.
Vedremo in un prossimo articolo quando invece sono usati algoritmi che generano numeri casuali non imprevedibili e quali sono le precauzioni da prendere per superare questa loro, pur limitata, vulnerabilità.