PKA 鍵生成 (CSNDPKG および CSNFPKG)

PKA 鍵生成呼び出し可能サービスは、RSA または ECC の鍵ペアを生成する場合に使用します。

PKA 鍵生成呼び出し可能サービスへの入力は、PKA 鍵トークン作成サービスによって作成されたスケルトン鍵トークン、または有効な内部 RSA トークンのいずれかです。 PKG は、同じモジュラス長および同じ指数を使用して鍵を生成します。 有効な内部 ECC トークンの場合、PKG は、曲線のタイプとサイズに基づいて鍵を生成します。 X'09' セクションを持つ内部トークンはサポートされていません。

RSA 鍵生成では、以下の情報が入力スケルトン・トークンに含まれている必要があります。
  • モジュラスのサイズ (ビット)。 モジュラス指数形式鍵のモジュラスは 512 から 1024 の範囲です。 CRT モジュラスは 512 から 4096 の範囲です。 可変長モジュラス指数形式のモジュラスは 512 から 4096 の範囲です。
RSA 鍵生成には以下の制約事項があります。 モジュラス指数については、モジュラス、公開鍵指数、および秘密鍵指数に関する制約事項があります。 CRT については、dp、dq、U、および公開鍵指数に関する制約事項があります。 制約事項の要約については、PKA 鍵トークン作成 (CSNDPKB および CSNFPKB)で鍵値構造を参照してください。
ECC 鍵生成では、以下の情報がスケルトン・トークンに含まれている必要があります。
  • 鍵タイプ: ECC
  • 曲線のタイプ: 基本または Brainpool
  • P のサイズ (ビット): 基本曲線の場合は 192、224、256、384、または 521。 Brainpool 曲線の場合は 160、192、224、256、320、384、または 512
  • 鍵用途情報
  • アプリケーション関連データ (オプション)
生成される ECC 秘密鍵は、以下のいずれかの形式で返されます。
  • 非暗号化鍵
  • ECC マスター鍵で暗号化された暗号化鍵
  • AES トランスポート鍵によって暗号化された暗号化鍵

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

形式

CALL CSNDPKG(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             rule_array_count,
             rule_array,
             regeneration_data_length,
             regeneration_data,
             skeleton_key_identifier_length,
             skeleton_key_identifier,
             transport_key_identifier,
             generated_key_token_length,
             generated_key_token)

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入出力 整数

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

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

インストール・システム出口に渡されるデータ。

rule_array_count
方向 タイプ
入力 整数

rule_array パラメーターで指定するキーワードの数。 値は 1 または 2 のいずれかです。

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

制御情報を呼び出し可能サービスに提供するキーワード。 リストについては、表 1 を参照してください。 キーワードは、8 バイト・フィールドで左寄せされ、右側にブランクが埋め込まれます。

表 1. PKA 鍵生成規則配列のキーワード
キーワード 意味
秘密鍵暗号化 (必須)
CLEAR 非暗号化テキストで秘密鍵を返します。 非暗号化テキストの秘密鍵は外部トークンです。
MASTER マスター鍵で秘密鍵を暗号化します。 X'09' セクションを持つスケルトン・トークンが指定されている場合、このキーワードはサポートされません。
RETAIN 追加のセキュリティー用に、秘密鍵を暗号化コプロセッサー内に保存します。 これは、RSA 署名鍵にのみ有効です。 このため、RETAIN キーワードは、以下についてはサポートされません。
  • X'09'X'30'、または X'31' のいずれかのセクションが指定されたスケルトン・トークン。
  • ECC トークン。
XPORT 秘密鍵を transport_key_identifier で暗号化します。
オプション (オプション)
CLONE 生成され、保存された秘密鍵に、暗号化エンジンの複製処理で使用可能であることを示すマークを付けます。 このキーワードは、RETAIN も指定されている場合にのみサポートされます。 RSA 鍵にのみ有効です。 このキーワードは、以下についてはサポートされません。
  • X'09' セクションが指定されたスケルトン・トークン。
  • ECC トークン。
処理制御 (regeneration_data_length がゼロ以外の場合はオプション)
ITER-38 regeneration_data が指定されている場合は、このキーワードにより、サービスで FIPS および ANSI X9.31 に準拠した鍵値が生成されます。
トランスポート鍵タイプ (オプションで 1 つのみ指定可能)
OKEK-DES トランスポート鍵 ID は DES KEK トークンを識別します。 これがデフォルト値です。
OKEK-AES トランスポート鍵 ID は AES KEK トークンを識別します。
regeneration_data_length
方向 タイプ
入力 整数

ECC トークンの場合、値は 0 でなければなりません。 RSA トークンの場合、regeneration_data_length はゼロ以外にすることができます。 値をゼロ以外にする場合は、8 から 512 バイトの範囲でなければなりません。

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

このフィールドは、特定の公開鍵と秘密鍵のペアを反復可能な方法で作成するためのベースとして使用するストリングを含むストリング変数を指します。

skeleton_key_identifier_length
方向 タイプ
入力 整数

skeleton_key_identifier パラメーターの長さ (バイト)。 最大許容値は 3500 バイトです。

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

PKA 鍵トークン作成によって生成されたアプリケーション提供のスケルトン鍵トークン、ECC 鍵生成に必要な曲線タイプとビット長を含むトークンのラベル、または RSA 鍵生成に必要なモジュラス長と公開鍵指数。 RETAIN が指定され、skeleton_key_identifier がラベルである場合、このラベルは鍵の秘密鍵名に一致する必要があります。

RSA 鍵の場合、skeleton_key_identifier パラメーターには、モジュラス長を 512 ビットから 4096 ビットの範囲内で指定するトークンが含まれていなければなりません。

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

生成対象鍵の暗号化に使用する AES 鍵 ID または DES 鍵 ID を含む可変長フィールド。 RSA 鍵の場合、これは AES トランスポート鍵または DES トランスポート鍵のいずれかです。 スケルトン・トークンに RSA 秘密鍵セクション X'30' または X'31' がある場合は、AES トランスポート鍵を指定する必要があります。 AES 鍵内の鍵用途フィールドで、この鍵による RSA 鍵のラップが許可されていなければなりません。 その他すべての RSA 秘密鍵セクションについては、DES トランスポート鍵を指定する必要があります。 ECC 鍵の場合、これは ECC 鍵をラップ可能な AES トランスポート鍵でなければなりません。

XPORT 規則が指定されていない場合、このパラメーターは 64 バイトの 2 進ゼロでなければなりません。

XPORT 規則の場合、これは IMPORTER 鍵または EXPORTER 鍵であるか、IMPORTER 鍵または EXPORTER 鍵のラベルです。 ラベルを指定する場合、指定したラベルは IMPORTER 鍵または EXPORTER 鍵のいずれかに一意的に解決される必要があります。 このパラメーターは以下のいずれかです。
  • トランスポート鍵を含む CKDS レコードの 64 バイトのラベル。
  • トランスポート鍵を含む 64 バイトの DES 内部鍵トークン。
  • トランスポート鍵を含む可変長の AES 内部鍵トークン。
generated_key_token_length
方向 タイプ
入出力 整数

生成対象鍵トークンの長さ。 このフィールドは、少なくとも返されるトークンに等しい長さであるかが検査されます。 最大サイズは 3500 バイトです。 出力時に、このフィールドは実際のトークン長で更新されます。

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

生成された ECC 鍵または RSA 鍵の内部トークンまたは内部ラベル。 ラベルは、大半の RSA 鍵トークン用の保管鍵のラベルにすることができます。

以下を確認するために検査が行われます。
  • PKDS 内の ECC トークンは、ECC トークンが skeleton_key_identifier に指定されている場合にのみオーバーレイされる。
  • 保管鍵は PKDS でオーバーレイされない。 ラベルが保管鍵のラベルである場合は、トークン内の秘密名がラベル名にしなければなりません。 ラベルが generated_key_token フィールドに指定されている場合、アプリケーションに返される generated_key_token_length は入力長と同じになります。 RETAIN が指定されていても、generated_key_token がラベルとして指定されなかった場合、アプリケーションに返される生成対象鍵の長さはゼロになります (鍵は暗号化コプロセッサーに保存されています)。 generated_key_token として指定されたラベルと同じラベルのレコードが PKDS にすでに存在する場合、レコードは新たに生成された鍵トークンで上書きされます (PKDS レコードが既存の保管秘密鍵でない場合に限ります。 既存の保管秘密鍵である場合は上書きできません)。 保管鍵を生成する場合にこのラベルを持つ既存の PKDS レコードがない場合は、レコードが作成されます。 保管鍵以外の鍵の生成で、ラベルが generated_key_token フィールドに指定されている場合は、この同じラベルを持つレコードが PKDS にすでに存在している必要があり、存在していない場合はサービスが失敗します。

制約事項

2048 ビット RSA 鍵には、1 バイトから 256 バイトの範囲で公開鍵指数を入れることができます。 2049 ビットから 4096 ビットの RSA 鍵の公開鍵指数は、値 3 および 65537 に制限されます。

使用上の注意

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

アクセス制御点

「PKA Key Generate」アクセス制御点によって、このサービスの機能が制御されます。 その他のアクセス制御点は、規則配列鍵の使用を制御します。

表 2. PKA 鍵生成規則配列鍵に必要なアクセス制御点
鍵アルゴリズム 規則配列キーワード アクセス制御点
RSA CLEAR PKA Key Generate - Clear RSA keys
ECC CLEAR PKA Key Generate - Clear ECC keys
RSA CLONE PKA Key Generate - Clone
regeneration_data 変数に指定された値に基づいて鍵を生成するには、少なくとも以下のいずれかのアクセス制御点を使用可能にする必要があります。
  • RETAIN キーワードを使用しない場合は PKA Key Generate - Permit Regeneration Data
  • RETAIN キーワードを使用する場合には PKA Key Generate - Permit Regeneration Data Retain

ECC 鍵の場合、トランスポート鍵が指定されていると、「Prohibit weak wrapping - Transport keys」アクセス制御点をアクティブ役割で有効にでき、強い鍵が弱い鍵によってラップされるのを防ぐことができます。

必須ハードウェア

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

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

IBM eServer zSeries 990
IBM eServer zSeries 890

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

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビット長より大きいモジュラスを持つ RSA 鍵はサポートされていません。

IBM System z9 EC
IBM System z9 BC

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビットから 4096 ビットの範囲内のモジュラスを持つ RSA 鍵サポートには 2007 年 11 月以降のライセンス内部コード (LIC) が必要です。

IBM System z10 EC
IBM System z10 BC

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビットから 4096 ビットの範囲内のモジュラスを持つ RSA 鍵サポートには、2007 年 11 月以降のライセンス内部コード (LIC) が必要です。

Crypto Express3 コプロセッサー

ECC サポートには、2010 年 9 月のライセンス内部コード (LIC) が必要です。

IBM zEnterprise 196
IBM zEnterprise 114

Crypto Express3 コプロセッサー

ECC 非暗号化鍵および内部トークンのサポートには、2010 年 9 月のライセンス内部コード (LIC) が必要です。

ECC 外部トークンおよび Diffie-Hellman のサポートには、2011 年 9 月以降のライセンス内部コード (LIC) が必要です。

ECC マスター鍵または AES トランスポート鍵を使用した RSA 鍵のラップはサポートされていません。

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

 

IBM z13

Crypto Express5 CCA コプロセッサー