自 .NET 11 起, CompositeMLDsa Windows 採用原生 Windows 的複合 ML-DSA 實作,而非多層於 ML-DSA、RSA 與 ECDSA 上的受管理實作。 由於 Windows 僅原生實作部分 Composite ML-DSA 參數集,此變更減少了 Windows 上支援的 Composite ML-DSA 演算法數量。
所推出的版本
.NET 11 預覽版 7
以前的行為
過去,CompositeMLDsa只要支援其底層組件(ML-DSA、RSA 和 ECDSA),包括所有基於 RSA 的複合演算法,Windows 上的 API 都能適用於任何複合演算法。 結合 EdDSA ML-DSA 的演算法(Ed25519 或 Ed448)總是會PlatformNotSupportedExceptionWindows,因為 Windows 不支援 EdDSA。
新行為
從 .NET 11 開始, CompositeMLDsa Windows 上的 API 僅支援 Windows 原生實作的複合演算法。 Windows 目前原生支援這四個參數集,且皆與 ECDSA ML-DSA 配對:
| Windows 參數集 | 複合 ML-DSA 演算法 |
CompositeMLDsaAlgorithm 成員 |
|---|---|---|
44-ECDSA-P256-SHA256 |
複合 ML-DSA-44 與 ECDSA P256 | MLDsa44WithECDsaP256 |
65-ECDSA-P256-SHA512 |
複合 ML-DSA-65 與 ECDSA P256 | MLDsa65WithECDsaP256 |
65-ECDSA-P384-SHA512 |
複合 ML-DSA-65 與 ECDSA P384 | MLDsa65WithECDsaP384 |
87-ECDSA-P384-SHA512 |
複合 ML-DSA-87 與 ECDSA P384 | MLDsa87WithECDsaP384 |
其他所有複合演算法現在PlatformNotSupportedException都只能用 Windows。 這包括所有與 ML-DSA 配對 RSA 的演算法(之前有效),以及所有與 EdDSA(EdDSA,Ed25519 或 Ed448)ML-DSA 配對的演算法,這些演算法在此變更前已經拋 PlatformNotSupportedException 出過。
欲了解更多資訊,請參閱 cbParameterSet 該結構欄位 BCRYPT_PQDSA_KEY_BLOB 。
破壞性變更的類型
此變更為行為變更。
變更原因
使用作業系統提供的原生實作比建立在其他原語上的管理層更為理想。 Windows在近期的 Windows Insider Preview 版本中新增了對部分 Composite ML-DSA 參數集的原生支援,現在 .NET 在原生支援可用時也會使用。
建議的動作
在你使用特定的複合 ML-DSA 演算法Windows之前,請先打電話IsAlgorithmSupported確認該演算法是否被支援。 若某演算法不被支援,則選擇支援的演算法或處理所得 PlatformNotSupportedException。
if (CompositeMLDsa.IsAlgorithmSupported(CompositeMLDsaAlgorithm.MLDsa65WithECDsaP384))
{
using CompositeMLDsa mldsa = CompositeMLDsa.GenerateKey(CompositeMLDsaAlgorithm.MLDsa65WithECDsaP384);
// Use mldsa.
}
else
{
// Fall back to another algorithm, or handle the lack of support.
}
此變更不影響複合 ML-DSA 憑證 API。 這些 API 還是像以前一樣在 Windows 上執行PlatformNotSupportedException。