Color scheme: Dark
You are here: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Odpravljanje težav » Preverjanje podpisa PQ ne uspe

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:

RezultatPomen
false, razlog v ChainStatusKlasično preverjanje .NET ni uspelo, na primer zaradi neznanega korenskega potrdila. Podpisi PQ niso bili preverjeni.
false, ChainStatus brez napakeVsaj en podpis ML-DSA je neveljaven. Potrdilo je bilo po izdaji spremenjeno ali pa izdajatelj v verigi ni tisti, ki je podpisal.
CryptographicExceptionDela 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

  1. 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}");
        }
    }
  2. Invalid pri potrdilu: potrdilo izdajte znova. Neveljavnega podpisa ni mogoče popraviti.
  3. Izjema zaradi manjkajočega podpisa: veriga vsebuje čisto klasično potrdilo. To verigo preverite s CryptoMode.Classic ali pa potrdilo zamenjajte s hibridnim.
  4. 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 · Last modified: by Wolfgang van der Stille