Preverjanje testnih vektorjev
l4re/crypto_test_vectors.json vsebuje celotne zahteve in odgovore binarnega protokola, bajt za bajtom, s
pripadajočimi ključi. Integratorjem služijo kot referenca za lastno izvedbo. Ta navodila pokažejo, kako
vektorje preračunate neodvisno od storitve in kako jih ustvarite znova.
Kaj datoteka vsebuje
| Skupina | Število | Vsebina vektorja |
|---|---|---|
| AES-256-GCM | 4 | ključ, zahteva 0x01, odgovor z enkratno vrednostjo, oznako in šifriranim besedilom |
| ML-DSA | 2 | ML-DSA-65 in ML-DSA-44: par ključev, zahteva 0x10, odgovor s podpisom |
| ML-KEM | 2 | ML-KEM-768 in ML-KEM-1024: par ključev, zahteva 0x20, odgovor s skrivnostjo in šifriranim besedilom |
Poleg tega datoteka vsebuje tri testna potrdila RSA. Vsi ključi so testni ključi in v produkcijskem sistemu nimajo kaj iskati.
ML-DSA podpisuje hedged; isto sporočilo da ob vsakem zagonu drugačen podpis. Podpise zato preverjajte s preverjanjem, ne s primerjavo bajtov.
Neodvisen preračun
tools/verify-test-vectors.py vsak vektor preračuna z libcrypto po vaši izbiri, brez kode storitve. Če
je mogoče, uporabite drugo različico OpenSSL od tiste, s katero so vektorji nastali.
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
Skripta dešifrira vsak vektor AES, preveri vsak podpis in ga za spremenjeno sporočilo zavrne ter izvede
dekapsulacijo vsakega šifriranega besedila ML-KEM. Ob uspehu se konča z 8 vectors, 0 failures in
povratno vrednostjo 0. libcrypto mora poznati ML-DSA in ML-KEM, torej biti vsaj OpenSSL 3.5.
Ponovno ustvarjanje
cd l4re cargo test --test crypto_test_vectors test_export_full_suite -- --ignored
Test na novo zapiše crypto_test_vectors.json s svežimi ključi in časom nastanka v polju created. Preden
zapiše, preveri vsak podpis, izvede dekapsulacijo vsakega šifriranega besedila in velikosti primerja s
konstantami velikosti storitve, ki so navedene tudi v wvds_crypto.h. Rezultat nato preverite s skripto
zgoraj.