Ngày phát hành ban đầu: Ngày 21 tháng 11 năm 2025
ID KB: 5073121
Giới thiệu
Các bản cập nhật Windows ngày 14 tháng 10 năm 2025 khắc phục sự cố CVE-2024-30098 đã tiết lộ các sự cố trong các ứng dụng mà mã không xác định chính xác nhà cung cấp nào đang quản lý khóa cho chứng chỉ phát tán từ thẻ thông minh đến kho chứng chỉ. Xác định sai này có thể khiến các thao tác mã hóa không thành công trong một số kịch bản nhất định. Tài liệu này cung cấp hướng dẫn cho các nhà phát triển ứng dụng về cách phát hiện bộ xử lý chính xác và giải quyết những vấn đề này.
Tóm tắt
Khi chứng chỉ được phát tán từ thẻ thông minh cửa hàng chứng chỉ Windows, quá trình phát tán có thể sử dụng một trong các nhà cung cấp sau đây:
-
Nhà cung cấp Dịch vụ Mã hóa Kế thừa (CSP), dựa trên Giao diện Lập trình Ứng dụng Mã hóa kế thừa (CAPI)
-
Key Storage Provider (KSP), dựa trên Cryptography API: Next Generation (CNG). Đây là phiên bản thay thế hiện đại được giới thiệu trong Windows Vista.
Trước khi bản sửa lỗi cho CVE-2024-30098, thuật toán phát tán sử dụng CSP cho các chứng chỉ dựa trên RSA và KSP cho tất cả các chứng chỉ khác. Cách tiếp cận này không an toàn vì CAPI không hỗ trợ thuật toán mã hóa hiện đại, hạn chế khả năng bảo mật.
Ngày 14 tháng 10 năm 2025, các bản cập nhật bảo mật đã loại bỏ xử lý đặc biệt này và bây giờ KSP được sử dụng cho tất cả các chứng chỉ.
Xác định tập hợp API sẽ sử dụng
Các ứng dụng dựa trên các phím RSA đang được quản lý bởi CSP có thể bị lỗi khi khóa được quản lý bởi KSP. Để giải quyết vấn đề này, các ứng dụng phải phát hiện nhà cung cấp nào quản lý khóa và sử dụng bộ API tương ứng (CAPI hoặc CNG).
Quan trọng: Không sử dụng hàm CryptAcquireContextW hoặc CryptAcquireContextA vì API bị phản đối. Thay vào đó, hãy sử dụng hàm CryptAcquireCertificatePrivateKey .
Hàm CryptAcquireCertificatePrivateKey
Gọi CryptAcquireCertificatePrivateKey sẽ trả về núm điều khiển (phCryptProvOrNCryptKey) thuộc loại HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Núm điều khiển này có thể là:
-
Xử lý CSP (HCRYPTPROV): Sử dụng các hàm CryptoAPI như CryptSignHash.
-
CNG handle (NCRYPT_KEY_HANDLE): Use CNG functions like NCryptSignHash.
Lưu ý: Khi gọi CryptAcquireCertificatePrivateKey, hãy nhớ đưa thông tin CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG vào tham số dwFlags.
Để xác định loại núm điều khiển, hãy kiểm tra giá trị pdwKeySpec :
|
giá trị pdwKeySpec |
Crypto API để sử dụng |
|
AT_KEYEXCHANGE hoặc AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Giải pháp thay thế
Giải pháp tạm thời có sẵn cho khách hàng bị ảnh hưởng bởi việc thực thi thay đổi này. Khóa đăng ký tạm thời có sẵn để chuyển hành vi từ Chế độ thực thi sang chế độ Kiểm tra.
Quan trọng: Hỗ trợ cho khóa đăng ký này sẽ bị loại bỏ trong các bản cập nhật tháng 4 năm 2026.
|
Đường dẫn đăng ký |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Loại |
REG_DWORD |
|
Tên giá trị |
DisableCapiOverrideForRSA |
|
Dữ liệu giá trị |
|
Tham khảo
Hàm CryptAcquireCertificatePrivateKey (wincrypt.h)
CVE-2024-30098 | Lỗ hổng Bỏ qua Tính năng Bảo mật của Dịch vụ Mã hóa Windows
.