変形鍵の生成 (CSNBDKG および CSNEDKG)

変形鍵生成サービスは、鍵生成鍵、処理方式、および指定のパラメーターに基づいて鍵を生成する場合に使用します。 鍵生成鍵の制御ベクトルによって、生成可能なターゲット鍵のタイプも決定されます。

このサービスを使用するには、以下の項目を指定します。
  • 変形プロセスを選択するための規則配列キーワード。
  • 変形鍵の生成元になる操作可能な鍵生成鍵。 この鍵に関連付けられた制御ベクトルによって、この鍵の用途が鍵生成処理に制限されます。 また、この制御ベクトルでは、生成可能な鍵のタイプも制限されます。
  • 変形プロセスで使用されるデータおよびデータ長。
  • 生成対象鍵は、生成対象鍵の必要な CV を含む内部トークンまたはスケルトン・トークンの可能性があります。 生成対象鍵の CV は、処理方式および鍵生成鍵で許可されるものでなければなりません。 生成対象鍵は、このパラメーターで返されます。
  • 鍵生成方式のキーワード。
このサービスでは、変形鍵は以下のように生成されます。
  • 規則配列に指定されているプロセスをサポートできるかどうかが判別されます。
  • 鍵生成鍵がリカバリーされて、鍵生成鍵クラス、および指定の鍵生成鍵用途が検査されます。
  • 生成対象鍵トークンにおける制御ベクトルが指定の処理方式に対して許可できるものであることが判別されます。
  • 生成対象鍵トークンにおける制御ベクトルが鍵生成鍵の制御ベクトルによって許可できるものであることが判別されます。
  • 処理方式および生成対象鍵 CV から、必要なデータ長が判別されます。 data_length が検証されます。
  • 特定の処理方式に適した鍵が生成されます。 鍵のパリティーが奇数に調整されます。 内部トークンが作成され、生成対象変形鍵が返されます。

AMODE(64) 呼び出しの呼び出し可能サービス名は CSNEDKG です。

形式

CALL CSNBDKG(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             rule_array_count,
             rule_array,
             generating_key_identifier,
             data_length,
             data,
             key_identifier,
             generated_key_identifier)

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入出力 整数

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

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

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

rule_array_count
方向 タイプ
入力 整数

rule_array パラメーターで指定するキーワードの数。 有効な値は 1、2、または 3 のみです。

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

制御情報を呼び出し可能サービスに提供するキーワード。 処理方式は、生成対象鍵を作成するために使用されるアルゴリズムです。 キーワードは、8 バイトの連続するストレージ内になければならず、その 8 バイト位置で左寄せされ、右側にブランクが埋め込まれている必要があります。

表 1. 変形鍵生成の規則配列キーワード
キーワード 意味
変形鍵の生成または更新の処理方式 (必須)
CLR8-ENC これは、8 バイトの非暗号化データを生成鍵で多重暗号化することを指定します。 generating_key_identifier は、制御ベクトルのビット 19 が 1 に設定された KEYGENKY 鍵タイプでなければなりません。 generated_key_identifier における制御ベクトルは単一長の鍵を指定しなければなりません。 鍵タイプは DATA、MAC、または MACVER にすることができます。
注: CIPHER クラスの鍵はサポートされていません。
SESS-XOR これは、既存の DATA、DATAC、MAC、DATAM、MACVER、または DATAMV の単一長/倍長の鍵を変更します。 これは、セッション鍵生成に対して VISA 方式を指定します。 指定するデータは、generating_key_identifier が単一長の鍵であるか倍長の鍵であるかによって、8 バイトの データにしたり、16 バイトのデータにしたりできます。 この 8 バイト/16 バイトのデータは、generating_key_identifier の非暗号化値との XOR が取られます。 generated_key_identifiergenerating_key_identifier と同じ制御ベクトルを持ちます。 generating_key_identifier は、DATA/DATAC、MAC/DATAM、または MACVER/DATAMV の鍵タイプにすることができます。
TDES-DEC 指定するデータは、8 バイトの非暗号化データでも 16 バイトの非暗号化データでもかまいません。 generated_key_identifier が単一長の鍵を指定する場合は、8 バイトの データが generating_key_identifier で TDES 暗号化解除されます。 generated_key_identifier が倍長の鍵を指定する場合は、16 バイトの データが generating_key_identifier で TDES ECB モード暗号化解除されます。 暗号化前にデータのフォーマットは行われません。 generating_key_identifier は、必要な生成対象鍵に適した用途ビットを持つ DKYGENKY 鍵タイプでなければなりません。
TDES-ENC 指定するデータは、8 バイトの非暗号化データでも 16 バイトの非暗号化データでもかまいません。 generated_key_identifier が単一長の鍵を指定する場合は、8 バイトの データが generating_key_identifier で TDES 暗号化されます。 generated_key_identifier が倍長の鍵を指定する場合は、16 バイトの データが generating_key_identifier で TDES ECB モード暗号化されます。 暗号化前にデータのフォーマットは行われません。 generating_key_identifier は、必要な生成対象鍵に適した用途ビットを持つ DKYGENKY 鍵タイプでなければなりません。 generated_key_identifier は、generating_key_identifier で 許可される CV を持つ単一長の鍵または倍長の鍵にすることができます。
TDES-CBC 指定するデータは 16 バイトの非暗号化データでなければなりません。 generated_key_identifier は倍長の鍵を指定しなければなりません。 その際、その 16 バイトのデータは、generating_key_identifier で TDES-CBC モード暗号化されます。 暗号化前にデータのフォーマットは行われません。 generating_key_identifier は、必要な生成対象鍵に適した用途ビットを持つ DKYGENKY 鍵タイプでなければなりません。 generated_key_identifier は、generating_key_identifier で 許可される CV を持つ倍長の鍵でなければなりません。
TDES-XOR これは、既存の TDES-ENC および SESS-XOR の機能を結合して 1 つのステップにします。

生成鍵はレベル 0 の DKYGENKY でなければならず、その半分部分が複製されたものであってはなりません。 生成されるセッション鍵は倍長でなければなりません。 許可される鍵タイプは DATA、DATAC、MAC、MACVER、SMPIN、および SMKEY です。 鍵タイプは、生成鍵の制御ベクトルで許可されたものでなければなりません。

TDESEMV2 これは、EMV 2000 アルゴリズム (この EMV2000 アルゴリズムでは分岐因子 2 が使用されます) による セッション鍵の生成をサポートします。 生成鍵はレベル 0 の DKYGENKY でなければならず、その半分部分が複製されたものであってはなりません。 生成されるセッション鍵は倍長でなければなりません。 許可される鍵タイプは DATA、DATAC、MAC、MACVER、SMPIN、および SMKEY です。 鍵タイプは、生成鍵の制御ベクトルで許可されたものでなければなりません。
TDESEMV4 これは、EMV 2000 アルゴリズム (この EMV2000 アルゴリズムでは分岐因子 4 が使用されます) による セッション鍵の生成をサポートします。 生成鍵はレベル 0 の DKYGENKY でなければならず、その半分部分が複製されたものであってはなりません。 生成されるセッション鍵は倍長でなければなりません。 許可される鍵タイプは DATA、DATAC、MAC、MACVER、SMPIN、および SMKEY です。 鍵タイプは、生成鍵の制御ベクトルで許可されたものでなければなりません。
鍵ラップ方式 (オプション)
USECONFG これは、システム・デフォルト構成を使用してラップ方式を決定することを指定します。 これがデフォルト・キーワードです。

システム・デフォルト鍵ラップ方式は、インストール・オプション・データ・セットで DEFAULTWRAP パラメーターを使用して指定できます。 z/OS Cryptographic Services ICSF System Programmer's Guidez/OS Cryptographic Services ICSF System Programmer's Guidez/OS Cryptographic Services ICSF System Programmer's Guideを 参照してください。

WRAP-ENH これは、ANSI X9.24 標準に準拠した拡張鍵ラップ方式を使用します。
WRAP-ECB これは、元の鍵ラップ方式 (DES 鍵トークンには ECB ラップが使用され、AES 鍵トークンには CBC ラップが使用される) を使用します。
変換制御 (オプション)
ENH-ONLY これは、generated_key_identifier トークンの再ラップを禁止します。 拡張方式でラップされたトークンは元の方式で再ラップできません。
generating_key_identifier
方向 タイプ
入出力 ストリング

鍵生成鍵のラベルまたは内部 64 バイト・トークン。 鍵のタイプは処理方式によって異なります。

data_length
方向 タイプ
入力 整数

後述の data パラメーターの長さ。 長さは、処理方式および生成対象鍵によって異なります。 TDESEMV4 または TDESEMV2 のデータの長さは 18 または 34 です。

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

変形鍵またはセッション鍵の生成処理に対して入力されるデータ。 データは、処理方式および generated_key_identifier によって異なります。

TDESEMV4 または TDESEMV2 の場合、データは、以下の項目で構成される 18 バイト (36 桁) または 34 バイト (68 桁) のデータです。
  • TDES-ENC 方式に従ってカード固有の中間鍵 (UDK) を作成するために使用される 16 バイト (32 桁) のカード固有のデータ。 通常、これは EMV 仕様に準じた PAN および PAN 順序番号です。
  • 2 バイト (4 桁) の ATC (アプリケーション・トランザクション数)
  • (オプション) EMV で使用される 16 バイト (32 桁) の IV (初期値)
key_identifier
方向 タイプ
入出力 ストリング

このパラメーターは現在使用されていません。 これは、64 バイトのヌル・トークンでなければなりません。

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

操作可能鍵の内部トークン、 生成される鍵の制御ベクトルを含むスケルトン・トークン、またはヌル・トークン。 generated_key_identifier が、generating_key_identifier から導出された CV を 持つ DKYGENKY である場合は、ヌル・トークンを指定できます。 generated_key_identifier が DKYGENKY 鍵タイプではないか、または処理方式が SESS-XOR ではない場合は、 スケルトン・トークンまたは内部トークンが必要です。 SESS-XOR の場合、これはヌル・トークンでなければなりません。 出力では、このパラメーターには生成対象鍵が含まれます。

ICSF は、対称鍵トークンにおいて鍵値をラップする方式として、元の ECB ラップ方式と、ANSI X9.24 準拠の拡張 CBC ラップ方式の 2 つの方式をサポートします。 デフォルトを指定変更する規則配列キーワードが指定されていない場合、 出力 generated_key_token ではデフォルト方式が使用されます。

制約事項

この呼び出し可能サービスは、バージョン X'10' 外部 DES 鍵トークン (RKX 鍵トークン) をサポートしていません。

使用上の注意

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

DKG 鍵生成鍵の制御ベクトル・ビットについては、制御ベクトルおよび CVT 呼び出し可能サービスを使用した制御ベクトルの変更を参照してください。

セッション鍵アルゴリズム (EMV スマート・カード固有) の場合、マスター導出鍵 (MDK) は 2 つの方法で使用できます。

  • 個別設定処理でカード固有鍵 (すなわち UDK) を計算するには、 最終セッション鍵の CV が備わった出力トークンを使用して TDES-ENC 方式または TDES-CBC 方式でこのサービスを呼び出します。 例えば、MDK が DMPIN の場合、トークンには、SMPIN 鍵の CV が必要であったり、DMAC (すなわち、倍長の MAC) や DDATA (すなわち、倍長の DATA 鍵) などが 必要であったりします。

    この後、その結果は個別設定ファイルでエクスポートされます。 この鍵は、この形式では、他のいずれの計算にも使用できません。

  • セッション鍵を使用するには、TDESEMV4 方式でこのサービスを呼び出します。 入力では、ATC や UDK の作成に使用されたカード・データと同じカード・データを指定し、オプションで IV 値を指定します。 この鍵は、EMV 関連のスマート・カード処理で使用されます。

    CSNBPCU のように、これと同じ処理が、セッション鍵を生成する API にも自動的に適用されます。

アクセス制御点

下表に、このサービスの機能を制御するドメイン役割内のアクセス制御点を示します。

表 2. 変形鍵生成に必要なアクセス制御点
規則配列キーワード アクセス制御点
CLR8-ENC 変形鍵の生成 - CLR8-ENC
SESS-XOR 変形鍵の生成 - SESS-XOR
TDES-DEC 変形鍵の生成 - TDES-DEC
TDES-ENC 変形鍵の生成 - TDES-ENC
TDES-CBC 変形鍵の生成 - TDES-CBC
TDES-XOR 変形鍵の生成 - TDES-XOR
TDESEMV2 または TDESEMV4 変形鍵の生成 - TDESEMV2/TDESEMV4
WRAP-ECB/WRAP-ENH およびデフォルト鍵ラップ方式の設定がキーワードに適合しない Diversified Key Generate - Allow wrapping override keywords

制御ベクトル・ビット (19 から 22) に B'1111' が設定された状態で鍵タイプ DKYGENKY の鍵生成鍵が指定されている場合は、 ドメイン役割で「Diversified Key Generate - DKYGENKY - DALL」アクセス制御点も有効にする必要があります。

TDES-ENC モードまたは TDES-DEC モードを使用する場合は、「Diversified Key Generate - Single length or same halves」アクセス制御点を 有効にすることで、特に、単一長の鍵、または等しい鍵半分を持つ倍長の鍵を生成できるようにすることが可能です。

「Disallow 24-byte DATA wrapped with 16-byte Key」アクセス制御点が有効になっているときに、 ソース鍵が 3 倍長の DATA 鍵であり DES マスター鍵が 16 バイトの鍵であると、このサービスは失敗します。

必須ハードウェア

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

表 3. 変形鍵生成必須ハードウェア
サーバー 必須暗号化ハードウェア 制約事項

IBM eServer zSeries 990
IBM eServer zSeries 890

PCI X 暗号化コプロセッサー

Crypto Express2 コプロセッサー

キーワード ENH-ONLY、USECONFG、WRAP-ENH、WRAP-ECB、および TDES-CBC はサポートされていません。

拡張鍵トークン・ラップはサポートされません。

IBM System z9 EC
IBM System z9 BC

Crypto Express2 コプロセッサー キーワード ENH-ONLY、USECONFG、WRAP-ENH、WRAP-ECB、および TDES-CBC はサポートされていません。

拡張鍵トークン・ラップはサポートされません。

IBM System z10 EC
IBM System z10 BC

Crypto Express2 コプロセッサー キーワード ENH-ONLY、USECONFG、WRAP-ENH、WRAP-ECB、および TDES-CBC はサポートされていません。

拡張鍵トークン・ラップはサポートされません。

Crypto Express3 コプロセッサー キーワード TDES-CBC はサポートされていません。

拡張鍵トークン・ラップはサポートされません。

IBM zEnterprise 196
IBM zEnterprise 114

Crypto Express3 コプロセッサー キーワード TDES-CBC はサポートされていません。

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

TDES-CBC のサポートには 2013 年 9 月以降のライセンス内部コード (LIC) が必要です。

IBM z13

Crypto Express5 CCA コプロセッサー