Schannel 暗号と暗号強度の指定

クライアント/サーバー情報交換の場合、Schannel の既定の動作は、レジストリで有効になっている暗号に基づいて、使用可能な最適な暗号をネゴシエートすることです。 アプリケーションでは、次のように SCHANNEL_CRED 構造のメンバーを使用して、接続に許可される暗号と暗号強度を制限できます。

  1. palgSupportedAlgs メンバーを、許容される暗号を含むALG_IDの配列に設定します。 詳細については、「暗号 ID」を参照してください。
  2. dwMinimumCipherStrength メンバーまたは dwMaximumCipherStrength メンバーを許容される最小および最大の強度に設定します。 詳細については、「暗号強度の値」を参照してください。
  3. AcquireCredentialsHandle 関数の呼び出しで、SCHANNEL_CRED構造体 (pAuthData パラメーターを使用) を渡します。 この関数は、資格情報ハンドルを返します。
  4. クライアント側の InitializeSecurityContext (General) 関数またはサーバー側 AcceptSecurityContext (General) 関数の呼び出しで資格情報ハンドル 指定します。

暗号 ID

Schannel の既定の動作では、システム レジストリの Schannel エントリに基づいて使用可能な最適な暗号を要求します。 システム レジストリを変更しないでください。Schannel に含まれる設定はグローバルに使用され、他のアプリケーションに影響します。 有効な定数の一覧については、「 ALG_ID」を参照してください。

暗号強度の値

この Schannel 機能は、通常、国内またはエクスポートの強度暗号への接続を制限するために使用されます。 国内の強度には 56 ビットと 128 ビットが含まれますが、エクスポートの強度は 56 ビットに制限されています。 最小値と最大値をゼロに設定した場合、Schannel は使用可能なすべての暗号強度を使用します。

TLS または SSL 3.0 を使用して 、dwMinimumCipherStrength メンバーを -1 (負の 1) に設定して、署名を提供するが暗号化を提供しない "Null 暗号" 暗号スイートを有効にします。 dwMaximumCipherStrength も -1 に設定されている場合は、"Null 暗号" スイートのみが有効になります。 この設定は開発専用であり、実稼働システムでは使用しないでください。

暗号情報のクエリ

資格情報の暗号強度設定を取得するには、 QueryCredentialsAttributes 関数を呼び出し、 ulAttribute パラメーターとして SECPKG_ATTR_CIPHER_STRENGTHSを指定します。

資格情報でサポートされているアルゴリズムの一覧を取得するには、SECPKG_ATTR_SUPPORTED_ALGSを ulAttribute パラメーターとして使用して QueryCredentialsAttributes を呼び出します。