La ML-DSA compuesta en Windows usa la implementación nativa

A partir de .NET 11, CompositeMLDsa en Windows usa la implementación nativa de Windows compuesta de ML-DSA en lugar de una implementación administrada superada por ML-DSA, RSA y ECDSA. Dado que Windows solo implementa un subconjunto de los conjuntos de parámetros de ML-DSA compuesto de forma nativa, este cambio reduce el número de algoritmos de ML-DSA compuestos admitidos en Windows.

Versión introducida

.NET 11 Preview 7

Comportamiento anterior

Anteriormente, CompositeMLDsa se admitían las API de Windows para cualquier algoritmo compuesto, siempre que sus componentes subyacentes (ML-DSA, RSA y ECDSA) fueran compatibles, incluidos todos los algoritmos compuestos basados en RSA. Los algoritmos que combinan ML-DSA con EdDSA (Ed25519 o Ed448) siempre se lanzan PlatformNotSupportedException Windows, ya que Windows no admite EdDSA.

Nuevo comportamiento

A partir de .NET 11, CompositeMLDsa las API de Windows solo admiten los algoritmos compuestos que Windows implementan de forma nativa en CNG. Windows implementa actualmente compatibilidad nativa con exactamente estos cuatro conjuntos de parámetros, todos los cuales ML-DSA con ECDSA:

conjunto de parámetros Windows Algoritmo de ML-DSA compuesto MiembroCompositeMLDsaAlgorithm
44-ECDSA-P256-SHA256 ML-DSA-44 compuesto y ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 ML-DSA-65 compuesto y ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 ML-DSA-65 compuesto y ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 ML-DSA-87 compuesto y ECDSA P384 MLDsa87WithECDsaP384

Todos los demás algoritmos compuestos ahora se inician PlatformNotSupportedException en Windows. Esto incluye todos los algoritmos que emparejan ML-DSA con RSA, que funcionaban anteriormente, y cada algoritmo que empareja ML-DSA con EdDSA (Ed25519 o Ed448), que ya se produjo PlatformNotSupportedException antes de este cambio.

Para obtener más información, consulte el cbParameterSet campo de la BCRYPT_PQDSA_KEY_BLOB estructura.

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

Es preferible usar la implementación nativa que proporciona el sistema operativo en lugar de una capa administrada basada en otras primitivas. Windows se ha agregado compatibilidad nativa para un subconjunto de conjuntos de parámetros de ML-DSA compuestos en compilaciones recientes de Windows Insider Preview y ahora .NET usa esa compatibilidad nativa cuando está disponible.

Antes de usar un algoritmo de ML-DSA compuesto específico en Windows, llame IsAlgorithmSupported a para comprobar si se admite el algoritmo. Si no se admite un algoritmo, elija un algoritmo compatible o controle el resultado 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.
}

Este cambio no afecta a las API de certificado de ML-DSA compuestas. Esas API siguen iniciando PlatformNotSupportedException Windows, como antes.

Las APIs afectadas