Data de publicare inițială: 21 noiembrie 2025
ID KB: 5073121
|
Modificare dată |
Modificare descriere |
|
11 decembrie 2025 |
|
Introducere
Actualizările Windows din 14 octombrie 2025 adresate CVE-2024-30098 au dezvăluit probleme în aplicațiile în care codul nu identifică corect furnizorul care gestionează cheia pentru certificatele propagate de pe un smart card în depozitul de certificate. Această identificare greșită poate provoca eșuarea operațiunilor criptografice în anumite scenarii. Acest document furnizează instrucțiuni pentru dezvoltatorii de aplicații despre cum să detecteze rutina de tratare corectă și să rezolve aceste probleme.
Rezumat
Atunci când certificatele sunt propagate de pe un smart card în depozitul de certificate Windows, procesul de propagare poate utiliza oricare dintre următorii furnizori:
-
Furnizor de servicii criptografice moștenite (CSP), care se bazează pe interfața de programare a aplicațiilor criptografice moștenită (CAPI)
-
Key Storage Provider (KSP), care se bazează pe API Cryptography: Next Generation (CNG). Aceasta a fost înlocuirea modernă introdusă în Windows Vista.
Înainte de remedierea pentru CVE-2024-30098, algoritmul de propagare utiliza CSP pentru certificatele bazate pe RSA și KSP pentru toate celelalte. Această abordare era nesigură, deoarece CAPI nu acceptă algoritmi criptografici moderni, limitând capacitățile de securitate.
Actualizările de securitate din 14 octombrie 2025 au eliminat această manipulare specială, iar acum KSP este utilizat pentru toate certificatele.
Determinați setul de API-uri de utilizat
Aplicațiile care se bazează pe chei RSA gestionate de CSP pot să nu reușească atunci când cheia este gestionată de KSP. Pentru a rezolva acest lucru, aplicațiile trebuie să detecteze furnizorul care gestionează cheia și să utilizeze setul API corespunzător (CAPI sau CNG).
Important: Nu utilizați funcțiile CryptAcquireContextW sau CryptAcquireContextA , deoarece API-ul este perimat. În schimb, utilizați funcția CryptAcquireCertificatePrivateKey .
CryptAcquireCertificatePrivateKey (funcția CryptAcquireCertificatePrivateKey)
Apelarea CryptAcquireCertificatePrivateKey returnează un handle (phCryptProvOrNCryptKey) de tip HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Acest ghidaj poate fi:
-
Handle CSP (HCRYPTPROV): Utilizați funcții CryptoAPI, cum ar fi CryptSignHash.
-
Handle CNG (NCRYPT_KEY_HANDLE): Utilizați funcții CNG precum NCryptSignHash.
Notă: Atunci când apelați CryptAcquireCertificatePrivateKey, nu uitați să includeți CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG în parametrul dwFlags.
Pentru a determina tipul de ghidaj, verificați valoarea pdwKeySpec :
|
pdwKeySpec valoare |
Crypto API de utilizat |
|
AT_KEYEXCHANGE sau AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
GNL |
Soluție
O soluție temporară este disponibilă pentru clienții afectați de aplicarea acestei modificări. Este disponibilă o cheie de registry temporară pentru a comuta comportamentul de la Impunere la modul auditare .
Important: Suportul pentru această cheie de registry va fi eliminat în actualizările din aprilie 2026.
|
Cale de registry |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Tip |
REG_DWORD |
|
Nume valoare |
DisableCapiOverrideForRSA |
|
Date valoare |
1 = activați remedierea de securitate (modul de impunere) 0 sau cheia eliminată = dezactivați remedierea de securitate și comutați la modul de auditare |
Referințe
CryptAcquireCertificatePrivateKey (wincrypt.h)
.