Gli attacchi di Side Channel sfruttano le informazioni acquisite dall'osservazione o dall'interazione con un sistema in un modo diverso da quello previsto dai suoi creatori. Spesso questo viene fatto per dedurre informazioni sulle chiavi di crittografia o altre informazioni segrete.
Alcuni dei più comuni vettori di attacco del canale laterale sono:
- Timing
- Monitoraggio dell'alimentazione
- Analisi della gestione degli errori
Esempi per il citato includono:
- Attacco di temporizzazione della cache AES per determinare le chiavi di crittografia ( ottimo documento di DJ Bernstein )
- Analisi di potenza differenziale contro DES per determinare le chiavi di crittografia ( famoso documento di P Kocher )
- La gestione degli errori dei passaporti RFID viene sfruttata per inferire la nazionalità - > violazione della privacy ( link )
Mentre Wikipedia afferma che:
... a side-channel attack is any attack based on information gained from the physical implementation of a cryptosystem ...
Direi (insieme a Bernstein e altri) che le debolezze del canale laterale potrebbero emergere anche dal design. Nell'esempio AES ciò è dovuto al fatto che è praticamente impossibile scrivere codice di esecuzione costante per l'elaborazione generale mantenendo l'efficienza.
Quindi, per tornare alla tua domanda; mentre si sfrutta un attacco di canale laterale in un sistema implementato, la causa principale della sua esistenza non può essere generalmente essere attribuita solo all'implementazione. Dovrai esaminare un sistema specifico e le sue implementazioni e potresti scoprire che la risposta alla domanda dipende in gran parte da dove posizioni il confine tra progettazione e implementazione.
(Se il design di AES avesse garantito tempi di calcolo statici, l'attacco di temporizzazione non sarebbe stato possibile su qualsiasi implementazione corretta come un esempio ...)
Potresti, tuttavia, avere implementazioni differenti di AES che sono o non sono vulnerabili ad un attacco di temporizzazione, per rispondere alla tua domanda sui sistemi A & B (Il sistema A può imporre tempi di calcolo statici mentre B non lo fa) .
Con un modello di attaccante ben definito direi che è possibile definire un algoritmo resistente ai canali laterali. Per favore, chiarisci questa domanda: non sono sicuro di averti compreso appieno ..
Modifica: Un'altra lettura più divertente e interessante in questo breve e facilmente leggibile articolo . :)