O ML-DSA composto em Windows utiliza implementação nativa

A partir de .NET 11, CompositeMLDsa em Windows utiliza a implementação nativa Windows do Composite ML-DSA em vez de uma implementação gerida em camadas sobre ML-DSA, RSA e ECDSA. Como Windows implementa nativamente um subconjunto dos conjuntos de parâmetros Composite ML-DSA, esta alteração reduz o número de algoritmos Composite ML-DSA suportados em Windows.

Versão introduzida

.NET 11 Pré-visualização 7

Comportamento anterior

Anteriormente, CompositeMLDsa as APIs no Windows funcionavam para qualquer algoritmo composto desde que os seus componentes subjacentes (ML-DSA, RSA e ECDSA) fossem suportados, incluindo todos os algoritmos compostos baseados em RSA. Algoritmos que combinam ML-DSA com EdDSA (Ed25519 ou Ed448) sempre PlatformNotSupportedException Windows, porque Windows não suporta EdDSA.

Novo comportamento

A partir do .NET 11, CompositeMLDsa as APIs no Windows suportam apenas os algoritmos compostos que o Windows implementa nativamente no CNG. Windows implementa atualmente suporte nativo para exatamente estes quatro conjuntos de parâmetros, todos eles emparelhados ML-DSA com ECDSA:

Conjunto de parâmetros do Windows Algoritmo ML-DSA composto CompositeMLDsaAlgorithm Membro
44-ECDSA-P256-SHA256 ML-DSA-44 e ECDSA P256 compostos MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 ML-DSA-65 composto e ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 ML-DSA-65 composto e ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 ML-DSA-87 e ECDSA P384 compostos MLDsa87WithECDsaP384

Todos os outros algoritmos compostos passam PlatformNotSupportedException a ser incluídos no Windows. Isto inclui todos os algoritmos que emparelham ML-DSA com RSA, que funcionava anteriormente, e todos os algoritmos que emparelham ML-DSA com EdDSA (Ed25519 ou Ed448), que já tinham sido lançados PlatformNotSupportedException antes desta alteração.

Para mais informações, veja o cbParameterSet campo da BCRYPT_PQDSA_KEY_BLOB estrutura.

Tipo de mudança disruptiva

Esta mudança é uma mudança comportamental.

Motivo da mudança

É preferível usar a implementação nativa que o sistema operativo fornece em vez de uma camada gerida construída sobre outras primitivas. Windows adicionado suporte nativo para um subconjunto de conjuntos de parâmetros ML-DSA compostos em versões recentes do Windows Insider Preview, e .NET agora usa esse suporte nativo quando está disponível.

Antes de usar um algoritmo específico de ML-DSA composto no Windows, ligue IsAlgorithmSupported para verificar se o algoritmo é suportado. Se um algoritmo não for suportado, escolha um algoritmo suportado ou trate do 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.
}

Esta alteração não afeta as APIs de certificados ML-DSA compostas. Essas APIs continuam PlatformNotSupportedException a instalar o Windows, como antes.

APIs afetadas