Color scheme: Light
You are here: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Odpravljanje težav » OpenSSL ne ponuja ML-DSA ali ML-KEM

OpenSSL ne ponuja ML-DSA ali ML-KEM

PostQuantumConfig.EnablePostQuantum ali operacija z deležem PQ sproži CryptographicException s tem sporočilom, čeprav je bil OpenSSL naložen:

The loaded OpenSSL 3.0.13 ('/usr/lib/x86_64-linux-gnu/libcrypto.so.3') does not provide ML-DSA-65. Use an OpenSSL 3 build whose providers include it; the default provider has ML-DSA and ML-KEM from OpenSSL 3.5 on.

Namesto ML-DSA-65 je lahko naveden kateri koli nabor parametrov ML-DSA in ML-KEM, poleg tega še HKDF, ARGON2ID, PBKDF2, AES-256-GCM ali CHACHA20-POLY1305.

Okolje

Vsa ciljna okolja s ponudnikom za OpenSSL: .NET Framework, .NET Core 3.1 in .NET 8 v sistemih Windows, Linux in macOS. Blazor WebAssembly to ne zadeva, ker OpenSSL prinese kot modul WebAssembly.

Vzrok

Knjižnica naloži vsako libcrypto z vmesnikom OpenSSL 3. Katere postopke namestitev ponuja, ni odvisno samo od številke različice, temveč od ponudnikov (providers), ki jih OpenSSL naloži. Zato knjižnica naloženo namestitev za vsak postopek vpraša, ali ga ponuja:

  • EnablePostQuantum(CryptoMode.Hybrid) in EnablePostQuantum(CryptoMode.PostQuantum) ob zagonu vprašata za ML-DSA-65 in ML-KEM-768, privzeta nabora parametrov. Če kateri manjka, metoda sproži izjemo, DefaultMode pa obdrži dotedanjo vrednost.
  • Vsaka operacija pred izračunom vpraša za postopek, ki ga potrebuje, na primer ML-DSA-87 za ključ s tem naborom parametrov ali Argon2id za zaščito ključa.

Sporočilo se pojavi v teh primerih:

PrimerPrepoznavni znak
OpenSSL pred 3.5Sporočilo navaja različico od 3.0 do 3.4. Privzeti ponudnik ML-DSA in ML-KEM ponuja šele od 3.5. V sistemu Linux je to pogosto sistemski OpenSSL, na primer 3.0 v Ubuntu 24.04.
OpenSSL pred 3.2 in Argon2idSporočilo navaja ARGON2ID in različico 3.0 ali 3.1.
Gradnja brez postopkovRazličica je 3.5 ali novejša. Namestitev je bila zgrajena z no-ml-dsa ali no-ml-kem.
Konfiguracija brez privzetega ponudnikaRazličica je 3.5 ali novejša. Konfiguracija OpenSSL (OPENSSL_CONF, openssl.cnf) naloži samo ponudnike, ki postopka ne ponujajo.

Če pravila zavrnejo nabor parametrov, na primer ML-DSA-44 brez izjeme, knjižnica to sporoči najprej, tudi če OpenSSL nabora parametrov ne ponuja. To sporočilo opisuje Pravila zavrnejo operacijo.

Rešitev

  1. Iz sporočila preberite različico in pot. Navajata namestitev, ki jo je knjižnica dejansko naložila.
  2. Če je različica starejša od 3.5, namestite OpenSSL 3.5 ali novejši za arhitekturo procesa in PostQuantumConfig.OpenSslPath nastavite na njegovo mapo z libcrypto, kot opisuje Vključitev OpenSSL.
  3. Če je različica 3.5 ali novejša, z orodjem ukazne vrstice iste namestitve preverite, katere postopke ponuja:

    openssl list -signature-algorithms
    openssl list -kem-algorithms

    Če ML-DSA-65 ali ML-KEM-768 tam manjkata, preverite konfiguracijo OpenSSL, na katero kaže OPENSSL_CONF, in vklopite privzeti ponudnik. Če manjkata tudi brez konfiguracije, je bila namestitev zgrajena brez teh postopkov; uporabite drugo.

  4. Proces znova zaženite. Knjižnica OpenSSL naloži enkrat na proces in si odgovore zapomni.

Ali naložena namestitev ponuja ML-DSA-65 in ML-KEM-768, aplikacija vnaprej preveri z MLDsaKey.IsSupported in MLKemKey.IsSupported, ne da bi nastala izjema.

sl/wiki/pqcrypt/lib/troubleshooting/openssl-lacks-pq-algorithms.txt · Last modified: by Wolfgang van der Stille