ネイティブ実装を使用するWindowsの複合 ML-DSA

.NET 11 以降、WindowsのCompositeMLDsaでは、ML-DSA、RSA、ECDSA に階層化されたマネージド実装ではなく、複合 ML-DSA のネイティブなWindows実装が使用されます。 Windowsは Composite ML-DSA パラメーター セットのサブセットのみをネイティブに実装するため、この変更により、Windowsでサポートされる複合 ML-DSA アルゴリズムの数が減ります。

導入されたバージョン

.NET 11 Preview 7

以前の動作

以前は、Windows上のCompositeMLDsa API は、基になるコンポーネント (ML-DSA、RSA、ECDSA) がサポートされている限り、すべての RSA ベースの複合アルゴリズムを含め、任意の複合アルゴリズムで機能していました。 ML-DSA と EdDSA (Ed25519 または Ed448) を組み合わせたアルゴリズムは、常に Windows でPlatformNotSupportedExceptionをスローしました。これは、Windowsが EdDSA をサポートしていないためです。

新しい動作

.NET 11 以降では、WindowsのCompositeMLDsa API は、CNG でネイティブに実装Windows複合アルゴリズムのみをサポートします。 Windowsは現在、これら 4 つのパラメーター セットに対するネイティブ サポートを実装しており、そのすべてが ECDSA と ML-DSA ペアです。

パラメーター セットWindows 複合 ML-DSA アルゴリズム CompositeMLDsaAlgorithm メンバー
44-ECDSA-P256-SHA256 複合 ML-DSA-44 および ECDSA P256 MLDsa44WithECDsaP256
65-ECDSA-P256-SHA512 複合 ML-DSA-65 および ECDSA P256 MLDsa65WithECDsaP256
65-ECDSA-P384-SHA512 複合 ML-DSA-65 および ECDSA P384 MLDsa65WithECDsaP384
87-ECDSA-P384-SHA512 複合 ML-DSA-87 および ECDSA P384 MLDsa87WithECDsaP384

他のすべての複合アルゴリズムは、WindowsでPlatformNotSupportedExceptionをスローするようになりました。 これには、以前に機能していた RSA と ML-DSA をペアにするすべてのアルゴリズムと、この変更の前に既に PlatformNotSupportedException をスローした EdDSA (Ed25519 または Ed448) と ML-DSA をペアにするすべてのアルゴリズムが含まれます。

詳細については、BCRYPT_PQDSA_KEY_BLOB構造のcbParameterSetフィールドを参照してください。

破壊的変更の種類

この変更は 動作の変更です。

変更理由

他のプリミティブの上に構築されたマネージド レイヤーではなく、オペレーティング システムが提供するネイティブ実装を使用することをお勧めします。 Windows、最近の Windows Insider Preview ビルドで複合 ML-DSA パラメーター セットのサブセットのネイティブ サポートが追加されました。.NETでは、使用可能になったときにそのネイティブ サポートが使用されるようになりました。

Windowsで特定の複合 ML-DSA アルゴリズムを使用する前に、IsAlgorithmSupportedを呼び出して、アルゴリズムがサポートされているかどうかを確認します。 アルゴリズムがサポートされていない場合は、サポートされているアルゴリズムを選択するか、結果の 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.
}

この変更は、複合 ML-DSA 証明書 API には影響しません。 これらの API は、以前と同様に、WindowsでPlatformNotSupportedExceptionをスローし続けます。

影響を受ける API