Pôvodný dátum publikovania: 21. novembra 2025
KB ID: 5073121
Úvod
Aktualizácie Windowsu 14. októbra 2025 týkajúce sa CVE-2024-30098 odhalili problémy v aplikáciách, v ktorých kód správne neimntifikuje, ktorý poskytovateľ spravuje kľúč pre certifikáty distribuované z karty Smart Card do priestoru na uloženie certifikátov. Táto chyba môže spôsobiť zlyhanie kryptografických operácií v určitých scenároch. Tento dokument poskytuje vývojárom aplikácií pokyny, ako zistiť správny obslužný program a vyriešiť tieto problémy.
Súhrn
Keď sa certifikáty rozšíria z karty Smart Card do ukladacieho priestoru certifikátov systému Windows, proces šírenia môže používať niektorého z týchto poskytovateľov:
-
Starší poskytovateľ kryptografických služieb (CSP), ktorý využíva staršie kryptografické aplikačné programovacie rozhranie (CAPI)
-
Poskytovateľ kľúčového úložiska (KSP), ktorý využíva rozhranie API na šifrovanie: ďalšia generácia (CNG). Toto bola moderná náhrada zavedená vo Windowse Vista.
Pred opravou CVE-2024-30098 algoritmus distribúcie používal CSP pre certifikáty založené na RSA a KSP pre všetky ostatné. Tento prístup bol neistý, pretože CAPI nepodporuje moderné kryptografické algoritmy, čím obmedzuje možnosti zabezpečenia.
14.října 2025, aktualizácie zabezpečenia odstránené toto špeciálne spracovanie a teraz KSP sa používa pre všetky certifikáty.
Určenie množiny rozhrania API, ktorá sa má použiť
Aplikácie, ktoré využívajú kľúče RSA spravované CSP, môžu zlyhať, keď kľúč spravuje poskytovateľ zdieľaných služieb. Na vyriešenie tohto problému musia aplikácie zistiť, ktorý poskytovateľ spravuje kľúč, a použiť príslušnú množinu rozhraní API (CAPI alebo CNG).
Dôležité: Nepoužívajte funkcie CryptAcquireContextW ani CryptAcquireContextA , pretože rozhranie API je zastarané. Namiesto toho použite funkciu CryptAcquireCertificatePrivateKey .
CryptAcquireCertificatePrivateKey (funkcia)
Volanie kľúča CryptAcquireCertificatePrivateKey vráti rukoväť (phCryptProvOrNCryptKey) typu HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Táto rukoväť môže byť:
-
Rukoväť CSP (HCRYPTPROV): Použite funkcie CryptoAPI, ako je napríklad CryptSignHash.
-
Rukoväť CNG (NCRYPT_KEY_HANDLE): Použite funkcie CNG, ako napríklad NCryptSignHash.
Poznámka: Pri volaní CryptAcquireCertificatePrivateKey nezabudnite zahrnúť CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG do parametra dwFlags.
Ak chcete určiť typ rukoväte, skontrolujte hodnotu pdwKeySpec :
|
hodnota pdwKeySpec |
Crypto API na použitie |
|
AT_KEYEXCHANGE alebo AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Alternatívne riešenie
Zákazníkom, ktorí majú vplyv na presadzovanie tejto zmeny, je k dispozícii dočasná práca. Dočasný kľúč databázy Registry je k dispozícii na prepnutie správania z režimu vynútenia na režim auditu .
Dôležité: Podpora tohto kľúča databázy Registry sa odstráni v aktualizáciách z apríla 2026.
|
Cesta k databáze Registry |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Typ |
REG_DWORD |
|
Value name (Názov hodnoty) |
DisableCapiOverrideForRSA |
|
Value data (Údaje hodnoty) |
|
Odkazy
Funkcia CryptAcquireCertificatePrivateKey (wincrypt.h)
.