CLMUL

Carry-less Multiplication (CLMUL) (dt.: übertragsfreie Multiplikation) ist eine Befehlserweiterung der x86-Prozessorarchitektur, die eine schnelle, hardwareunterstützte Berechnung in Bereichen aus der Zahlentheorie ermöglicht. Die Befehlserweiterung wurde im Jahr 2008 von Intel vorgeschlagen und ab 2010 bei der Westmere-Mikroarchitektur eingeführt.[1] Sie ist in allen Intel-Prozessoren ab der Intel-Haswell-Mikroarchitektur und AMD-Prozessoren ab AMD Bulldozer verfügbar.

Übertragsfrei bedeutet hier 1 + 1 = 0. {\displaystyle 1+1=0.} Die Zwischensummen bei der Multiplikation werden bitweise durch XOR-Verknüpfung gebildet.

Anwendungsbeispiele sind die Kryptografie bei Blockverschlüsselungen im Betriebsmodus Galois/Counter Mode (GCM), welcher auf Berechnungen in einem Galoiskörper basiert. Ein anderes Anwendungsfeld sind die Erzeugung von Prüfsummen im Bereich der zyklischen Redundanzprüfungen (CRC).

Übertragsfreies Produkt

Seien a {\displaystyle a} und b {\displaystyle b} Zahlen mit den Binärdarstellungen ( a n 1 a 1 a 0 ) 2 {\displaystyle (a_{n-1}\ldots a_{1}a_{0})_{2}} bzw. ( b n 1 b 1 b 0 ) 2 {\displaystyle (b_{n-1}\ldots b_{1}b_{0})_{2}} . Das übertragsfreie Produkt ist dann wie folgt definiert:

clmul ( a , b ) = k , l = 0 n 2 k + l a k b l {\displaystyle \operatorname {clmul} (a,b)=\bigoplus _{k,l=0}^{n}2^{k+l}a_{k}b_{l}} ,

wobei {\displaystyle \oplus } die bitweise XOR-Verknüpfung darstellt. Der Zusatz „übertragsfrei“ wird klar, wenn man obigen Ausdruck mit der regulären Multiplikation vergleicht:

a b = k , l = 0 n 2 k + l a k b l {\displaystyle ab=\sum _{k,l=0}^{n}2^{k+l}a_{k}b_{l}}

wo wegen der Summe immer dann ein Übertrag in das Bit k + l + 1 {\displaystyle k+l+1} notwendig ist, wenn a k = b l = 1 {\displaystyle a_{k}=b_{l}=1} . Da aber 1 1 = 0 {\displaystyle 1\oplus 1=0} , fällt der Übertrag in clmul weg. Wegen der einfacheren Berechnung ergibt sich folgende einfache Binärdarstellung ( c n 1 c 1 c 0 ) 2 {\displaystyle (c_{n-1}\ldots c_{1}c_{0})_{2}} für das übertragsfreie Produkt:

c l = k = 0 l a k b l k {\displaystyle c_{l}=\bigoplus _{k=0}^{l}a_{k}b_{l-k}} .

Das übertragsfreie Produkt hat ähnliche Eigenschaften wie das reguläre Produkt:

  • Kommutativgesetz: clmul ( a , b ) = clmul ( b , a ) {\displaystyle \operatorname {clmul} (a,b)=\operatorname {clmul} (b,a)}
  • Assoziativgesetz: clmul ( a , clmul ( b , c ) ) = clmul ( clmul ( a , b ) , c ) {\displaystyle \operatorname {clmul} (a,\operatorname {clmul} (b,c))=\operatorname {clmul} (\operatorname {clmul} (a,b),c)}
  • Distributivgesetz: clmul ( a , b c ) ) = clmul ( a , b ) clmul ( a , c ) {\displaystyle \operatorname {clmul} (a,b\oplus c))=\operatorname {clmul} (a,b)\oplus \operatorname {clmul} (a,c)}

Befehlssatzerweiterung

Die Befehle aus der Erweiterung berechnen aus den Eingabewerten von zwei 64 Bit das übertragsfreie Produkt von 128 Bit und legen das Ergebnis in einem 128 Bit breiten XMM-Register ab. Als Quelle für die beiden Faktoren kann je nach Adressierungsmodus entweder ein anderes XMM-Register, dann werden die beiden 64 Bit breiten Hälften eines XMM-Registers als zwei Faktoren betrachtet, oder die Hälften von zwei verschiedenen XMM-Registern oder eine Speicheradresse im Hauptspeicher angegeben werden.

Die Multiplikation von zwei 128 bit breiten Eingabewerten kann mit Hilfe des Karazuba-Algorithmus in vier Rechenschritten erfolgen.[2]

Literatur

  • Christoph Puttmann: Ressourceneffiziente Hardware-Software-Kombinationen für Kryptographie mit elliptischen Kurven, Dissertation an der Technischen Fakultät der Universität Bielefeld, Bielefeld 2014 PDF

Einzelnachweise

  1. Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode. Abgerufen am 15. Dezember 2016. 
  2. Tetsu Iwata, Jung Hee Cheon: Advances in Cryptology - AsiaCrypt 2015: 21st International Conference on the Theory and Application of Cryptology and Information Security, Auckland, New Zealand. Part 1, Verlag Springer, Heidelberg 2015 ISBN 9783662487969 PDF
V
Befehlssatzerweiterungen der x86-Architektur (16 Bit; 32 Bit: IA-32; 64 Bit: x64)
Betriebsmodi

Real ModeProtected ModeVirtual 8086 ModeSystem Management ModeLong ModeCompatibibility Mode

Befehlssatzerweiterungen

x87PAENXAMD64/Intel 64 (x64) ⬝ HTTVT-x/AMD-V/VIA VT3DNow!MMXSSESSE2SSE3SSSE3SSE4SSE4aSSE5F16CAVX ⬝ CLMUL ⬝ AES-NIFMATSXBMIMPXSGX