BCryptKeyDerivation 関数 (bcrypt.h)

BCryptKeyDerivation 関数は、シークレット アグリーメントを必要とせずにキーを派生させます。 これは BCryptDeriveKey の機能に似ていますが、入力としてBCRYPT_SECRET_HANDLE値を必要としません。

構文

NTSTATUS BCryptKeyDerivation(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] BCryptBufferDesc  *pParameterList,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

パラメーター

[in] hKey

入力キーのハンドル。

[in, optional] pParameterList

KDF パラメーターを含む BCryptBufferDesc 構造体へのポインター。 このパラメーターは省略可能であり、必要ない場合は NULL にすることができます 。 パラメーターには、キー派生関数 (KDF) またはジェネリックに固有のパラメーターを指定できます。 次の表は、Microsoft プリミティブ プロバイダーによって実装される特定の KDF に必要なパラメーターと省略可能なパラメーターを示しています。

Kdf パラメーター 必須
カウンター モードの SP800-108 HMAC KDF_LABEL はい
KDF_CONTEXT はい
KDF_HASH_ALGORITHM はい
SP800-56A KDF_ALGORITHMID はい
KDF_PARTYUINFO はい
KDF_PARTYVINFO はい
KDF_HASH_ALGORITHM はい
KDF_SUPPPUBINFO no
KDF_SUPPPRIVINFO no
PBKDF2 KDF_HASH_ALGORITHM はい
KDF_SALT はい
KDF_ITERATION_COUNT no
CAPI_KDF KDF_HASH_ALGORITHM はい
 

次のジェネリック パラメーターを使用できます。

  • KDF_GENERIC_PARAMETER
ジェネリック パラメーターは、次の方法で KDF 固有のパラメーターにマップされます。

カウンター モードの SP800-108 HMAC:

  • KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT

SP800-56A

  • KDF_GENERIC_PARAMETER = KDF_ALGORITHMID ||KDF_PARTYUINFO ||KDF_PARTYVINFO {||KDF_SUPPPUBINFO } {||KDF_SUPPPRIVINFO }

PBKDF2

  • KDF_GENERIC_PARAMETER = KDF_SALT
  • KDF_ITERATION_COUNT – 既定値は 10000 です

CAPI_KDF

  • KDF_GENERIC_PARAMETER = 使用されていません

[out] pbDerivedKey

キーを受け取るバッファーのアドレス。 cbDerivedKey パラメーターには、このバッファーのサイズが含まれています。

[in] cbDerivedKey

pbDerivedKey パラメーターが指すバッファーのサイズ (バイト単位)。

[out] pcbResult

pbDerivedKey パラメーターが指すバッファーにコピーされたバイト数を受け取る変数へのポインター。

[in] dwFlags

この関数の動作を変更するフラグ。 Microsoft プリミティブ プロバイダーでは、次の値を使用できます。

意味
BCRYPT_CAPI_AES_FLAG
ターゲット アルゴリズムが AES であり、したがってキーを二重展開する必要があることを指定します。 このフラグは、CAPI_KDF アルゴリズムでのみ有効です。

戻り値

関数の成功または失敗を示す状態コードを返します。

注釈

BCryptKeyDerivation を呼び出す前に、BCryptOpenAlgorithmProvider 関数で次のアルゴリズム識別子を使用できます。

  • BCRYPT_CAPI_KDF_ALGORITHM
  • BCRYPT_SP800108_CTR_HMAC_ALGORITHM
  • BCRYPT_SP80056A_CONCAT_ALGORITHM
  • BCRYPT_PBKDF2_ALGORITHM
カーネル モードでこの関数を呼び出すには、ドライバー開発キット (DDK) の一部である Cng.lib を使用します。 Windows Server 2008 と Windows Vista: カーネル モードでこの関数を呼び出すには、Ksecdd.lib を使用します。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー bcrypt.h
Library Bcrypt.lib
[DLL] Bcrypt.dll

こちらもご覧ください

BCryptDeriveKey

NCryptKeyDerivation