Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Rekommenderad åtgärd
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.