Der AES-CBC KAT beinhaltet diverse Testdateien für den „Cipher Block Chaining“ („CBC“) Modus, nämlich „GFSbox.rsp“, „KeySbox.rsp“, „MMT.rsp“, „VarKey.rsp“, „VarTxt.rsp“ und „MCT.rsp“ und das Ganze in den Versionen 128, 192 und 256 Bit Schlüssellänge, wobei die „MCT“-Dateien im separaten Monte Carlo Test bearbeitet werden. Ihr erhaltet die Dateien über die Links https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/KAT_AES.zip, https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/aesmmt.zip und https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/aesmct.zip. Erläuterungen findet Ihr im PDF-Dokument https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/AESAVS.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.
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
AES CBC Known Answer Test (KAT) for information see: https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/Block-Ciphers for tests see: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/AESAVS.pdf get the testfiles: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/KAT_AES.zip testfiles for MMT: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/aesmmt.zip Test on 20.05.2020 12:12:13 with Java version: 11.0.6+8-b520.43 testing filename: kat/block_cipher/cbc/CBCVarKey128.rsp readLines: 1547 header lines: 6 nr of test vectors: 256 testing the data ... Test results filename tests passed failed kat/block_cipher/cbc/CBCVarKey128.rsp 256 256 0 kat/block_cipher/cbc/CBCVarTxt128.rsp 256 256 0 kat/block_cipher/cbc/CBCGFSbox128.rsp 14 14 0 kat/block_cipher/cbc/CBCKeySbox128.rsp 42 42 0 kat/block_cipher/cbc/CBCMMT128.rsp 20 20 0 kat/block_cipher/cbc/CBCVarKey192.rsp 384 384 0 kat/block_cipher/cbc/CBCVarTxt192.rsp 256 256 0 kat/block_cipher/cbc/CBCGFSbox192.rsp 12 12 0 kat/block_cipher/cbc/CBCKeySbox192.rsp 48 48 0 kat/block_cipher/cbc/CBCMMT192.rsp 20 20 0 kat/block_cipher/cbc/CBCVarKey256.rsp 512 512 0 kat/block_cipher/cbc/CBCVarTxt256.rsp 256 256 0 kat/block_cipher/cbc/CBCGFSbox256.rsp 10 10 0 kat/block_cipher/cbc/CBCKeySbox256.rsp 32 32 0 kat/block_cipher/cbc/CBCMMT256.rsp 20 20 0 |
Hier die Daten des Monte Carlo Tests:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
AES CBC Known Answer Test (KAT) Monte Carlo for information see: https://csrc.nist.gov/Projects/cryptographic-algorithm-validation-program/Block-Ciphers for tests see: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/AESAVS.pdf get the testfiles: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/aes/aesmct.zip Test on 20.05.2020 12:23:19 with Java version: 11.0.6+8-b520.43 testing filename: kat/block_cipher/cbc/CBCMCT128.rsp readLines: 1212 header lines: 6 nr of test vectors: 200 testing the data nrTestPassedEncryption: 100 ... Test results filename tests passed failed kat/block_cipher/cbc/CBCMCT128.rsp 200 200 0 kat/block_cipher/cbc/CBCMCT192.rsp 200 200 0 kat/block_cipher/cbc/CBCMCT256.rsp 200 200 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.
Letzte Bearbeitung: 20.05.2020