暗号プリミティブ

CNG API には、ハッシュの作成やデータの暗号化と暗号化解除などの基本的な暗号化操作を実行する一連の関数が用意されています。 これらの関数の詳細については、「 CNG 暗号化プリミティブ関数」を参照してください。

CNG には、多数の暗号化アルゴリズムが実装されています。 アルゴリズムの各アルゴリズムまたはクラスは、独自のプリミティブ API を公開します。 特定のアルゴリズムの複数の実装を同時にインストールできます。ただし、特定の時点で既定値になる実装は 1 つだけです。

CNG の各アルゴリズム クラスは、プリミティブ ルーターによって表されます。 CNG プリミティブ関数を使用するアプリケーションは、ユーザー モードでBcrypt.dllルーター バイナリ ファイルにリンクするか、関数を呼び出す前にカーネル モードでKsecdd.sysします。 さまざまなルーター ルーチンが、すべてのアルゴリズム プリミティブを管理します。 これらのルーターは、システムにインストールされている各アルゴリズムの実装を追跡し、各関数呼び出しを適切なプリミティブ プロバイダー モジュールにルーティングします。

CNG には、次のアルゴリズム クラスのプリミティブが用意されています。

アルゴリズム クラス 説明
乱数ジェネレーター
プラグ可能な乱数生成 (RNG)。
ハッシュ
SHA1 や SHA2 などのハッシュに使用されるアルゴリズム。
対称暗号化
対称暗号化に使用されるアルゴリズム (AES、3DES、RC4 など)。
非対称暗号化
RSA などの暗号化をサポートする非対称 (公開キー) アルゴリズム。
Signature
DSA や ECDSA などの署名アルゴリズム。 このクラスは RSA でも使用できます。
秘密契約
Diffie-Hellman (DH) や楕円曲線Diffie-Hellman (ECDH) などの秘密契約アルゴリズム。

次の図は、CNG 暗号化プリミティブの設計と機能を示しています。

cng 暗号化プリミティブの設計と機能

ヘッダー ファイル Bcrypt.h は 、MS_PRIMITIVE_PROVIDER 定数を "Microsoft プリミティブ プロバイダー" として定義します。 Microsoft プリミティブ プロバイダーを使用するには、この値を BCryptOpenAlgorithmProvider に渡します。