Oprindelig publiceringsdato: 21. november 2025
KB-id: 5073121
Introduktion
I Windows-opdateringerne fra 14. oktober 2025 til CVE-2024-30098 blev der afsløret problemer i programmer, hvor koden ikke korrekt identificerer, hvilken udbyder der administrerer nøglen til certifikater, der er overført fra et chipkort til certifikatlageret. Denne fejlidentifikation kan medføre, at kryptografiske handlinger mislykkes i visse scenarier. Dette dokument giver vejledning til programudviklere om, hvordan de registrerer den korrekte handler og løser disse problemer.
Resume
Når certifikater overføres fra et chipkort til Windows-certifikatlageret, kan overførselsprocessen bruge en af følgende udbydere:
-
Legacy Cryptographic Service Provider (CSP), som er afhængig af den ældre CAPI (Cryptographic Application Programming Interface)
-
Key Storage Provider (KSP), der er afhængig af Cryptography API: Next Generation (CNG). Dette var den moderne erstatning, der blev introduceret i Windows Vista.
Før rettelsen til CVE-2024-30098 brugte overførselsalgoritmen CSP til RSA-baserede certifikater og KSP til alle andre. Denne fremgangsmåde var usikker, fordi CAPI ikke understøtter moderne kryptografiske algoritmer, hvilket begrænser sikkerhedsfunktionerne.
Den 14. oktober 2025 fjernede sikkerhedsopdateringer denne særlige håndtering, og nu bruges KSP til alle certifikater.
Fastlæg det API-sæt, der skal bruges
Programmer, der er afhængige af RSA-nøgler, der administreres af CSP, kan mislykkes, når nøglen administreres af KSP. For at løse dette skal programmer registrere, hvilken udbyder der administrerer nøglen, og bruge det tilsvarende API-sæt (CAPI eller CNG).
Vigtigt!: Brug ikke funktionerne CryptAcquireContextW eller CryptAcquireContextA , da API'en frarådes. Brug i stedet funktionen CryptAcquireCertificatePrivateKey .
Funktionen CryptAcquireCertificatePrivateKey
Kald af CryptAcquireCertificatePrivateKey returnerer et handle (phCryptProvOrNCryptKey) af typen HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Dette håndtag kan være:
-
CSP-håndtag (HCRYPTPROV): Brug CryptoAPI-funktioner som f.eks. CryptSignHash.
-
CNG-håndtag (NCRYPT_KEY_HANDLE): Brug CNG-funktioner som F.eks. NCryptSignHash.
Bemærk!: Når du kalder CryptAcquireCertificatePrivateKey, skal du sørge for at medtage CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG i parameteren dwFlags.
Hvis du vil bestemme handletypen, skal du kontrollere pdwKeySpec-værdien :
|
pdwKeySpec-værdi |
Crypto-API, der skal bruges |
|
AT_KEYEXCHANGE eller AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Løsning
En midlertidig løsning er tilgængelig for kunder, der påvirkes af håndhævelsen af denne ændring. Der findes en midlertidig registreringsdatabasenøgle til at skifte funktionsmåden fra gennemtvingelse til overvågningstilstand .
Vigtigt! Understøttelse af denne registreringsdatabasenøgle fjernes i opdateringerne for april 2026.
|
Sti til registreringsdatabasen |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Type |
REG_DWORD |
|
Værdiens navn |
DisableCapiOverrideForRSA |
|
Værdiens data |
|
Referencer
Funktionen CryptAcquireCertificatePrivateKey (wincrypt.h)
CVE-2024-30098 | Sikkerhedsproblem i Windows Cryptographic Services Security Feature Bypass
.