ML-DSA złożone na platformie Windows korzysta z implementacji natywnej

Począwszy od .NET 11, CompositeMLDsa w Windows używa natywnej implementacji Windows złożonej ML-DSA zamiast implementacji zarządzanej warstwowej za pośrednictwem uczenia maszynowego DSA, RSA i ECDSA. Ponieważ Windows implementuje tylko podzbiór zestawów parametrów złożonych ML-DSA natywnie, ta zmiana zmniejsza liczbę algorytmów złożonych ML-DSA obsługiwanych w Windows.

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 7)

Poprzednie zachowanie

CompositeMLDsa Wcześniej interfejsy API na Windows działały dla dowolnego algorytmu złożonego, o ile jego podstawowe składniki (ML-DSA, RSA i ECDSA) były obsługiwane, w tym wszystkie algorytmy złożone oparte na architekturze RSA. Algorytmy łączące ML-DSA z EdDSA (Ed25519 lub Ed448) zawsze rzucane PlatformNotSupportedException na Windows, ponieważ Windows nie obsługuje EdDSA.

Nowe zachowanie

Począwszy od .NET 11, CompositeMLDsa interfejsy API w systemie Windows obsługują tylko algorytmy złożone, które Windows implementują natywnie w sieci CNG. Windows obecnie implementuje natywną obsługę dokładnie tych czterech zestawów parametrów, z których wszystkie ML-DSA z ECDSA:

zestaw parametrów Windows Algorytm złożony ML-DSA CompositeMLDsaAlgorithm członek
44-ECDSA-P256-SHA256 Złożone ML-DSA-44 i ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 Złożone ML-DSA-65 i ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 Złożone ML-DSA-65 i ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 Złożone ML-DSA-87 i ECDSA P384 MLDsa87WithECDsaP384

Wszystkie inne algorytmy złożone zgłaszają teraz PlatformNotSupportedException Windows. Obejmuje to każdy algorytm, który paruje ML-DSA z RSA, który działał wcześniej, i każdy algorytm, który paruje ML-DSA z EdDSA (Ed25519 lub Ed448), który już rzucił PlatformNotSupportedException przed tą zmianą.

Aby uzyskać więcej informacji, zobacz cbParameterSet pole BCRYPT_PQDSA_KEY_BLOB struktury.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Preferowane jest użycie natywnej implementacji systemu operacyjnego, a nie warstwy zarządzanej opartej na innych elementach pierwotnych. Windows dodano natywną obsługę podzestawu zestawów parametrów złożonych ML-DSA w ostatnich kompilacjach Windows Insider Preview, a .NET teraz używa tej natywnej obsługi, gdy jest dostępna.

Przed użyciem określonego algorytmu złożonego ML-DSA w Windows wywołaj metodę IsAlgorithmSupported , aby sprawdzić, czy algorytm jest obsługiwany. Jeśli algorytm nie jest obsługiwany, wybierz obsługiwany algorytm lub obsłuż wynikowy 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.
}

Ta zmiana nie ma wpływu na interfejsy API certyfikatów złożonych ML-DSA. Te interfejsy API nadal zgłaszają PlatformNotSupportedException Windows, tak jak wcześniej.

Interfejsy API, których dotyczy problem