Preverjanje podpisa PQ ne uspe
X509Chain.Build(certificate, CryptoMode.Hybrid) vrne false, čeprav ChainStatus ne navaja napake. Ali pa
preverjanje sproži CryptographicException, na primer:
Certificate 'CN=signer.example.com' is signed with ML-DSA, but its issuer 'CN=Vzorec PQ Root CA' has no ML-DSA subject key.
Okolje
Vsa ciljna okolja. Zadeva preverjanje verig s CryptoMode.Hybrid ali CryptoMode.PostQuantum.
Vzrok
V načinu PQ knjižnica najprej preveri verigo kot .NET, nato pa podpis ML-DSA vsakega potrdila s ključem ML-DSA njegovega izdajatelja. Rezultati se razlikujejo takole:
| Rezultat | Pomen |
|---|---|
false, razlog v ChainStatus | Klasično preverjanje .NET ni uspelo, na primer zaradi neznanega korenskega potrdila. Podpisi PQ niso bili preverjeni. |
false, ChainStatus brez napake | Vsaj en podpis ML-DSA je neveljaven. Potrdilo je bilo po izdaji spremenjeno ali pa izdajatelj v verigi ni tisti, ki je podpisal. |
CryptographicException | Dela PQ ni mogoče preveriti: potrdilo v verigi ne nosi podpisa ML-DSA ali pa njegovemu izdajatelju manjka ključ ML-DSA. Knjižnica tega ne šteje za veljavno, pa tudi ne tiho za neveljavno. |
V sistemu Linux lahko poleg tega že klasično preverjanje verige s čistim izdajateljem ML-DSA ne uspe, če .NET
naloži libcrypto brez ML-DSA.
Rešitev
Preberite poročilo o preverjanju. Za vsako potrdilo navede stanje podpisa PQ:
if (!chain.Build(certificate, CryptoMode.Hybrid)) { foreach (var element in chain.GetValidationReport().Elements) { Console.WriteLine($"{element.Subject}: {element.PqSignatureStatus}"); } }
Invalidpri potrdilu: potrdilo izdajte znova. Neveljavnega podpisa ni mogoče popraviti.- Izjema zaradi manjkajočega podpisa: veriga vsebuje čisto klasično potrdilo. To verigo preverite s
CryptoMode.Classicali pa potrdilo zamenjajte s hibridnim. - V sistemu Linux: poskrbite, da tudi .NET naloži OpenSSL 3.5 ali novejši, kot opisuje Vključitev OpenSSL.
sl/wiki/pqcrypt/lib/troubleshooting/pq-signature-check-fails.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille