Složené ML-DSA v Windows používá nativní implementaci.

Počínaje .NET 11 CompositeMLDsa používá Windows nativní Windows implementaci složených ML-DSA místo spravované implementace vrstvené přes ML-DSA, RSA a ECDSA. Vzhledem k tomu, že Windows nativně implementuje podmnožinu sad parametrů složeného ML-DSA, snižuje tato změna počet algoritmů složených ML-DSA podporovaných na Windows.

Verze byla představena

.NET 11 Preview 7

Předchozí chování

CompositeMLDsa Dříve rozhraní API na Windows fungovala pro jakýkoli složený algoritmus, pokud byly podporovány jeho základní komponenty (ML-DSA, RSA a ECDSA), včetně všech složených algoritmů založených na RSA. Algoritmy, které kombinují ML-DSA s EdDSA (Ed25519 nebo Ed448), se vždy hodily PlatformNotSupportedException na Windows, protože Windows nepodporuje EdDSA.

Nové chování

Počínaje .NET 11 CompositeMLDsa podporují rozhraní API na Windows podporují pouze složené algoritmy, které Windows nativně implementují v CNG. Windows aktuálně implementuje nativní podporu pro přesně tyto čtyři sady parametrů, z nichž všechny páry ML-DSA s ECDSA:

sada parametrů Windows Složený algoritmus ML-DSA CompositeMLDsaAlgorithm člen
44-ECDSA-P256-SHA256 Složené ML-DSA-44 a ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 Složené ML-DSA-65 a ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 Složené ML-DSA-65 a ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 Složené ML-DSA-87 a ECDSA P384 MLDsa87WithECDsaP384

Všechny ostatní složené algoritmy teď vyvolává PlatformNotSupportedException Windows. To zahrnuje každý algoritmus, který spáruje ML-DSA s RSA, který dříve fungoval, a každý algoritmus, který spáruje ML-DSA s EdDSA (Ed25519 nebo Ed448), který už před touto změnou vyhodil PlatformNotSupportedException .

Další informace najdete v cbParameterSet poli BCRYPT_PQDSA_KEY_BLOB struktury.

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Vhodnější je použít nativní implementaci, která operační systém poskytuje, než spravovanou vrstvu postavenou na jiných primitivách. Windows přidání nativní podpory pro podmnožinu složených sad parametrů ML-DSA v nedávných buildech Windows Insider Preview a .NET teď používá nativní podporu, když je dostupná.

Před použitím konkrétního složeného algoritmu ML-DSA na Windows voláním IsAlgorithmSupported zkontrolujte, jestli je algoritmus podporovaný. Pokud se algoritmus nepodporuje, zvolte podporovaný algoritmus nebo zpracujte výsledný PlatformNotSupportedExceptionalgoritmus .

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.
}

Tato změna nemá vliv na složená rozhraní API certifikátu ML-DSA. Tato rozhraní API se budou dál hodit PlatformNotSupportedException na Windows, stejně jako předtím.

Ovlivněná rozhraní API