ECC Diffie-Hellman (CSNDEDH および CSNFEDH)

ECC Diffie-Hellman 呼び出し可能サービスは、以下の項目を作成する場合に使用します。
  • 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 が呼び出される場合があります。

次の表は、サポート対象の出力鍵タイプごとに有効な鍵ビットの長さおよび必要最小曲線サイズをリストしたものです。

表 2. サポート対象の出力鍵タイプに有効な鍵ビットの長さおよび必要最小曲線サイズ。
出力鍵 ID タイプ 有効な鍵ビットの長さ 必要な最小曲線
DES 64 P160
128 P160
AES 128 P256
192 P384
256 P512
出力鍵暗号鍵 ID が、生成される鍵より弱い鍵である場合は、以下のようになります。
  • 「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」アクセス制御点を有効にします。

必須ハードウェア

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

表 3. ECC Diffie-Hellman 必須ハードウェア
サーバー 必須暗号化ハードウェア 制約事項

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

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

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

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

 

IBM z13

Crypto Express5 CCA コプロセッサー