Speck ist eine symmetrische ARX-Chiffre. Dies bedeutet, innerhalb der Verschlüsselung werden nur die Operatoren AND, ROTATE und XOR verwendet. Speck kann in verschiedenen Modi betrieben werden, dabei ist die Schlüssellänge und die Blocklänge wählbar, wobei davon die Anzahl an Runden abhängt. Es werden mindestens 22 Runden und maximal 34 Runden durchlaufen. \cite{sleem2021speck} Innerhalb dieser Ausarbeitung wurde die "kleinste" Variante herangezogen, also jene mit 32 Bit Blocklänge und 64 Bit Schlüssellänge. Hierfür werden innerhalb der Verschlüsselung 22 Runden benötigt. Jede Verschlüsselungsrunde basiert auf dem zwei geteilten Klartext.
Der Pseudocode für Speck sieht wie folgt aus:
pt = Plaintext Bytes
Pt = Plaintext as 16 Bit Words
ct = Ciphertext Bytes
Ct = Ciphertext as 16 Bit Words
k = Key as Bytes
K = Key as 16 Bit Words
BytesToWords16(pt,Pt,8);
BytesToWords16(k,K,16);
Speck3264KeySchedule(K,rk);
Speck3264Encrypt(Pt,Ct,rk);
Words16ToBytes(Ct,ct,2);
Die in Speck verwendete Rundenfunktion ER16
wird bei der Verschlüsselung in allen 22 Runden aufgerufen, sowie als Funktion für die Key Schedule.
Diese Funktion sieht dabei wie folgt aus:
[IMAGE]
Da der Plaintext (Pt) in zwei Teile unterteilt wird (a 16 Bit), werden die beiden Teile im folgenden als Pt1 und Pt2 betitelt. Das gleiche gilt für den Ciphertext (Ct) mit den beiden Teilen Ct1 und Ct1.
Es gibt bereits eine Vielzahl von Seitenkanalangriffen (Power Analysis) gegen Blockschiffren. Die meisten beziehen sich dabei auf AES oder DES. Die Arbeit von Power Analysis Angriffen gegen Speck is bisher noch limitiert, es wurden jedoch schon Differential Power Analysis (DPA) \cite{speck_dpa} und Correlation Power Analysis Angriffe \cite{speck_cpa} gegen Speck präsentiert.
In diesem Paper wird ein Correlation Power Analysis (CPA) Angriff gegen Speck präsentiert welcher es ermöglicht den vollständigen Schlüssel aus einem Speck Ökosystem über einen Seitenkanal zu extrahieren.
Die Correlation Power Analysis (CPA) ist eine Variante von DPA. Der Angriff basiert auf dem Pearson Correlation Coefficient und nutzt Korrelationen zwischen des Klartext und des Stromverbrauchs des Chips. Durch CPA kann der Speck Rundenschlüssel Byte für Byte extrahiert werden, woraus sich der Schlüssel zurückrechnen lässt. Bei Schiffre wie AES funktioniert es Byte für Byte durch den Aufruf der S-Box. Bei Speck werden die Operatinen auf 16 Byte Wörtern durchgeführt. Hierbei besteht die Möglichkeit die Korrelation der gesamten 16 Bit zu modellieren ($2^16$ Korrelationen) oder man bricht die Operation in zwei Teile auf und unterteilt das 16-Bit Wort in zweimal 8-Bit, Little Endian und Big Endian, womit sich der Rundenkeys Byte für Byte extrahieren lässt.
Grundsätlizh stützt sich CPA auf eine konkrete Operation eines Zwischenwertes in der Rundenfunktion ER16
.