Primo piano di un chip OpenTitan stilizzato con sovrapposte delle strutture a reticolo luminose (lattice structures) e uno scudo digitale, simboleggiando la sicurezza post-quantistica integrata. Prime lens, 35mm, depth of field, duotone blu e argento, illuminazione high-tech.

OpenTitan a Prova di Futuro Quantistico: Acceleriamo la Crittografia Post-Quantum!

Ciao a tutti! Oggi voglio parlarvi di qualcosa che mi appassiona tantissimo e che sta diventando cruciale nel mondo della sicurezza informatica: la crittografia post-quantistica (PQC). Sapete, i computer quantistici, quelli super potenti di cui si sente parlare, rappresentano una minaccia seria per i sistemi crittografici che usiamo oggi, come RSA ed ECC. Non sono ancora pronti per “rompere” tutto su larga scala, ma il rischio c’è, ed è meglio prepararsi prima che sia troppo tardi!

Ecco perché negli ultimi anni la ricerca sulla PQC ha preso il volo. Il NIST (National Institute of Standards and Technology) negli Stati Uniti ha persino lanciato una competizione per standardizzare nuovi algoritmi resistenti ai computer quantistici. Tra i finalisti ci sono nomi come CRYSTALS-Dilithium, Falcon, SPHINCS+ per le firme digitali e CRYSTALS-Kyber per l’incapsulamento delle chiavi. Molti di questi si basano su una matematica affascinante chiamata “crittografia basata su reticoli” (lattice-based cryptography).

La Sfida: Portare la PQC su Piattaforme Reali come OpenTitan

Ok, avere algoritmi PQC è fantastico, ma poi bisogna implementarli in modo sicuro ed efficiente sui dispositivi che usiamo tutti i giorni. Qui entra in gioco OpenTitan. Si tratta di un progetto open-source per creare un “Root of Trust” (RoT) in silicio, una sorta di guardiano digitale super sicuro all’interno di un chip. Pensate che verrà integrato persino nei Chromebook di Google!

Un RoT ha compiti delicatissimi, come avviare il sistema in modo sicuro (secure boot) o gestire gli aggiornamenti del firmware, impedendo a malintenzionati di eseguire codice malevolo. È fondamentale che questi RoT siano “a prova di futuro”, cioè capaci di resistere anche agli attacchi quantistici. E qui casca l’asino: OpenTitan è forte sulla crittografia tradizionale e ha contromisure contro attacchi fisici, ma non ha un supporto dedicato per la PQC basata su reticoli.

La Nostra Soluzione: Potenziare l’OTBN di OpenTitan

Ed è qui che siamo entrati in gioco noi! Ci siamo chiesti: come possiamo rendere OpenTitan pronto per la PQC? La nostra idea è stata quella di potenziare uno dei suoi componenti chiave: l’OpenTitan Big Number Accelerator (OTBN). L’OTBN è un co-processore specializzato proprio nella crittografia a chiave pubblica (PKC), ma pensato per RSA ed ECC, che lavorano con numeri molto grandi (big integers).

La PQC basata su reticoli, invece, richiede operazioni diverse, soprattutto sull’aritmetica dei polinomi e sul campionamento (sampling) di numeri casuali in modo specifico. Quindi, abbiamo progettato delle estensioni al set di istruzioni (ISA) dell’OTBN e abbiamo aggiunto degli acceleratori hardware dedicati:

  • Una Post-Quantum Arithmetic Logic Unit (PQ-ALU) configurabile per gestire l’aritmetica polinomiale usata in Dilithium, Kyber e Falcon.
  • Estensioni basate su Keccak (l’algoritmo dietro SHA-3) per rendere più veloce il campionamento dei polinomi.

Integrando queste estensioni direttamente nell’OTBN, possiamo sfruttare le sue risorse e le sue misure di sicurezza esistenti, rendendo l’accelerazione PQC efficiente e sicura contro attacchi fisici.

Macro fotografia di un microchip complesso, focalizzata su un'unità logico-aritmetica (ALU) illuminata all'interno dell'architettura OTBN. Macro lens, 90mm, high detail, precise focusing, controlled lighting, riflessi metallici bluastri.

Prima Tentativa: Kronecker+ sull’OTBN Originale

Prima di tuffarci nelle modifiche hardware, abbiamo esplorato se fosse possibile implementare la PQC usando solo le capacità esistenti dell’OTBN. Abbiamo provato una tecnica chiamata Kronecker+, che cerca di mappare l’aritmetica polinomiale su operazioni con numeri grandi, quelle per cui l’OTBN è già bravo.

Abbiamo implementato la moltiplicazione polinomiale per Dilithium usando Kronecker+ sull’OTBN. I risultati? Beh, era meglio di un’implementazione software pura sul processore principale di OpenTitan (un core Ibex), ma non abbastanza veloce. Era persino più lenta di implementazioni ottimizzate su processori comuni come l’ARM Cortex-M4. Abbiamo capito che, sebbene Kronecker+ sia interessante, l’architettura specifica dell’OTBN (con il suo moltiplicatore e le istruzioni disponibili) non era ideale per sfruttarla al massimo. Questo ci ha convinto ancora di più della necessità di estensioni hardware dedicate.

Dentro le Estensioni: PQ-ALU e Keccak Unit (KU)

Entriamo un po’ più nel tecnico, ma cercherò di essere semplice!
La nostra PQ-ALU è progettata per essere flessibile. Ha un percorso dati a 32 bit (più largo di altri approcci) per supportare meglio i numeri primi più grandi usati in alcuni schemi PQC come Dilithium. Può eseguire le operazioni “farfalla” (butterfly operations) che sono il cuore della Trasformata Veloce di Numero Teorico (NTT), un algoritmo super efficiente per moltiplicare polinomi. Supporta sia la variante Cooley-Tukey (CT) che Gentleman-Sande (GS). Inoltre, può fare addizioni, sottrazioni e moltiplicazioni modulari generiche, configurabili al volo per diversi numeri primi (moduli).

Per il campionamento, che in molti schemi PQC usa funzioni come SHAKE128/SHAKE256 (basate su Keccak), abbiamo creato la Keccak Unit (KU). Invece di implementare un intero round di Keccak in un ciclo (che richiederebbe troppe risorse e sarebbe complesso da integrare in modo sicuro nell’OTBN), abbiamo seguito un approccio più generico, ispirato a lavori precedenti ma adattato ai registri larghi (256 bit) dell’OTBN. La KU ha istruzioni che operano su “lane” (64 bit) e “plane” (320 bit) dello stato interno di Keccak, ottimizzando i passi principali ((theta), (rho), (pi), (chi), (iota)).

Schema astratto che illustra il flusso di dati all'interno della Keccak Unit (KU), con blocchi che rappresentano le operazioni sui 'lane' e 'plane' dello stato Keccak. Linee luminose indicano il percorso dei dati, sfondo high-tech.

Abbiamo anche aggiunto due piccole unità “intelligenti”:

  • TRCU (Twiddle and Round Counter Update unit): Gestisce costanti importanti come i “twiddle factors” per l’NTT e i contatori di round per Keccak, calcolandone alcuni al volo per risparmiare memoria.
  • RAU (Register Address Unit): Calcola automaticamente gli indirizzi dei registri e gli indici necessari per le operazioni NTT, semplificando il codice.

Queste unità lavorano in parallelo, rendendo le nostre nuove istruzioni PQC molto efficienti.

Nuove Istruzioni per l’OTBN

Abbiamo esteso l’ISA dell’OTBN con nuove istruzioni per usare questi acceleratori. Ci sono istruzioni che specificano direttamente i registri da usare (direct addressing) per operazioni aritmetiche semplici o passi di Keccak. Ma la vera chicca sono le istruzioni con indirizzamento indiretto (indirect addressing). Qui, è la RAU a dire quali dati prendere dai registri larghi (WDR). Questo è super utile per l’NTT: invece di scrivere una riga di codice per ogni operazione farfalla (che sarebbero tantissime!), possiamo usare cicli hardware e riutilizzare la stessa istruzione farfalla più volte, mantenendo il codice compatto. Queste istruzioni possono anche aggiornare automaticamente i twiddle factors nella TRCU, tutto nello stesso ciclo di clock!

Alla Prova dei Fatti: Verificare Firme Dilithium e Falcon

Ok, belle le estensioni, ma funzionano? Per dimostrarlo, ci siamo concentrati su un compito fondamentale per un RoT: la verifica delle firme digitali. Abbiamo implementato le procedure di verifica per due degli algoritmi standardizzati dal NIST: Dilithium e Falcon.

Per Dilithium (livelli di sicurezza II, III e V), la nostra implementazione sull’OTBN esteso è stata un successo! Siamo riusciti a verificare una firma Dilithium-II in circa 911.000 cicli di clock. Considerando la frequenza target di OpenTitan (100 MHz), questo significa scendere sotto i 10 millisecondi! Un risultato che, come avevamo visto con Kronecker+, non sarebbe stato raggiungibile senza le nostre estensioni hardware. Rispetto a un’implementazione software pura su OpenTitan, abbiamo ottenuto speed-up notevoli (da 3.98x a 5.01x a seconda del livello di sicurezza). Anche rispetto a implementazioni che usano l’acceleratore Keccak (KMAC) già presente in OpenTitan, siamo risultati più veloci (speed-up da 1.30x a 1.34x).

Grafico a barre digitale futuristico che mostra un netto miglioramento delle prestazioni per la verifica della firma Dilithium sull'OTBN esteso (colonna blu molto più bassa) rispetto alle implementazioni software e KMAC (colonne rosse). Schermo olografico, sharp focus, sfondo scuro.

Per Falcon (livelli 1 e 5, cioè Falcon-512 e Falcon-1024), la storia è un po’ diversa. L’algoritmo di verifica di Falcon è intrinsecamente più compatto e ha meno parti computazionalmente intensive dove i nostri acceleratori possono fare la differenza (principalmente una moltiplicazione polinomio-polinomio). Abbiamo comunque ottenuto un miglioramento rispetto al software puro (speed-up di 1.71x e 1.29x) e all’uso del solo KMAC (1.12x e 1.13x), ma più moderato. La verifica di Falcon-512 richiede circa 760.000 cicli, quindi anche qui siamo sotto i 10 ms. Questo ci dice che l’impatto dell’accelerazione hardware dipende molto dalla struttura dell’algoritmo PQC specifico.

Quanto Costa? L’Impatto Hardware

Aggiungere hardware ha un costo in termini di area sul chip e consumo energetico. Abbiamo valutato l’impatto delle nostre estensioni sia su FPGA (la piattaforma di sviluppo ufficiale di OpenTitan) che simulando una produzione ASIC a 22nm.

La buona notizia è che l’aumento di area è molto contenuto. Le nostre estensioni aggiungono circa 437 kGE (kilo Gate Equivalents), che rappresentano solo il 2.93% dell’area totale del RoT OpenTitan. Certo, l’OTBN stesso cresce di più in proporzione, ma visto che OpenTitan è un design già grande e complesso, l’impatto complessivo è piccolo. E non abbiamo compromesso la frequenza di clock target di 100 MHz. Questo dimostra che è fattibile integrare un supporto PQC efficiente senza stravolgere il design.

Conclusioni: OpenTitan è Pronto per il Futuro Quantistico!

Quindi, cosa abbiamo ottenuto? Abbiamo dimostrato che è possibile, e pratico, estendere un sistema complesso come il RoT OpenTitan per supportare la crittografia post-quantistica basata su reticoli in modo efficiente. Le nostre estensioni all’OTBN, con la PQ-ALU e la KU, permettono di accelerare significativamente operazioni critiche come la verifica delle firme Dilithium e Falcon, portandole sotto la soglia dei 10 ms, il tutto con un overhead di area minimo.

Questo è un passo importante per rendere i dispositivi futuri, che si affideranno a RoT come OpenTitan, sicuri contro la minaccia quantistica. Permette anche di implementare firme “ibride” (che combinano un algoritmo classico e uno PQC), come raccomandato da alcune agenzie di sicurezza, per una transizione più graduale. E la cosa migliore? Essendo OpenTitan un progetto open-source, le nostre estensioni sono disponibili pubblicamente (su GitHub!) perché altri possano usarle, studiarle e migliorarle. Il futuro della sicurezza è post-quantistico, e noi abbiamo contribuito a preparare una delle sue fondamenta!

Fonte: Springer

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *