IT202000013390A1 - Una piattaforma informatica per prevenire attacchi ai canali laterali - Google Patents

Una piattaforma informatica per prevenire attacchi ai canali laterali Download PDF

Info

Publication number
IT202000013390A1
IT202000013390A1 IT102020000013390A IT202000013390A IT202000013390A1 IT 202000013390 A1 IT202000013390 A1 IT 202000013390A1 IT 102020000013390 A IT102020000013390 A IT 102020000013390A IT 202000013390 A IT202000013390 A IT 202000013390A IT 202000013390 A1 IT202000013390 A1 IT 202000013390A1
Authority
IT
Italy
Prior art keywords
data
instruction
value
program
stage
Prior art date
Application number
IT102020000013390A
Other languages
English (en)
Inventor
William Fornaciari
Davide Zoni
Original Assignee
Milano Politecnico
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Milano Politecnico filed Critical Milano Politecnico
Priority to IT102020000013390A priority Critical patent/IT202000013390A1/it
Priority to EP21728095.7A priority patent/EP4162641A1/en
Priority to US18/008,207 priority patent/US20230318802A1/en
Priority to PCT/EP2021/064711 priority patent/WO2021245101A1/en
Publication of IT202000013390A1 publication Critical patent/IT202000013390A1/it

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/005Countermeasures against attacks on cryptographic mechanisms for timing attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)
  • Pallets (AREA)
  • Air Bags (AREA)
  • Storage Device Security (AREA)

Description

Titolo: ?Una piattaforma di calcolo per impedire attacchi del canale laterale?.
DESCRIZIONE
Campo tecnico
La presente invenzione riguarda una piattaforma di calcolo per impedire attacchi del canale laterale, secondo il preambolo della rivendicazione 1.
Stato dell?arte
Gli attacchi del canale laterale (SCA) rappresentano una delle minacce pi? significative alla sicurezza dei sistemi incorporati, i quali supervisionano un numero crescente di compiti nell?era moderna, profondamente interconnessa.
Nella sicurezza informatica, un attacco del canale laterale ? qualsiasi attacco che mira a recuperare la chiave segreta della primitiva crittografica.
Anzich? sfruttare qualsiasi debolezza nella formulazione matematica, ossia, nell?algoritmo, del crittosistema, gli attacchi del canale laterale fanno affidamento sulla relazione tra informazioni diffuse (fuoriuscite) attraverso un canale laterale e i dati che vengono calcolati.
A seconda della metodologia di attacco, gli attacchi del canale laterale si suddividono in due classi, ossia SCA i) basati su microarchitettura e ii) basati su diffusione.
Gli SCA basati su microarchitettura non richiedono una prossimit? fisica alla piattaforma mentre le applicazioni spia malevole o cooperanti devono essere collocate/eseguite sulla medesima piattaforma con l?applicazione vittima.
Invece, gli SCA basati su diffusione richiedono una prossimit? fisica al dispositivo bersaglio senza la necessit? di eseguire alcuna applicazione spia su tale bersaglio. Gli attacchi del canale laterale (SCA) basati su diffusione, noti anche come attacchi passivi non invasivi, misura il tempo di esecuzione o il consumo energetico o il campo elettromagnetico del dispositivo vittima senza alterarlo in modo permanente e perci? non lasciano dietro di s? alcuna traccia di attacco.
Tradizionalmente, le primitive e i protocolli crittografici si sono dimostrati i mezzi primari per fornire le caratteristiche di sicurezza summenzionate in modo efficace ed efficiente.
Tuttavia, la progettazione orientata verso la sicurezza dei sistemi incorporati nell?era dell?IoT deve tenere in considerazione sia la forza matematica sia la resistenza contro gli SCA delle primitive e dei protocolli crittografici impiegati.
In particolare, la rivoluzione dell?IoT mette a disposizione un mondo digitale fatto di miliardi di dispositivi interconnessi che raccolgono, elaborano e trasmettono costantemente flussi di dati in cui alcuni di essi sono privati o sensibili.
Pertanto, i calcoli critici o l?elaborazione di dati critici non dovrebbe avvenire in un Calcolo ad Alte Prestazioni (HPC) reso sicuro in modo fisico o in sedi di Centri di dati, ma ? delegato a dispositivi IoT per cui non ? fornita alcuna protezione fisica verso un qualsiasi attaccante.
In questo scenario, gli attacchi del canale laterale consentono di recuperare la chiave segreta anche in presenza di una primitiva o di un protocollo crittografico matematicamente sicuro, poich? essi funzionano mettendo in correlazioni i dati che vengono elaborati e un parametro ambientale, ossia, il canale laterale, generato dalla piattaforma di calcolo durante l?esecuzione delle primitive crittografiche.
In particolare, un attacco del canale laterale di successo sfrutta possibilit? di impadronirsi fisicamente del dispositivo bersaglio per misurare il segnale di canale laterale selezionato.
Per carpire informazioni di valore da una piattaforma di calcolo che esegue una primitiva crittografica, la letteratura evidenzia svariati canali laterali sfruttabili, ad es. tempistica, luce e calore.
Il consumo energetico o le emissioni elettromagnetiche (EM) correlate delle piattaforme di calcolo sono risultati essere i segnali di canale laterale pi? sfruttati in assoluto in quanto sono facili da misurare e sempre disponibili una volta che l?attaccante controlla fisicamente il dispositivo.
Considerando la piattaforma di calcolo, ? ben noto che i segnali sia dell?EM sia del consumo energetico ? in correlazione con i modelli di attacco di potenza a grana grossa che misura il Peso di Hamming (HW) di un valore di dati condotto su un cavo fisico o la Distanza di Hamming (HD) di due valori di dati che sono serializzati consecutivamente sullo stesso cavo fisico.
Con riferimento a Figura 1A, ? mostrato un metodo per rendere sicure implementazioni software di primitive crittografiche su sistemi incorporati a basso costo, contro attacchi del canale laterale passivi, ossia, un?analisi di potenza differenziale (DPA), facendo affidamento sull?osservazione di consumo energetico o emissioni elettromagnetiche (maggiori dettagli possono essere trovati nella pubblicazione ?G. Agosta, A. Barenghi, G. Pelosi and M. Scandale, "The MEET Approach: Securing Cryptographic Embedded Software Against Side Channel Attacks," in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 34, no. 8, pp. 1320-1333, Agosto.2015, doi: 10.1109/TCAD.2015.2430320?).
Il metodo proposto di Figura 1A ? implementato in corrispondenza di un livello di software e consiste di tre parti. Innanzitutto, una toolchain di compilatore modificata ? usata per generare automaticamente un numero binario sicuro della primitiva crittografica casualizzando il flusso di esecuzione. In secondo luogo, un nuovo metodo di aggiornare i valori casuali impiegato negli approcci con suddivisione di share per ricercare una protezione di tavola. Infine, un approccio automatico per proteggere azioni di versamento sulla memoria principale, le quali sono inserite dall?allocatore del registro back-end di compilatore quando vi ? una mancanza di registri disponibili, pertanto, rimuovendo la necessit? di un?ispezione di assemblaggio manuale.
Queste contromisure di software mettono a disposizione una scarsa prestazione e devono essere implementate per qualsiasi applicazione crittografica eseguita, costringendo pertanto a lunghi cicli di sviluppo per proteggere nuovi algoritmi.
Con riferimento a Figura 1B, ? mostrata una contromisure basata su attuatore per rendere sicura una piattaforma di calcolo verso attacchi del canale laterale usando a proprio vantaggio l?attuatore di dimensionamento della tensione dinamica (DVS) (maggiori dettagli possono essere trovati nella pubblicazione ?K. Baddam and M. Zwolinski, "Evaluation of Dynamic Voltage and Frequency Scaling as a Differential Power Analysis Countermeasure," 20th International Conference on VLSI Design held jointly with 6th International Conference on Embedded Systems (VLSID'07), Bangalore, 2007, pp. 854-862, doi: 10.1109/VLSID.2007.79?). Per rompere il legame tra il consumo energetico o le emissioni elettromagnetiche e i dati che vengono elaborati dalla piattaforma di calcolo, le contromisure genera fluttuazioni casuali della tensione di alimentazione. A questo fine, la contromisura costringe ad un consumo energetico dipendente dal tempo per l?esecuzione delle medesime istruzioni con i medesimi dati di programma.
Queste contromisure basate su attuatore hanno gli svantaggi che la piattaforma di calcolo deve implementare il DVS. Gli FPGA Xilinx implementa solo l?attuatore di dimensionamento della frequenza dinamica. Inoltre, il DVS ? generalmente impiegato per supportare ottimizzazioni di efficienza del tempo di compilazione. A questo fine, l?uso dell?attuatore di DVS per rendere sicura la piattaforma di calcolo impedisce qualsiasi ottimizzazione di efficienza basata su DVS in corrispondenza di un tempo di compilazione Con riferimento a Figura 1C, ? mostrata una contromisura basata su acceleratore (maggiori dettagli possono essere trovati nella pubblicazione ?Hannes Gross, Stefan Mangard, and Thomas Korak. 2016. Domain-Oriented Masking: Compact Masked Hardware Implementations with Arbitrary Protection Order. In Proceedings of the 2016 ACM Workshop on Theory of Implementation Security (TIS ?16). Association for Computing Machinery, New York, NY, USA, 3. DOI:https://doi.org/10.1145/2996366.2996426?).
L?acceleratore ACC ? implementato in hardware ed ? usato per effettuare calcoli crittografici resistenti al canale laterale come componente autonomo o come parte di una piattaforma di calcolo complessa come quella in Fig.1.C.
Tradizionalmente, l?uso di implementazioni hardware resistenti al canale laterale di primitive crittografiche standard rappresenta una soluzione praticabile per mettere a disposizione una sicurezza di canale laterale. Rispetto a piattaforme di calcolo di uso generale, l?acceleratore implementa un singolo algoritmo pertanto il processo di rendere sicura la propria implementazione verso attacchi del canale laterale ? relativamente semplice.
Queste contromisure basate su acceleratore hanno gli svantaggi di proteggere specifiche implementazioni e perci? vi ? una mancanza di flessibilit? in termini di algoritmi usati, l?impossibilit? di aggiornare le implementazioni hardware protette e lunghi cicli di sviluppo per proteggere nuovi algoritmi. Inoltre, gli algoritmi crittografici sono solitamente solo una parte di un sistema incorporato che funziona su patrimoni informativi. Una protezione solo di questa parte di un sistema non ? pertanto sufficiente per la maggioranza delle applicazioni critiche di sicurezza incorporate.
Con riferimento a Figura 1D, ? mostrata una piattaforma di calcolo di uso generale sicura che usa a proprio vantaggio schemi di mascheramento (maggiori dettagli possono essere trovati nella pubblicazione ?Gross H., Jelinek M., Mangard S., Unterluggauer T., Werner M. (2017) Concealing Secrets in Embedded Processors Designs. In: Lemke-Rust K., Tunstall M. (eds) Smart Card Research and Advanced Applications. CARDIS 2016. Lecture Notes in Computer Science, vol 10146. Springer, Cham, doi https://doi.org/10.1007/978-3-319-54669-8?). Questa piattaforma di calcolo di uso generale sicura presenta una piattaforma di calcolo resistente al canale laterale che impiega lo schema di mascheramento orientato al dominio presentato in ?Hannes Gross, Stefan Mangard, and Thomas Korak. 2016. Domain-Oriented Masking: Compact Masked Hardware Implementations with Arbitrary Protection Order. In Proceedings of the 2016 ACM Workshop on Theory of Implementation Security (TIS ?16). Association for Computing Machinery, New York, NY, USA, 3. DOI:https://doi.org/10.1145/2996366.2996426?).
Va notato che questo contributo allo stato dell?arte non mostra come rendere sicura l?intera piattaforma di calcolo, ma solo la CPU.
Va anche notato che l?atto di osservare due valori di dati che sono serializzati consecutivamente sui medesimi cavi fisici ? noto come effetto di serializzazione dei dati. Considerando una piattaforma di calcolo che esegue un programma informatico per mezzo di una CPU programmabile, l?effetto di serializzazione dei dati pu? essere dovuto i) all?esecuzione di due istruzioni consecutive che serializzano consecutivamente due valori di dati, ossia, uno per ciascuna istruzione, sul medesimo cavo fisico, o ii) al comportamento con glitch della microarchitettura quando ? eseguita una singola istruzione del programma informatico. ? meritevole di nota il fatto che il comportamento con glitch ? una propriet? della piattaforma di calcolo implementata che sorge a partire dall?impossibilit? di avere il medesimo ritardo di propagazione per tutti i segnali di input di un blocco logico combinatorio.
Considerando i circuiti digitali, il ritardo di propagazione ? suddiviso tra ritardo di interconnessione (propagazione) e ritardo di porta/logico (propagazione). Il ritardo di interconnessione misura il tempo dalla conduzione iniziale di un valore di dati su un cavo fisico e il suo arrivo nell?altra estremit? di tale cavo. Data una porta logica, il suo ritardo di propagazione misura il tempo dal valore stabile del suo input fino alla transizione del suo output.
A questo fine, con riferimento anche a Figura 2A, ? mostrato un modulo combinatorio a quattro input A, B, C e D quale un multiplatore MUX, avente un segnale selettore S con due bit, ossia S0, S1. I due bit S0, S1 del segnale selettore S sono usati per condurre uno dei quattro input A, B, C e D ad un output OUT. Il multiplatore MUX implementa un circuito combinatorio.
? meritevole di nota il fatto che se il modulo combinatorio MUX implementa una singola funzione booleana il segnale S non ? necessario. In generale, il segnale S ? usato per specificare una multiplazione/demultiplazione (MUX) o una funzione di opcode (OPCODE).
Considerando un modulo combinatorio che implementa molteplici funzioni booleane, ad es., un?Unit? aritmetico-logica (ALU) in una CPU di piattaforma di calcolo, la funzione OPCODE per un segnale S specifica al modulo combinatorio di effettuare un?elaborazione specifica del valore di dati di input tra tutte le funzionalit? di elaborazione dei dati di input implementate.
Ora, nuovamente con riferimento a Figura 2A e presupponendo che l?evoluzione temporale dei dati richieda quanto segue:
- in corrispondenza di un tempo T0 l?output OUT ? uguale all?input A che ? il valore logico del selettore S0 uguale a zero nonch? per il selettore S1, ossia uguale a zero e - in corrispondenza di un tempo T1 l?output OUT ? uguale all?input D che ? il valore logico del selettore S0 uguale a uno nonch? per il selettore S1, ossia uguale a uno, Vi ? una differenza tra l?evoluzione ideale e reale delle transizioni dell?output OUT da un tempo T0 ad un tempo T1. Questo per via della presenza di glitch causati dall?implementazione fisica del modulo combinatorio.
Infatti, con riferimento a Figura 2B, ? mostrata l?evoluzione temporale dei segnali di interesse, ossia, OUT e S0, S1, tra gli istanti temporali T0 e T1 nello scenario ideale. Come mostrato, la transizione di tutti i segnali e i valori ? istantanea e perfettamente allineata.
Al contrario, e con riferimento a Figura 2C, ? mostrata la medesima evoluzione temporale considerando il ritardo di propagazione dovuto all?implementazione fisica del multiplatore considerato. In particolare, in corrispondenza di un tempo TG, il selettore S0 mostra un ritardo di propagazione minore rispetto al selettore S1. Pertanto, la serie di valori di dati effettiva condotta sul segnale OUT ? A=>B=>D.
Come ci si aspettava, il valore finale D dimostra una semantica del circuito corretta, ma, da un punto di vista della sicurezza, devono essere analizzate due transizioni per una fuoriuscita di informazioni su canale laterale anzich? una sola.
Non considerando alcun ritardo di propagazione (si veda Fig. 2B), l?analisi di sicurezza richiede di analizzare la vulnerabilit? del canale laterale tenendo conto della relativa variazione di consumo energetico dovuta all?attivit? di commutazione uguale alla distanza di Hamming (HD) tra A e D, ossia HD(A,D).
Inoltre, ? ben noto che i segnali sia dell?EM sia del consumo energetico sono in correlazione con i modelli di attacco di potenza a grana grossa che misura il Peso di Hamming (HW) di un valore di dati condotto su un cavo fisico o la Distanza di Hamming (HD) di due valori di dati che sono serializzati consecutivamente sullo stesso cavo fisico.
Come ? noto, la Distanza di Hamming misura il numero di flip dei bit tra due valori condotti o archiviati in cicli di clock consecutivi su cavi o elementi di memoria, rispettivamente. Un tale modello richiede che l?attaccante abbia ulteriori informazioni rispetto ad una ottenibile semplicemente prevedendo un valore intermedio dell?algoritmo.
In particolare, l?attaccante dovrebbe essere a conoscenza della microarchitettura dettagliata della piattaforma di calcolo bersaglio e per ciascun cavo (elemento di memoria) dell?esatta sequenza di valori di dati condotti (archiviati) su di esso.
Tuttavia, dato il fatto che, nella pratica, l?attaccante pu? non conoscere la struttura del dispositivo che viene bersagliato con una precisione sufficiente a determinare quali elementi combinatori e quali sequenziali sono presenti, un modello a consumo energetico alternativo comunemente impiegato ? il Peso di Hamming (HW) di un valore intermedio che viene calcolato dall?algoritmo. Questo modello ? destinato a catturare la potenza dissipata dalle porte logiche in un caricamento del loro carico di uscita ed ? definito in letteratura come fuoriuscita di valore. In particolare, dato un circuito logico che calcola un valore, la sua fuoriuscita di valore ? definita come la porzione del comportamento di canale laterale dipendente dal numero di segnali che viene impostato durante il calcolo summenzionato, ossia il peso di Hamming del valore calcolato.
Invece, lo scenario reale che considera il ritardo di propagazione (si veda Fig. 2C) impone di analizzare la Distanza di Hamming tra i valori A e B e anche tra i valori B e D, ossia in forma breve HD(A,B), HD(B,D).
? meritevole di nota il fatto che ? impossibile fare una previsione del ritardo di propagazione di ciascun segnale in un circuito digitale, pertanto il numero di possibili glitch aumenta con la complessit? del dispositivo combinatorio.
Dal documento WO 2017/105606, ? anche noto l?uso di un ?pulitore? per impedire a dati sensibili inviati consecutivamente attraverso risorse potenzialmente vulnerabili di mantenere possibili correlazioni statistiche. La soluzione descritta fa riferimento anche all?uso coordinato del compilatore per inserire operazioni ?di pulizia? in corrispondenza di punti appropriati nell?esecuzione del codice.
Tuttavia, il documento WO 2017/105606 questa tecnica non protegge contro vulnerabilit? ai glitch.
Problema dell?arte antecedente
Dato un modulo combinatorio che conduce il cavo w a singolo bit, il glitch su w ? una transizione di breve durata del valore di dati condotto su w dovuta alla tempistica diversa dei percorsi che compongono il modulo combinatorio. In particolare, un percorso combinatorio pi? veloce pu? provocare una sequenza di aggiornamenti di dati consecutivi sul w anche se il valore finale, ossia, stabile, condotto ? quello semanticamente corretto per il circuito combinatorio progettato.
I glitch contribuiscono notevolmente al consumo energetico di una logica CMOS digitale pertanto devono essere tenuti in considerazione nella progettazione di contromisure verso SCA a livello di microarchitettura.
Obiettivo dell?invenzione
In questo contesto, l?obiettivo tecnico della presente invenzione ? fornire una piattaforma di calcolo in grado di superare le limitazioni e gli svantaggi degli approcci dello stato dell?arte descritti fino ad ora.
L?obiettivo tecnico specificato e gli intenti specificati sono raggiunti sostanzialmente mediante una piattaforma di calcolo per impedire attacchi del canale laterale comprendente le caratteristiche tecniche descritte in una o pi? delle rivendicazioni allegate.
Vantaggi dell?invenzione
Grazie alla piattaforma di calcolo secondo la presente invenzione, ? possibile proteggere l?intera piattaforma di calcolo da attacchi del canale laterale, in maniera completamente trasparente rispetto al programma informatico per assicurare una scalabilit? e una flessibilit? totali. Quindi qualsiasi modifica del programma informatico non avr? conseguenze sulla resistenza ad attacchi del canale laterale.
Inoltre, grazie alla piattaforma di calcolo della presente invenzione ? possibile risolvere il problema dei glitch che potrebbero causare una fuoriuscita di informazioni su canale laterale nel caso in cui la piattaforma di calcolo usi solo un?istruzione di programma mediante un inserimento in corrispondenza del livello di hardware, in un modo completamente trasparente al programma informatico in quanto i cambiamenti sono interni alla piattaforma di calcolo, delle istruzioni appropriate che eliminano una correlazione del consumo energetico rispetto all?elaborazione della chiave portata a termine nelle crittoprimitive.
Inoltre, grazie alla piattaforma di calcolo della presente invenzione ? possibile risolvere il problema di una serializzazione di dati di una coppia di istruzioni di programma che viene eseguita consecutivamente, nonch? della serializzazione di dati dovuta a due scritture consecutive di dati di programma nella medesima cella di memoria, mediante morphing delle istruzioni eseguite. In particolare, istruzioni ISA aggiuntive, ad hoc, legali sono create nello stadio di decodifica in modo da debellare la serializzazione di dati.
Inoltre, un comportamento di morphing specifico che cambia le istruzioni di programma effettivamente eseguite assicurando comunque la medesima semantica del programma informatico originale ? adottato per impedire qualsiasi fuoriuscita di informazioni su canale laterale di istruzioni di caricamento e di archiviazione.
BREVE DESCRIZIONE DEI DISEGNI
Ulteriori caratteristiche e vantaggi della presente invenzione appariranno pi? chiaramente a partire dalla descrizione indicativa, e perci? non limitativa, di una forma di realizzazione preferita, ma non esclusiva, della piattaforma di calcolo come illustrata nei disegni allegati in cui:
- Figure 1A-1D mostrano le contromisure nello stato dell?arte classificate in quattro insiemi secondo il livello della loro implementazione nella pila di hardware-software, secondo l?arte antecedente;
- Figura 2A mostra un multiplatore con quattro input di dati, ossia, A, B, C e D, un input di selettore, ossia S, e un output, ossia OUT, secondo l?arte antecedente;
- Figura 2B mostra l?evoluzione temporale dei segnali di interesse del multiplatore di Figura 2A nel caso ideale;
- Figura 2C mostra l?evoluzione temporale dei segnali di interesse del multiplatore di Figura 2A nel caso reale;
- Figura 3 mostra lo schema di una piattaforma di calcolo modificata secondo la presente invenzione;
- Figura 4A mostra un diagramma a blocchi di due moduli combinatori, secondo l?arte antecedente;
- Figure 4B-4D mostrano il diagramma a blocchi di Figura 3A dove gli input di dati condivisi sono stati fisicamente disaccoppiati, secondo la presente invenzione;
- Figura 5 mostra la vista dell?architettura del file di registro protetto (PRF) della piattaforma di calcolo di Figura 3, secondo la presente invenzione.
DESCRIZIONE DETTAGLIATA
Anche quando ci? non ? affermato espressamente, le caratteristiche individuali come descritte con riferimento alle forme di realizzazione particolari vanno intese come supplementari a e/o intercambiabili con altre caratteristiche descritte con riferimento ad altre forme di realizzazione esemplificative.
Nel prosieguo nel presente documento sono fornite alcune definizioni a scopo di chiarificazione della descrizione dettagliata.
La logica sequenziale definisce un tipo di circuito logico digitale il cui output dipende non solo dal valore presente dei propri segnali di input, ma anche dalla sequenza di input passati, dallo storico degli input.
Considerando una piattaforma di calcolo programmabile, il registro inter-stadio, il file di registro RF sono elementi sequenziali. Inoltre, la memoria ? un elemento sequenziale nella piattaforma di calcolo.
Il modulo combinatorio definisce un tipo di circuito logico digitale il cui output ? una funzione pura solamente dell?input presente.
La funzione booleana ? una funzione in matematica e logica i cui argomenti, nonch? la funzione stessa, assumono valori a partire da un insieme di due elementi (solitamente {0,1}). In generale, la funzione booleana ? definita per mezzo della tavola della verit? la quale specifica l?output della funzione per ciascuna combinazione dei valori di input.
L?espressione booleana definisce una possibile implementazione di una data funzione booleana per mezzo di porte logiche. ? meritevole di nota il fatto che una funzione booleana pu? essere implementata da un numero infinito di espressioni booleane. Per esempio, data una funzione booleana definita dalla propria tavola della verit?, la prima forma canonica, ossia, una somma di prodotti, definisce l?espressione booleana usando a proprio vantaggio solamente le porte AND, OR e NOT.
Un valore casuale ? un dato non sensibile generato dalla contromisura e usato per separare la serializzazione di due dati (D) o di un dato (D) e un riferimento (REF), che appaiono in qualsiasi ordine, che sono condotti consecutivamente sul medesimo cavo o che sono archiviati consecutivamente nel medesimo elemento di memoria.
Un valore di dati di programma ? qualsiasi informazione, possibilmente sensibile, elaborata dalla piattaforma di calcolo durante l?esecuzione dell?applicazione bersaglio, ossia, della primitiva crittografica da cui l?attaccante desidera recuperare la chiave segreta. Il risultato dell?elaborazione di un dato ? comunque un dato.
Mascheramento booleano - Dato un valore di dati di programma VAL, il suo mascheramento booleano con due share ? definito dalla coppia di valori di dati (A,B) dove A=VAL xor RNG, B=RNG e RNG un valore di dati uniformemente distribuiti, ad es., un valore casuale. A e B sono chiamati share di VAL [1] (si veda per maggiori dettagli Jean-S?bastien Coron, Alexei Tchulkine, ?A New Algorithm for Switching from Arithmetic to Boolean Masking?, CHES 2003, pp. 89-97, serie di libri Lecture Notes in Computer Science (LNCS, volume 2779)).
Ora con riferimento a Figura 3, ? mostrata una piattaforma di calcolo 1 per impedire attacchi del canale laterale secondo la presente invenzione.
Nella seguente descrizione, saranno descritti solo i circuiti digitali nonch? la connessione fisica tra detti circuiti digitali che sono rilevanti per l?invenzione.
I circuiti digitali non descritti nella descrizione ma riportati in Figura 3 sono derivabili direttamente e senza ambiguit? per un tecnico del ramo.
La piattaforma di calcolo 1 ? un circuito digitale che consente di eseguire programmi informatici.
In particolare, la piattaforma di calcolo 1 comprende una pluralit? di componenti fisici come una memoria 2 che archivia dati e istruzioni di un programma informatico, La piattaforma di calcolo 1 comprende una pipeline avente una pluralit? di stadi 3A-3E, i quali sono configurati per trasferire un segnale elettrico tramite un bus di interconnessione on-chip 4.
In particolare, la pluralit? di stadi 3A, 3E comprende uno stadio di decodifica 3B configurato per decodificare un?istruzione di programma, uno stadio di esecuzione 3C configurato per eseguire l?istruzione di programma decodificata e uno stadio di memoria 3D per caricare e archiviare valori di dati di programma.
La forma di realizzazione mostrata in Figura 3 raffigura una pipeline a cinque stadi, ma l?invenzione non ? limitata a questo numero di stadi poich? l?invenzione pu? essere implementata anche in una piattaforma di calcolo avente un singolo stadio o un numero di stadi superiore a cinque stadi.
Gli stadi 3A-3E della forma di realizzazione mostrata in Figura 3 sono gli stadi ben noti, ossia, lo stadio di Prelievo di istruzione IF, indicato con il riferimento 3A, lo stadio di Decodifica di istruzione ID, indicato con il riferimento 3B, lo stadio di Esecuzione EX, indicato con il riferimento 3C, lo stadio di accesso alla Memoria MEM, indicato con il riferimento 3D e lo stadio di write back WB, indicato con il riferimento 3E.
Come mostrato in Figura 3, ciascuno stadio 3A-3E ? accoppiato allo stadio successivo mediante un registro di pipeline 8. Per esempio, lo stadio 3A ? accoppiato al proprio stadio successivo 3B mediante il registro di pipeline IF/ID, lo stadio 3B al proprio stadio successivo 3C mediante il registro di pipeline ID/EX, lo stadio 3C al proprio stadio successivo 3D mediante il registro di pipeline EX/M e lo stadio 3D al proprio stadio successivo 3E mediante il registro di pipeline M/WB.
La pluralit? di stadi 3A-3E ? configurata per trasferire un segnale elettrico rappresentativo dei dati e delle istruzioni del programma informatico tramite cavi fisici.
Va notato che uno stadio 3B della pluralit? di stadi 3A-3E ? configurato per decodificare le istruzioni di programma.
Lo stadio di decodifica 3B decodifica l?istruzione in entrata e genera i segnali di controllo che devono essere usati da ciascuno stadio seguente della pipeline di CPU per elaborare l?istruzione di programma.
Va sottolineato che secondo la forma di realizzazione di Figura 3 lo stadio 3A, ossia lo stadio IF, non ? interessato dalla contromisura. Ci? perch? i dati di programma (quelli che possono creare problemi di sicurezza) cominciano a circolare nella pipeline a partire dallo stadio 3B.
Il bus di interconnessione on-chip 4 comprende un ibus per lo stadio 3A, un dbus per lo stadio 3D e wbArbiter, adrDecoder di circuito arbitrario.
La piattaforma di calcolo 1 comprende anche un modulo debugger 5.
Il debugger 5 ? usato per comunicare tra la piattaforma di calcolo e un computer ospite (non mostrato).
Il debugger 5 ? allegato come secondo master al dbus per caricare il numero binario nella memoria 2 e per ispezionarlo.
La logica e le connessioni del debugger non sono mostrate in Figura 3, in quanto non influenzano la validit? della contromisura proposta.
La piattaforma di calcolo 1 comprende anche una CPU 6 configurata per eseguire il programma informatico.
Il programma informatico ? una collezione di istruzioni che pu? essere eseguita dalla CPU 6 in modo che la piattaforma di calcolo 1 possa effettuare un compito specifico.
Tutti i programmi informatici presentati alla CPU 6 per l?esecuzione devono essere cifrati usando l?Architettura di insieme di istruzioni (ISA) di quella CPU.
L?Architettura di insieme di istruzioni (ISA) generica della CPU 6 pu? essere classificata in quattro classi, ossia, ALU, LOAD, STORE, BRANCH/JUMP.
In particolare, ciascuna classe pu? mostrare diverse sottoclassi, ossia, la classe ALU ha tre sottoclassi, ALU-R, ALU-I e ALU-PROP.
La CPU 6 ? una CPU programmabile. A titolo di esempio, la CPU 6 della piattaforma di calcolo 1 pu? essere un?architettura CISC o RISC o altra architettura simile.
Secondo il contatore di programma PC imposto, la CPU 6 preleva l?istruzione corrispondente dalla memoria 2.
La CPU 6 pu? prelevare un?istruzione per ciclo di clock, al massimo, e l?intera CPU 6 ? fermata fino a quando l?istruzione richiesta non ? inoltrata dalla memoria principale allo stadio IF.
In generale, solo una frazione dei moduli combinatori e dei cavi all?interno di stadi di una pipeline ? usata per elaborare l?istruzione che attraversa detto stadio di pipeline. La piattaforma di calcolo 1 comprende una periferica UART 7 usata per amministrare l?input e output del programma informatico.
Va notato che ciascuno stadio 3A-3E di detta pipeline ha almeno un modulo combinatorio 9.
Detto modulo combinatorio 9 ha una pluralit? di input di dati, un input di controllo di pluralit? e almeno un output di dati.
Va sottolineato che ciascuna istruzione di programma viaggia da sinistra a destra attraverso la pipeline e all?interno di ciascuno stadio pu? attivare uno o pi? o nessuno di detto almeno un modulo combinatorio 9.
Per esempio, nello stadio 3C, ossia stadio EX, ha i moduli combinatori MUX1, MUX2, MUX3, ALU, diramazione di ALU e cos? via.
Ciascuna istruzione di programma viaggia da sinistra a destra attraverso la pipeline e all?interno di ciascuno stadio 3A-3E pu? attivare uno o pi? o nessuno di detto almeno un modulo combinatorio 9.
In altri termini, data un?istruzione di programma, la sua semantica definisce le unit? funzionali usate per ciascuno stadio di pipeline della CPU 6.
Va notato che le istruzioni di programma sono archiviate in memoria 2.
Ovviamente, non tutte le istruzioni di programma archiviate sono eseguite, ma solo quella che ? necessario eseguire secondo il programma informatico.
Ciascuna istruzione di programma all?interno di ciascuno stadio 3A-3E pu? attivare uno o pi? o nessuno del modulo combinatorio 9 presente nel presente documento.
A questo fine, ciascuna parte della CPU 6 in ciascuno stadio 3A-3E pu? essere classificata come attivata ACTIVE o meno NOT-ACTIVE a seconda della classe di istruzioni eseguita.
In altri termini, un?istruzione di programma in entrata quando entra in uno stadio 3A-3E in funzione del proprio valore, a seconda del processo di decodifica avvenuto nello stadio di decodifica 3B, pu? attivare o meno uno, pi? o nessuno del modulo combinatorio 9 implementato in ciascuno stadio della pipeline.
La piattaforma di calcolo 1 comprende una pluralit? mezzi a logica digitale 10 interconnessi tra loro e configurati per generare valori casuali o valori di dati di programma.
In particolare, la pluralit? di mezzi a logica digitale 10 ? in segnale di comunicazione con la pluralit? di input di dati del modulo combinatorio 9, in modo che quando l?istruzione di programma che viaggia da sinistra a destra se la pipeline entra in uno stadio di detta pluralit? di stadi 3A, 3E, tutti i moduli combinatori di quel detto stadio che non sono attivati dall?istruzione di programma avranno i propri dati di input riforniti di detti valori casuali e tutti i moduli combinatori di quel detto stadio che sono attivati da detta istruzione di programma avranno il proprio input di dati inutilizzato rifornito di detti valori casuali e i propri input di dati usati riforniti di detti valori di dati di programma.
In altri termini, la piattaforma di calcolo 1 assicura che, per ciascuno stadio di pipeline, tutti i cavi di dati dello stadio di pipeline che non sono usati per elaborare l?istruzione siano condotti con dati puliti quando l?istruzione entra in detto stadio di pipeline.
? meritevole di nota il fatto che un modulo combinatorio inutilizzato ha tutto il proprio input di dati inutilizzato e pertanto quei segnali devono essere condotti con valori di dati puliti.
Va notato che per assicurare nel miglior modo possibile la piattaforma di calcolo 1 contro attacchi del canale laterale, quando gli input di dati dei moduli combinatori 9 sono condivisi tra due o pi? moduli combinatori, gli input di dati sono suddivisi in diversi insiemi di input di dati destinati a ciascun modulo combinatorio.
Al fine di spiegare meglio questa caratteristica, ? possibile fare riferimento a Figura 4A-4C.
Le Figure 4B e 4C mostrano lo schema generico di due moduli combinatori, ossia, comb1 e comb2, dove gli input di dati condivisi, ossia A e B, di Figura 4A sono stati disaccoppiati fisicamente.
Avendo due insiemi di segnali indipendenti che conducono valori a ciascun modulo combinatorio, se un modulo non ? usato tutti i suoi input sono condotti con valori puliti e pertanto il comportamento di glitch serializza dati casuali che non contengono alcuna fuoriuscita di informazioni su canale laterale.
Al contrario, se un input di dati non ? usato in un modulo combinatorio, tale dato di input ? condotto con un valore casuale.
A questo fine, il comportamento di glitch, che ? ancora presente, serializzer? alla fine un dato di programma frapposto con il valore casuale.
Poich? il dato pulito effettivo ? dipendente dal tempo, la serializzazione dello stesso dato di programma accade ogni volta con un valore casuale diverso, impedendo pertanto qualsiasi fuoriuscita di informazioni su canale laterale.
? meritevole di nota il fatto che l?azione di disaccoppiamento ? efficace se i dati di input sono disaccoppiati in un modo per cui i) due insiemi di input primari sono generati al modulo sommitale della progettazione (Fig. 4B) o ii) vi ? almeno un elemento sequenziale che conduce separatamente i segnali gi? disaccoppiati (Fig.4C).
In particolare, nuovamente con riferimento a Figura 4B, tale Figura 4B mostra un disaccoppiamento corretto per lo schema generico di due moduli combinatori descritto in Figura 3A per mezzo di una creazione di input primari aggiuntivi nel modulo sommitale della progettazione.
Considerando la gerarchia della progettazione, il modulo sommitale ? il modulo iniziale nella piattaforma di calcolo, quello che ? visibile al mondo esterno. I segnali di input e output del modulo sommitale sono chiamati input primari e output primari, rispettivamente.
In particolare, con Figura 4C, quale Figura 4C mostra un disaccoppiamento corretto per lo schema generico di due moduli combinatori descritto in Figura 4A per mezzo di un?azione di disaccoppiamento che consente di avere almeno un elemento sequenziale che conduce gli input gi? disaccoppiati ai corrispondenti moduli combinatori comb1 e comb2.
Secondo una forma di realizzazione, la pluralit? di mezzi a logica digitale 10 comprende:
- un generatore di pulitore CG (cleaner generator) configurato per generare un valore per condurre un segnale ID.imm, registrare gli indirizzi di un file di registro protetto PRF e controllare segnali per condurre gli stadi di back-end di CPU in modo da forzare quando detta istruzione di programma entra in uno stadio di detta pluralit? di stadi, tutti i moduli combinatori di quel detto stadio che non sono attivati dalle istruzioni avranno i propri dati di input riforniti di detti valori casuali e tutti i moduli combinatori di quel detto stadio che sono attivati da detta istruzione di programma avranno il proprio input di dati inutilizzato rifornito di detti valori casuali e i propri input di dati usati riforniti di detti valori di dati di programma;
-il file di registro protetto PRF implementa un file di registro secondo lo schema di mascheramento booleano con due share per fornire una coppia di segnali di dati per ciascuno dei propri valori di dati letti;
- un blocco GetDataVal che ? configurato per effettuare il booleano in esclusiva o tra ciascuna coppia di segnali letti dal file di registro protetto PRF;
- un blocco resSel e un blocco FwdM2Ex che consentono di condurre indipendentemente o il valore prodotto da un blocco combinatorio in uno dello stadio della pipeline o un valore casuale a ciascun modulo combinatorio 9 che pu? usare tale valore prodotto.
Con riferimento a Figura 5, ? mostrata una possibile forma di realizzazione del file di registro protetto PRF.
Il PRF comprende un blocco di lettura 11 avente una catena di multiplatori ZeroVal, CleanVal, Databypass che consente di codificare su ciascuna coppia di segnali due valori per cui l?operazione booleana di disgiunzione esclusiva applicata a tale coppia di segnali risulta un valore zero, un valore casuale o un valore di dati di programma, detta ciascuna coppia di segnali pu? generare uno di questi valori indipendentemente dalle altre e senza rompere la semantica del programma eseguito.
Il file di registro protetto PRF comprende un generatore di numero vero TRNG0 e un generatore di numero vero TRNG1.
Ora con riferimento a Figura 3, il generatore di pulitore CG comprende un generatore di numero vero CG.TRNG, il blocco resSel e il blocco FwdM2Ex comprendono un generatore di numero vero TRGN2.
Inoltre anche la memoria 2 comprende un generatore di numero vero MEM.TRNG. Va notato che tutti i detti generatori di numero vero CG.TRNG, TRNG0, TRNG1, TRGN2 e MEM.TRNG sono configurati per generare valori casuali.
Il modulo combinatorio 9 di una piattaforma di calcolo 1 comprende:
- un modulo combinatorio di ALU funziona su due operandi e il modulo combinatorio di ALU ? usato per effettuare istruzioni logiche e aritmetiche, per calcolare l?indirizzo di memoria per istruzioni (ossia istruzioni di archiviazione e caricamento) e per valutare la condizione per istruzioni di salto condizionato,
- un primo multiplatore (o mux) MUX1 e un secondo mux MUX2 che sono usati per condurre i valori del primo e del secondo operando al modulo combinatorio di ALU; - un terzo mux MUX3 che ? usato per condurre il valore da scrivere nella memoria (2);
- una diramazione di ALU ? usata per calcolare l?indirizzo obiettivo di diramazione, detta diramazione di ALU ? usata per cambiare il flusso di controllo del programma (ossia, formazione di diramazione ad un nuovo contatore di programma, a seconda del valore della condizione nell?istruzione di diramazione);
- un LSU ? usata per effettuare istruzioni di caricamento e/o archiviazione, in modo da leggere e/o scrivere valori di dati, sia di programma sia casuali, a partire da e in detta memoria 2;
- un quarto mux MUXA ? usato per fare una selezione tra il valore prodotto da detta ALU e quello caricato a partire dalla memoria tramite la LSU;
- un quinto mux MUXB ? usato per selezionare o l?output del terzo mux MUX3 o il valore di dati, ossia, che sia un dato casuale o un dato di programma, a partire dallo stadio WB.
Secondo un aspetto, il terzo mux MUX3 ? usato dall?LSU per elaborare un?istruzione di archiviazione.
Pi? in dettaglio e con riferimento a Figura 3, la versione protetta della pipeline assicura che per ciascun multiplatore venga rifornito al massimo un valore di dati in un input mentre tutti gli altri input di dati sono riforniti di valori casuali.
In aggiunta ai cavi standard per condurre la lettura e archiviazione di valori di dati di programma nel file di registro, il cleanerGenerator CG conduce anche tre segnali di controllo ulteriori nel PRF, ossia, ID.isCleanOp0, ID.isCleanOp1, e ID.isCleanOp1st.
Tali segnali sono impiegati per segnalare al PRF di produrre un valore pulito per il corrispondente operando letto, ossia op0, op1, o op1st, rispettivamente.
I segnali di controllo nonch? l?intera progettazione di pipeline e PRF consentono di forzare a pulire indipendentemente uno, pi?, tutti o nessuno degli operandi prodotti dal PRF.
Va notato che il blocco GetDataVal, a seconda se l?istruzione ? una di ALU o di LSU, il Rf.op1 pu? essere usato o dall?ALU o dall?LSU.
Nessuna istruzione ISA richiede l?uso di Rf.op1 sia per l?ALU sia per l?LSU.
A questo fine, il PRF suddivide ID.op1 in ID.op1 e ID.op1st.
Per ciascun segnale suddiviso ? associata la maschera corrispondente, ossia, ID.op1Mask e ID.op1stMask, per consentire un recupero del valore di dati EX.op1 e EX.op1_LSU, rispettivamente, da usare nello stadio EX per mezzo di uno xor booleano (si veda GetDataVal in Figura 3).
Inoltre, il PRF propaga ID.op0 e ID.op0mask per consentire un recupero del valore di dati EX.op0 corrispondente da usare nello stadio EX per mezzo di uno xor booleano (si veda GetDataVal in Figura 3).
Va notato che nello stadio M 3D per il MUX A e blocco resSel, l?output dell?ALU pu? essere usato da diversi consumatori, ossia, l?LSU, la Ramificazione o viene bypassato attraverso lo stadio M.
Per ciascun consumatore ? usato un input di dati diverso, ossia, M.branchRes per il modulo combinatorio di Ramificazione, M.aluRes per il bypass nello stadio M (si veda input di dati 0 di MUXA) e M.adrLsu per l?LSU. Tale progettazione consente di condurre indipendentemente l?output dell?ALU o un valore casuale nel caso il consumatore non sia usato.
Inoltre, MUXA nello stadio M 3D raccoglie tale valore nonch? l?output proveniente dall?LSU, ossia, qualsiasi valore di dati di programma caricato prima o poi.
A questo fine, M.aluRes deve essere reso casuale se l?output dell?ALU ? usato come indirizzo per un?operazione di caricamento archiviazione.
Altrimenti, il valore che entra nell?LSU come indirizzo per un caricamento/archiviazione, ossia, M.adrLsu, deve essere reso casuale. Tale azione ? effettuata dal blocco resSel nello stadio EX 3C.
Va notato che nello stadio M 3D il blocco FwdM2EX, e considerando l?output al multiplatore MUXA, il blocco FwdM2EX consente di sostituire in modo selettivo qualsiasi valore di dati di programma con un valore pulito per tre cavi corrispondenti al percorso di inoltro M/EX per op0, op1 e op1st nello stadio EX 3C (si veda M/WB.op1_LSU, M/WB.op1 e M/WB.op0).
Ciascuno di questi segnali, ossia, M/WB.op1_LSU, M/WB.op1 e M/WB.op0, che non ? usato nello stadio EX 3C ? condotto con un valore pulito.
In altri termini, sui M/WB.op1_LSU, M/WB.op1 e M/WB.op0 ? condotto, indipendentemente l?uno dall?altro, un dato casuale quando non sono usati nello stadio EX 3C.
Va notato che nello stadio M 3D, la progettazione di mux MUXB usa a proprio vantaggio il principio di frapporre un?istruzione pulita tra due istruzioni di programma eseguite consecutivamente per garantire che al massimo uno dei suoi input sia condotto con un valore di dati di programma. Infatti, il WB.wData conduce sempre un valore pulito quando M.op1 pu? verosimilmente condurre un valore di dati di programma. In particolare, l?input di dati di mux MUXB 1 non ? mai usato nella pipeline protetta.
Va notato che il mux di progettazione MUX1, MUX2, MUX3 nello stadio EX 3C, il usa a proprio favore il principio di frapporre un?istruzione pulita tra due istruzioni di programma eseguite consecutivamente per garantire che quando qualsiasi input tranne l?EX/M.ex2ex ? condotto con un valore di dati di programma, l?input di EX/M.ex2ex sia sempre condotto con un valore casuale. In particolare, il percorso di inoltro EX/EX, tramite il segnale EX/M.ex2ex, non ? mai usato nella pipeline protetta.
Va notato che il valore EX.imm ? progettato per essere condiviso tra l?ALU e la diramazione di ALU.
In particolare, la progettazione conduce sia l?ALU immediata sia la diramazione di ALU usando un singolo segnale di input di dati condiviso, ossia, EX.imm, usando a proprio vantaggio il fatto che l?immediata sia una costante incapsulata nell?istruzione.
A questo fine, l?immediata non ? considerata un valore di dati di programma idoneo, in quanto non vi ? modo di cambiarne il valore attraverso diverse esecuzioni del medesimo numero binario. Per cambiarne il valore l?unica opzione ? cambiarlo nella fonte del programma e eseguire una ricompilazione per ottenere un nuovo numero binario.
Ora con riferimento a Figura 5, il File di registro protetto implementa la medesima semantica dell?RF classico evitando una fuoriuscita di informazioni su canale laterale per mezzo di glitch.
Due banchi di registri RF0 e RF1 sono implementati nel PRF.
Per ciascun registro R nel file di registro RF classico, il PRF offre due siti di memoria RF0.R e RF1.R dove ciascuno di essi ha la medesima ampiezza di RF.R.
Secondo un aspetto per un?archiviazione dati di programma nel PRF, il PRF richiede un trio di valori per archiviare correttamente come valore di dati di programma in entrata o un valore di dati di programma o un valore casuale. WB.(wData) identifica l?indirizzo nel PRF dove i dati devono essere scritti; WB.wData ? il valore di dati effettivo (valore di dati di programma o valore casuale) e WB.isWriteOp segnala se il valore di dati deve essere effettivamente scritto.
Cominciando dal valore di dati WB.wData da scrivere nell?indirizzo R del PRF e dall?RGN generato dal modulo TRNG, due valori A e B sono prodotti secondo le seguenti espressioni booleane:
A = WB.wData XOR RNG
B = RNG
Quindi un A ? scritto a RF0.R e B ? scritto a RF1.R.
A questo fine, l?HD tra i valori di dati sovrascritti e scritti non pu? portare a una fuoriuscita di informazioni su canale laterale poich? i valori di dati scritti e sovrascritti sono resi casuali.
Secondo un aspetto per un dato di programma letto a partire dal PRF, per ciascuna istruzione decodificata, istruzione di programma o pulita, il PRF deve leggere i valori a partire da tre indirizzi ID.(op0) e ID.(op1) e ID.(op1st).
Come affermato in precedenza, il PRF implementa una catena di stadi di multiplatore 11 per affrontare in maniera priva di glitch la lettura dei valori di dati richiesti.
In particolare, il generatore di pulitore CG chiede al PRF di fornire valori di dati corrispondenti a tre indirizzi di registro, ossia, ID.(op0), ID.(op1), e ID.(op1st).
Mentre ciascuna istruzione ISA richiede al massimo due operandi dal file di registro, ossia op0 and op1, la richiesta di op1 ? suddivisa tra ID.(op1), e ID.(op1st) per fornire valori di dati di programma fisicamente suddivisi all?ALU e all?LSU.
A questo fine il PRF emette tre valori di dati corrispondenti ai segnali di input richiesti ID.(op0), ID.(op1), e ID.(op1st).
Secondo lo schema di codifica di mascheramento booleano impiegato nel PRF, ossia, per ciascuna scrittura nel registro R sono scritti sia RF0.R sia RF1.R, ciascun valore di dati di output ? codificato usando due segnali di dati separati in arrivo, rispettivamente. In particolare, il valore per l?indirizzo di registro richiesto ID.(op0) ? condotto dalla coppia di segnali RF0.rOp0, RF1.rOp0, il valore per l?indirizzo di registro richiesto ID.(op1) ? condotto dalla coppia di segnali RF0.rOp1, RF1.rOp1 e il valore per l?indirizzo di registro richiesto ID.(op1st) ? condotto dalla coppia di segnali RF0.rOp1st, RF1.rOp1st.
Per ottenere il valore di dati effettivo usato negli stadi EX, M e WB, il GetDataVal effettua lo xor booleano tra ciascuna coppia di segnali, ossia, RF0.rOp0 xor RF1.rOp0, RF0.rOp1 xor RF1.rOp1 e RF0.rOp1st xor RF1.rOp1st, per ottenere EX.op0, EX.op1, e EX.op1_LSU, rispettivamente.
La progettazione deve assicurare la possibilit? di condurre indipendentemente ciascuno tra EX.op0, EX.op1 e EX.op1_LSU con un valore zero, un valore di dati di programma o un valore casuale.
Per raggiungere un tale comportamento, il PRF implementa una catena di tre multiplatori per condurre correttamente il valore su ciascuno dei propri (del PRF) sei segnali di output, ossia, ID.op0, ID.op0mask, ID.op1, ID.op1mask, ID.op1st, ID.op1stmask.
Ciascuno dei sei output di dati ? generato mediante un attraversamento di tre multiplatori destinati nei blocchi ZeroVal, CleanVal e DataBypass. I selettori dei multiplatori che concernono le coppie di valori per cui viene effettuato lo xor booleano nel blocco GelDataVal (si veda stadio Ex Figura 3) sono condotti con il medesimo valore.
Per esempio i multiplatori A0 e A1 nello ZeroVal sono condotti con il medesimo segnale di controllo e contribuiscono al valore di dati della coppia ID.op0 ID.op0mask.
Secondo un aspetto, i multiplatori nel blocco ZeroVal sono usati per forzare ciascuna coppia di segnali di output, ossia, ID.op0 ? ID.op0mask, ID.op1 ? ID.op1mask, e ID.op1st ? ID.op1stmask, ad essere condotta in modo tale che l?output dello xor booleano, ossia, dell?operazione nel blocco GetDataVal, sia un valore zero.
Per raggiungere tale scopo il medesimo valore casuale generato dal TRNG0 ? condotto su entrambi i multiplatori di un valori accoppiati, ossia, A0 ? A1, B0 ? B1, e C0 ? C1.
Per esempio per produrre un valore zero all?EX.op0, i multiplatori A0 e A1 nel blocco ZeroVal sono condotti con il medesimo valore RNG dal TRNG0 e i multiplatori seguenti A0 e A1 nei blocchi CleanVal e DataBypass sono condotti per lasciare che i valori si propaghino a ID.op0 e ID.op0mask, ossia, selezionando l?input di dati 0 del multiplatore.
Secondo un aspetto, i multiplatori nel blocco CleanVal sono usati per forzare ciascuna coppia di segnali di output, ossia, ID.op0 ? ID.op0mask, ID.op1 ? ID.op1mask, e ID.op1st ? ID.op1stmask, ad essere condotta in modo tale che l?output dello xor booleano, ossia, dell?operazione nel blocco GetDataVal, sia un valore casuale.
Per raggiungere tale scopo la coppia di segnali, per cui ? richiesto tale comportamento, ? condotta con un RNG dal TRNG0 o TRNG1 e il valore dall?RF1.
Il valore di RF1 corrisponde sempre ad un valore di RDN per via della semantica di scrittura del PRF. Per esempio per condurre un valore casuale a EX.op0, un multiplatore A0 nel blocco CleanVal, ossia, quello che partecipa alla creazione del valore di ID.op0, aziona l?RNG da TRNG0 mentre il multiplatore A1 nel medesimo blocco CleanVal, ossia, quello che partecipa alla creazione del valore ID.op0mask, conduce il valore RF1.rOp0 che ? un RNG.
Per assicurare che l?istruzione di pulitore nella forma xor R0,R0,R0 funzioni su due diversi casuali per produrre un nuovo valore casuale, un diverso valore casuale, ossia, RNG da TRNG0, ? condotto dal multiplatore B0 nel blocco CleanVal, mentre il multiplatore B1 nel blocco CleanVal conduce RF1.rOp1.
A questo fine ? generato un valore EX.op0 mediante la formula XOR(TRNG0,RF1.0) mentre un valore EX.op1 ? ottenuto mediante la formula XOR(TRNG1,RF1.0) e i due valori sono casuali e diversi, pertanto il loro xor booleano produce un nuovo valore casuale.
I multiplatori nel blocco DataBypass sono usati per forzare ciascuna coppie di segnali di output, ossia, ID.op0 ? ID.op0mask, ID.op1 ? ID.op1mask, e ID.op1st ? ID.op1stmask, ad essere condotta in modo tale che l?output dello xor booleano, ossia, dell?operazione nel blocco GetDataVal, sia il dato che ? in via di scrittura nel PRF al momento della lettura di PRF, ossia, WB.wData.
Per assicurare un comportamento privo di glitch, il WB.wData ? sottoposto a xor con un valore RNG da TRNG0 e condotto all?un segnale di output di dati, mentre il valore RNG ? condotto all?output della coppia corrispondente.
Per esempio, se il WB.wData attualmente scritto deve essere inoltrato per essere usato dall?EX.op0 nello stadio EX, nel PRF il risultato dello xor booleano tra il WB.wData e l?RNG dal TRNG0 ? condotto all?ID.op0 tramite il multiplatore A0 nel blocco DataBypass, mentre l?RNG ? condotto a ID.op0mask tramite il multiplatore A1 nel blocco DataBypass.
Per ciascun segnale di output, ossia, RF0.rOp0, RF1.rOp0RF0.rOp1, RF1.rOp1RF0.rOp1st, RF1.rOp1st, del PRF, sono usati tre multiplatori in un modo per cui considerando allo stesso tempo tutti gli input sui tre multiplatori un singolo input di dati ? condotto con al massimo un valore di dati di programma. In particolare, l?uso del mascheramento booleano per archiviare i valori di dati di programma nel PRF consente di considerare ciascun output proveniente sia dall?RF0 sia dall?RF1 come valore casuale, fino a quando ? effettuato lo xor booleano tra i due valori e pertanto uno tra un valore zero, un valore di dati di programma o un valore casuale ? rivelato.
Secondo un aspetto della presente invenzione la pluralit? mezzi a logica digitale 10 ? configurata per generare un?istruzione di pulitore.
Ciascuna istruzione di pulitore ? frapposta tra ciascuna coppia di istruzioni di programma che sono eseguite consecutivamente, per assicurare che ciascuno stadio 3B-3E della pipeline attraversato dall?istruzione di pulitore abbia il proprio modulo combinatorio 9 ed elementi di memoria 2 riforniti dai valori casuali.
In altri termini, dal punto di vista semantico, l?istruzione di pulitore attraversa l?intera pipeline di CPU senza usare alcuna unit? funzionale.
Come affermato, prima che il file di registro protetto PRF richieda un trio di valori per archiviare correttamente come valore di dati di programma in entrata, o un valore di dati di programma o un valore casuale.
Uno tra questi trio di valori ? WB.(wData) che identifica l?indirizzo nel PRF dove devono essere scritti i dati; l?altro ? WB.wData che ? il valore di dati effettivo (valore di dati di programma o valore casuale) e l?ultimo ? WB.isWriteOp segnala se il valore di dati deve essere effettivamente scritto.
Secondo un aspetto, quando un?istruzione di programma di archiviazione ? decodificata nello stadio di decodifica 3B, detto generatore di pulitore CG crea due istruzioni di pulitore aggiuntive che sono eseguite proprio prima di quella di archiviazione, la prima di dette due istruzioni aggiuntive ? una di pulitore e la seconda ? un?archiviazione di pulitore che archivia un valore casuale in corrispondenza del medesimo indirizzo dell?istruzione di programma di archiviazione.
Secondo un aspetto, quando ? richiesto un afflusso della pipeline di CPU 6 per via di un?istruzione di diramazione ricevuta, un?istruzione di salto, un?eccezione o un?interruzione, le istruzioni di pulitore sono usate al posto dell?istruzione nop.
Secondo un aspetto, quando un?istruzione eseguita ? un?istruzione di caricamento LD o di archiviazione ST, le istruzioni di pulitore aggiuntive sono usate per rimuovere il problema di serializzazione dei dati sul bus di dati 4, secondo lo schema seguente:
{LD -> CleanerInstruction | CleanerLoad| Load | CleanerLoad| CleanerInstruction} oppure
{ST -> CleanerInstruction | CleanerStore1| Store | CleanerStore2| CleanerInstruction}
mentre:
- il cleanerLoad effettua un?operazione di caricamento per recuperare il valore localizzato in corrispondenza di indirizzo di memoria zero di detto modulo di memoria 2, - il cleanerStore1 effettua un?archiviazione di un valore casuale in corrispondenza del medesimo indirizzo di memoria dell?istruzione di archiviazione ST,
- il cleanerStore2 effettua un?archiviazione di un valore casuale in corrispondenza dell?indirizzo di memoria 0 di detto modulo di memoria 2.
Secondo un aspetto, quando un?istruzione di caricamento a partire da un indirizzo zero del modulo di memoria 2 restituisce sempre un dato casuale e un?istruzione di archiviazione verso un indirizzo zero del modulo di memoria 2 scrive sempre un dato che non pu? mai essere caricato successivamente.
Considerando l?architettura proposta, la cleanerInstruction ? generata nello stadio ID e implementata come istruzione ISA xor R0, R0, R0, ossia, effettuare lo xor booleano tra due valori casuali e archiviare il risultato in R0.
Il cleanerGenerator conduce ID.we=1, ID.isCleanOp0=1, ID.isCleanOp1=1, ID.isCleanOp1st=1, ID.isImmInsn=CG.TRNG, l?ID.opCode="xor", ID.(wData)=R0. A questo fine, il back-end di CPU ? condotto con tutti valori casuali. Forzando ID.isCleanOp0=1, ID.isCleanOp1=1, il PRF genera due valori casuali per op0 e op1 che sono diversi tra loro.
Per l?istruzione CleanerLoad e considerando la piattaforma di calcolo 1 proposta mostrata in Figura 3, l?istruzione di cleanerLoad ? generata nello stadio 3B (ossia lo stadio ID) e implementata come istruzione ISA LD R0, R0, 0, ossia, di caricare dall?indirizzo di memoria zero e di scrivere tale valore nel registro R0 di RF0 e RF1 del file di registro protetto PRF.
Il cleanerGenerator CG conduce ID.we=1, ID.isCleanOp0=0, ID.isCleanOp1=1, ID.isCleanOp1st=1, ID.isImmInsn=immExt, l?ID.opCode="load", ID.(wData)=R0.
A questo fine, il back-end di CPU effettua un caricamento da un indirizzo zero della memoria 2 mentre tutti gli input di dati inutilizzati sono condotti a valori casuali.
Per l?istruzione CleanerStore1, considerando la piattaforma di calcolo 1 proposta mostrata in Figura 3, un?istruzione di archiviazione di programma ST Rdest, Radr, adrOffset da effettuare, l?istruzione di cleanerStore1 ? generata nello stadio 3B (ossia lo stadio ID) e implementata come istruzione ISA ST R0, Radr, adrOffset, ossia, archiviare un valore casuale nell?indirizzo di memoria dove l?istruzione di archiviazione di programma presa in considerazione desidera scrivere.
Il cleanerGenerator CG conduce ID.we=0, ID.isCleanOp0=0, ID.isCleanOp1=1, ID.isCleanOp1st=1 a logica ?1?, ID.isImmInsn=immExt, l?ID.opCode="store", ID.(wData)=R0.
A questo fine, il back-end di CPU effettua un?archiviazione nell?indirizzo di memoria dove l?istruzione di archiviazione di programma presa in considerazione desidera scrivere e tutti gli input di dati inutilizzati sono condotti a valori casuali.
Per l?istruzione CleanerStore2, considerando la piattaforma di calcolo 1 proposta mostrata in Figura 3, l?istruzione di CleanerStore2 ? generata nello stadio 3B (ossia lo stadio ID) e implementata come istruzione ISA ST R0, R0, 0, ossia, archiviare un valore casuale nell?indirizzo di memoria zero.
Il cleanerGenerator CG conduce ID.we=0, ID.isCleanOp0=0, ID.isCleanOp1=1, ID.isCleanOp1st=1, ID.isImmInsn=immExt, l?ID.opCode="store", ID.(wData)=R0.
A questo fine, il back-end di CPU effettua un?archiviazione di un valore casuale nell?indirizzo di memoria zero e tutti gli input di dati inutilizzati sono condotti a valori casuali.
I tecnici del ramo apprezzeranno ovviamente che svariati cambiamenti e varianti possono essere apportati alle disposizioni come descritte fino ad ora per venire incontro a esigenze incidentali e specifiche. Tutte queste varianti e cambiamenti ricadono entro la portata dell?invenzione, come definita dalle seguenti rivendicazioni.

Claims (13)

RIVENDICAZIONI
1. Piattaforma di calcolo (1) per impedire attacchi del canale laterale comprendente:
- un modulo di memoria (2) configurato per archiviare dati di un programma informatico e istruzioni di programma;
- una pipeline avente una pluralit? di stadi (3A, 3E), detta pluralit? di stadi (3A-3E) essendo configurata per trasferire un segnale elettrico tramite un bus di interconnessione on-chip (ibus, dbus, wbArbiter, adrDecoder);
- una CPU (6) configurata per eseguire detto programma informatico;
- dette istruzioni di programma essendo decodificate da uno stadio di detta pluralit? di stadi (3A-3E);
- ciascuno stadio di detta pipeline avendo almeno un modulo combinatorio (9),
- detto almeno un modulo combinatorio (9) avendo una pluralit? di input di dati e un input di controllo di pluralit? e almeno un output di dati;
- ciascuna istruzione di programma viaggiando da sinistra a destra attraverso detta pipeline e all?interno di ciascuno stadio pu? attivare uno o pi? o nessuno di detto almeno un modulo combinatorio (9);
caratterizzata dal fatto che comprende una pluralit? mezzi a logica digitale (10) interconnessi tra loro e configurati per generare valori casuali o valori di dati di programma, detta pluralit? di mezzi a logica digitale (10) essendo in segnale di comunicazione con detta pluralit? di input di dati di detto modulo combinatorio (9), in modo che quando detta istruzione di programma entra in uno stadio di detta pluralit? di stadi (3A-3E), tutti i moduli combinatori (9) di quel detto stadio che non sono attivati dall?istruzione di programma avranno i propri dati di input riforniti di detti valori casuali e tutti i moduli combinatori (9) di quel detto stadio che sono attivati da detta istruzione di programma avranno il proprio input di dati inutilizzato rifornito di detti valori casuali e i propri input di dati usati riforniti di detti valori di dati di programma.
2. Piattaforma di calcolo secondo la rivendicazione 1, in cui quando detti input di dati di detti moduli combinatori (9) sono condivisi tra due o pi? moduli combinatori, detti input di dati sono suddivisi in vari insiemi di input di dati destinati a ciascun modulo combinatorio per consentire in modo indipendente una conduzione su ognuno di essi di un valore casuale, di un valore di dati di programma o di un valore zero.
3. Piattaforma di calcolo secondo la rivendicazione 1 o 2, in cui detta pluralit? di stadi (3A-3E) comprende uno stadio di decodifica (3B) configurato per decodificare detta istruzione di programma, uno stadio di esecuzione (3C) configurato per eseguire detta istruzione di programma decodificata e uno stadio di memorizzazione (3D) configurato per archiviare detta istruzione di programma eseguita e uno stadio di write back (3E), detta CPU (6) comprende una front-end (front-end di CPU) e una back-end (back-end di CPU); detta pluralit? di mezzi a logica digitale (10) comprende:
- un generatore di pulitore (CG) configurato per generare un valore per condurre un segnale immediato (ID.imm), registrare indirizzi di un file di registro protetto (PRF) e controllare segnali per condurre lo stadio di back-end (back-end di CPU) di detta CPU (6) in modo da forzare quando detta istruzione di programma entra in uno stadio di detta pluralit? di stadi (3A-3E), tutti i moduli combinatori (9) di quel detto stadio che non sono attivati dalle istruzioni avranno i propri dati di input riforniti di detti valori casuali e tutti i moduli combinatori (9) di quel detto stadio che sono attivati da detta istruzione di programma avranno il proprio input di dati inutilizzato rifornito di detti valori casuali e i propri input di dati usati riforniti di detti valori di dati di programma;
-detto file di registro protetto (PRF) implementa un file di registro secondo lo schema di mascheramento booleano con due share per fornire una coppia di segnali di dati per ciascuno dei propri valori di dati letti;
- un primo blocco logico (GetDataVal) configurato per effettuare il booleano in esclusiva o tra ciascuna coppia di segnali letti dal file di registro protetto (PRF);
- un secondo blocco logico (resSel) e un terzo blocco logico (FwdM2Ex) consentono di condurre in modo indipendente a ciascun modulo combinatorio che pu? usare tale valore prodotto o il valore prodotto da un modulo combinatorio in uno dello stadio della pipeline o un valore casuale
4. Piattaforma di calcolo secondo la rivendicazione 3, in cui un file di registro protetto (PRF) comprende due banchi di registri (RF0, RF1), ciascuno comprende due siti di memoria (RF0.R, RF1.R) dove ciascuno di essi ha la medesima ampiezza di un registro (RF.R.a), un blocco di lettura (11) avente una catena di multiplatori (ZeroVal, CleanVal, Databypass) che consente di codificare su ciascuna coppia di segnali (rOp0, rOp1,rOp1st) emessa da detti due banchi di registri (RF0, RF1) due valori (ID.op0-ID.op0mask, ID.op1-ID.op1mask, ID.op1st-ID.op1stmask) per cui l?operazione booleana di disgiunzione esclusiva applicata a tale coppia di segnali determina un valore zero, un valore casuale o un valore di dati di programma, detta ciascuna coppia di segnali (ID.op0-ID.op0mask, ID.op1-ID.op1mask, ID.op1st-ID.op1stmask) pu? generare uno di questi valori indipendentemente dalle altre e senza rompere la semantica del programma eseguito.
5. Piattaforma di calcolo secondo la rivendicazione 3, in cui detto generatore di pulitore (CG) comprende un primo generatore di numero vero (CG.TRNG), detto file di registro protetto (PRF) comprende un secondo generatore di numero vero (TRNG0) e un terzo generatore di numero vero TRNG1), detto secondo blocco logico (resSel) e un terzo blocco logico (FwdM2Ex) comprende un quarto generatore di numero vero (TRGN2), detto modulo di memoria (2) comprende un quinto generatore di numero vero ((MEM.TRNG), detti generatori di numero vero primo, secondo, terzo, quarto e quinto (CG.TRNG, TRNG0, TRNG1, TRGN2, MEM.TRNG) sono configurati per generare valori casuali.
6. Piattaforma di calcolo secondo una qualsiasi delle rivendicazioni precedenti, in cui detto modulo combinatorio (9) comprende:
- un primo modulo di Unit? aritmetico-logica (ALU) che funziona su due operandi e detto primo modulo di Unit? aritmetico-logica (ALU) ? usato per effettuare istruzioni logiche e aritmetiche, per calcolare l?indirizzo di memoria per istruzioni (ossia istruzioni di archiviazione e caricamento) e per valutare la condizione per istruzioni di salto condizionato,
- un primo mux (MUX1) e un secondo mux (MUX2) che sono usati per condurre i valori del primo e del secondo operando a detto primo modulo combinatorio di modulo di Unit? aritmetico-logica (ALU);
- un terzo mux (MUX3) che ? usato per condurre il valore da scrivere nel modulo di memoria (2);
- un secondo modulo di Unit? aritmetico-logica (diramazione di ALU) che ? usato per calcolare l?indirizzo obiettivo di diramazione, detto secondo modulo di Unit? aritmeticologica (diramazione di ALU) ? usato per cambiare il flusso di controllo del programma; - un?Unit? di caricamento-archiviazione (LSU) che ? usata per effettuare istruzioni di caricamento e/o archiviazione, in modo da leggere e/o scrivere valori di dati, sia di programma sia casuali, a partire da e in detta memoria (2);
- un quarto mux (MUXA) ? usato per fare una selezione tra il valore prodotto da detta ALU e quello caricato a partire dalla memoria tramite la LSU;
- un quinto mux (MUXB) ? usato per selezionare o l?output di detto terzo mux (MUX3) o il valore di dati, che sia un dato casuale o un dato di programma, a partire da detto stadio di write back (3E).
7. Piattaforma di calcolo secondo una qualsiasi delle rivendicazioni precedenti, in cui detta pluralit? mezzi a logica digitale (9) ? configurata per generare istruzioni di pulitore, ciascuna istruzione di pulitore essendo frapposta tra ciascuna coppia di istruzioni di programma che sono eseguite consecutivamente, per garantire che ciascuno stadio della pipeline attraversato dall?istruzione di pulitore abbia il proprio modulo combinatorio (9) ed elementi di memoria riforniti da detti valori casuali.
8. Piattaforma di calcolo secondo 7, detto file di registro protetto (PRF) richiede un trio di valori (WB.wData, WB.(wData), WB.isWriteOp) per archiviare correttamente come valore di dati di programma in entrata o un valore di dati di programma o un valore casuale (ID.(op0), ID.(op1), ID.(op1st)), mentre il primo di detto trio (WB.(wData)) identifica l?indirizzo nel PRF dove i dati devono essere scritti, il secondo di detto trio (WB.wData) ? il valore di dati effettivo o valore di dati di programma o valore casuale e il terzo di detto trio (WB.isWriteOp) segnala se il valore di dati deve essere effettivamente scritto.
9. Piattaforma di calcolo secondo la rivendicazione 7, quando un?istruzione di programma di archiviazione ? decodificata nello stadio di decodifica (3B), detto generatore di pulitore (CG) crea due istruzioni di pulitore aggiuntive che sono eseguite proprio prima di quella di archiviazione (ST), la prima di dette due istruzioni aggiuntive ? una di pulitore e la seconda ? un?archiviazione di pulitore che archivia un valore casuale in corrispondenza del medesimo indirizzo dell?istruzione di programma di archiviazione.
10. Piattaforma di calcolo secondo la rivendicazione 7, quando ? richiesto un afflusso della pipeline di CPU per via di un?istruzione di diramazione ricevuta, un?istruzione di salto, un?eccezione o un?interruzione, l?istruzione di pulitore ? usata al posto dell?istruzione nop.
11. Piattaforma di calcolo secondo la rivendicazione 7, dove detta piattaforma di calcolo (1) genera un?istruzione nop, detta istruzione di pulitore ? usata al posto dell?istruzione nop
12. Piattaforma di calcolo secondo la rivendicazione 7, in cui l?istruzione eseguita ? un?istruzione di caricamento (LD) o di archiviazione (ST), le istruzioni di pulitore aggiuntive sono usate per rimuovere il problema di serializzazione dei dati sul bus di dati, secondo lo schema seguente:
{LD -> cleaner| cleanerLoad | LD | cleanerLoad | cleaner} oppure
{ST -> cleaner| cleanerStore1 | ST | cleanerStore2| cleaner},
mentre:
-detto cleaner ? un?istruzione di pulitore
detto cleanerLoad effettua un?operazione di caricamento per recuperare il valore localizzato in corrispondenza di un indirizzo di memoria zero di detto modulo di memoria, - detto cleanerStore1 effettua un?archiviazione di un valore casuale in corrispondenza del medesimo indirizzo di memoria dell?ST,
- detto cleanerStore2 effettua un?archiviazione di un valore casuale in corrispondenza dell?indirizzo di memoria 0 di detto modulo di memoria.
13. Piattaforma di calcolo secondo la rivendicazione 12, in cui un?istruzione di caricamento a partire da un indirizzo zero del modulo di memoria (2) restituisce sempre un dato casuale e un?istruzione di archiviazione verso un indirizzo zero del modulo di memoria (2) scrive sempre un dato che non pu? mai essere caricato successivamente.
IT102020000013390A 2020-06-05 2020-06-05 Una piattaforma informatica per prevenire attacchi ai canali laterali IT202000013390A1 (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT102020000013390A IT202000013390A1 (it) 2020-06-05 2020-06-05 Una piattaforma informatica per prevenire attacchi ai canali laterali
EP21728095.7A EP4162641A1 (en) 2020-06-05 2021-06-01 A computing platform for preventing side channel attacks
US18/008,207 US20230318802A1 (en) 2020-06-05 2021-06-01 A computing platform for preventing side channel attacks
PCT/EP2021/064711 WO2021245101A1 (en) 2020-06-05 2021-06-01 A computing platform for preventing side channel attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102020000013390A IT202000013390A1 (it) 2020-06-05 2020-06-05 Una piattaforma informatica per prevenire attacchi ai canali laterali

Publications (1)

Publication Number Publication Date
IT202000013390A1 true IT202000013390A1 (it) 2021-12-05

Family

ID=72266646

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102020000013390A IT202000013390A1 (it) 2020-06-05 2020-06-05 Una piattaforma informatica per prevenire attacchi ai canali laterali

Country Status (4)

Country Link
US (1) US20230318802A1 (it)
EP (1) EP4162641A1 (it)
IT (1) IT202000013390A1 (it)
WO (1) WO2021245101A1 (it)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115291949B (zh) * 2022-09-26 2022-12-20 中国人民解放军国防科技大学 一种面向计算流体力学的加速计算装置和加速计算方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634102A (zh) * 2013-12-16 2014-03-12 国家电网公司 一种侧信道攻击和故障攻击的防护方法
WO2017105606A1 (en) 2015-12-17 2017-06-22 Cryptography Research, Inc. Enhancements to improve side channel resistance
US20200110906A1 (en) * 2018-10-05 2020-04-09 Samsung Electronics Co., Ltd. Encryption circuit for performing virtual encryption operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634102A (zh) * 2013-12-16 2014-03-12 国家电网公司 一种侧信道攻击和故障攻击的防护方法
WO2017105606A1 (en) 2015-12-17 2017-06-22 Cryptography Research, Inc. Enhancements to improve side channel resistance
US20200110906A1 (en) * 2018-10-05 2020-04-09 Samsung Electronics Co., Ltd. Encryption circuit for performing virtual encryption operations

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
G. AGOSTAA. BARENGHIG. PELOSIM. SCANDALE: "The MEET Approach: Securing Cryptographic Embedded Software Against Side Channel Attacks", IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, vol. 34, no. 8, August 2015 (2015-08-01), pages 1320 - 1333
GROSS H.JELINEK M.MANGARD S.UNTERLUGGAUER T.WERNER M.: "Smart Card Research andAdvancedApplications", 2016, CARDIS, article "Concealing Secrets in Embedded Processors Designs"
HANNES GROSSSTEFAN MANGARDTHOMAS KORAK: "Proceedings of the 2016 ACM Workshop on Theory of Implementation Security (TIS '16)", 2016, ASSOCIATION FOR COMPUTING MACHINERY, article "Domain-Oriented Masking: Compact Masked Hardware Implementations with Arbitrary Protection Order."
JEAN-SEBASTIEN CORONALEXEI TCHULKINE: "A New Algorithm for Switching from Arithmetic to Boolean Masking", CHES, vol. 10146, 2003, pages 89 - 97, XP002340677
K. BADDAMM. ZWOLINSKI: "Evaluation of Dynamic Voltage and Frequency Scaling as a Differential Power Analysis Countermeasure", 20TH INTERNATIONAL CONFERENCE ON VLSI DESIGN HELDJOINTLY WITH 6TH INTERNATIONAL CONFERENCE ON EMBEDDED SYSTEMS (VLSID'07), 2007, pages 854 - 862, XP031044509
LECTURE NOTES IN COMPUTER SCIENCE BOOK SERIES, vol. 2779

Also Published As

Publication number Publication date
US20230318802A1 (en) 2023-10-05
WO2021245101A1 (en) 2021-12-09
EP4162641A1 (en) 2023-04-12

Similar Documents

Publication Publication Date Title
Moro et al. Formal verification of a software countermeasure against instruction skip attacks
Saputra et al. Masking the energy behavior of DES encryption [smart cards]
Tiwari et al. Complete information flow tracking from the gates up
CN111512292A (zh) 用于可配置空间加速器中的非结构化数据流的装置、方法和系统
May et al. Non-deterministic processors
CN111566623A (zh) 用于可配置空间加速器中的集成性能监视的装置、方法和系统
Cilio et al. Mitigating power-and timing-based side-channel attacks using dual-spacer dual-rail delay-insensitive asynchronous logic
Groß et al. Concealing secrets in embedded processors designs
Gao et al. FENL: an ISE to mitigate analogue micro-architectural leakage
Chen et al. Using virtual secure circuit to protect embedded software from side-channel attacks
Gigerl et al. Secure and efficient software masking on superscalar pipelined processors
Antognazza et al. Metis: An integrated morphing engine CPU to protect against side channel attacks
JP2005539292A (ja) 信号伝播を終了させる機構を有するプログラマブルパイプラインファブリック
IT202000013390A1 (it) Una piattaforma informatica per prevenire attacchi ai canali laterali
Barenghi et al. Exploring cortex-M microarchitectural side channel information leakage
Tsoupidi et al. Securing optimized code against power side channels
Singh et al. An end-to-end analysis of emfi on bit-sliced post-quantum implementations
Marshall et al. SME: Scalable masking extensions
Grabher et al. Non-deterministic processors: FPGA-based analysis of area, performance and security
Tillich et al. Implementation and evaluation of an SCA-resistant embedded processor
Cheng et al. eLIMInate: a Leakage-focused ISE for Masked Implementation
Liu et al. Gray-box software integrity checking via side-channels
Pham et al. Cidpro: Custom instructions for dynamic program diversification
Fang Privacy preserving computations accelerated using FPGA overlays
Yumbul et al. Design and implementation of robust embedded processor for cryptographic applications