CNG の機能

CNG には次の機能があります。

暗号化の機敏性

CNG の重要な価値提案の 1 つは、暗号化の機敏性であり、"暗号化に依存しない" とも呼ばれます。 ただし、この機能を有効にするには、 Secure Sockets Layer プロトコル (SSL) や トランスポート層セキュリティ (TLS)、CMS (S/MIME)、IPsec、Kerberos などのプロトコルの実装を CNG に変換する必要がありました。 CNG レベルでは、すべてのアルゴリズムの種類 (対称、非対称、ハッシュ関数)、乱数の生成、およびその他のユーティリティ関数に置換と検出可能性を提供する必要があります。 プロトコル レベルの変更は、多くの場合、アルゴリズムの選択や、以前は存在していなかったその他の柔軟性オプションを追加するために必要なプロトコル API であるため、より重要です。

CNG は Windows Vista で最初に使用でき、Microsoft ソフトウェア スタック全体で CryptoAPI の既存の使用を置き換える位置付けです。 サードパーティの開発者は、CNG で次のような多くの新機能を見つけることができます。

  • 暗号化の機敏性の向上をサポートする新しい暗号構成システム。
  • キー ストレージの詳細な抽象化 (およびアルゴリズム操作からのストレージの分離)。
  • 長期的なキーを使用した操作のプロセス分離。
  • 置換可能な乱数ジェネレーター。
  • エクスポート署名の制限からの救済。
  • スタック全体のスレッド セーフ。
  • カーネル モード暗号化 API。

さらに、CNG には、 楕円曲線暗号 (ECC) を含むすべての必要な Suite B アルゴリズムのサポートが含まれています。 CNG が使用可能になると、既存の CryptoAPI アプリケーションは引き続き機能します。

認定とコンプライアンス

CNG は、Federal Information Processing Standards (FIPS) 140-2 に対して検証され、Windows Common Criteria 認定の評価対象の一部です。 CNG は、FIPS レベル 2 の検証済みシステムのコンポーネントとして使用できるように設計されています。

CNG は、セキュリティで保護されたプロセスで有効期間の長いキーを格納して使用することで、共通条件の要件に準拠しています。

Suite B のサポート

CNG の重要な機能は、Suite B アルゴリズムのサポートです。 2005 年 2 月、米国の国家安全保障局 (NSA) は、Suite B と呼ばれる将来の米国政府使用のための対称暗号化、非対称秘密契約 (キー交換とも呼ばれます)、デジタル署名、ハッシュ関数の調整されたセットを発表しました。NSA は、認定された Suite B の実装が、過去に機密と説明されていたトップ シークレット、シークレット、および個人情報として指定された情報の保護に使用できると発表しました。 このため、Suite B のサポートは、アプリケーション ソフトウェア ベンダーやシステム インテグレーター、および Microsoft にとって非常に重要です。

すべての Suite B アルゴリズムは一般に知られています。 これらは、歴史的に暗号アルゴリズムの開発に関連する政府の秘密の範囲外で開発されています。 この同じ期間に、一部のヨーロッパの国や地域でも、情報を保護するための同じ Suite B 要件が提案されています。

Suite B 暗号化では、インターネット キー交換 (IKE、主に IPsec で使用)、 トランスポート層セキュリティ (TLS)、Secure MIME (S/MIME) など、多くの既存のプロトコルで楕円曲線Diffie-Hellman (ECDH) を使用することをお勧めします。

CNG には、NIST 標準の素曲線 P-256、P-384、および P-521 に対するハッシュ アルゴリズム、ECDH、楕円曲線 DSA (ECDSA) の AES (すべてのキー サイズ)、SHA-2 ファミリ (SHA-256、SHA-384、SHA-512) のすべての必要なアルゴリズムに拡張された Suite B のサポートが含まれています。 バイナリ 曲線、コブリッツ曲線、カスタム素曲線、楕円曲線 Menezes-Qu-Vanstone (ECMQV) は、Windows Vista に含まれる Microsoft アルゴリズム プロバイダーではサポートされていません。

レガシ サポート

CNG では、 CryptoAPI 1.0 の現在のアルゴリズム セットがサポートされています。 CryptoAPI 1.0 で現在サポートされているすべてのアルゴリズムは、CNG で引き続きサポートされます。

カーネル モードのサポート

CNG では、カーネル モードでの暗号化がサポートされています。 暗号化機能を完全にサポートするために、カーネル モードとユーザー モードの両方で同じ API が使用されます。 SSL/TLS と IPsec はどちらも、CNG を使用するブート プロセスに加えてカーネル モードで動作します。 すべての CNG 関数をカーネル モードから呼び出すことができるわけではありません。 カーネル モードから呼び出すことができない関数のリファレンス トピックでは、カーネル モードから関数を呼び出すことができないことを明示的に示します。 それ以外の場合、呼び出し元が IRQL で実行されている場合は、カーネル モードからすべての CNG 関数PASSIVE_LEVEL呼び出すことができます。 さらに、一部のカーネル モード CNG 関数は、プロバイダーの機能に応じて、 DISPATCH_LEVEL IRQL で呼び出し可能な場合があります。

Microsoft カーネル セキュリティ サポート プロバイダー インターフェイス (Ksecdd.sys) は、Windows のカーネル モード レベルに存在する汎用のソフトウェア ベースの暗号化モジュールです。 Ksecdd.sysカーネル モードのエクスポート ドライバーとして実行され、カーネル コンポーネントへのドキュメント化されたインターフェイスを介して暗号化サービスを提供します。 Ksecdd.sysでサポートされていない組み込みの Microsoft プロバイダー アルゴリズムは DSA のみです。

Windows Server 2008 と Windows Vista: CNG では、カーネル モードのプラグ可能なアルゴリズムとプロバイダーはサポートされていません。 カーネル モードで使用できる暗号化アルゴリズムは、カーネル モード CNG API を介して Microsoft によって提供される実装のみです。

監査

包括的なセキュリティを提供するだけでなく、一般的な条件の要件の一部に準拠するために、CNG レイヤーで発生する多くのアクションは、Microsoft ソフトウェア キー ストレージ プロバイダー (KSP) で監査されます。 Microsoft KSP は、セキュリティ ログに監査レコードを作成するために、次のガイドラインに従います。

  • キーとキーペアの生成エラー (自己テストエラーを含む) を監査する必要があります。
  • キーのインポートとエクスポートを監査する必要があります。
  • キーの破棄エラーを監査する必要があります。
  • 永続キーは、ファイルへの書き込みとファイルからの読み取り時に監査する必要があります。
  • ペアごとの整合性チェックエラーを監査する必要があります。
  • 秘密キーの検証エラーがある場合は、3DES キーのパリティ チェックなど、監査する必要があります。
  • 暗号化、暗号化解除、ハッシュ、署名、検証、キー交換、乱数生成の失敗を監査する必要があります。
  • 暗号化自己テストは監査する必要があります。

一般に、キーに名前がない場合はエフェメラル キーです。 エフェメラル キーは保持されず、Microsoft KSP はエフェメラル キーの監査レコードを生成しません。 Microsoft KSP は、LSA プロセスでのみユーザー モードで監査レコードを生成します。 カーネル モード CNG によって監査レコードが生成されません。 管理者は、セキュリティ ログからすべての KSP 監査ログを取得するように監査ポリシーを構成する必要があります。 管理者は、KSP によって生成される追加の監査を構成するために、次のコマンド ラインを実行する必要があります。

auditpol /set /subcategory:"other system events" /success:enable /failure:enable

置換可能な乱数ジェネレーター

CNG が提供するもう 1 つの改善点は、既定の乱数ジェネレーター (RNG) を置き換える機能です。 CryptoAPI では、暗号化サービス プロバイダー (CSP) の一部として代替 RNG を提供できますが、別の RNG を使用するように Microsoft Base CSP をリダイレクトすることはできません。 CNG を使用すると、特定の呼び出し内で使用する特定の RNG を明示的に指定できます。

スレッド セーフ

別のスレッドから呼び出されるときに、同じメモリ領域を同時に変更する関数 (クリティカル セクション) はスレッド セーフではありません。

動作モード

CNG では、暗号化 API を介して対称ブロック暗号で使用できる 5 つの操作モードがサポートされています。 これらのモードとそのサポート可能性を次の表に示します。 操作のモードは、BCryptSetProperty 関数を使用してアルゴリズム プロバイダーの BCRYPT_CHAINING_MODE プロパティを設定することで変更できます。

操作モード BCRYPT_CHAINING_MODE値 アルゴリズム Standard
ECB (電子コードブック) BCRYPT_CHAIN_MODE_ECB 対称ブロック暗号 SP800-38A
CBC (暗号ブロック チェーン) BCRYPT_CHAIN_MODE_CBC 対称ブロック暗号 SP800-38A
CFB (暗号フィードバック) BCRYPT_CHAIN_MODE_CFB 対称ブロック暗号 SP800-38A
CCM (CBC を使用したカウンター) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Galois/Counter モード) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

注意

Windows Vista では、ECB、CBC、CFB の各操作モードのみが定義されています。 GCM と CCM には、Windows Vista Service Pack 1 (SP1) または Windows Server 2008 が必要です。