Sammansatt ML-DSA på Windows använder intern implementering

Från och med .NET 11 CompositeMLDsa använder Windows den inbyggda Windows implementeringen av sammansatta ML-DSA i stället för en hanterad implementering som är skiktad över ML-DSA, RSA och ECDSA. Eftersom Windows endast implementerar en delmängd av parameteruppsättningarna sammansatta ML-DSA internt minskar den här ändringen antalet sammansatta ML-DSA algoritmer som stöds på Windows.

Version lanserad

.NET 11 Förhandsversion 7

Tidigare beteende

CompositeMLDsa Tidigare fungerade API:er på Windows för alla sammansatta algoritmer så länge dess underliggande komponenter (ML-DSA, RSA och ECDSA) stöddes, inklusive alla RSA-baserade sammansatta algoritmer. Algoritmer som kombinerar ML-DSA med EdDSA (Ed25519 eller Ed448) kastade PlatformNotSupportedException alltid på Windows, eftersom Windows inte stöder EdDSA.

Nytt beteende

Från och med .NET 11 CompositeMLDsa stöder API:er på Windows endast de sammansatta algoritmer som Windows implementerar internt i CNG. Windows implementerar för närvarande inbyggt stöd för exakt dessa fyra parameteruppsättningar, som alla par ML-DSA med ECDSA:

Windows parameteruppsättning Sammansatt ML-DSA-algoritm CompositeMLDsaAlgorithm medlem
44-ECDSA-P256-SHA256 Sammansatt ML-DSA-44 och ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 Sammansatt ML-DSA-65 och ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 Sammansatt ML-DSA-65 och ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 Sammansatt ML-DSA-87 och ECDSA P384 MLDsa87WithECDsaP384

Alla andra sammansatta algoritmer utlöser PlatformNotSupportedException nu Windows. Detta inkluderar varje algoritm som parkopplar ML-DSA med RSA, som fungerade tidigare, och varje algoritm som parkopplar ML-DSA med EdDSA (Ed25519 eller Ed448), som redan kastades PlatformNotSupportedException före den här ändringen.

Mer information finns i fältet cbParameterSet för BCRYPT_PQDSA_KEY_BLOB strukturen.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Det är bättre att använda den interna implementering som operativsystemet tillhandahåller i stället för ett hanterat lager som bygger på andra primitiver. Windows har lagt till inbyggt stöd för en delmängd av sammansatta ML-DSA parameteruppsättningar i de senaste versionerna av Windows Insider Preview, och .NET använder nu det interna stödet när det är tillgängligt.

Innan du använder en specifik sammansatt ML-DSA-algoritm på Windows anropar IsAlgorithmSupported du för att kontrollera om algoritmen stöds. Om en algoritm inte stöds väljer du en algoritm som stöds eller hanterar den resulterande 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.
}

Den här ändringen påverkar inte API:erna för sammansatta ML-DSA certifikat. Dessa API:er fortsätter att kasta PlatformNotSupportedException på Windows, som tidigare.

Berörda API:er