Der AES-GCM-SIV KAT beinhaltet drei Testdateien für den „Galois/Counter Mode“ („GCM“) Modus in der Unterart „“Syntetic Initialization Vector“ („SIV“), nämlich „AEAD_AES_128_GCM_SIV.txt“ und „AEAD_AES_256_GCM_SIV.txt“ für 128 und 256 Bit Schlüssellänge. Zusätzlich gibt es noch eine Datei speziell für das Keywrapping („AEAD_AES_256_GCM_SIV_KEYWRAP.txt“. Dieser Known Answer Test ist nicht Teil des „offiziellen“ NIST-Testprogramms, sondern ich teste die Implementierung anhand der Testvektoren, die sich im Beschreibungsdokument zum Verfahren befinden. Ihr erhaltet die Beschreibung über den Link https://tools.ietf.org/html/rfc8452. Ich habe die Datensätze einfach herauskopiert, die Seiten „Header“ und „Footer“ gelöscht und mehrzeilige Datensätze in eine Datenzeile gebracht.
Für diesen Test benötigt Ihr eine externe Bibliothek, da derzeit werden OpenJava noch Bouncy Castle eine Implementierung für den Modus AES GCM SIV anbieten. Ihr erhaltet die 4 notwendigen Java-Dateien im GitLab-Repository https://gitlab.com/tlchiu40209/easyaes-gcm-siv.
Zum besseren Verständnis des Testablaufes empfehle ich Euch, einen Blick in den Artikel KAT Erläuterungen hineinzuschauen. Weiterhin solltet Ihr vor den Tests die verfügbaren Block Cipher Algorithmen mit dem kleinen Programm in Block Cipher Algorithms ermitteln.
In diesem Beitrag zeige ich Euch nur die Ergebnisse der Tests an. Ich habe die „verbose“-Variable auf „false“ gesetzt.
Bei der Betrachtung der Testergebnisse wird Euch auffallen, das ich in separaten Spalten die Ergebnisse für die Ver- und Entschlüsselung ausweise. Aus diesem Grund findet Ihr auch unter „Tests“ die Anzahl der Testdatensätze (z.B. 24) und erfolgreiche Tests mit der doppelten Zahl („48“). Alle Tests wurden von der externen Bibliothek unter OpenJava 11 korrekt durchgeführt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
AES GCM SIV Known Answer Test (KAT) for information see: https://tools.ietf.org/html/rfc8452 for tests see: https://tools.ietf.org/html/rfc8452 get the testfiles: https://tools.ietf.org/html/rfc8452 get EasyAES here: https://gitlab.com/tlchiu40209/easyaes-gcm-siv EasyAES is available under Licence: Apache License Version 2.0, January 2004 Test on 02.06.2020 11:08:25 with Java version: 11.0.6+8-b520.43 testing filename: kat/block_cipher/gcm_siv/AEAD_AES_128_GCM_SIV.txt filename: kat/block_cipher/gcm_siv/AEAD_AES_128_GCM_SIV.txt readLines: 421 ... Test results filename tests passed failed Enc passed failed Dec passed failed kat/block_cipher/gcm_siv/AEAD_AES_128_GCM_SIV.txt 24 48 0 24 0 24 0 kat/block_cipher/gcm_siv/AEAD_AES_256_GCM_SIV.txt 24 48 0 24 0 24 0 kat/block_cipher/gcm_siv/AEAD_AES_256_GCM_SIV_KEYWRAP.txt 2 4 0 2 0 2 0 |
Alle Quellcodes und die dazu gehörenden Testdateien zu den Known Answer Tests findet Ihr zum Download in meinem GitHub-Repository Known_Answer_Tests, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/Known_Answer_Tests. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für dieses Programm aber nicht notwendig ist.
Noch ein Wort zum Thema „Lizenz“: Die von mir erstellten Beispiele stehen unter der „Unlicense“-Lizenz. Die hier genutzte Bibliothek „EasyAES“ kann unter Beachtung der Apache License Version 2.0, January 2004, genutzt werden.
Letzte Bearbeitung: 02.06.2020