PKA 鍵トークン作成 (CSNDPKB および CSNFPKB)

この呼び出し可能サービスは、PKA 鍵トークンを作成するために使用できます。 具体的には、以下に使用できます。
  • ECC 鍵または RSA 鍵用の非暗号化秘密鍵を含む外部 PKA 鍵トークンを作成する。 このトークンを PKA 鍵インポート・サービスへの入力として使用し、暗号化された秘密鍵を含む操作可能内部トークンを取得することができます。
  • PKA 鍵変換サービスで使用するために、秘密鍵を使用して外部 RSA 鍵トークンを作成する。
  • PKA 鍵生成サービスへの入力として使用できる ECC 鍵および RSA 鍵のスケルトン・トークンを作成する。
  • ECC 鍵または RSA 鍵の非暗号化公開鍵を含む公開鍵トークンを作成し、他の PKA サービスが直接使用できるトークン・フォーマットで公開鍵を返す。
ECC 鍵生成では、以下の情報がスケルトン・トークンに含まれている必要があります。
  • 鍵タイプ: ECC
  • 曲線のタイプ: 基本または Brainpool
  • P のサイズ (ビット): 基本曲線の場合は 192、224、256、384、または 521。 Brainpool 曲線の場合は 160、192、224、256、320、384、または 521
  • 鍵用途情報
  • アプリケーション関連データ (オプション)
RSA 鍵生成では、以下の情報がスケルトン・トークンに含まれている必要があります。
  • モジュラス指数形式:
    • モジュラス n の長さ (ビット、512 から 4096)
    • 公開鍵指数 e の長さ (オプション)。 モジュラスの長さが 2048 より大きい場合、公開鍵指数の値および長さには制限があります。
    • 秘密鍵指数 d の長さ (オプション)
    • 公開鍵指数 e (オプション)
  • 中国剰余定理形式:
    • モジュラス n の長さ (ビット、512 から 4096)
    • 公開鍵指数 e の長さ (オプション)
    • 公開鍵指数 e (オプション)
    • その他のオプションの長さ

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

形式

CALL CSNDPKB(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             rule_array_count,
             rule_array,
             key_value_structure_length,
             key_value_structure,
             private_key_name_length,
             private_key_name,
             user_definable_associated_data_length,
             user_definable_associated_data,
             reserved_2_length,
             reserved_2,
             reserved_3_length,
             reserved_3,
             reserved_4_length,
             reserved_4,
             reserved_5_length,
             reserved_5,
             key_token_length,
             key_token)

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
無視される 整数

このフィールドは無視されます。 このパラメーターには 0 を指定することをお勧めします。

exit_data
方向 タイプ
無視される ストリング

このフィールドは無視されます。

rule_array_count
方向 タイプ
入力 整数

rule_array パラメーターで指定するキーワードの数。 値は 1、2、または 3 でなければなりません。

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

制御情報を呼び出し可能サービスに提供するキーワード。 表 1 にキーワードがリストされています。 キーワードは、連続するストレージ内になければならず、各キーワードはその 8 バイト位置で左寄せされ、右側にブランクが埋め込まれている必要があります。

表 1. PKA 鍵トークン作成制御情報のキーワード
キーワード 意味
鍵タイプ (必須)
RSA-CRT このキーワードは、最適化された中国剰余定理 (CRT) 形式の RSA 秘密鍵を含むトークンの作成を指示します。 パラメーター key_value_structure は、指定された場合は入力鍵値を識別します。
RSA-PRIV このキーワードは、公開 RSA 鍵情報と秘密 RSA 鍵情報の両方を含むトークンの作成を指示します。 パラメーター key_value_structure は、指定された場合は入力鍵値を識別します。
RSA-PUBL このキーワードは、公開 RSA 鍵情報を含むトークンの作成を指示します。 パラメーター key_value_structure は、指定された場合は入力値を識別します。
RSAMEVAR モジュラスが 512 ビット以上のモジュラス指数形式で RSA 公開鍵と RSA 秘密鍵のペアの鍵トークンを作成するためのキーワードです。
RSA-AESM モジュラス指数形式で RSA 公開鍵および RSA 秘密鍵の鍵トークンを作成するためのキーワードです。 オブジェクト保護鍵は AES 鍵です。 秘密鍵セクション ID は X'30' です。
RSA-AESC Chinese-Remainder Theorem 形式の RSA 公開鍵および RSA 秘密鍵の鍵トークンを作成するためのキーワードです。 オブジェクト保護鍵は AES 鍵です。 秘密鍵セクション ID は X'31 です。
ECC-PAIR このキーワードは、公開 ECC 鍵情報と秘密 RSA 鍵情報の両方を含むトークンの作成を指示します。 パラメーター key_value_structure は、指定された場合は入力鍵値を識別します。
ECC-PUBL このキーワードは、公開 ECC 鍵情報を含むトークンの作成を指示します。 パラメーター key_value_structure は、指定された場合は入力値を識別します。
鍵用途制御 (オプション)
KEY-MGMT 秘密鍵を対称鍵インポート呼び出し可能サービスとデジタル署名生成呼び出し可能サービスの両方で使用できることを指示します。
KM-ONLY 秘密鍵を対称鍵配布でのみ使用できることを指示します。
SIG-ONLY 秘密鍵を対称鍵配布で使用できないことを指示します。 これがデフォルトです。
変換制御 (オプション。RSA-AESM、RSA-AESC、RSA-PRIV、RSAMEVAR、RSA-CRT、および ECC-PAIR の鍵タイプでのみ許可され、すべての鍵用途規則で有効)
XLATE-OK 秘密鍵素材が変換可能であることを指定します。
NO-XLATE 鍵変換が許可されないことを指示します。 これがデフォルトです。
key_value_structure_length
方向 タイプ
入力 整数

可変数の入力非暗号化鍵値を含む連続ストレージのセグメントです。 長さは、規則配列内の鍵タイプ・パラメーターおよび実際の入力値によって異なります。 長さはバイト単位です。

表 2. 鍵タイプの鍵値構造長の最大値
鍵タイプ 鍵値構造最大値
RSA-CRT 3500
RSAMEVAR 3500
RSA-AESC 3500
RSA-AESM 3500
RSA-PRIV 648
RSA-PUBL 520
ECC-PAIR 207
ECC-PUBL 139
key_value_structure
方向 タイプ
入力 ストリング

可変数の入力非暗号化鍵値を含む連続ストレージのセグメントで、これらの値の長さは指定によってビット単位またはバイト単位になります。 可変長の構造エレメントは順序付けされます。 入力鍵値はそれぞれの構造エレメント内で右寄せされ、左側に 2 進ゼロを埋め込む必要があります。 モジュラスの先行ビットがゼロの場合は、それらのビットを長さに入れないでください。 表 3 に、鍵タイプごとの構造および内容が定義されています。

表 3. PKA 鍵トークン作成用の鍵値構造エレメント
オフセット 長さ (バイト) 説明
鍵値構造: 最適化 RSA、中国剰余定理形式 (RSA-CRT、RSA-AESC)
000 002 モジュラス長 (ビット、512 から 4096)。 これは必須です。
002 002 モジュラス・フィールド長「nnn」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 この値は 512 を超えてはなりません。
004 002 公開鍵指数フィールド長「eee」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。
006 002 予約済み、2 進ゼロ。
008 002 素数 p の長さ「ppp」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 p + q の最大サイズは 512 バイトです。
010 002 素数 q の長さ「qqq」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 p + q の最大サイズは 512 バイトです。
012 002 dp の長さ「rrr」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 p + dq の最大サイズは 512 バイトです。
014 002 dq の長さ「sss」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 p + dq の最大サイズは 512 バイトです。
016 002 U の長さ「uuu」(バイト)。 鍵トークンを PKA 鍵生成呼び出し可能サービスで skeleton_key_token として使用する場合、この値はゼロにすることができます。 U の最大サイズは 512 バイトです。
018 nnn モジュラス、n。
018 + nnn eee 公開鍵指数 e。 これは 1<e<n であるような整数です。 e は奇数でなければなりません。 RSA 鍵ペアの生成を制御するために skeleton_key_token を作成する場合、公開鍵指数は 3、65537 (216 + 1)、または 0 (完全なランダム指数の生成を指示) のいずれかの値にすることができます。 指数値が 0 の場合、指数フィールドはヌル長フィールドにすることができます。
018 + nnn + eee ppp 素数 p。
018 + nnn + eee + ppp qqq 素数 q。
018 + nnn + eee + ppp + qqq rrr dp = d mod(p-1)。
018 + nnn + eee + ppp + qqq + rrr sss dq = d mod(q-1)。
018 + nnn + eee + ppp + qqq + rrr + sss uuu U = q-1mod(p)。
鍵値構造: RSA モジュラス指数形式 (RSA-PRIV、RSA-PUBL、RSAMEVAR、RSA-AESM)
000 002 モジュラス長 (ビット)。 これは必須です。 スケルトン・トークンを作成する場合、モジュラス長 (ビット) は 512 ビット以上でなければなりません。
002 002 モジュラス・フィールド長「XXX」(バイト)。 この値は、RSA-PUBL、RSA-AESM、または RSAMEVAR キーワードを使用する場合は 512 を超えてはならず、RSA-PRIV キーワードを使用する場合は 128 を超えてはなりません。

このサービスでは、モジュラス長が 4096 ビットの RSA 公開鍵の鍵トークン、またはモジュラス長が 1024 ビットの秘密鍵の鍵トークンを作成できます。

004 002 公開鍵指数フィールド長「YYY」(バイト)。 この値は、RSA-PUBL、RSA-AESM、または RSAMEVAR キーワードを使用する場合は 512 を超えてはならず、RSA-PRIV キーワードを使用する場合は 128 を超えてはなりません。 鍵トークンを PKA 鍵生成 verb でスケルトン・トークンとして使用する場合、この値はゼロにすることができます。 この場合、ランダム指数が生成されます。 固定された所定の公開鍵指数を取得するには、このフィールドおよび公開鍵指数を PKA 鍵生成 verb への入力として指定できます。
006 002 秘密鍵指数フィールド長「ZZZ」(バイト)。 このフィールドは、秘密鍵情報が提供されないことを示すゼロにすることができます。 この値は 128 バイトを超えてはなりません。 鍵トークンを PKA 鍵生成 verb でスケルトン・トークンとして使用する場合、この値はゼロにすることができます。
008 XXX モジュラス、n。 これは 1 < n <2**2048 であるような整数です。 n は素数 p と q に関する p と q の積です。
008 + XXX YYY RSA 公開鍵指数 e。 これは 1<e<n であるような整数です。 e は奇数でなければなりません。 RSA 鍵ペアの生成を制御するために skeleton_key_token を作成する場合、公開鍵指数は 3、65537 (216 + 1)、または 0 (完全なランダム指数の生成を指示) のいずれかの値にすることができます。 指数値が 0 の場合、指数フィールドはヌル長フィールドにすることができます。
008 + XXX + YYY ZZZ RSA 秘密鍵指数 d。 これは 1<d<n であるような整数です。 d の値は
鍵値構造: ECC 秘密鍵/公開鍵ペア形式 (ECC-PAIR)
000 001 曲線タイプ
x'00'
基本曲線
x'01'
Brainpool 曲線
001 001 予約済み x'00'
002 002 p の長さ (ビット)
0x'00C0'
Prime P-192
0x'00E0'
Prime P-224
0x'0100'
Prime P-256
0x'0180'
Prime P-384
0x'0209'
Prime P-521
0x'00A0'
Brain Pool P-160
0x'00C0'
Brain Pool P-192
0x'00E0'
Brain Pool P-224
0x'0100'
Brain Pool P-256
0x'0140'
Brain Pool P-320
0x'0180'
Brain Pool P-384
0x'0200'
Brain Pool P512
004 002 ddd。 このフィールドは秘密鍵 d 値の長さ (バイト) です。 鍵トークンを PKA 鍵生成呼び出し可能サービスでスケルトン鍵トークンとして使用する場合、この値はゼロにすることができます。 最大値は 66 バイトです。
006 002 xxx。 このフィールドは公開鍵 Q 値の長さ (バイト) です。 鍵トークンを PKA 鍵生成呼び出し可能サービスでスケルトン鍵トークンとして使用する場合、この値はゼロにすることができます。 最大値は 133 バイトです。 これには値が圧縮されているかどうかを示す 1 バイトが含まれています。
008 ddd 秘密鍵 d
008 + ddd xxx 公開鍵値 Q
鍵値構造: ECC 公開鍵形式 (ECC_PUBL)
000 001 曲線タイプ:
0x'00'
基本曲線
0x'01'
Brain Pool 曲線
000 001 予約済み x'00'
002 002 p の長さ (ビット)
0x'00C0'
Prime P-192
0x'00E0'
Prime P-224
0x'0100'
Prime P-256
0x'0180'
Prime P-384
0x'0209'
Prime P-521
0x'00A0'
Brain Pool P-160
0x'00C0'
Brain Pool P-192
0x'00E0'
Brain Pool P-224
0x'0100'
Brain Pool P-256
0x'0140'
Brain Pool P-320
0x'0180'
Brain Pool P-384
0x'0200'
Brain Pool P512
004 002 xxx。 このフィールドは公開鍵 Q 値の長さ (バイト) です。 鍵トークンを PKA 鍵生成呼び出し可能サービスでスケルトン鍵トークンとして使用する場合、この値はゼロにすることができます。 最大値は 133 バイトです。 これには圧縮鍵値または非圧縮鍵値を示す 1 バイト値が含まれています。
006 xxx 公開鍵値 Q
注:
  1. 長さフィールドはすべて 2 進数です。
  2. 2 進数フィールド (指数、長さ、モジュラスなど) はすべて、上位バイト・フィールドから先に保管されます。 この整数は鍵構造エレメント・フィールド内で右寄せされます。
  3. PKA 鍵インポート・サービスに入力するための RSA 秘密鍵を含むトークンを作成するには、構造内のすべての値を指定する必要があります。
private_key_name_length
方向 タイプ
入力 整数

長さは 0 または 64 にすることができます。

private_key_name
方向 タイプ
入力 EBCDIC 文字

このフィールドには、秘密鍵の名前が含まれています。 名前は ICSF ラベル構文規則に準拠している必要があります。 つまり、使用できる文字は英数字、国別文字 (@、#、$)、またはピリオド (.) です。 先頭文字は、英字または国別文字でなければなりません。 名前は大文字変換され、ASCII 文字に変換されます。 名前はプラットフォームから独立していなければならないため、ASCII は永続形式の名前です。 この名前は次に、秘密鍵を暗号化する前に非暗号化秘密鍵データと暗号で結合されます。 この結合のため、鍵トークンがすでにインポートされている場合、名前は変更できません。 このパラメーターは、鍵タイプ RSA-PUBL では無効です。

user_definable_associated_data_length
方向 タイプ
入力 整数

user_definable_associated_data パラメーターの長さ。

最大値が 100 である ECC-PAIR の規則配列鍵タイプの場合に有効であり、他のすべての規則配列鍵タイプの場合は 0 に設定する必要があります。

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

user_definable_associated_data パラメーターは、トークン内で IBM 関連データの後に置かれる関連データを含むストリング変数へのポインターです。 この関連データは、機密性ではなく保全性が鍵ラップ・メカニズムによって保護されているデータです。 このデータは、使用制御情報をバインドするために使用できます。

ECC-PAIR の規則配列鍵タイプの場合に有効であり、他のすべての規則配列鍵タイプの場合は無視されます。

reserved_2_length
方向 タイプ
入力 整数

予約済みパラメーターの長さ (バイト)。 この値は 0 に設定する必要があります。

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

reserved_2 パラメーターは、予約済みのストリングを識別します。 サービスはこれを無視します。

reserved_3_length
方向 タイプ
入力 整数

予約済みパラメーターの長さ (バイト)。 この値は 0 に設定する必要があります。

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

reserved_3 パラメーターは、予約済みのストリングを識別します。 サービスはこれを無視します。

reserved_4_length
方向 タイプ
入力 整数

予約済みパラメーターの長さ (バイト)。 この値は 0 に設定する必要があります。

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

reserved_4 パラメーターは、予約済みのストリングを識別します。 サービスはこれを無視します。

reserved_5_length
方向 タイプ
入力 整数

予約済みパラメーターの長さ (バイト)。 この値は 0 に設定する必要があります。

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

reserved_5 パラメーターは、予約済みのストリングを識別します。 サービスはこれを無視します。

key_token_length
方向 タイプ
入出力 整数

返される鍵トークンの長さ。 このサービスでは、フィールドが検査され、そのフィールドが、返されるトークンと少なくとも同じサイズであることが確認されます。 このサービスからのリターン時に、このフィールドは、作成された key_token の正確な長さで更新されます。 入力時には、3500 バイトが、作成される最大の key_token を入れるために十分なサイズです。

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

暗号化されていない秘密鍵または公開鍵を含む、返された鍵トークンです。 秘密鍵は、異なる共通暗号アーキテクチャー (CCA) PKA システムと交換可能な外部形式です。 公開鍵トークンは、該当する ICSF の署名検査サービスまたは鍵管理サービスで直接使用することができます。

使用上の注意

保管 PKA 秘密鍵を生成するために PKA 鍵生成要求で使用するスケルトンを作成する場合は、スケルトン・トークン内に秘密鍵名セクションを作成する必要があります。

必須ハードウェア

この呼び出し可能サービスで必要な暗号化ハードウェアはありません。