LAB -Il potere della tecnologia BlockChain e le funzioni di Hash

BlockChain! Se ne sente parlare sempre più spesso, ma è davvero così sicura come tutti credono?

(Credit:Google)

Negli anni ’60, in piena Guerra Fredda, negli Stati Uniti, l’ARPA (Advanced Research Projects Agency) progetta e realizza un sistema di telecomunicazione basato su nodi interconnessi ,ossia computer collegati tra loro, in grado di scambiarsi informazioni in modo veloce e sicuro.

Le necessità principali erano quindi di salvaguardare informazioni di estrema importanza e di rendere efficienti le comunicazioni tra luoghi distanti , e per raggiungere questo scopo si è pensato al decentramento degli archivi informatici.

Ogni computer della rete aveva tutte le informazioni della rete e ogni qualvolta si verificava una modifica di dati nella rete tutti i computer modificavano le proprie informazioni così da essere costantemente aggiornati. Svilupparono una rete basata sul decentramento e sulla condivisione, qualcosa che al giorno d’oggi chiameremmo Blockchain.

BlockChain al microscopio

BlockChain, letteralmente, “catena di blocchi”, è una tecnologia che sta iniziando a fiorire nell’ultimo decennio, ma, come detto in precedenza affonda le sue radici già nei primi anni ’60, con la creazione di ARPANET.
Il sistema connetteva alcuni computer tra di loro, creando copie dei registri su ognuno di essi.

Nel caso uno o più computer venissero distrutti, gli altri calcolatori connessi avrebbero protetto i documenti condivisi. L’idea di base è davvero semplice e può essere racchiusa all’interno di due semplici parole: decentramento condiviso.

Al giorno d’oggi tutte le informazioni presenti su internet sono racchiuse in enormi server con memorie smisurate e i dati sono conservati in luoghi specifici e protetti. In parole povere internet è un sistema centralizzato.

Struttura schematica dei sistemi centralizzati/decentralizzati e distribuiti (Credit: www.cru.agency)

L’innovazione introdotta dalla tecnologia Blockchain la necessità di decentralizzare tutti i dati, ossia utilizzare diverse catene (gruppi di computer o dispositivi internconnessi) composte da blocchi (singoli dispositivi). Ogni catena ha un informazione diversa, ma i blocchi di una stessa catena validano tutti le stesse informazioni.

Ciò significa, quindi, che tutti i dispositivi della catena non hanno le informazioni vere e proprie, ma un codice univoco che identifica quelle informazioni specifiche.

È impensabile, infatti, che ogni blocco di una catena abbia tutte le informazioni di quella catena. Se ad esempio si volesse costruire una Blockchain di tutte le informazioni presenti in internet, ogni singolo computer connesso alla catena dovrebbe contenere decine di migliaia di terabyte di dati.

Utilizzando invece un particolare tipo di funzioni matematiche dette di Hash è possibile “comprimere” giganti quantità di dati in una semplice stringa di lettere e numeri che però può essere ricollegato solo ed esclusivamente a quell’informazione. Tale stringa prende il nome di firma digitale.

Il vantaggio dell’utilizzo di una metodologia del genere è evidente. Indipendentemente da quanto sia grossa l’informazione in ingesso essa verrà mappata su 128 bit.

Che essa sia una lettera dell’alfabeto, questo articolo, o la Divina Commedia sarà semplicemente identificata da 128 bit, e memorizzare 128 bit, invece che la Divina Commedia, ad esempio, permette di risparmiare enormi quantità di memoria.

Ma come si fa a rendere sicuri i dati e ad avere la certezza che due informazioni non abbiano la stessa firma digitale?

Funzioni di Hash! Scelgo voi

La crittografia è sempre stato un ambito di applicazione della matematica che, dopo la nascita della moderna informatica, ha dimostrato uno sviluppo esponenziale, alla continua ricerca di modi per criptare i dati e renderli illeggibili a chi non dovesse leggerli.

Nell’ottica dello sviluppo di algoritmi non hackerabili si propone, infatti, un particolare tipo di funzioni matematiche dette funzioni di Hash.

Una funzione matematica è detta analiticamente invertibile se dati gli output della funzione non esiste nessun metodo matematico per ricollegarla agli input. ( Credit: makecode.microbit)

Una funzione di Hash è una funzione matematica che prende come input un qualunque numero di caratteri (quindi di bit) e genera in uscita un codice di una lunghezza finita composto da altri caratteri alfanumerici.

Utilizzando, ad esempio un generatore di funzione di Hash chiamato md5 disponibile online, è possibile calcolare l’Hash di varie stringhe di caratteri. Fornendo come input all’algortimo il titolo di questo articolo ottengo come risultato la seguente stringa:

7330E283C6C9D72EEA0CC3C5530A5DFF

che ha un numero di caratteri finiti e costanti. Ma se modifico di solo una lettera il titolo , ad esempio scrivendo “LOB-Il potere della tecnologia BlockChain e le funzioni di Hash” ottengo una cosa del genere:

27348097765827F924E8CF7B0B055F80

Se do in input, invece il mio articolo, fino a questo punto, invece, ottengo:

FADDF6E3AA25C0CE2F3B754BCCC2FB58

Come si può vedere da 2 input simili ottengo una firma digitale profondamente diversa.

Tale tipologia di funzioni ha infatti una peculiarità che le rende molto sicure in ambito di crittografia, ossia non sono invertibili. Non è quindi possibile trovare un processo matematico, o in gergo analitico, che permetta di partire dalla firma digitale generata e risalire all’informazione originaria.

(Credit: techdotmatrix)

Le origini di tale proprietà risiedono in una particolare caratteristica delle funzioni di hash ossia che le operazioni che compie l’algoritmo modificano pesantemente i dati in ingresso con una conseguente perdita dell’informazione.

Tale perdita di informazione è la stessa nel caso in cui in ingresso siano forniti gli stessi dati. Ciò permette quindi di legare la firma digitale ad un determinato pacchetto di dati in input, e rende altamente improbabile trovare due pacchetti con la stessa firma digitale.

Deep in the MD5

Esistono diversi tipi di algoritmi di Hash che sono stati sviluppati nel tempo come ad esempio gli algoritmi soprannominati i MD4, MD5, SHA-512 e SHA-256,. Alcuni si sono rivelati più efficaci di altri. Uno dei primi sviluppati è sicuramente l’algoritmo MD5.

Tecnicamente, MD5 è una funzione di compressione, che dato un input composto da una stringa di lunghezza arbitraria, restituisce una firma digitale che consiste in una stringa di 128 bit.

Si presuppone che l’Hash (ovvero l’output) restituito dalla funzione sia univoco o, più precisamente, che sia molto improbabile ottenere due Hash identici da due input diversi.

Le operazioni che compie l’algoritmo sono descrivibili in 5 passaggi:

  1. Nella prima fase definita di “Padding” i caratteri in ingresso sono convertiti in 0 ed 1 tramite la tabella ASCII e vengono aggiunti bit alla fine del messaggio da codificare. Si aggiungono bit finché il numero di bit del messaggio in ingresso diviso per 512 non dà un resto uguale a 448. Tale operazione viene rappresentata come 448 mod 512. In particolare, il primo bit aggiunto è un “1”, mentre i successivi sono tutti “0”.
Esempio di tabella ASII per la codifica di caratteri in numeri binari composti da 0 ed 1 (Credit: digilander)

2. Viene memorizzato il messaggio iniziale prima del padding , e se la lunghezza del messaggio era minore di 2⁶⁴ bit, vengono copiati solamente i 64 bit inferiori del messaggio iniziale, e tali bit vengono poi accodati a quelli del messaggio generato dopo il padding.

3. A questo punto il messaggio ha ottenuto una lunghezza multipla di 512 (448+64) bit.

4. Si costruiscono quindi 4 variabili da 32 bit ciascuna inizializzate come segue

  • A: 10010001101000101011001110110100
  • B: 10001001101010111100110111101110
  • C: 11111110110111001011101010011000
  • D: 11101100110010100110010000100000

5. Vengono definite quattro funzioni logiche composte da AND, OR e NOT che ricevono in ingresso tre stringhe da 32 bit (x,y,z) del messaggio dopo il padding e ne restituiscono una, sempre da 32 bit, che si somma uno per volta ad A,B,C,D.

  • F (x,y,z) = (x AND y) OR (NOT x OR z)
  • G (x,y,z) = (x AND z) OR (y OR NOT z)
  • H (x,y,z) = (x XOR y XOR z)
  • I (x,y,z) = y XOR(x OR NOT z)
La perdita di informazione maggiore si ha nella fase 5 in cui un determinato output può essere connnesso a più input (Credit: 2d2web)

Quindi i primi 32 bit del messaggio andranno in input alla funzione F e il risultato sarà sommato ad A. Poi i successivi 32 bit andranno in ingresso alla funzione G e questo sarà sommato a B e così via. Una volta sommati ad A,B,C,D, si riparte da capo.

L’output poi sarà semplicemente la concatenazione di D con C con B e A.

Nel fare queste operazioni una parte dell’informazione iniziale va persa, aggiungendo altri bit ed elaborandoli tra loro ed è chiaramente per tale ragione che non è possibile invertire analiticamente tale algoritmo.

Hash VS Quantum A.I.

Come già detto in precedenza le funzioni di Hash associano ad un certo input un particolare output di lunghezza costante (128 bit) che prende il nome di firma digitale. Tali funzioni sono, infatti, costruite in modo tale che sia davvero difficile, se non impossibile trovare due input diversi che diano una stessa firma digitale

Nonostante ciò, però alcuni algoritmi, o dispositivi potrebbero essere in grado di aggirare questo ostacolo e ricercare stringhe di input che corrispondano alla stessa firma digitale.

Una rete neurale può comportarsi come una black box, facendo specialmente elaborazioni non analitiche.(Credit: tecnoandroid)

Esistono, infatti, due approcci che possono essere perseguiti al fine di minare la sicurezza di queste funzioni e prendono il nome di attacco “Brute Force” e attacco “Del compleanno”.

La prima tipologia di attacco, molto banalmente consiste nel ricercare, tra tutti gli input possibili, due che diano lo stesso output provando a calcolare l’hash di tutte le stringhe immaginabili.

Tale compito si adatta perfettamente ad una futuristica tipologia di computer che molto spesso sentiamo nominare: i computer quantistici.

Utilizzando infatti dei computer quantistici è possibile mettere in atto un attacco del genere. La peculiarità di questi computer risiede, infatti, nella capacità di fare i calcoli in parallelo.

Così come per i qubit, in un computer quantistico è possibile fornire in ingresso un carattere che sia la sovrapposizione di tutti i caratteri esistenti. Possiamo quindi utilizzare una lettera che non sia una specifica lettera, ma tutte le lettere allo stesso tempo.

Utilizzando quindi delle stringhe composte da questi “quantum characters” è possibile ridurre di molto i tempi di elaborazione e ricavare con facilità input che diano firme digitali uguali.

Una stringa di 4 quantum characters potrebbe allo stesso tempo essere la parola “cane” o “otto” o tutte le parole esistenti di 4 lettere (Credit: ofsoptic)

Per quanto riguarda gli attacchi “Del compleanno”, essi vengono perseguiti diversamente. Consistono, infatti, nel ricercare un link tra tutti gli input che forniscono la stessa firma digitale. E chi meglio di un’A.I. può svolgere un’azione del genere?

Tali algoritmi, infatti sono in grado di evolversi autonomamente e ricercare in modo non matematico e quindi non analitico delle correlazioni tra dati.

Dando in ingresso ad una algoritmo di A.I. , infatti una stringa generata dall’algoritmo di Hash e suggerendogli quale dovrebbe essere quella iniziale, l’algoritmo di A.I. potrebbe essere in grado di trovare correlazioni tra i due dati in modi che attualmente sfuggono alla perspicacia umana.

Una volta allenato, tale algoritmo sarebbe quindi in grado, partendo da una firma digitale, di ricercare tutti gli input che generano quella determinata firma.

Ma per fare ciò è ovviamente necessario che si suggerisca almeno il numero di caratteri che la rete deve ricercare e collegare a quella certa firma digitale.

Per ora, però, non esistono ancora tipologie di computer quantistici o algoritmi di A.I. in grado di svolgere tali attacchi: i primi perchè non ancora maturi, i secondi perchè non disponiamo di sufficiente potennza di calcolo. Tuttavia, non è detto che tali dispositivi/algoritmi possano essere creati nel breve periodo. Ma se c’è una ragione per cui la crittografia si è evoluta così tanto negli anni è sicuramente da attribuire alle avanzate tecnologie capaci di trovare falle nei algoritmi

Una cosa però è certa, Blockchain VS Quantum A.I. ci regalerà molte sorprese!

VISIONARI è un’associazione non-profit che promuove l’utilizzo responsabile di scienza e tecnologia per il miglioramento della società. Per diventare socio, partecipare ai nostri eventi e attività, o fare una donazione, visita: https://visionari.org

Seguici su Facebook e Instagram per scoprire nuovi progetti innovativi.

--

--