Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da .NET 11, CompositeMLDsa in Windows usa l'implementazione nativa Windows di composite ML-DSA anziché un'implementazione gestita a più livelli rispetto a ML-DSA, RSA ed ECDSA. Poiché Windows implementa solo un subset dei set di parametri composite ML-DSA in modo nativo, questa modifica riduce il numero di algoritmi di ML-DSA compositi supportati nelle Windows.
Versione introdotta
.NET 11 Preview 7
Comportamento precedente
In precedenza, CompositeMLDsa le API su Windows funzionavano per qualsiasi algoritmo composito, purché i componenti sottostanti (ML-DSA, RSA ed ECDSA) fossero supportati, inclusi tutti gli algoritmi compositi basati su RSA. Gli algoritmi che combinano ML-DSA con EdDSA (Ed25519 o Ed448) generano PlatformNotSupportedException sempre Windows, perché Windows non supporta EdDSA.
Nuovo comportamento
A partire da .NET 11, CompositeMLDsa le API in Windows supportano solo gli algoritmi compositi che Windows implementano in modo nativo in CNG. Windows attualmente implementa il supporto nativo per questi quattro set di parametri, tutti associati ML-DSA con ECDSA:
| set di parametri Windows | Algoritmo di ML-DSA composito |
CompositeMLDsaAlgorithmMembro |
|---|---|---|
44-ECDSA-P256-SHA256 |
ML-DSA-44 composito ed ECDSA P256 | MLDsa44WithECDsaP256 |
65-ECDSA-P256-SHA512 |
ML-DSA-65 composito ed ECDSA P256 | MLDsa65WithECDsaP256 |
65-ECDSA-P384-SHA512 |
ML-DSA-65 composito ed ECDSA P384 | MLDsa65WithECDsaP384 |
87-ECDSA-P384-SHA512 |
ML-DSA-87 composito ed ECDSA P384 | MLDsa87WithECDsaP384 |
Tutti gli altri algoritmi compositi ora generano PlatformNotSupportedException Windows. Questo include ogni algoritmo che associa ML-DSA con RSA, che funzionava in precedenza e ogni algoritmo che associa ML-DSA con EdDSA (Ed25519 o Ed448), che già ha generato PlatformNotSupportedException prima di questa modifica.
Per altre informazioni, vedere il cbParameterSet campo della BCRYPT_PQDSA_KEY_BLOB struttura.
Tipo di cambiamento che interrompe la compatibilità
Questa modifica è una modifica funzionale.
Motivo della modifica
È preferibile usare l'implementazione nativa fornita dal sistema operativo anziché un livello gestito basato su altre primitive. Windows aggiunto il supporto nativo per un subset di set di parametri ML-DSA compositi nelle build recenti di Windows Insider Preview e .NET ora usa tale supporto nativo quando è disponibile.
Azione consigliata
Prima di usare un algoritmo ML-DSA composito specifico in Windows, chiamare IsAlgorithmSupported per verificare se l'algoritmo è supportato. Se un algoritmo non è supportato, scegliere un algoritmo supportato o gestire l'oggetto risultante 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.
}
Questa modifica non influisce sulle API del certificato composite ML-DSA. Queste API continuano a essere generate PlatformNotSupportedException su Windows, come in precedenza.