固有鍵導出 (CSNBUKD および CSNEUKD)

固有鍵導出 (CSNBUKD および CSNEUKD) では、ANSI X9.24 Part 1 の定義に従って鍵導出処理が実行されます。

この処理では、ベース導出鍵および導出データという 2 つの値から鍵が導出されます。
  • ベース導出鍵は、他の鍵が導出されるときの元となる鍵です。 これは、制御ベクトルにおいて UKPT ビット (ビット 18) が 1 に設定されている KEYGENKY でなければなりません。
  • 導出データは、導出された鍵を、特定装置、およびその装置からの特定トランザクションに固有のものにするために使用されます。 導出データ (現行鍵シリアル番号 (CKSN) と呼ばれる) は、装置の 59 ビット初期鍵シリアル番号値と、 新規トランザクションごとに装置で増やされる現行暗号カウンターの 21 ビット値を連結した 80 ビットのデータです。

初期 PIN 暗号鍵 (IPEK) はベース導出鍵と初期導出データから導出されます。 IPEK を返すように K3IPEK 規則配列キーワードを指定してください。

規則配列キーワードは、特定の呼び出しで導出される鍵のタイプと数を決定するものです。 詳しくは、規則配列パラメーターの説明を参照してください。

出力鍵は、デフォルト・ラップ・モードとして構成されている モード (拡張ラップ・モード (WRAP-ENH) または元の ECB ラップ・モード (WRAP-ECB)) を使用してラップされます。

形式

CALL CSNBUKD(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             rule_array_count,
             rule_array,
             base_derivation_key_identifier_length,
             base_derivation_key_identifier,
             derivation_data_length,
             derivation_data,
             generated_key_identifier1_length,
             generated_key_identifier1,
             generated_key_identifier2_length,
             generated_key_identifier2,
             generated_key_identifier3_length,
             generated_key_identifier3,
             transport_key_identifier_length,
             transport_key_identifier,
             reserved2_length,
             reserved2,
             reserved3_length,
             reserved3,               
             reserved4_length,
             reserved4,
             reserved5_length,
             reserved5,
             reserved6_length,
             reserved6)      

パラメーター

return_code
方向 タイプ
出力 整数

戻りコードは、呼び出し可能サービスの一般的な結果を示しています。 ICSF および暗号化コプロセッサーの戻りコードおよび理由コードに、戻りコードがリストされています。

reason_code
方向 タイプ
出力 整数

理由コードは、アプリケーション・プログラムに返される、呼び出し可能サービスの結果を示しています。 戻りコードにはそれぞれ、特定の処理問題を示すさまざまな理由コードがあります。 ICSF および暗号化コプロセッサーの戻りコードおよび理由コード に、理由コードがリストされています。

exit_data_length
方向 タイプ
入出力 整数

インストール・システム出口に渡されるデータの長さ。 データは exit_data パラメーターで識別されます。

exit_data
方向 タイプ
入出力 ストリング

このデータはインストール出口に渡されます。

rule_array_count
方向 タイプ
入力 整数
rule_array パラメーターで指定したキーワードの数。 値は 1 から 5 までです。
rule_array
方向 タイプ
入力 ストリング
rule_array パラメーターはキーワードの配列です。 キーワードは、8 バイトの連続するストレージ内になければならず、その 8 バイト位置で左寄せされ、右側にブランクが埋め込まれている必要があります。 rule_array キーワードは以下のとおりです。
表 1. 固有鍵導出のキーワード
キーワード 意味
アルゴリズム (オプション。デフォルトは DES)
DES これは、生成される鍵が DES (Triple DES) 鍵であることを指定します。 すべての入力スケルトン・トークンは DES トークンでなければなりません。 また、生成された出力トークンはすべて DES トークンになります。
トークン出力タイプ (1 つのみ指定可能。K3IPEK の場合は必須)
TDES-TOK これは、出力 IPEK を TDES トランスポート鍵でラップして外部 TDES トークンに入れて返す必要があることを指定します。
TR31-TOK これは、出力 IPEK を TDES トランスポート鍵でラップして TR-31 鍵ブロックに入れて返す必要があることを指定します。
鍵ラップ方式 (オプションで 1 つのみ指定可能。デフォルトは USECONFG)。 以下のキーワードを指定するには、アクセス制御点「Unique Key Derive - Override Default Wrapping Method」が有効になっていなければなりません。
USECONFG これは、デフォルト・ラップ方式の構成設定を使用して鍵をラップすることを指定します。
WRAP-ECB これは、元のラップ方式を使用して鍵をラップすることを指定します。
WRAP-ENH これは、拡張ラップ方式を使用して鍵をラップすることを指定します。
出力鍵選択キーワード (いずれかが必須。3 つまで指定可能)。 PIN-DATA キーワードも K3IPEK キーワードも他の出力鍵選択キーワードと一緒には指定できません。 他のキーワード (K1DATA、K2MAC、および K3PIN) を任意に組み合わせて指定できます。 これにより、プログラムは 1 回の呼び出しで最大 3 つの異なる出力鍵を生成できるようになります。
PIN-DATA このキーワードに対して返される鍵タイプは PIN 鍵です。 PIN 鍵は DATA 鍵トークンに入れて返されます。 これは、generated_key_identifier3_length パラメーター および generated_key_identifier3 パラメーターの出力鍵選択キーワードです。

出力値 generated_key_identifier3 が作成され、DATA 鍵になります。 入力で対象のパラメーターに指定されるスケルトン・トークンは、この呼び出し可能サービスに対して許可される 「規則キーワード PIN-DATA を持つ PIN 鍵」鍵タイプの 1 つでなければなりません。 有効な値については、表 2を参照してください。

このオプションを使用するには、 次のようにします。
  • 制御ベクトルのビット 61 (非 CCA) を 1 に設定します。
  • アクセス制御点「Unique Key Derive - Allow PIN-DATA processing」を有効にする必要があります。
K1DATA このキーワードに対して返される鍵タイプは DATA ENCRYPTION 鍵です。 これは、generated_key_identifier1_length パラメーター および generated_key_identifier1 パラメーターの出力鍵選択キーワードです。

出力値 generated_key_identifier1 が作成され、データ暗号鍵になります。 入力で対象のパラメーターに指定されるスケルトン・トークンは、この呼び出し可能サービスに対して許可される 「データ暗号鍵」タイプの 1 つでなければなりません。 有効な値については、表 2を参照してください。

K2MAC このキーワードに対して返される鍵タイプは MAC 鍵です。 これは、generated_key_identifier2_length パラメーター および generated_key_identifier2 パラメーターの出力鍵選択キーワードです。

出力値 generated_key_identifier2 が作成され、MAC 鍵になります。 入力で対象のパラメーターに指定されるスケルトン・トークンは、この呼び出し可能サービスに対して許可される MAC 鍵タイプの 1 つでなければなりません。 有効な値については、表 2を参照してください。

K3PIN このキーワードに対して返される鍵タイプは PIN 鍵です。 これは、generated_key_identifier3_length パラメーター および generated_key_identifier3 パラメーターの出力鍵選択キーワードです。

出力値 generated_key_identifier3 が作成され、PIN 鍵になります。 入力で対象のパラメーターに指定されるスケルトン・トークンは、この呼び出し可能サービスに対して許可される PIN 鍵タイプの 1 つでなければなりません。 有効な値については、表 2を参照してください。

K3IPEK このキーワードに対して返される鍵は IPEK です。 これは、generated_key_identifier3_length パラメーター および generated_key_identifier3 パラメーターの出力鍵選択キーワードです。

出力値 generated_key_identifier3 が作成され、初期の PIN 暗号鍵になります。 この鍵は、TDES トランスポート鍵でラップされ、トークン出力タイプ・キーワードに示されている外部対称トークンまたは TR-31 鍵ブロックに入れて返されます。 入力で対象のパラメーターに指定されるスケルトン・トークンは、この呼び出し可能サービスに対して許可される PIN 鍵タイプの 1 つでなければなりません。 有効な値については、表 2を参照してください。

この キーワードを他の出力鍵選択キーワードと組み合わせることはできません。

base_derivation_key_identifier_length
方向 タイプ
入力 整数
base_derivation_key パラメーターの長さ。 この値は 64 でなければなりません。
base_derivation_key_identifier
方向 タイプ
入出力 ストリング
ベース導出鍵は、ANSI X9.24 Part 1 で定義されている DUKPT アルゴリズムを 使用して操作可能鍵を導出するときの元となる鍵です。 ベース導出鍵は、制御ベクトルにおいて UKPT ビット (ビット 18) が 1 に設定されている倍長の KEYGENKY 鍵を含む 内部鍵トークンまたは内部鍵トークンのラベルでなければなりません。
derivation_data_length
方向 タイプ
入力 整数
derivation_data パラメーターの長さ。 この値は 10 でなければなりません。
derivation_data
方向 タイプ
入力 ストリング
導出データは、 現行暗号カウンターの 21 ビット値と連結された装置の現行鍵シリアル番号 (CKSN) を含む 80 ビット (10 バイト) のストリングです。 その値は、この装置で新規トランザクションごとに増やされます。
generated_key_identifier1_length
方向 タイプ
入出力 整数
generated_key_identifier1 パラメーターの長さ。 値は 0 および 64 です。
generated_key_identifier1
方向 タイプ
入出力 ストリング
入力では、 これは DES データ暗号鍵トークンであるか、または 表 2 に示されている データ暗号化制御ベクトルの 1 つを持つ DES データ暗号鍵のスケルトン・トークンでなければなりません。

出力では、generated_key_identifier1 には、導出されたデータ暗号鍵を持つデータ暗号化トークンが含まれます。

generated_key_identifier2_length
方向 タイプ
入出力 整数
generated_key_identifier2 パラメーターの長さ。 値は 0 および 64 です。
generated_key_identifier2
方向 タイプ
入出力 ストリング
入力では、 これは DES MAC 鍵トークンであるか、または 表 2 に 示されている MAC 制御ベクトルの 1 つを持つ DES MAC 鍵のスケルトン・トークンでなければなりません。 出力では、generated_key_identifier2 には、導出された MAC 鍵を持つ MAC トークンが含まれます。
generated_key_identifier3_length
方向 タイプ
入出力 整数
generated_key_identifier3 パラメーターの長さ。 規則配列キーワードが K3IPEK の場合、この長さは少なくとも 64 バイトでなければなりません。 それ以外の場合、値は 0 と 64 です。
generation_key_identifier3
方向 タイプ
入出力 ストリング
このパラメーターの 入力値と出力値は、rule_array パラメーターに指定されたキーワードに依存します。 generation_key_identifier3 パラメーターの rule_array キーワードは、PIN-DATA または K3PIN に することができます。
  • 規則配列キーワードが PIN-DATA の場合、入力はデータ鍵トークンであるか、 または 表 2 に示されている「規則キーワード PIN-DATA を持つ PIN 鍵」制御ベクトルの 1 つを持つ データ鍵のスケルトン・トークンでなければなりません。 出力では、このパラメーターには、導出された PIN 鍵を持つデータ・トークンが含まれます。
  • 規則配列キーワードが K3PIN の場合、入力は DES PIN 鍵トークンであるか、 または 表 2 に示されている PIN 制御ベクトルの 1 つを持つ DES PIN 鍵の スケルトン・トークンでなければなりません。 出力では、このパラメーターには、導出された PIN 鍵を持つ PIN トークンが含まれます。
  • 規則配列キーワードが K3IPEK の場合、入力は DES PIN 鍵トークンであるか、 または 表 2 に示されている PIN 制御ベクトルの 1 つを持つ、 フィールド内で左寄せされた、DES PIN 鍵のスケルトン・トークンでなければなりません。 出力では、このパラメーターには、外部対称鍵トークンまたは TR-31 鍵ブロックにおいて TDES でラップされた IPEK 鍵が含まれます。
transport_key_identifier_length
方向 タイプ
入力 整数
transport_key_identifier パラメーターの長さ。 トランスポート鍵 ID が使用されない場合、この長さは 0 でなければなりません。 それ以外の場合、この長さは 64 でなければなりません。
transport_key_identifier
方向 タイプ
入出力 ストリング
K3IPEK キーワードが指定されている 場合、transport_key_identifier には、IPEK をラップするために使用される鍵暗号鍵のラベルまたは鍵トークンが含まれます。 トランスポート鍵は DES EXPORTER KEK でなければなりません。 それ以外の場合、このフィールドは無視されます。
reserved2_length
方向 タイプ
入力 整数
このパラメーターはゼロでなければなりません。
reserved2
方向 タイプ
無視される ストリング
このパラメーターは無視されます。
reserved3_length
方向 タイプ
入力 整数
このパラメーターはゼロでなければなりません。
reserved3
方向 タイプ
無視される ストリング
このパラメーターは無視されます。
reserved4_length
方向 タイプ
入力 整数
このパラメーターはゼロでなければなりません。
reserved4
方向 タイプ
無視される ストリング
このパラメーターは無視されます。
reserved5_length
方向 タイプ
入力 整数
このパラメーターはゼロでなければなりません。
reserved5
方向 タイプ
無視される ストリング
このパラメーターは無視されます。
reserved6_length
方向 タイプ
入力 整数
このパラメーターはゼロでなければなりません。
reserved6
方向 タイプ
無視される ストリング
このパラメーターは無視されます。

制約事項

次の表は、導出される鍵タイプに依存する有効なスケルトン・トークンを示したものです。

表 2. 導出鍵の有効な制御ベクトル
導出される鍵 スケルトン・トークンでサポートされる鍵タイプ
データ暗号鍵

CIPHER

00 03 71 00 03 41 00 00 00 03 71 00 03 21 00 00
ENCIPHER 00 03 60 00 03 41 00 00 00 03 60 00 03 21 00 00
DECIPHER 00 03 50 00 03 41 00 00 00 03 50 00 03 21 00 00
メッセージ認証コード (MAC) 鍵

MAC                

00 05 4D 00 03 41 00 00 00 05 4D 00 03 21 00 00
MACVER 00 05 44 00 03 41 00 00 00 05 44 00 03 21 00 00
PIN 鍵 IPINENC 00 21 5F 00 03 41 00 00 00 21 5F 00 03 21 00 00
OPINENC 00 24 77 00 03 41 00 00 00 24 77 00 03 21 00 00
規則キーワード PIN-DATA を持つ PIN 鍵 DATA PIN 00 00 7D 00 03 41 00 00 00 00 7D 00 03 21 00 00
以下の制御ベクトル・ビットは検査されず、その値は 1 または 0 になる可能性があります。
  • ビット 17 - エクスポート制御
  • ビット 56 - 拡張ラップ制御
  • ビット 57 - TR-31 エクスポート制御
  • ビット 4 および 5 - UDX
規則キーワード PIN-DATA を持つ PIN 鍵に対して検査されない追加制御ベクトル・ビット。
  • ビット 61 - 非 CCA

使用上の注意

呼び出し側がこの呼び出し可能サービス、鍵ラベル、または CKDS に保管されている内部鍵トークンの使用を許可されているかを検査するために、SAF が呼び出される場合があります。

次の表は、導出される出力鍵タイプごとに使用されるバリアントを示したものです。

表 3. 導出バリアント
鍵タイプ DUKPT 導出バリアント DUKPT 鍵用途の説明
IPINENC OPINENC PIN 鍵 (PIN-DATA 規則配列キーワードを使用) 00000000000000FF 00000000000000FF PIN 暗号化
MAC 000000000000FF00 000000000000FF00 MAC、要求または両方向
MACVER 00000000FF000000 00000000FF000000 MAC、応答のみ
CIPHER

ENCIPHER

0000000000FF0000 0000000000FF0000 データ暗号化、要求または両方向
DECIPHER 000000FF00000000 000000FF00000000 データ暗号化、応答のみ

アクセス制御点

「Unique Key Derive」アクセス制御点では、このサービスの機能が制御されます。 規則配列内で「鍵ラップ方式」を指定するには、 アクティブな役割で「Unique Key Derive - Override Default Wrapping Method」アクセス制御点を有効にしておく必要があります。

PIN-DATA 規則配列キーワードを指定するには、 アクティブな役割で「Unique Key Derive - Allow PIN-DATA」アクセス制御点を有効にしておく必要があります。

K3IPEK 規則配列キーワードを指定するには、 アクティブな役割で「Unique Key Derive - K3IPEK」アクセス制御点を有効にしておく必要があります。

必須ハードウェア

下表に、各サーバー・タイプに必要な暗号化ハードウェアを示し、この呼び出し可能サービスの制約事項について説明します。

表 4. 固有鍵導出必須ハードウェア
サーバー 必須暗号化ハードウェア 制約事項

IBM eServer zSeries 990
IBM eServer zSeries 890

  この呼び出し可能サービスはサポートされていません。

IBM System z9 EC
IBM System z9 BC

  この呼び出し可能サービスはサポートされていません。

IBM System z10 EC
IBM System z10 BC

  この呼び出し可能サービスはサポートされていません。

IBM zEnterprise 196
IBM zEnterprise 114

  この呼び出し可能サービスはサポートされていません。

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

キーワード K3IPEK、TDES-TOK、および TR31-TOK には、2013 年 9 月以降のライセンス内部コード (LIC) が必要です。

IBM z13

Crypto Express5 CCA コプロセッサー