Passa al contenuto principale

8.1. Side-Channel Leaks (Trapelamenti side-channel)

8.1. Side-Channel Leaks (Trapelamenti side-channel)

Per le implementazioni che eseguono firme, la segretezza della chiave privata (private key) è fondamentale. È possibile proteggersi da alcuni attacchi side-channel (side-channel attacks) assicurandosi che l'implementazione esegua esattamente la stessa sequenza di istruzioni e compia esattamente gli stessi accessi alla memoria, per qualsiasi valore della chiave privata.

Per rendere un'implementazione silenziosa rispetto ai side-channel (side-channel silent) in questo modo, l'aritmetica modulo p non deve usare rami dipendenti dai dati, ad esempio legati alla propagazione del riporto. L'addizione di punti silenziosa rispetto ai side-channel è immediata, grazie alle formule unificate (unified formulas).

La moltiplicazione scalare (scalar multiplication), cioè moltiplicare un punto per un intero, richiede ulteriore lavoro per essere implementata in modo silenzioso rispetto ai side-channel. Un approccio semplice è implementare un'assegnazione condizionale (conditional assignment) silenziosa rispetto ai side-channel e usarla insieme all'algoritmo binario per esaminare un bit dell'intero alla volta.

Rispetto ad altri schemi di firma, evitare rami dipendenti dai dati è più facile perché l'aritmetica modulo p silenziosa rispetto ai side-channel è più semplice (con le curve raccomandate) e si hanno formule di addizione complete (complete addition formulas) invece di molti casi speciali.

Si noti che le implementazioni di esempio in questo documento non tentano di essere silenziose rispetto ai side-channel.