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 共通基準認定の評価対象の一部となっています。 CNG は、FIPS レベル 2 の検証済みシステムでコンポーネントとして使用できるように設計されています。

CNG は、安全なプロセスで有効期間の長いキーを保存し使用することで、共通基準認定に準拠しています。

Suite B のサポート

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

レガシ サポート

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

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

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

 

Note

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