Datum izvirne objave: 21. november 2025
ID zbirke znanja: 5073121
Uvod
14. oktobra 2025 so posodobitve sistema Windows, ki obravnavajo CVE-2024-30098 , razkrile težave v aplikacijah, pri katerih koda ne prepozna pravilno, kateri ponudnik upravlja ključ za potrdila, razširjena s pametne kartice, v shrambo potrdil. Ta napačna opredelitev lahko povzroči, da v določenih primerih kriptografske operacije ne uspejo. V tem dokumentu so navodila za razvijalce aplikacij o tem, kako zaznajo pravilno funkcijo za obravnavo in odpravijo te težave.
Povzetek
Ko se potrdila s pametne kartice razširijo v shrambo potrdil sistema Windows, lahko postopek razširjanja uporablja enega od teh ponudnikov:
-
Podedovani ponudnik kriptografskih storitev (CSP), ki temelji na starejšem vmesniku CAPI (Cryptographic Application Programming Interface)
-
Ponudnik shrambe ključa (KSP), ki temelji na API-jih za šifriranje: Naslednja generacija (CNG). To je bila sodobna zamenjava v sistemu Windows Vista.
Pred popravkom za CVE-2024-30098, je algoritem razširjanja za potrdila na osnovi RSA in KSP uporabljal CSP za vse druge. Ta pristop je bil negotov, ker CAPI ne podpira sodobnih kriptografskih algoritmov, kar omejuje varnostne zmogljivosti.
14. oktobra 2025 so varnostne posodobitve odstranile to posebno obravnavo, zdaj pa se KSP uporablja za vsa potrdila.
Določanje nabora API-ja za uporabo
Aplikacije, ki so odvisne od ključev RSA, ki jih upravlja CSP, morda ne bodo uspele, če ključ upravlja KSP. Če želite odpraviti to težavo, morajo aplikacije zaznati, kateri ponudnik upravlja ključ, in uporabiti ustrezen nabor API-ja (CAPI ali CNG).
Pomembno: Ne uporabljajte funkcij CryptAcquireContextW ali CryptAcquireContextA , ker je API zastarel. Namesto tega uporabite funkcijo CryptAcquireCertificatePrivateKey .
Funkcija CryptAcquireCertificatePrivateKey
Calling CryptAcquireCertificatePrivateKey vrne ročico (phCryptProvOrNCryptKey) vrste HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Ta ročica je lahko:
-
Ročica CSP (HCRYPTPROV): Uporabite funkcije CryptoAPI, kot je CryptSignHash.
-
Ročica CNG (NCRYPT_KEY_HANDLE): Uporabite funkcije CNG, kot je NCryptSignHash.
Opomba: Pri klicanju CryptAcquireCertificatePrivateKey ne pozabite vključiti CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG v parameter dwFlags.
Če želite določiti vrsto ročice, preverite vrednost pdwKeySpec :
|
vrednost pdwKeySpec |
Crypto API to use |
|
AT_KEYEXCHANGE ali AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Rešitev
Začasno delo je na voljo za stranke, na katere vpliva uveljavitev te spremembe. Začasni registrski ključ je na voljo za preklop delovanja iz načina uveljavljanjav način nadzora.
Pomembno: Podpora za ta registrski ključ bo odstranjena v posodobitvah iz aprila 2026.
|
Pot registra |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Vrsta |
REG_DWORD |
|
Ime vrednosti |
DisableCapiOverrideForRSA |
|
Podatki za vrednost |
|
Sklici
Shramba ključa in pridobivanje
Funkcija CryptAcquireCertificatePrivateKey (wincrypt.h)
CVE-2024-30098 | Ranljivost obhoda varnostne funkcije za kriptografske storitve sistema Windows
.