AES-GMC für
DEC
Voraussetzung:
DEC ist installiert.
Im Anhang findest du eine
unit gcm128.pas fürs Verschlüsseln und Entschlüsseln mit AES* GCM. (AES* von
DEC.)
Die
unit lässt sich leicht auch für andere AES Implementierungen (zum Beispiel
synopses mormot) anpassen.
Umgesetzt wurden die Algorithmen, welche in
"The Galois/Counter Mode of Operation (GCM)" by David A. McGrew John Viega beschrieben werden.
gcm128 wurde mit allen 47'250
Testvektoren von NIST erfolgreich getestet.
Beigelegt ist ein FMX-Testprogramm: Wenn du Verbesserungen an gcm128 vornimmst, kannst du damit testen, ob deine Version immer noch korrekt rechnet. Tipp: Teste immer auch mit den Testvektoren von NIST.
gcm128 nutzt für die Polynommultiplikation in GF(2^128) modulo f = 1 + α + α^2 + α^7 + α^128 eine 16*256*16Bytes = 64KB Tabelle (und ist damit punkto Datendurchsatz gegenüber mormots Pascal Lösung mit 4K Tabelle deutlich im Vorteil).
Hinweis: Für
intel (und viele andere Prozessoren) gibt es für AES und für die Polynommultiplikation schnellere Methoden dank speziellen Befehlen. (Eine schnelle Lösung für intel findest du bei synopses mormot,
ASM Code für die Polynommultiplikation
hier.)
intel-Win64:
Referenz: Synopses Lösung im mormot master Branch AES-NI + GCM 4KTabelle
mormot master Branch AES-NI +
GCM128 benötigt nur 0.75x so lang
DEC 6.2 AES +
GCM128 1.6x*
Schnellste Lösung für intel mormot AES-NI +
GCM mit intels pclmulqdq 0.53x
*Vorteil von
DEC: Läuft auch zum Beispiel auf Android.
Beachte u.a. auch die
Sicherheitshinweise zu AES GCM, u.a. bei Wikipedia.
Getestet mit Delphi 10.4 Update 2 unter
Win32, Win64, Android 11.
GCM128 könnte ausgebaut werden: Das Verschlüsseln via AES und die Berechnung von GHASH lässt sich parallelisieren.
Viel Spass.