# Analisi di potenza

L'analisi di potenza è una tipologia di attacco a canale laterale nell'ambito della crittografia applicata nel quale l'attaccante analizza il consumo in potenza di un dispositivo con l'obiettivo di ottenere informazioni criptate. I dati ottenuti attraverso l'utilizzo di specifici strumenti riflettono l'utilizzo del circuito combinatorio del dispositivo in analisi. Questo tipo di attacco può essere categorizzato in diverse tipologie come l'analisi di potenza semplice, l'analisi di potenza differenziale, l'analisi di potenza correlata o l'analisi di informazione mutua.

## Contesto

Introdotto per la prima volta da Kocher nel 1996, un attacco a canale laterale è una tecnica di attacco che mira a un dispositivo estraendo informazioni segrete attraverso la misurazione di parametri fisici. Un canale laterale è un canale di comunicazione che trasferisce informazioni significative mentre è subordinato al canale principale di trasmissione. Questi canali secondari non nascono per trasportare informazioni, ma sono una conseguenza involontaria del normale funzionamento operativo del sistema, da cui il nome canale laterale.
Questo tipo di attacchi viene realizzato mediante l'utilizzo di attrezzature specializzate per raccogliere le informazioni dai canali laterali. Tipicamente è necessaria una prossimità fisica al dispositivo per ottenere le misurazioni richieste. Gli attacchi a canale laterale possono richiedere l'uso di metodi statistici per analizzare i dati recuperati affetti da rumore ed estrarre informazioni segrete.

## Consumo di potenza

Lo stile logico più comune utilizzato per implementare circuiti di calcolo digitale è attualmente la logica CMOS (Complementary Metal-Oxide Semiconductor), che opera rappresentando le informazioni come livelli di tensione. Questa famiglia logica occupa oggi la parte principale del mercato dei semiconduttori, poiché presenta un notevole vantaggio di un consumo di potenza dinamico molto basso. Questa tecnologia è composta da numerosi transistor MOSFET (Metal-Oxide-Semiconductor Field Effect Transistor) disposti in una struttura di una rete di pull-up composta da transistor PMOS e una parte di pull-down composta da transistor NMOS. L'implementazione di questa struttura è un CMOS, che consente la commutazione a tensioni alte o basse in determinate celle del design implementato.
La potenza consumata da un inverter CMOS, la cella logica più semplice, è divisa in due parti: una è la potenza dissipata quando il componente è acceso e l'altra è quella consumata durante un'attività di commutazione, indicate rispettivamente come $P_{statica}$ e $P_{dinamica}$. Solo quando si verifica un'attività di commutazione, la cella assorbirà sia $P_{statica}$ che $P_{dinamica}$; altrimenti, verrà consumata solo $P_{statica}$. Considerando che le capacità delle celle di un circuito sono uguali, è possibile calcolare la variazione di potenza tra due istanti di tempo come la distanza di Hamming (HD) tra l'uscita al primo istante di tempo $t-1$ e l'uscita al secondo istante $t$. Questo modello cattura le variazioni nel consumo di potenza del dispositivo dovute alle transizioni necessarie per fornire il valore di output corretto.
Nel caso in cui siano disponibili informazioni più precise sul consumo di potenza e sia esplicitamente noto che alcune linee di transmissione richiedono più energia per essere commutate rispetto ad altre, è possibile utilizzare la distanza di Hamming pesata come modello. Il modello della distanza di Hamming pesata consiste nel calcolare la somma dei pesi assegnati ai bit che stanno commutando durante l'operazione. Nel caso in cui vengano utilizzati stili logici pre-caricati o pre-scaricati, può essere utile modellare il consumo di potenza considerando il fatto che le celle stanno commutando da uno stato pre-caricato con tutti zeri o tutti uni. In questo caso, un modello più adatto per il consumo di potenza è il peso di Hamming (HW) del valore in fase di esecuzione.
Le informazioni sul consumo di potenza sono misurate tramite un oscilloscopio di campionamento digitale e successivamente discretizzate e quantizzate, ottenendo sequenze finite di campioni chiamate tracce. Ogni traccia è composta da diversi tipi di consumo di potenza: uno dato dalle operazioni in esecuzione, uno dall'elaborazione dei dati, uno dal rumore del sistema e uno dal consumo statico del dispositivo, che può essere ignorato nei calcoli. Le differenze nella quantità di corrente assorbita dal dispositivo che viene misurata sono tipicamente molto piccole, nell'ordine di $\mu A$. Il dispositivo può introdurre un considerevole rumore nelle misurazioni, ma poiché presenta distribuzione normale a media zero o, almeno, invariata nel tempo, è possibile calcolare la media di più tracce e ridurre l'effetto del rumore nei dati.

## Analisi di potenza semplice

L'analisi di potenza semplice (Simple Power Analysis, SPA) indica il processo di interpretazione diretta del consumo di potenza osservato durante le operazioni crittografiche. Un attacco ad analisi di potenza semplice funziona analizzando i dati e cercando di individuare modelli visivi che riflettano l'esecuzione delle operazioni eseguite. Gli attacchi ad analisi di potenza semplice richiedono una conoscenza dettagliata del dispositivo che viene analizzato e dell'implementazione delle operazioni crittografiche eseguite su di esso. L'obiettivo è quello di estrarre l'informazione criptata utilizzando solo una piccola quantità di tracce o, in alcuni casi, anche solo una. Gli attacchi ad analisi di potenza semplice coinvolgono una significativa analisi diretta e uno sforzo manuale e sono essere relativamente facili da proteggere. Infatti, affinché questo attacco sia realizzabile, la chiave dovrebbe avere, direttamente o indirettamente, un effetto significativo sul consumo di potenza. Un semplice processo di filtraggio o randomizzazione all'interno dell'implementazione di un dispositivo può alterare i dati del consumo di potenza a sufficienza da rendere questi attacchi non fattibili.

## Analisi di potenza differenziale

L'analisi di potenza differenziale (Differential Power Analysis, DPA) consiste nell'effettuare un'analisi statistica su diverse tracce di consumo di potenza ottenute allo scopo di sfruttare le informazioni provenienti dalle variazioni dei segnali del canale laterale causate dall'elaborazione dei dati. Viene utilizzato un elevato numero di tracce per l'analisi in quanto è necessario far fronte alla presenza di un rumore statistico non trascurabile e osservare le differenze dipendenti dai dati nel comportamento del dispositivo.
Un attacco ad analisi di potenza differenziale inizia con l'esecuzione dell'algoritmo sul dispositivo $m$ volte per catturare $T_{m}$ tracce. $T_{i,[j]}$ indica Oltre alla raccolta delle tracce, vengono raccolti anche gli output cifrati dell'algoritmo eseguito e catalogati come $C_{i}$ per ogni $i$-esima traccia. La funzione di selezione è definita come $D(C_{i},K_{n})$, dove $K_{n}$Kn è l'ipotesi di chiave. Essendo $D(C_{i},K_{n})$ una funzione di selezione binaria, il numero totale di volte in cui la funzione di selezione ritorna $1$ è definito secondo la seguente formula:
$\sum _{i=1}^{m}D(C_{i},K_{n})$
La traccia media di consumo di potenza osservata per la suddetta funzione di selezione è la seguente:
${\sum _{i=1}^{m}D(C_{i},K_{n})*T_{i,[j]} \over \sum _{i=1}^{m}D(C_{i},K_{n})}$
Rispettivamente il numero di volte in cui la funzione di selezione ritorna 0 è pari a:
$\sum _{i=1}^{m}(1-D(C_{i},K_{n}))$
e la traccia media di consumo di potenza osserva per questa funzione di selezione è:
${\sum _{i=1}^{m}(1-D(C_{i},K_{n}))*T_{i,[j]} \over \sum _{i=1}^{m}(1-D(C_{i},K_{n}))}$
Ogni j-esimo punto della traccia differenziale $T$ per l'ipotesi di chiave $K_{n}$ è determinato dalla seguente equazione:
$T=T_{j]=$${\sum _{i=1}^{m}D(C_{i},K_{n})*T_{i,[j]} \over \sum _{i=1}^{m}D(C_{i},K_{n})}$$-$${\sum _{i=1}^{m}(1-D(C_{i},K_{n}))*T_{i,[j]} \over \sum _{i=1}^{m}(1-D(C_{i},K_{n}))}$
Le ipotesi di chiave per $K_{n}$ che produce il picco più elevato nella traccia differenziale $T$ è da considerare essere la candidata più probabile per la chiave corretta.

## Analisi di potenza correlata

L'analisi di potenza correlata (Correlation Power Analysis, CPA) utilizza il coefficiente di correlazione di Pearson per identificare l'ipotesi corretta della chiave crittografica, utilizzando un'analisi statistica più efficace rispetto alla differenza delle medie utilizzata nell'analisi di potenza differenziale.
Il coefficiente di correlazione di Pearson $\rho$ è una misura della correlazione lineare tra i dati, che varia nell'intervallo $[-1;+1]$, dove $\rho =0$ implica assenza di correlazione e $\rho =1$ indica una correlazione perfetta. Per calcolare $\rho$ tra due variabili $X$ e $Y$, vengono utilizzate le loro varianze $\sigma X$, $\sigma Y$ e la loro covarianza $Cov(X,Y)$, secondo la seguente formula:
$\rho _{X,Y}={Cov(X,Y) \over \sigma X\sigma Y}={E[(X-\mu X)(Y-\mu Y)] \over \sigma X\sigma Y}$
dove $\mu X$, $\mu Y$ sono le rispettive medie e $E$ è il valore atteso. Utilizzando questa formula è possibile rilevare se due fenomeni aleatori sono correlati, nonostante la presenza di rumore. Utilizzando la correlazione di Pearson è possibile valutare il grado di associazione lineare tra le variabili, anche in presenza di rumore o interferenze. Le tracce misurate $T$ e l'ipotesi di chiave predittiva $P^{K}$ vengono considerate entrambe in precisi istanti di tempo $x$ e $y$. I campioni $t_{x}$ e $p_{y}$ vengono analizzati osservando il coefficiente di correlazione di Pearson campionato $r_{t_{x},p_{y}}$:
$r_{t_{x},p_{y}}={\sum _{i}(t_{i,x}-\mu _{t_{x}})(p_{i,y}-\mu _{p_{y}}) \over {\sqrt {\sum _{i}(t_{i,x}-\mu _{t_{x}})^{2}(p_{i,y}-\mu _{p_{y}})^{2}}}}$
Questo processo viene ripetuto per ogni istante di tempo con ogni ipotesi di chiave, e il valore massimo ottenuto del coefficiente di correlazione indica qual è l'ipotesi di chiave corretta.

## Analisi di informazione mutua

Sviluppata nel 2008 da Benedikt Gierlichs, Lejla Batina, Pim Tuyls e Bart Preneel, l'analisi di informazione mutua (Mutual Information Analysis) ha come idea principale quella di identificare se esiste una dipendenza tra due variabili casuali misurando la loro informazione mutua. La statistica che viene usata per confrontare le misurazioni a canale laterale con le predizioni elaborate nell'analisi dell'informazione mutua $I$ è la seguente:
$I(L_{k}+\epsilon ;M_{k})=H(L_{k}+\epsilon )-H((L_{k}+\epsilon )|M_{k})$
dove $H$ è la misura di entropia differenziale, $L_{k+\epsilon }$ il valore osservato e $M_{k}$ il modello per ipotesi di chiave $k$.

## Attacchi a template

Gli attacchi di tipo template, come suggerisce il nome, rappresentano un modo di confrontare campioni raccolti da un dispositivo target con un template di come lo stesso dispositivo elabora i dati per ottenere la chiave segreta. Per effettuare un attacco di tipo template, l'attaccante deve prima avere accesso a una replica completa del dispositivo vittima che può controllare completamente. Prima dell'attacco, viene eseguito una notevole lavoro di pre-elaborazione per creare il template. Nel 2002, Suresh Chari, Josyula R. Rao, and Pankaj Rohatgi hanno affermato che gli attacchi di tipo template sono la forma di attacco a canale laterale più potente possibile dal punto di vista teorico dell'informazione, dal momento che l'attaccante è in grado di estrarre informazioni a partire da un'unica o solamente poche tracce.
Il concetto fondamentale di questo attacco è l'analisi dell'insieme di dati, in cui ogni traccia può essere considerata come un campione da una distribuzione gaussiana multivariata. Questo tipo di distribuzione rappresenta la generalizzazione della distribuzione normale univariata a più dimensioni. Un singolo campione $t_{i}$ di una traccia $t$ seguirà una distribuzione gaussiana con una funzione di densità di probabilità:
$f(x)={{e^{-(x-\mu )^{2}/{2\sigma }^{2}}} \over \sigma {\sqrt {2\pi }}}$
con media $\mu$ e deviazione standard $\sigma$. Un gruppo di tracce $T$ di $n$ misurazioni effettuate con una chiave fissata e ognuna composta da $m$ campioni, viene modellato come una distribuzione gaussiana multivariata con un vettore di medie e una matrice di covarianze. La funzione di densità di probabilità di $T$ è espressa come
$Pr(T=x)={exp(-{1 \over 2}(x-\mu )^{T}\sum ^{-1}(x-\mu )) \over {\sqrt {(2\pi )^{m}|\sum |}}}$
Il processo di misurazione viene ripetuto per tutte le chiavi $k_{i}$, con $1<i<l$ numero di bit, nel sottoinsieme dello spazio delle chiavi $K$ che l'attaccante ha considerato. La probabilità di utilizzo di una particolare chiave è sempre la stessa $P(k_{i})={1 \over np}$, dove np è il numero di possibili valori della chiave. Viene utilizzata la formula di Bayes per calcolare la probabilità di osservare una determinata traccia ${\widehat {T}}$ durante le misurazioni dato un valore di chiave $k_{i}$
$Pr({\widehat {T}}|k_{i})={Pr(k_{i}|{\widehat {T}})Pr({\widehat {T}}) \over Pr(k_{i})}$
Per eseguire l'attacco, viene raccolto un numero inferiore di tracce dal dispositivo target e, per ogni traccia, viene utilizzata la formula di Bayes, risolvendo per la probabilità del valore di chiave $k_{i}$, nel seguente modo
$Pr(k_{i}|{\widehat {T}})={Pr(k_{i}={\widehat {T}})Pr(k_{i}) \over \sum _{h=1}^{l}Pr(k_{h}={\widehat {T}})Pr(k_{h})}$
per valutare la probabilità che la traccia ${\widehat {T}}$ appartenga a un template con $k_{i}$ precedentemente costruito.