AES-CCM KAT

Der AES-CCM KAT beinhaltet diverse Testdateien für den „Counter with CBC-MAC“ („CCM“) Modus, welche in unterschiedlichen Einleseprogrammen verarbeitet werden müssen. Es handelt sich um Dateien für die Testarten „Variable Tag Test“,“Variable Payload Test“, „Variable Nonce Test“, „Variable Associated Data Test“ und den „Decryption-Verification Process Test“, jeweils in den Versionen 128, 192 und 256 Bit Schlüssellänge. Ein Monte Carlo Test wird nicht angeboten. Ihr erhaltet die Dateien über den Link https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/ccmtestvectors.zip. Erläuterungen findet Ihr im PDF-Dokument https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/CCMVS.pdf.

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. Hierbei werdet Ihr feststellen, das im nativen OpenJava JDK der CCM-Modus nicht angeboten wird, d.h. Ihr benötigt für den Test den Security-Provider Bouncy Castle.

Beim Betrachten des Quellcodes in „Run_Aes_Ccm_Kat.java“ wird Euch auffallen, das ich bene dem „offiziellen“ Test auch jeweils einen „inoffiziellen Test“ mache. Beim „Variable Tag Test“ wird ein Eingabestring verschlüsselt und geprüft, ob die verschlüsselten Werte mit den Testvektor-Datensätzen übereinstimmen. Ich führe danach noch die Entschlüsselung der Daten durch und vergleiche diese mit dem Eingabestring.

In diesem Beitrag zeige ich Euch nur die Ergebnisse der Tests an. Ich habe die „verbose“-Variable auf „false“ gesetzt.

Wie nicht anders zu erwarten wurden alle Tests von OpenJava 11 korrekt durchgeführt:

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.

Letzte Bearbeitung: 23.05.2020