Known Answer Tests (KAT)

Diese Rubrik beschäftigt sich mit den „Known Answer Tests“ oder auf Deutsch „bekannte Antworten Tests“ (abgekürzt mit „KAT“). Was hat es sich mit den „KAT“s auf sich? Die Antwort ist ganz einfach – der KAT prüft die Richtigkeit des jeweiligen Verfahrens mit bekannten Testdaten („test vector“).

Seitens des „Computer Security Resource Center“ wurde ein „Cryptographic Algorithm Validation Program“ (CAVP) entworfen und hier können Firmen ihre Entwicklungen auf Richtigkeit prüfen lassen. Auf der Webseite https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program erhaltet Ihr alle notwendigen Informationen und vor Allem die originalen Testvektoren.

Die Unterseite „KAT Erläuterungen“ zeigt Euch am Beispiel des SHA-1-Kats, wie ich die jeweiligen Anwendungen programmiert habe.

Folgende Known Answer Tests stehen Euch hier zur Verfügung:

Bereich Block Cipher: AES-ECB KAT (Tests „GFSbox.rsp“, „KeySbox.rsp“,  „VarKey.rsp“, „VarTxt.rsp“, „MMT.rsp“ und „MCT.rsp“ in 128, 192 und 256 Bit Schlüssellänge), AES-CBC KAT (Tests dito), AES-CFB KAT und AES-OFB KAT.

Bereich Block Cipher Mode: es gibt noch spezielle Unterarten der AES-Modi: AES-CCM KAT für 128, 192 und 256 Bit Schlüssellänge, AES-GCM KAT für 128, 192 und 256 Bit Schlüssellänge.

Für die (Transport-) Verschlüsselung von Schlüsseln gibt es eine spezielle Betriebsart und die nennt sich Keywrapping. Hier teste ich mit dem AES-KEYWRAP KAT diesen Modus. Einen neuen Untermodus von AES-GCM, nämlich AES-GCM-SIV teste ich mit dem Programm AES-GCM-SIV KAT.

Bereich Secure Hashing: SHA-1 KAT (kurze und lange Datensätze sowie Monte Carlo Test), SHA-2 KAT (kurze und lange Datensätze sowie Monte Carlo Test für SHA256, SHA384, SHA512, SHA512-244 und SHA512-256), SHA-3 KAT (kurze und lange Datensätze sowie Monte Carlo Test für SHA224, SHA256, SHA384, und SHA512), SHAKE-KAT (kurze, lange und variable Datensätze sowie Monte Carlo Test für SHAKE128 und SHAKE256).

Alle Sourcecodes und Testdateien findet Ihr auch in meinem GitHub-Repository https://github.com/java-crypto/Known_Answer_Tests.

Letzte Bearbeitung: 02.06.2020