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

A partir do .NET 11, CompositeMLDsa em Windows usa a implementação de Windows nativa do ML-DSA Composto em vez de uma implementação gerenciada em camadas sobre ML-DSA, RSA e ECDSA. Como Windows implementa apenas um subconjunto dos conjuntos de parâmetros de ML-DSA Composto nativamente, essa alteração reduz o número de algoritmos de ML-DSA compostos com suporte em Windows.

Versão introduzida

.NET 11 Versão Prévia 7

Comportamento anterior

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

Novo comportamento

A partir do .NET 11, CompositeMLDsa as APIs no Windows dão suporte apenas aos algoritmos compostos que Windows implementa nativamente no CNG. Windows atualmente implementa o suporte nativo para exatamente esses quatro conjuntos de parâmetros, todos os quais emparelham ML-DSA com ECDSA:

Windows conjunto de parâmetros Algoritmo de ML-DSA composto CompositeMLDsaAlgorithm membro
44-ECDSA-P256-SHA256 Composição ML-DSA-44 e ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 Composição ML-DSA-65 e ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 Composição ML-DSA-65 e ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 Composição ML-DSA-87 e ECDSA P384 MLDsa87WithECDsaP384

Todos os outros algoritmos compostos agora são lançados PlatformNotSupportedException em Windows. Isso inclui todos os algoritmos que emparelham ML-DSA com o RSA, que funcionou anteriormente, e todos os algoritmos que emparelham ML-DSA com EdDSA (Ed25519 ou Ed448), que já foram jogados PlatformNotSupportedException antes dessa alteração.

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

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

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

Antes de usar um algoritmo de ML-DSA composto específico em Windows, chame IsAlgorithmSupported para verificar se o algoritmo tem suporte. Se não houver suporte para um algoritmo, escolha um algoritmo com suporte ou manipule o 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.
}

Essa alteração não afeta as APIs de certificado de ML-DSA Composto. Essas APIs continuam a ser lançadas PlatformNotSupportedException em Windows, como antes.

APIs afetadas