フィールド・レベル復号 (CSNBFLD および CSNEFLD)
フィールド・レベル復号呼び出し可能サービスは、以前にフィールド・レベル暗号化呼び出し可能サービスを使用して暗号化された支払い関連データベース・フィールドを暗号化解除する場合に使用します。 この場合のデータベースは、任意の構造化データ域またはリポジトリー (DB2、IMS、VSAM など)、あるいは任意の列区切りデータ・セットまたはファイルです。
AMODE(64) 呼び出しの呼び出し可能サービス名は CSNEFLD です。
形式
CALL CSNBFLD(
return_code,
reason_code,
exit_data_length,
exit_data,
rule_array_count,
rule_array,
key_identifier_length,
key_identifier,
key_derive_data_length,
key_derive_data,
context_data_length,
context_data,
charset_parms_length,
charset_parms,
reserved_length,
reserved,
source_text_id,
source_text_length,
source_text,
target_text_id,
target_text_length,
target_text)
パラメーター
- return_code
-
方向 タイプ 出力 整数 戻りコードは、呼び出し可能サービスの一般的な結果を示しています。 ICSF および暗号化コプロセッサーの戻りコードおよび理由コードに戻りコードがリストされています。
- reason_code
-
方向 タイプ 出力 整数 理由コードは、アプリケーション・プログラムに返される、呼び出し可能サービスの結果を示しています。 戻りコードにはそれぞれ、特定の処理問題を示すさまざまな理由コードが割り当てられています。 ICSF および暗号化コプロセッサーの戻りコードおよび理由コードに理由コードがリストされています。
- exit_data_length
-
方向 タイプ 入出力 整数 インストール・システム出口に渡されるデータの長さ。 データは exit_data パラメーターで識別されます。
- exit_data
-
方向 タイプ 入出力 ストリング インストール・システム出口に渡されるデータ。
- rule_array_count
-
方向 タイプ 入力 整数 rule_array パラメーターで指定するキーワードの数。 最小値は 4、最大値は 5 です。
- rule_array
-
方向 タイプ 入力 ストリング 制御情報を呼び出し可能サービスに提供するキーワード。 キーワードは、連続するストレージ内になければならず、各キーワードはその 8 バイト位置で左寄せされ、右側にブランクが埋め込まれている必要があります。
表 1. フィールド・レベル復号の規則配列キーワード キーワード 意味 アルゴリズム (必須) AESVFPE AES TDESVFPE TDES 鍵タイプ (オプション) KEY-CLR key_identifier パラメーターに非暗号化鍵値が含まれることを指定します。 KEY-CLR がデフォルト値です。 KEYIDENT key_identifier パラメーターの値が、CKDS 内の内部鍵トークンまたは鍵トークンのラベルのいずれかであることを示します。 キーイング方式 (いずれかが必須) KEY key_identifier パラメーターの値が暗号鍵であり、指定された context_data 値で 1 回のみ暗号化に使用することを示します。 KEY-DRV key_identifier で指定された鍵が基本導出鍵であり、暗号化に複数回使用できることを示します。 暗号化のたびに、固有の暗号化サブキーが、基本鍵および key_derive_data パラメーターから導出されます。 key_derive_data と context_data の組み合わせは、暗号化ごとに固有でなければなりません。 さらに、フィールドを CSNBFLD 呼び出し可能サービスを使用して暗号化解除する際には、この同じ key_derive_data と context_data の組み合わせを指定する必要があります。 key_derive_data の長さは 8 以上でなければならず、2000 を超えてはなりません。 コンテキスト方式 (いずれかが必須) TWEAK context_data パラメーターが、暗号化に使用する初期設定ベクトル (IV) を指定することを示します。 文字セット (いずれかが必須) ADIGITS 入力文字が ASCII 数字であることを示します。 ICSF は、次の順序で 10 に相当する n を使用して、入力文字を整数 (序数) 値に変換します。
定数 k は、TDES の場合は 18、AES の場合は 37 です。0123456789APRINT 入力文字が印刷可能 ASCII であることを示します。 ICSF は、次の順序で 95 に相当する n を使用して、入力文字を整数 (序数) 値に変換します。
定数 k は、TDES の場合は 8、AES の場合は 18 です。!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR STUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}~EDIGITS 入力文字が EBCDIC 数字であることを示します。 ICSF は、次の順序で 10 に相当する n を使用して、入力文字を整数 (序数) 値に変換します。
定数 k は、TDES の場合は 18、AES の場合は 37 です。0123456789EPRINT 入力文字が印刷可能 EBCDIC であることを示します。 ICSF は、次の順序で 95 に相当する n を使用して、入力文字を整数 (序数) 値に変換します。
定数 k は、TDES の場合は 8、AES の場合は 18 です。!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR STUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}~ORDINAL 入力文字が、呼び出し側アプリケーションによってすでに序数値に変換されていることを示します。 ICSF は、charset_parms で指定された n 値および k 値を使用して文字を処理します。 サービスで最適値を計算して使用するには、k を 0 に設定します。 - key_identifier_length
-
方向 タイプ 入力 整数 key_identifier パラメーターの長さ (バイト) を指定します。 非暗号化鍵の場合、この長さはバイト数であり、鍵の値のみを含みます。 KEYIDENT キーワードの場合、このパラメーターは 64 でなければなりません。注: 単一長 DES 鍵はサポートされていません。 - key_identifier
-
方向 タイプ 入出力 ストリング KEY-CLR キーワードの場合、key_identifier は暗号鍵を指定します。 パラメーターは左寄せする必要があります。
KEYIDENT キーワードの場合、key_identifier は内部非暗号化 DES または AES DATA 鍵トークンか、非暗号化または暗号化 DES または AES DATA 鍵トークンのラベル名を指定します。
指定されたトークンが旧マスター鍵で暗号化されていた場合、このトークンは現行マスター鍵で暗号化されて返されます。
- key_derive_data_length
-
方向 タイプ 入力 整数 key_derive_data パラメーターの長さ (バイト) を指定します。 キーイング方式 KEY-DRV の場合、値は 8 以上でなければならず、2000 を超えてはなりません。 キーイング方式 KEY の場合、値は 0 でなければなりません。
- key_derive_data
-
方向 タイプ 入出力 ストリング キーイング方式 KEY-DRV が選択されている場合に、暗号化および暗号化解除のサブキーを導出するために使用するデータ。
- context_data_length
-
方向 タイプ 入出力 整数 context_data パラメーターの長さ (バイト) を指定します。 コンテキスト方式 TWEAK の場合、これは入力フィールドであり、規則 AESVFPE の場合は 16、規則 TDESVFPE の場合は 8 でなければなりません。
- context_data
-
方向 タイプ 入出力 ストリング - コンテキスト方式 TWEAK の場合:
暗号化および暗号化解除に使用する初期設定ベクトル (IV) を指定します。 この値の長さは、TDES の場合は 8 バイト、AES の場合は 16 バイトです。 左端の 7 ビットはゼロでなければなりません。 右端の c ビットは VFPE カウンター値用に予約済みです (c はアプリケーション固有です)。 左端の 7 ビットと右端の c ビットの間にあるセクションが TWEAK 域です。 この TWEAK 域は、アプリケーションに特定の固有値に設定することをお勧めします。 固有鍵とコンテキスト・データの組み合わせの必要性については、下記の情報を参照してください。
サービスは、必要な暗号化ブロックごとにカウンターを増加させます (例えば、k 文字が処理されるたびに 1 回増加されます)。 アプリケーションでは、カウンター値をゼロに初期化することが必要とされます。 複数パーツの暗号化および暗号化解除は、カウンター部分を後続の呼び出しに対して適切に設定することによって実行できます。
暗号化解除の場合、context_data パラメーターには、データの暗号化に使用されたものと同じ値が含まれていなければなりません。注: 呼び出し側は、c が、暗号化される合計文字数を考慮した十分な大きさであることを確認する必要があります。 TWEAK 域にオーバーフローするようなカウンター値の増加は、許可すべきではありません。 サービスはこれを強制しようとはしません。 context_data 値全体から左端の 7 ビットを除いた値が、VFPE カウンター T として扱われ、適宜増加されます。
- charset_parms_length
-
方向 タイプ 入力 整数 charset_parms パラメーターの長さ (バイト) が含まれます。 キーワード ORDINAL の場合、値は 4 でなければなりません。 その他の場合、値は 0 でなければなりません。
- charset_parms
-
方向 タイプ 入出力 ストリング 文字セット規則 ORDINAL の場合、このパラメーターは、n と k の値を、n が最初に現れる 2 つの連結されたハーフ・ワードとして指定します。 n は 9 以上、255 以下でなければなりません。 k はゼロ以外の場合、適切に設定する必要があります。 これは n および使用するアルゴリズム (AES または TDES) によって異なります。 値の設定が大きすぎると、要求が失敗するか、パフォーマンスに影響します。 同様に、値の設定が小さすぎても、パフォーマンスに影響するおそれがあります。 サービスで最適値を計算して使用するには、k を 0 に設定します。 入力で k が 0 である場合は、k の計算された最適値が出力で返されます。
- source_text_id
-
方向 タイプ 入力 整数 復号する source_text パラメーターの ALET。
- reserved_length
-
方向 タイプ 入力 整数 reserved パラメーターの長さ (バイト)。 値は 0 でなければなりません。
- reserved
-
方向 タイプ 入力 ストリング このフィールドは無視されます。
- source_text_length
-
方向 タイプ 入力 整数 source_text パラメーターの長さ (バイト)。 最大値は 2,147,836,647 です。 ゼロ値は有効です。
- source_text
-
方向 タイプ 入力 ストリング 復号する入力テキスト。 ストリングには、charset キーワードで定義された文字セットの文字のみが含まれていなければなりません。 サービスはこれを強制しません。
- target_text_id
-
方向 タイプ 入力 整数 target_text パラメーターの ALET。
- target_text_length
-
方向 タイプ 入出力 整数 入力に関して、このパラメーターは、target_text パラメーターが指すストレージのサイズを指定します。 出力に関して、このパラメーターは、target_text パラメーターによってアドレッシングされたバッファーに保管されているテキストの実際の長さを含みます。 この値は、source_text_length の値より小さくしてはなりません。
- target_text
-
方向 タイプ 出力 ストリング サービスから返される復号されたテキスト。
使用上の注意
呼び出し側がこの呼び出し可能サービス、鍵ラベル、または CKDS に保管された内部セキュア鍵トークンの使用を許可されているかを検査するために、SAF が呼び出される場合があります。
CKDS 暗号化鍵を使用するには、指定の鍵ラベルに関連付けられた CSFKEYS クラス一般リソース・プロファイルの ICSF セグメントに、SYMCPACFWRAP(YES) が含まれている必要があります。
このサービスに使用可能なプリプロセッシング出口またはポストプロセッシング出口はありません。
マスター鍵は、このサービスを暗号化鍵で使用する場合にのみロードする必要があります。
AESVFPE アルゴリズムは、使用可能な場合はハードウェアを使用します。 そうでない場合、非暗号化鍵操作はソフトウェアで実行されます。
このサービスは、実行によって source_text パラメーターの破壊的オーバーレイが生じるおそれがある場合は失敗します。
複数パーツ暗号化の場合、ソース・テキスト長は最終呼び出しまで、呼び出しごとに k バイトの倍数でなければなりません。 最終呼び出しでは小さくすることができます。
- k を、2 の b 乗以下である最大の累乗 n に設定します (b は TDES の場合は 64、AES の場合は 128)。
- n の k 乗が 2 の b 乗に等分されない場合は、k を k-1 に設定します。
K1, K2, … Kn = PRF(Key,i || key_data_data || blen)
説明:- PRF は CMAC (NIST SP 800-38B「Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication」を参照) です。
- i は 1 バイトの反復変数です。
- blen は必要な鍵の 1 バイトのビット長です (マイナス 1)。
アクセス制御点
| アルゴリズム | アクセス制御点 |
|---|---|
| AESVFPE | Symmetric Key Encipher/Decipher - Encrypted AES keys |
| TDESVFPE | Symmetric Key Encipher/Decipher - Encrypted DES keys |
必須ハードウェア
下表に、各サーバー・タイプに必要な暗号化ハードウェアを示し、この呼び出し可能サービスの制約事項について説明します。
| サーバー | 必須暗号化ハードウェア | 制約事項 |
|---|---|---|
IBM eServer zSeries |
CP Assist for Cryptographic Functions | 暗号化鍵はサポートされていません。 |
IBM System z9 EC |
CP Assist for Cryptographic Functions | 暗号化鍵はサポートされていません。 |
IBM System z10 EC |
CP Assist for Cryptographic Functions Crypto Express3 コプロセッサー |
暗号化鍵には、2009 年 11 月以降のライセンス内部コード (LIC) を持つ CEX3C が必要です。 |
IBM zEnterprise 196 |
CP Assist for Cryptographic Functions Crypto Express3 コプロセッサー |
暗号化鍵には、2009 年 11 月以降のライセンス内部コード (LIC) を持つ CEX3C が必要です。 |
IBM zEnterprise EC12 |
CP Assist for Cryptographic Functions Crypto Express3 コプロセッサー Crypto Express4 コプロセッサー |
|
IBM z13 |
CP Assist for Cryptographic Functions Crypto Express5 CCA コプロセッサー |
関連情報
ssssss
tttttt is not supported.
tttttt
ssssss is not supported.
sssssstttttt is supported.
ssssss
tttttt is supported.
s represents the source text and t represents the target text.