Ursprungligt publiceringsdatum: den 21 november 2025
KB-ID: 5073121
Introduktion
I Windows-uppdateringarna från 14 oktober 2025 som adresserade CVE-2024-30098 avslöjades problem i program där koden inte identifierar korrekt vilken leverantör som hanterar nyckeln för certifikat som har spridits från ett smartkort till certifikatarkivet. Den här felidentifieringen kan leda till att kryptografiska åtgärder misslyckas i vissa scenarier. Det här dokumentet innehåller vägledning för programutvecklare om hur du identifierar rätt hanterare och löser dessa problem.
Sammanfattning
När certifikat sprids från ett smartkort till Windows-certifikatarkivet kan spridningsprocessen använda någon av följande leverantörer:
-
Legacy Cryptographic Service Provider (CSP), som förlitar sig på det äldre CAPI (Cryptographic Application Programming Interface)
-
Nyckellagringsprovider (KSP) som använder Cryptography API: Next Generation (CNG). Detta var den moderna ersättning som introducerades i Windows Vista.
Före korrigeringen för CVE-2024-30098 använde spridningsalgoritmen CSP för RSA-baserade certifikat och KSP för alla andra. Den här metoden var osäker eftersom CAPI inte stöder moderna kryptografiska algoritmer, vilket begränsar säkerhetsfunktionerna.
Säkerhetsuppdateringarna från 14 oktober 2025 tog bort den här speciella hanteringen och nu används KSP för alla certifikat.
Bestämma vilken API-uppsättning som ska användas
Program som förlitar sig på att RSA-nycklar hanteras av CSP kan misslyckas när nyckeln hanteras av KSP. För att lösa detta måste program identifiera vilken leverantör som hanterar nyckeln och använda motsvarande API-uppsättning (CAPI eller CNG).
Viktigt!: Använd inte funktionerna CryptAcquireContextW eller CryptAcquireContextA eftersom API:t är inaktuellt. Använd i stället funktionen CryptAcquireCertificatePrivateKey .
Funktionen CryptAcquireCertificatePrivateKey
Calling CryptAcquireCertificatePrivateKey returns a handle (phCryptProvOrNCryptKey) of type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Det här handtaget kan vara:
-
CSP-handtag (HCRYPTPROV): Använd CryptoAPI-funktioner som CryptSignHash.
-
CNG-handtag (NCRYPT_KEY_HANDLE): Använd CNG-funktioner som NCryptSignHash.
Obs!: När du anropar CryptAcquireCertificatePrivateKey måste du inkludera CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG i dwFlags-parametern.
Kontrollera värdet för pdwKeySpec för att avgöra typ av handtag:
|
pdwKeySpec-värde |
Krypto-API som ska användas |
|
AT_KEYEXCHANGE eller AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Lösning
En tillfällig lösning är tillgänglig för kunder som påverkas av tillämpningen av den här ändringen. Det finns en tillfällig registernyckel för att växla beteende från tillämpning till granskningsläge .
Viktigt: Stöd för den här registernyckeln tas bort i uppdateringarna för april 2026.
|
Registersökväg |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Typ |
REG_DWORD |
|
Värdenamn |
DisableCapiOverrideForRSA |
|
Värdedata |
|
Referenser
CryptAcquireCertificatePrivateKey(wincrypt.h)
CVE-2024-30098 | Säkerhetsfunktion kringgå sårbarhet i Windows Cryptographic Services
.