Data di pubblicazione originale: 21 novembre 2025
ID KB: 5073121
|
Modifica data |
Modificare la descrizione |
|
11 dicembre 2025 |
|
Introduzione
Gli aggiornamenti di Windows del 14 ottobre 2025 relativi a CVE-2024-30098 hanno rilevato problemi nelle applicazioni in cui il codice non identifica correttamente il provider che gestisce la chiave per i certificati propagati da una smart card all'archivio certificati. Questa identificazione errata può causare il mancato funzionamento delle operazioni di crittografia in determinati scenari. Questo documento fornisce indicazioni per gli sviluppatori di applicazioni su come rilevare il gestore corretto e risolvere questi problemi.
Riepilogo
Quando i certificati vengono propagati da una smart card all'archivio certificati di Windows, il processo di propagazione può utilizzare uno dei provider seguenti:
-
Legacy Cryptographic Service Provider (CSP) che si basa sull'interfaccia CAPI (Cryptographic Application Programming Interface) legacy
-
Key Storage Provider (KSP), che si basa sull'API di crittografia: CNG (Next Generation). Questa è stata la sostituzione moderna introdotta in Windows Vista.
Prima della correzione per CVE-2024-30098, l'algoritmo di propagazione usava CSP per i certificati basati su RSA e KSP per tutti gli altri. Questo approccio non era sicuro perché CAPI non supporta gli algoritmi di crittografia moderni, limitando le funzionalità di sicurezza.
Gli aggiornamenti della sicurezza del 14 ottobre 2025 hanno rimosso questa gestione speciale e ora KSP viene utilizzato per tutti i certificati.
Determinare il set di API da utilizzare
Le applicazioni che si basano su chiavi RSA gestite da CSP potrebbero non riuscire quando la chiave è gestita da KSP. Per risolvere questo problema, le applicazioni devono rilevare quale provider gestisce la chiave e utilizzare il set di API corrispondente (CAPI o CNG).
Importante: Non usare le funzioni CryptAcquireContextW o CryptAcquireContextA perché l'API è deprecata. Usare invece la funzione CryptAcquireCertificatePrivateKey .
CryptAcquireCertificatePrivateKey (funzione)
La chiamata a CryptAcquireCertificatePrivateKey restituisce un handle (phCryptProvOrNCryptKey) di tipo HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Questo handle può essere:
-
Handle CSP (HCRYPTPROV): usare le funzioni CryptoAPI come CryptSignHash.
-
Handle CNG (NCRYPT_KEY_HANDLE): usare le funzioni CNG come NCryptSignHash.
Nota: Quando chiami CryptAcquireCertificatePrivateKey, assicurati di includere il CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG nel parametro dwFlags.
Per determinare il tipo di handle, controllare il valore pdwKeySpec :
|
pdwKeySpec valore |
API Crypto da usare |
|
AT_KEYEXCHANGE o AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Soluzione alternativa
È disponibile una soluzione temporanea per i clienti interessati dall'applicazione di questa modifica. È disponibile una chiave temporanea del Registro di sistema per passare dal comportamento di applicazione alla modalità di controllo .
Importante: Il supporto per questa chiave del Registro di sistema verrà rimosso negli aggiornamenti di aprile 2026.
|
Percorso del Registro di sistema |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Type |
REG_DWORD |
|
Nome valore |
DisableCapiOverrideForRSA |
|
Dati valore |
1 = abilita la correzione per la sicurezza (modalità di applicazione) 0 o chiave rimossa = disabilita la correzione per la sicurezza e passa alla modalità di controllo |
Riferimenti
Archiviazione e recupero delle chiavi
CryptAcquireCertificatePrivateKey (wincrypt.h)
.