Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
737 Beiträge
 
Delphi 11 Alexandria
 
#1

AES-GCM für DEC

  Alt 19. Jul 2021, 21:10
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.
Angehängte Dateien
Dateityp: zip GCM_FMX.zip (31,2 KB, 17x aufgerufen)
Michael Gasser

Geändert von Michael II (20. Jul 2021 um 14:47 Uhr)
  Mit Zitat antworten Zitat