Oorspronkelijke publicatiedatum: dinsdag 21 november 2025
KB-id: 5073121
Inleiding
De Windows-updates van 14 oktober 2025 voor CVE-2024-30098 hebben problemen aan het licht gebracht in toepassingen waarbij de code niet correct identificeert welke provider de sleutel beheert voor certificaten die van een smartcard naar het certificaatarchief worden doorgegeven. Deze onjuiste identificatie kan ertoe leiden dat cryptografische bewerkingen in bepaalde scenario's mislukken. Dit document bevat richtlijnen voor toepassingsontwikkelaars voor het detecteren van de juiste handler en het oplossen van deze problemen.
Samenvatting
Wanneer certificaten van een smartcard worden doorgegeven aan het Windows-certificaatarchief, kan het doorgifteproces een van de volgende providers gebruiken:
-
Verouderde Cryptographic Service Provider (CSP), die afhankelijk is van de verouderde Cryptographic Application Programming Interface (CAPI)
-
Key Storage Provider (KSP), die afhankelijk is van Cryptography API: Next Generation (CNG). Dit was de moderne vervanging die is geïntroduceerd in Windows Vista.
Vóór de oplossing voor CVE-2024-30098 gebruikte het doorgifte-algoritme CSP voor RSA-certificaten en KSP voor alle andere certificaten. Deze benadering was onveilig omdat CAPI geen ondersteuning biedt voor moderne cryptografische algoritmen, waardoor de beveiligingsmogelijkheden worden beperkt.
De beveiligingsupdates van 14 oktober 2025 hebben deze speciale verwerking verwijderd en nu wordt KSP gebruikt voor alle certificaten.
Bepaal welke API-set moet worden gebruikt
Toepassingen die afhankelijk zijn van RSA-sleutels die worden beheerd door CSP, kunnen mislukken wanneer de sleutel wordt beheerd door KSP. Om dit op te lossen, moeten toepassingen detecteren welke provider de sleutel beheert en de bijbehorende API-set (CAPI of CNG) gebruiken.
Belangrijk: Gebruik de functies CryptAcquireContextW of CryptAcquireContextA niet omdat de API is afgeschaft. Gebruik in plaats daarvan de functie CryptAcquireCertificatePrivateKey .
De functie CryptAcquireCertificatePrivateKey
Het aanroepen van CryptAcquireCertificatePrivateKey retourneert een ingang (phCryptProvOrNCryptKey) van het type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Deze ingang kan het volgende zijn:
-
CSP-ingang (HCRYPTPROV):Gebruik CryptoAPI-functies zoals CryptSignHash.
-
CNG-ingang (NCRYPT_KEY_HANDLE): gebruik CNG-functies zoals NCryptSignHash.
Opmerking: Wanneer u CryptAcquireCertificatePrivateKey aanroept, moet u de CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG opnemen in de parameter dwFlags.
Als u het type greep wilt bepalen, controleert u de waarde pdwKeySpec :
|
pdwKeySpec-waarde |
Te gebruiken Crypto-API |
|
AT_KEYEXCHANGE of AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Tijdelijke oplossing
Er is een tijdelijke oplossing beschikbaar voor klanten die worden beïnvloed door het afdwingen van deze wijziging. Er is een tijdelijke registersleutel beschikbaar om het gedrag over te schakelen van de afdwingingsmodus naar de controlemodus .
Belangrijk: Ondersteuning voor deze registersleutel wordt verwijderd in de updates van april 2026.
|
Registerpad |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Type |
REG_DWORD |
|
Waardenaam |
DisableCapiOverrideForRSA |
|
Waardegegevens |
|
Meer informatie
De functie CryptAcquireCertificatePrivateKey (wincrypt.h)
.