Creare sicurezza nelle applicazioni blockchain - Parte 1: Come funziona la tecnologia blockchain e come usa le chiavi private
Contributo di Editori nordamericani di DigiKey
2019-10-08
Nota del redattore: i dettagli della tecnologia blockchain e dei suoi metodi di transazione sono complessi, ma la Parte 1 di questo articolo si limiterà a fornire un'introduzione a questi due argomenti: struttura e processo di transazione. Questo articolo illustrerà alcuni concetti base per capire perché la protezione delle chiavi private è al centro della sicurezza della blockchain e presenterà, in conclusione, una soluzione chiavi in mano per la sicurezza delle chiavi private. La Parte 2 mostrerà come gli sviluppatori possono proteggere più facilmente le transazioni della blockchain utilizzando questa soluzione chiavi in mano, basata su hardware.
Le preoccupazioni per la sicurezza sono state un fattore trainante nello sviluppo della tecnologia blockchain, familiare a molti sviluppatori nel contesto delle criptovalute. Ad ogni modo, la tecnologia blockchain può offrire loro anche un'infrastruttura sicura e di ampia applicabilità. La sua architettura decentralizzata elimina la necessità di un'autorità centrale, affidandosi invece a chiavi private e a metodi di crittografia per proteggere i beni e il loro scambio tra le parti. Di conseguenza, la sicurezza di un sistema blockchain dipende in modo critico da quella delle chiavi e dal loro corretto utilizzo in algoritmi robusti.
Sebbene siano disponibili algoritmi appropriati, l'implementazione richiede competenza ed esperienza notevoli per sviluppare una soluzione sicura e integrarla nell'applicazione di destinazione. Gli sviluppatori hanno bisogno di un approccio più agevole per garantire la sicurezza delle chiavi nelle emergenti applicazioni blockchain.
Questo articolo descrive brevemente perché la blockchain suscita un grande interesse e come funziona la sua tecnologia, prima di introdurre una soluzione di Infineon Technologies basata su hardware e mirata alla sicurezza della blockchain.
L'ascesa della blockchain
La tecnologia blockchain ha catturato l'attenzione in quasi tutti i settori della società con applicazioni che spaziano dalle criptovalute alla protezione dell'identità, alla gestione della supply chain e alle votazioni. Spesso chiamata distributed ledger technology (archivi distribuiti), la sua combinazione di decentramento, autenticazione e conservazione dei documenti suscita interesse grazie alla sua capacità di escludere qualsiasi autorità centrale di controllo o intermediaria per l'esecuzione delle transazioni.
Gli istituti finanziari sono attratti dal suo potenziale per consentire meccanismi di pagamento più rapidi e a costi inferiori rispetto a quelli disponibili con le tecnologie e le pratiche attuali. Al di fuori del mondo bancario, le aziende interessate alla convalida dell'identità e alla tracciabilità delle transazioni sono attratte dalla capacità della blockchain di mantenere una traccia di registro autenticata e assolutamente immutabile. L'immutabilità di una blockchain risiede nel modo in cui è costituita e la sua autenticità risiede nel modo in cui vengono eseguite le transazioni.
Questa tecnologia dipende fondamentalmente dalla capacità di proteggere le chiavi segrete coinvolte nella costruzione dei blocchi contenenti le transazioni. Sebbene i dettagli della tecnologia blockchain e dei suoi metodi di transazione vadano ben oltre l'ambito di questo articolo, un esame sommario della struttura della blockchain e del suo processo di transazione può fornire le basi per capire perché la protezione delle chiavi private è fondamentale per la sicurezza. Occorre tenere presente che nella realtà le blockchain si basano su strutture e protocolli molto più sofisticati di quanto suggerito in questa panoramica semplificata della tecnologia blockchain.
Catene immutabili
Come suggerisce il nome, una blockchain è una catena di blocchi utilizzata per registrare un insieme di transazioni. I dettagli strutturali e i protocolli utilizzati nelle blockchain pubbliche, come Bitcoin ed Ethereum, possono differire sostanzialmente da quelli delle blockchain private a cui ha accesso una singola organizzazione. Esistono anche blockchain semi-private, dette blockchain autorizzate (permissioned), a cui ha accesso un gruppo di entità in collaborazione.
In qualsiasi tipo di blockchain, tuttavia, le fondamenta del blocco si basano su pochi elementi comuni (Figura 1):
- Il valore hash del blocco precedente (Prev_Hash), che costituisce il collegamento tra i blocchi della catena.
- Le transazioni associate ai blocchi rappresentati dalla radice (Tx_Root) di un albero detto hash tree, o Merkle tree, comprendente gli hash (Hashi) delle transazioni (Txi)
- Un "nonce" che ha un importante ruolo nella generazione di blocchi validi.
- Un indicatore temporale che registra l'ora di creazione del blocco
Figura 1: In uno schema semplificato di una blockchain per Bitcoin, ogni blocco contiene un indicatore temporale, un nonce arbitrario, un hash tree (o Merkel tree) e un hash del blocco precedente (Prev_Hash) nella catena. (Immagine per gentile concessione di Wikimedia Commons/CC-BY-SA-3.0)
L'inclusione del valore Prev_Hash in una blockchain fornisce il quadro di riferimento per l'integrità di una blockchain nel suo complesso. La modifica apportata da un hacker di una transazione passata nel bloccon-1 invaliderebbe l'hash contenuto nel bloccon anche se l'hacker avesse corretto il Merkle tree e il Tx_Root nel bloccon-1. Come descritto di seguito, la natura distribuita dei sistemi blockchain risolve tali disallineamenti di hash.
Il nonce ha un importante ruolo nelle regole di creazione dei blocchi che rendono realmente immutabili le blockchain. Le blockchain pubbliche come le criptovalute Bitcoin ed Ethereum applicano vincoli artificiali sul valore dell'hash di un nuovo blocco prima che possa essere utilizzato per estendere la catena. Quando per costruire un nuovo blocco si mettono assieme diverse transazioni Prev_Hash, queste regole richiedono in genere che l'hash finale per un blocco appena costruito sia inferiore a un certo valore massimo specificato. Gli algoritmi di hash utilizzati nelle blockchain generano lo stesso risultato per lo stesso input, ma anche il più piccolo cambiamento nell'input restituisce un risultato completamente nuovo e imprevedibile.
Il nonce fornisce un modo per cambiare il valore dell'hash senza incidere sugli elementi di importanza critica per la blockchain e i suoi utenti. Trovare l'hash che è conforme alle regole della blockchain diventa quindi un esercizio di "brute force", ovvero provando valori diversi per il nonce. Lavorando su una serie di valori diversi per il nonce e rimettendo ogni volta l'hash sul blocco, alla fine si troverà un valore hash conforme alle regole. Non è un caso che coloro che svolgono questo lavoro (mining) vengano chiamati "miner" della blockchain.
Questo nonce finale accettabile (la validazione del blocco) è chiamato Proof of Work perché rappresenta il completamento riuscito del processo di mining ad alta intensità di calcolo. Questo processo e la Proof of Work riflettono anche la natura decentralizzata dei sistemi blockchain. Dopo aver trovato un nonce accettabile, il miner si guadagna il diritto (e la relativa remunerazione in criptovaluta) di estendere la blockchain con il blocco che ha appena creato.
Altri miner e utenti della blockchain possono facilmente confermare la validità del nuovo blocco calcolando l'hash con il blocco e il nonce trovato dal miner "vincitore".
Nell'architettura decentralizzata delle blockchain, i singoli nodi della rete distribuita analizzano ogni blocco e ogni transazione in base allo stesso insieme di regole applicate durante il mining. Di conseguenza, le blockchain possono autocorreggersi perché i nodi ignoreranno qualsiasi blocco non valido a causa di un errore di costruzione o di un hash non conforme o semplicemente non corretto. Le criptovalute e altri sistemi blockchain sfruttano appieno questo fattore di costruzione del consenso della decentralizzazione della blockchain per implementare ulteriori meccanismi che complicano ancora di più i tentativi degli hacker di sovvertire il processo.
La combinazione di regole della Proof of Work ad alta intensità di calcolo e di processi di convalida dei blocchi basati sul consenso rappresenta un ostacolo insormontabile per un hacker che volesse modificare una transazione passata in una blockchain. Qualsiasi hacker che speri di ricostruire una catena partendo dal blocco modificato deve in qualche modo completare la Proof of Work a un ritmo più veloce della comunità dei miner. Gli hacker si trovano a dover rincorrere un'escalation di risorse messe in campo per incrementare la potenza di elaborazione: da computer sempre più veloci, alla potenza di calcolo delle schede grafiche (GPU), passando per gli FPGA (array di porte programmabili sul campo) per terminare con gli ASIC (circuiti integrati specifici per applicazioni) specializzati. Oltre all'ostacolo di un grande investimento in risorse informatiche, il solo consumo di energia elettrica che ne deriva sarebbe proibitivo.
Anche se riuscissero a superare gli ostacoli della potenza di calcolo e del consumo energetico, gli hacker probabilmente si vedrebbero rifiutare dai meccanismi basati sul consenso la loro catena modificata. Le differenze sostanziali nei risultati in una serie di blocchi sono poche e molto distanti tra loro, il che determina importanti "perturbazioni" nel sistema blockchain interessato che potenzialmente richiedono una rara hard fork che darebbe origine a una versione completamente nuova del sistema.
Autenticazione delle transazioni
Tutta la precedente discussione sulla struttura e sui processi della blockchain presume che le transazioni rappresentate da un Merkle tree in un blocco siano valide. Se delle transazioni non valide riescono in qualche modo a farsi strada nel sistema blockchain, sforzi come la Proof of Work e la convalida decentralizzata del blocco non servono a nulla. Infatti, la motivazione fondamentale per la tecnologia blockchain sta nella sua capacità di includere in modo affidabile un insieme di transazioni valide in una blockchain immutabile. Da questa prospettiva, la generazione del blocco inizia quando l'utente richiede una transazione. Al posto di un'autorità centrale che approva la transazione, la tecnologia blockchain si basa su metodi crittografici che utilizzano chiavi private di proprietà dell'utente richiedente.
Per avviare una richiesta, gli utenti la firmano digitalmente utilizzando le loro chiavi private e la inviano a un pool contenente altre transazioni non confermate (Figura 2). A questo punto il miner della blockchain estrae da questo pool una serie di transazioni non confermate e verifica che ogni richiesta provenga dal rispettivo proprietario della chiave privata utilizzando la chiave pubblica del richiedente inclusa in ogni transazione non confermata. Nelle criptovalute, le richieste di transazione con firme non valide vengono rapidamente scartate dai miner che tentano di superare altri miner che cercano di creare il blocco successivo nella catena.
Figura 2: Lo schema delle coppie di chiavi private/pubbliche fornisce la base per la firma della transazione nella blockchain da parte del richiedente (a sinistra) e la verifica da parte del miner della blockchain (a destra). (Immagine per gentile concessione di Wikimedia Commons/CC-BY-SA-3.0)
Assicurare che le chiavi private rimangano tali
Nell'architettura decentralizzata della blockchain, il possesso della chiave privata per una serie di transazioni garantisce la proprietà delle stesse. Non esiste servizio clienti pronto a rintracciare i fondi perduti o a rispettare le norme federali per il loro ripristino. Per questo motivo, la perdita o il furto di chiavi private sono spesso la causa di ingenti perdite di criptovaluta che trovano eco nei titoli dei media e gli analisti prevedono che questa tendenza continuerà.
Il fatto che la tecnologia blockchain si affidi fortemente alle chiavi private per la firma e la verifica delle transazioni impone inderogabilmente di proteggere questi segreti. Per l'utente, una chiave non perfettamente protetta è potenzialmente una porta aperta per la perdita di controllo della sua partecipazione a un sistema blockchain.
Gli hacker hanno utilizzato attacchi di phishing e altri approcci molto diffusi per accedere a chiavi private non criptate memorizzate in modo poco accorto su dispositivi mobili o nei computer. Spesso le chiavi criptate sono altrettanto vulnerabili. Il software di generazione delle chiavi consente di solito agli utenti di inserire una passphrase utilizzata per crittografare la chiave sul proprio dispositivo. Gli esperti di sicurezza hanno scoperto che questo approccio presenta un problema comune a tutti gli approcci basati su password: troppo spesso gli utenti criptano la chiave con una passphrase debole e facilmente intuibile.
Anche quando l'utente prende le necessarie precauzioni per la chiave privata, questa potrebbe già essere compromessa a causa di guasti nel software di generazione delle chiavi. I generatori di chiavi basati su software si affidano spesso a generatori di numeri casuali (RNG) che operano con modelli prevedibili che un pirata informatico può scoprire con un semplice script. Peggio ancora, errori di codifica o errori negli algoritmi di generazione delle chiavi possono lasciare chiavi vulnerabili per chiunque abbia familiarità con quella utilità software utilizzata per generarle.
Anche una perfetta implementazione di un robusto algoritmo non è garanzia di protezione. Gli utenti si trovano comunque davanti al rischio reale che il sistema che esegue il codice ideale stia anche eseguendo un software che è stato completamente violato dagli hacker. Durante l'esecuzione, il software di generazione delle chiavi condivide la memoria e i cicli del processore con il software compromesso, fornendo agli hacker la visibilità dei dati segreti.
I processori che offrono un ambiente di esecuzione fidato (TEE) forniscono un ulteriore grado di protezione eseguendo codice fidato e non fidato in spazi di esecuzione separati. Questo approccio riduce la possibilità che algoritmi e dati segreti come le chiavi private possano essere attaccati attraverso le vulnerabilità dei sistemi operativi, del middleware o di altre applicazioni.
Anche se progettati con funzioni di esecuzione sicura e protezione delle chiavi, molti dispositivi hardware restano vulnerabili agli attacchi fisici e a livello di microarchitettura più sofisticati. Gli attacchi a livello di microarchitettura sfruttano la debolezza del disegno del processore. Questo tipo di attacchi ha attirato una grande attenzione con Meltdown e Spectre, che sfruttano le vulnerabilità nell'accesso alla memoria del microprocessore e nell'elaborazione delle istruzioni.
Gli attacchi fisici possono essere messi in atto con exploit del canale laterale che monitorano il consumo di energia, le emissioni elettromagnetiche o le caratteristiche di temporizzazione allo scopo di esporre le informazioni protette. In altri attacchi fisici, gli hacker inducono guasti con i laser o causano problemi di alimentazione per "dedurre" segnali interni. Negli attacchi fisici più diretti, gli hacker scoperchiano i dispositivi a semiconduttore e utilizzano sonde nel tentativo di leggere dati e sequenze di istruzioni.
La protezione da questa vasta gamma di minacce alla sicurezza richiede un controllore di sicurezza che combina caratteristiche di sicurezza fondamentali con una protezione più profonda contro il ventaglio di metodi microarchitetturali e fisici utilizzati per attaccare i dispositivi a semiconduttori. Costruito intorno a questo tipo di controller di sicurezza, lo starter kit Blockchain Security 2Go (BLOCKCHAINSTARTKITTOBO1) di Infineon fornisce una soluzione immediata alla sfida critica della sicurezza delle chiavi private utilizzate per firmare le transazioni da inserire in una blockchain (Figura 3).
Figura 3: La smartcard Blockchain Security 2Go di Infineon semplifica la sicurezza della blockchain includendo la firma della transazione senza esporre chiavi private sensibili. (Immagine per gentile concessione di Infineon)
Invece di impegnare il loro tempo a creare metodi di firma sicura, gli integratori di sistemi blockchain possono semplicemente fornire agli utenti smartcard dello starter kit Blockchain Security 2Go o del pacchetto scheda Security 2GO 10 (BLOCKCHAIN10CARDSTOBO1), entrambi di Infineon.
Conclusione
La tecnologia blockchain ha un'ampia applicabilità, al di là delle criptovalute. Tuttavia, è anche complessa e dipende dalle chiavi private che non possono prescindere da solidi meccanismi di sicurezza per prevenire la perdita di controllo delle transazioni degli utenti e la compromissione del sistema blockchain.
I progettisti potrebbero dedicare tempo alla realizzazione di metodi di firma sicura, ma lo starter kit Blockchain Security 2Go di Infineon fornisce una soluzione di sicurezza chiavi in mano che fa risparmiare tempo e risorse.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.



