Barvna shema: Svetla
Trenutno dejavna stran: start » de » Dokumentation » Post-Quanten-Kryptografie » WvdS Crypto Service – Überblick » Anleitungen » Testvektoren prüfen

Testvektoren prüfen

l4re/crypto_test_vectors.json enthält vollständige Anfragen und Antworten des Binärprotokolls, Byte für Byte, mit den dazugehörigen Schlüsseln. Sie dienen Integratoren als Referenz für die eigene Implementierung. Diese Anleitung zeigt, wie Sie die Vektoren unabhängig vom Dienst nachrechnen und wie Sie sie neu erzeugen.

Was die Datei enthält

GruppeAnzahlInhalt je Vektor
AES-256-GCM4Schlüssel, Anfrage 0x01, Antwort mit Nonce, Tag und Chiffrat
ML-DSA2ML-DSA-65 und ML-DSA-44: Schlüsselpaar, Anfrage 0x10, Antwort mit Signatur
ML-KEM2ML-KEM-768 und ML-KEM-1024: Schlüsselpaar, Anfrage 0x20, Antwort mit Geheimnis und Chiffrat

Dazu kommen drei RSA-Testzertifikate. Alle Schlüssel sind Testschlüssel und haben in keinem Produktivsystem etwas verloren.

ML-DSA signiert hedged; dieselbe Nachricht ergibt bei jedem Lauf eine andere Signatur. Prüfen Sie Signaturen deshalb durch Verifizieren, nicht durch Bytevergleich.

Unabhängig nachrechnen

tools/verify-test-vectors.py rechnet jeden Vektor mit einem libcrypto Ihrer Wahl nach, ohne Code des Dienstes. Nehmen Sie möglichst eine andere OpenSSL-Fassung als die, mit der die Vektoren entstanden sind.

python tools/verify-test-vectors.py l4re/crypto_test_vectors.json "C:\Program Files\OpenSSL\bin\libcrypto-3-x64.dll"
python3 tools/verify-test-vectors.py l4re/crypto_test_vectors.json /usr/lib/x86_64-linux-gnu/libcrypto.so.3

Das Skript entschlüsselt jeden AES-Vektor, verifiziert jede Signatur und verwirft sie für eine veränderte Nachricht, und entkapselt jedes ML-KEM-Chiffrat. Bei Erfolg endet es mit 8 vectors, 0 failures und dem Rückgabewert 0. Das libcrypto muss ML-DSA und ML-KEM kennen, also mindestens OpenSSL 3.5 sein.

Neu erzeugen

cd l4re
cargo test --test crypto_test_vectors test_export_full_suite -- --ignored

Der Test schreibt crypto_test_vectors.json neu, mit frischen Schlüsseln und dem Erzeugungszeitpunkt im Feld created. Bevor er schreibt, verifiziert er jede Signatur, entkapselt jedes Chiffrat und prüft die Größen gegen die Größenkonstanten des Dienstes, die auch in wvds_crypto.h stehen. Prüfen Sie das Ergebnis danach mit dem Skript oben.

Verwandte Themen

de/wiki/pqcrypt/svc/how-to/verify-test-vectors.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille