Samengestelde ML-DSA op Windows maakt gebruik van systeemeigen implementatie

Vanaf .NET 11 CompositeMLDsa gebruikt Windows de systeemeigen Windows implementatie van samengestelde ML-DSA in plaats van een beheerde implementatie gelaagd over ML-DSA, RSA en ECDSA. Omdat Windows alleen een subset van de parametersets samengestelde ML-DSA implementeert, vermindert deze wijziging het aantal samengestelde ML-DSA-algoritmen dat wordt ondersteund op Windows.

Geïntroduceerde versie

.NET 11 preview 7

Vorig gedrag

CompositeMLDsa Voorheen werden API's op Windows voor elk samengesteld algoritme gewerkt zolang de onderliggende onderdelen (ML-DSA, RSA en ECDSA) werden ondersteund, inclusief alle op RSA gebaseerde samengestelde algoritmen. Algoritmen die ML-DSA combineren met EdDSA (Ed25519 of Ed448) gooiden PlatformNotSupportedException altijd op Windows, omdat Windows geen ondersteuning biedt voor EdDSA.

Nieuw gedrag

Vanaf .NET 11 CompositeMLDsa bieden API's op Windows alleen ondersteuning voor de samengestelde algoritmen die Windows systeemeigen worden geïmplementeerd in CNG. Windows momenteel systeemeigen ondersteuning implementeert voor precies deze vier parametersets, die allemaal ML-DSA met ECDSA:

Windows parameterset Algoritme voor samengestelde ML-DSA CompositeMLDsaAlgorithm lid
44-ECDSA-P256-SHA256 Samengestelde ML-DSA-44 en ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 Samengestelde ML-DSA-65 en ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 Samengestelde ML-DSA-65 en ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 Samengestelde ML-DSA-87 en ECDSA P384 MLDsa87WithECDsaP384

Alle andere samengestelde algoritmen gooien PlatformNotSupportedException nu Windows. Dit omvat elk algoritme dat ML-DSA koppelt aan RSA, dat eerder werkte en elk algoritme dat ML-DSA koppelt aan EdDSA (Ed25519 of Ed448), die al vóór deze wijziging werd gegooid PlatformNotSupportedException .

Zie het cbParameterSet veld van de BCRYPT_PQDSA_KEY_BLOB structuur voor meer informatie.

Type van brekende verandering

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Het is beter om de systeemeigen implementatie te gebruiken die het besturingssysteem biedt in plaats van een beheerde laag die is gebouwd op andere primitieven. Windows systeemeigen ondersteuning toegevoegd voor een subset van samengestelde ML-DSA parametersets in recente Windows Insider Preview-builds. .NET gebruikt nu die systeemeigen ondersteuning wanneer deze beschikbaar is.

Voordat u een specifiek samengesteld ML-DSA-algoritme op Windows gebruikt, roept IsAlgorithmSupported u aan om te controleren of het algoritme wordt ondersteund. Als een algoritme niet wordt ondersteund, kiest u een ondersteund algoritme of verwerkt u het resulterende PlatformNotSupportedExceptionalgoritme.

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

Deze wijziging heeft geen invloed op de API's van het samengestelde ML-DSA-certificaat. Deze API's blijven net als voorheen op Windows gooienPlatformNotSupportedException.

Betreffende API's