ECC Diffie-Hellman (CSNDEDH および CSNFEDH)
- Elliptic Curve Diffie-Hellman プロトコルおよび Static Unified Model 鍵合意方式を使用して ECC 鍵ペアから対称鍵素材を作成する。
- 「Z」- D-H プロセスから得られる「秘密」素材出力を作成する。
- 内部 CCA トークン (DES または AES): AES 鍵のフォーマットは「可変長対称鍵トークン」です。 DES 鍵のフォーマットは「DES 内部鍵トークン」です。
- 外部 CCA トークン (DES または AES): AES 鍵のフォーマットは「可変長対称鍵トークン」です。 DES 鍵のフォーマットは「DES 外部鍵トークン」です。
- 「Z」- D-H プロセスから得られる「秘密」素材出力。
形式
CALL CSNDEDH(
return_code,
reason_code,
exit_data_length,
exit_data,
rule_array_count,
rule_array,
private_key_identifier_length,
private_key_identifier,
private_KEK_key_identifier_length,
private_KEK_key_identifier,
public_key_identifier_length,
public_key_identifier,
chaining_vector_length,
chaining_vector,
party_identifier_length,
party_identifier,
key_bit_length,
reserved_length,
reserved,
reserved2_length,
reserved2,
reserved3_length,
reserved3,
reserved4_length,
reserved4,
reserved5_length,
reserved5,
output_KEK_key_identifier_length,
output_KEK_key_identifier,
output_key_identifier_length,
output_key_identifier)
パラメーター
- 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. ECC Diffie-Hellman のキーワード キーワード 意味 鍵合意 (いずれかが必須) DERIV01 これは、Static Unified Model 鍵合意方式を使用します。 PASSTHRU これは、鍵導出ステップをスキップして、未加工の「Z」素材を返します。 トランスポート鍵タイプ (出力 KEK 鍵 ID が存在する場合はオプションで 1 つのみ指定) OKEK-DES 出力 KEK 鍵 ID は「DES」KEK トークンです。 OKEK-AES 出力 KEK 鍵 ID は「AES」KEK トークンです。 出力鍵タイプ (出力鍵 ID が存在する場合はオプションで 1 つのみ指定) KEY-DES 出力鍵 ID は「DES」スケルトン・トークンです。 KEY-AES 出力鍵 ID は「AES」スケルトン・トークンです。 鍵ラップ方式 (オプションで 1 つのみ指定可能。出力タイプが DES の場合にのみサポート) USECONFG デフォルト・ラップ方式の構成設定を鍵のラップに使用することを指定します。 これはデフォルトです。 WRAP-ENH 新しい拡張ラップ方式を鍵のラップに使用することを指定します。 WRAP-ECB 元のラップ方式を使用することを指定します。 変換制御 (オプション。出力タイプが DES の場合にのみサポート) ENH-ONLY このキーワードは、拡張方式でいったんラップされた鍵を元の方式でラップできないように指示する場合に指定します。 これにより、元の方式への変換が制限されます。 このキーワードを指定しない場合、元の方式への変換は許可されます。 このキーワードにより、制御ベクトル内のビット 56 (ENH ONLY) がオンになります。 このキーワードは、ゼロ CV データ鍵を処理する場合は無効です。 - private_key_identifier_length
- private_key_identifier パラメーターの長さ。
方向 タイプ 入力 整数 - private_key_identifier
- private_key_identifier には、 内部/外部トークン、または内部/外部 ECC 鍵のラベルが含まれていなければなりません。 ECC 鍵トークンには公開鍵と秘密鍵のペアが含まれていなければなりません。 非暗号化鍵が受け入れられます。
方向 タイプ 入力 ストリング - private_KEK_key_identifier_length
- private_KEK_key_identifier の長さ (バイト)。 最大値は 900 です。private_key_identifier に内部 ECC トークンが含まれている場合、この値はゼロでなければなりません。
方向 タイプ 入力 整数 - private_KEK_key_identifier
- private_KEK_key_identifier には、KEK 鍵トークン、KEK 鍵トークンのラベル、 またはヌル・トークンが含まれなければなりません。 private_key_identifier に外部 ECC トークンが含まれる場合は、KEK 鍵トークンが必要です。
方向 タイプ 入力 ストリング - public_key_identifier_length
- public_key_identifier の長さ。
方向 タイプ 入力 整数 - public_key_identifier
- public_key_identifier パラメーターには、ECC 公開トークン、 または ECC 公開トークンのラベルが含まれなければなりません。 public_key_identifier は、鍵管理機能に対して有効になっている相手側の ECC 公開鍵を指定します。 公開鍵と秘密鍵のペアを含むトークンが public_key_identifier で識別される場合、 秘密部分の暗号化解除は試みられません。
方向 タイプ 入力 ストリング - chaining_vector_length
- chaining_vector_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - chaining_vector
- chaining_vector パラメーターは、無視されます。
方向 タイプ 入出力 ストリング - party_identifier_length
- party_identifier パラメーターの長さ。 有効な値は 0、または 8 から 64 までです。 PASSTHRU 規則配列キーワードが指定されている場合、party_identifier_length は 0 でなければなりません。
方向 タイプ 入出力 整数 - party_identifier
- party_identifier パラメーターにはエンティティー ID 情報が含まれます。 DERIV01 規則配列キーワードが指定されている場合、この情報には、NIST SP800-56A セクション 5.8 に従って両方のエンティティー・データが 含まれなければなりません。
方向 タイプ 入出力 ストリング - key_bit_length
- 鍵ビット長パラメーターには、 導出されて指定の鍵トークンに配置される鍵素材のビットの数が含まれます。 PASSTHRU 規則配列キーワードが指定された場合、この値は 0 でなければなりません。 それ以外の場合、この値は 64 から 2048 まででなければなりません。
方向 タイプ 入出力 整数 - reserved_length
- reserved_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - reserved
- このパラメーターは無視されます。
方向 タイプ 入出力 ストリング - reserved2_length
- reserved2_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - reserved2
- このパラメーターは無視されます。
方向 タイプ 入出力 ストリング - reserved3_length
- reserved3_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - reserved3
- このパラメーターは無視されます。
方向 タイプ 入出力 ストリング - reserved4_length
- reserved4_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - reserved4
- このパラメーターは無視されます。
方向 タイプ 入出力 ストリング - reserved5_length
- reserved5_length パラメーターは、0 でなければなりません。
方向 タイプ 入出力 整数 - reserved5
- このパラメーターは無視されます。
方向 タイプ 入出力 ストリング - output_KEK_key_identifier_length
- output_KEK_key_identifier の長さ。 最大値は 900 です。output_key_identifier に内部トークンが含まれる場合、 または PASSTHRU 規則配列キーワードが指定された場合、output_KEK_key_identifier_length はゼロでなければなりません。
方向 タイプ 入力 整数 - output_KEK_key_identifier
- output_key_identifier に 外部 ECC トークンが含まれる場合、output_KEK_key_identifier には、KEK 鍵トークン、または KEK 鍵のラベルが含まれます。 それ以外の場合、このフィールドは無視されます。
方向 タイプ 入出力 ストリング 出力 KEK 鍵 ID によって DES KEK が識別される場合、その出力 KEK 鍵 ID は鍵タイプ IMPORTER または EXPORTER でなければならず、 エクスポート・ビットが設定されていなければなりません。 XLATE ビットは検査されません。 出力 KEK 鍵 ID によって AES KEK が識別される場合、その出力 KEK 鍵 ID は鍵タイプ IMPORTER または EXPORTER 鍵タイプでなければならず、 鍵用途フィールド 1 でエクスポート/インポート・ビットが設定されていて、鍵用途フィールド 4 で導出ビットが設定されていなければなりません。
- output_key_identifier_length
- output_key_identifier の長さ。 このサービスでは、フィールドが検査され、そのフィールドが、返されるトークンと少なくとも同じサイズであることが確認されます。 このサービスからの戻り時に、このフィールドは、作成された鍵トークンの正確な長さで更新されます。 最大許容値は 900 バイトです。
方向 タイプ 入出力 整数 - output_key_identifier
- 入力では、output_key_identifier に スケルトン・トークンまたはヌル・トークンが含まれていなければなりません。
方向 タイプ 入出力 ストリング 出力では、output_key_identifier に以下の項目が含まれます。- 生成された対称鍵素材を含む内部鍵トークンまたは外部鍵トークン。
- PASSTHRU 規則配列キーワードが指定された場合は「Z」データ (非暗号化状態)。
この変数が外部 DES 鍵トークンを指定する場合、出力 KEK 鍵 ID が DES KEK 鍵トークンを識別するものでなければなりません。 これが DES 鍵トークン以外の外部鍵トークンを指定する場合、出力 KEK 鍵 ID は AES KEK 鍵トークンを識別するものでなければなりません。
制約事項
ECC 曲線タイプ (入力) および導出される鍵の長さに関して、NIST セキュリティー強度要件が適用されます。
- DES: (レガシー DES トークン)
- CIPHER
- CIPHERXI
- CIPHERXL
- CIPHERXO
- DECIPHER
- ENCIPHER
- IMPORTER
- EXPORTER
- IMP-PKA
- AES
- DATA (レガシー AES トークン)
- CIPHER (可変長対称鍵トークン)
- IMPORTER (可変長対称鍵トークン)
- EXPORTER (可変長対称鍵トークン)
使用上の注意
呼び出し側がこの呼び出し可能サービス、鍵ラベル、または CKDS か PKDS に保管された内部セキュア鍵トークンの使用を許可されているかを検査するために、SAF が呼び出される場合があります。
次の表は、サポート対象の出力鍵タイプごとに有効な鍵ビットの長さおよび必要最小曲線サイズをリストしたものです。
出力鍵 ID タイプ | 有効な鍵ビットの長さ | 必要な最小曲線 |
---|---|---|
DES | 64 | P160 |
128 | P160 | |
AES | 128 | P256 |
192 | P384 | |
256 | P512 |
- 「Prohibit weak wrapping - Transport keys」アクセス制御点が有効になっている場合、サービスは失敗します。
- 「Warn when weak wrap - Transport keys」アクセス制御点が有効になっている場合、サービスは正常に完了し、警告戻りコードが返されます。
「Disallow 24-byte DATA wrapped with 16-byte Key」アクセス制御点が有効になっているとき、 ソース鍵が 3 倍長の DATA 鍵である場合に、DES マスター鍵が 16 バイトの鍵であるか、または鍵暗号鍵が倍長の鍵であると、 このサービスは失敗します。
アクセス制御点
ECC Diffie-Hellman 呼び出し可能サービスでは、 アクティブな役割で「ECC Diffie-Hellman Callable Service」アクセス制御点を有効にしておく必要があります。
PASSTHRU 規則配列キーワードを指定するには、 アクティブな役割で「ECC Diffie-Hellman - Allow PASSTHRU」アクセス制御点を有効にしておく必要があります。
output_key_identifier パラメーターが DES 鍵トークンを参照し、 指定されたラップ方式がデフォルト方式ではない場合は、 アクティブな役割で「ECC Diffie-Hellman - Allow key wrap override」アクセス制御点を有効にしておく必要があります。
- ECC Diffie-Hellman - Allow Prime Curve 192
- ECC Diffie-Hellman - Allow Prime Curve 224
- ECC Diffie-Hellman - Allow Prime Curve 256
- ECC Diffie-Hellman - Allow Prime Curve 384
- ECC Diffie-Hellman - Allow Prime Curve 521
- ECC Diffie-Hellman - Allow BP Curve 160
- ECC Diffie-Hellman - Allow BP Curve 192
- ECC Diffie-Hellman - Allow BP Curve 224
- ECC Diffie-Hellman - Allow BP Curve 256
- ECC Diffie-Hellman - Allow BP Curve 320
- ECC Diffie-Hellman - Allow BP Curve 384
- ECC Diffie-Hellman - Allow BP Curve 512
弱い鍵が強い鍵の生成に使用されることがないように、 ドメイン役割で「ECC Diffie-Hellman - Prohibit weak key generate」アクセス制御点を有効にします。
必須ハードウェア
下表に、各サーバー・タイプに必要な暗号化ハードウェアを示し、この呼び出し可能サービスの制約事項について説明します。
サーバー | 必須暗号化ハードウェア | 制約事項 |
---|---|---|
IBM eServer zSeries 990 |
この呼び出し可能サービスはサポートされていません。 | |
IBM System z9 EC |
この呼び出し可能サービスはサポートされていません。 | |
IBM System z10 EC |
この呼び出し可能サービスはサポートされていません。 | |
IBM zEnterprise 196 |
Crypto Express3 コプロセッサー | ECC 非暗号化鍵および内部トークンのサポートには 2010 年 9 月のライセンス内部コード (LIC) が必要です。
ECC 外部および Diffie-Hellman のサポートには 2011 年 9 月のライセンス内部コード (LIC) が必要です。 |
IBM zEnterprise EC12 |
Crypto Express3 コプロセッサー Crypto Express4 CCA コプロセッサー |
|
IBM z13 |
Crypto Express5 CCA コプロセッサー |