暗号化 (CSNBENC または CSNBENC1 および CSNEENC または CSNEENC1)

暗号化呼び出し可能サービスは、暗号化ブロック・チェーン・モードを使用してアドレス・スペースまたはデータ・スペースのデータを暗号化するために使用します。ICSF は、データを暗号化するための以下の処理規則をサポートしています。暗号化呼び出し可能サービスがブロック・チェーンに対して使用すべき処理規則のタイプを選択します。
処理規則
目的
ANSI X9.23
ブロック・チェーン用。必ずしも、8 バイトの正確な倍数である必要はありません。 この処理規則は、生成された暗号化テキストが 8 バイトの正確な倍数となるように非暗号化テキストに埋め込みを行います。
CBC
8 バイトの正確な倍数のブロック・チェーン用。
CUSP
ブロック・チェーン用。必ずしも、8 バイトの正確な倍数である必要はありません。 暗号化テキストは非暗号化テキストと同じ長さになります。
IBM 4700
ブロック・チェーン用。必ずしも、8 バイトの正確な倍数である必要はありません。 この処理規則は、生成された暗号化テキストが 8 バイトの正確な倍数となるように非暗号化テキストに埋め込みを行います。
IPS
ブロック・チェーン用。必ずしも、8 バイトの正確な倍数である必要はありません。 暗号化テキストは非暗号化テキストと同じ長さになります。

処理規則について詳しくは、表 1 および 暗号処理規則を参照してください。

操作の暗号化ブロック・チェーン (CBC) モードでは、処理を行う際に初期チェーニング・ベクトル (ICV) を使用します。暗号化ステップの前に、ICV は非暗号化テキストの最初の 8 バイトと排他的論理和演算され、続いて、今生成された 8 バイト・ブロックの暗号化テキストが次の 8 バイト・ブロックの非暗号化テキストと排他的論理和演算されます。その後、同様の処理が順次行われます。これにより、非暗号化テキストに存在する可能性がある、あらゆるパターンが隠蔽されます。

Single-DES 暗号化モードと Triple-DES 暗号化モードのどちらを選択するかは、key_identifier パラメーターに指定されている鍵の長さによって決まります。単一長の鍵が指定されている場合、Single-DES 暗号化が実行されます。倍長の鍵または 3 倍長の鍵が指定されている場合は、Triple-DES 暗号化が実行されます。

最初の 8 バイト・ブロックに対する CBC 効果を無効にするには、8 バイトのゼロを指定します。 ただし、ICV でゼロが必要になる場合があります。

暗号化ブロック・チェーンは、出力チェーニング・ベクトル (OCV) と呼ばれる結果のチェーン値も生成します。アプリケーションは、次の暗号化呼び出しで OCV を ICV として渡すことができます。これにより、レコード・チェーン が生成されます。

暗号化呼び出し可能サービスと復号呼び出し可能サービスのどちらが呼び出された場合でも、同じテキスト、ICV、および鍵が使用されたと想定されて、結果として生成される OCV は同じであることに注意してください。

短ブロックは 1 バイトから 7 バイトの長さのテキストです。短ブロックは唯一のブロックにすることができます。末尾の短ブロックは、8 バイトの正確な倍数のテキストに続く 1 バイトから 7 バイトのブロックです。例えば、テキストの長さが 21 の場合、8 バイトのブロックが 2 つと、5 バイトの末尾の短ブロックが 1 つ存在します。短ブロックと、1 バイトから 7 バイト・データの末尾の短ブロックは、Cryptographic Unit Support Program (CUSP) 規則に従って処理されるか、IPS/CMS プログラム製品の Information Protection System (IPS) により考案され使用されているレコード・チェーン・スキームによって処理されます。短ブロックおよび末尾の短ブロックを処理するこれらの方法では、暗号化テキストの長さが非暗号化テキストの長さより長くなることはありません。

別の方法として、非暗号化テキストに埋め込みを行い、非暗号化テキストより長い暗号化テキストを生成します。非暗号化テキストは、さまざまな埋め込みスキームの 1 つを使用して、最大 8 バイトを埋め込むことができます。この埋め込みにより、長さが 8 バイトの正確な倍数となる暗号化テキストが生成されます。

非暗号化テキストが既に 8 バイトの倍数になっている場合、任意の処理規則を使用して暗号化テキストを作成できます。

埋め込みがあるため、返される暗号化テキストの長さは提供された非暗号化テキストより長くなり、text_length パラメーターが変更されています。返される暗号化テキスト・フィールドは、最大数の埋め込みを収容するために非暗号化テキストの長さより 8 バイト長い必要があります。ICSF ではテキスト長の拡張が行われたかどうかを検出できないため、ご使用のインストール・システムのストレージでこの拡張を可能にする必要があります。

暗号化できる最小のデータ長は 1 バイトです。

重要: データ (非暗号化テキスト) の暗号化に使用されたデータ暗号化鍵を失うと、その鍵で暗号化されたデータ (暗号化テキスト) を元の状態に戻すことはできません

CSNBENC および CSNBENC1 からの選択

CSNBENC と CSNBENC1 は同じ機能を提供します。使用するサービスを選択するときは、以下を考慮してください。
  • CSNBENC では、非暗号化テキストと暗号化テキストを呼び出し側の 1 次アドレス・スペースに置く必要があります。 また、CSNBENC を使用するプログラムは IBM Common Cryptographic Architecture: Cryptographic Application Programming Interface に準拠しています。

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

  • CSNBENC1 では、非暗号化テキストと暗号化テキストを呼び出し側の 1 次アドレス・スペース、またはデータ・スペースのいずれかに置くことができます。これにより、1 回の呼び出しでより多くのデータを暗号化できるようになります。 ただし、CSNBENC1 を使用するプログラムは IBM Common Cryptographic Architecture: Cryptographic Application Programming Interface に準拠していないため、このプログラミング・インターフェースに準拠する他の暗号化製品で当該プログラムを実行する前に、プログラムの変更が必要になる場合があります。

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

    CSNBENC1 および CSNEENC1 では、clear_text_id および cipher_text_id が、非暗号化テキストおよび暗号化テキストを含む、データ・スペースのアクセス・リスト項目トークン (ALET) のパラメーターです。

形式

CALL CSNBENC(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             key_identifier,
             text_length,
             clear_text,
             initialization_vector,
             rule_array_count,
             rule_array,
             pad_character,
             chaining_vector,
             cipher_text)
CALL CSNBENC1(
              return_code,
              reason_code,
              exit_data_length,
              exit_data,
              key_identifier,
              text_length,
              clear_text,
              initialization_vector,
              rule_array_count,
              rule_array,
              pad_character,
              chaining_vector,
              cipher_text,
              clear_text_id,
              cipher_text_id) 

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入出力 整数

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

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

このデータはインストール出口に渡されます。

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

データの暗号化に使用される 64 バイト・ストリング。これは、データ暗号化鍵を含む内部鍵トークン、またはデータ暗号化鍵を含む CKDS レコードのラベルです。鍵トークンまたは鍵ラベルに単一長の鍵が含まれている場合、Single-DES 暗号化が実行されます。鍵トークンまたは鍵ラベルに倍長の鍵または 3 倍長の鍵が含まれている場合、Triple-DES 暗号化が実行されます。

IBM eServer zSeries 990 以降のリリースでは、単一長および倍長の CIPHER 鍵および ENCIPHER 鍵もサポートされています。

text_length
方向 タイプ
入出力 整数
入力では、指定した非暗号化テキスト (clear_text パラメーター) の長さ。最大テキスト長は 2,14783647 バイトです。text_length パラメーターではゼロの値は無効です。返された暗号化テキスト (cipher_text パラメーター) が、埋め込みバイトの追加により異なる長さになっている場合は、値は暗号化テキストの長さに更新されます。
注: MAXLEN 値は引き続きオプション・データ・セットに指定できますが、最大値制限のみが適用されます (2147483647)。

アプリケーション・プログラムは非暗号化テキストの長さを呼び出し可能サービスに渡します。 呼び出し可能サービスは、暗号化テキストの長さをアプリケーション・プログラムに返します。

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

暗号化されるテキスト。

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

暗号化ブロック・チェーン用に提供された 8 バイトのストリング。最初の 8 バイト (またはそれ未満) のデータ・ブロックが ICV と排他的論理和演算されてから、暗号化されます。入力ブロックが暗号化され、次の ICV が作成されます。データを復号するには、同じ ICV を使用する必要があります。

rule_array_count
方向 タイプ
入力 整数

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

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

処理制御情報を提供する 8 バイトのキーワードの配列。この配列は定位置です。表 1 のキーワードを参照してください。配列内の最初のキーワードは処理規則です。呼び出し可能サービスでデータを暗号化する際に使用する処理規則を選択します。2 番目のキーワードは ICV 選択キーワードです。3 番目のキーワード (ICV 選択キーワードを INITIAL にデフォルト設定できる場合は、2 番目のキーワード) は、使用する暗号化アルゴリズムです。

表 1. 暗号化規則配列制御情報のキーワード
キーワード 意味
処理規則 (必須)

規則 CUSP、IPS、X9.23、および 4700-PAD は、要求が 1 つの場合か、またはチェーニングされた一連の要求の最後の要求にのみ指定する必要があります。

CBC NIST SP 800-38A に記載されている暗号化ブロック・チェーンを実行します。このデータは 8 バイトの倍数でなければなりません。OCV が生成され、chaining_vector パラメーターに入れられます。ICV 選択キーワード CONTINUE が指定されている場合、直前の呼び出しからの CBC OCV がこの呼び出しの ICV として使用されます。
CUSP IBM の CUSP 製品および PCF 製品と互換性のある暗号化を実行します。データは任意の長さにすることができ、8 バイトの倍数である必要はありません。暗号化テキストは非暗号化テキストと同じ長さになります。CUSP/PCF OCV が chaining_vector パラメーターに入れられます。ICV 選択キーワード CONTINUE が指定されている場合、直前の呼び出しからの CUSP/PCF OCV がこの呼び出しの ICV として使用されます。
IPS IBM の IPS 製品と互換性のある暗号化を実行します。データは任意の長さにすることができ、8 バイトの倍数である必要はありません。暗号化テキストは非暗号化テキストと同じ長さになります。IPS OCV が chaining_vector パラメーターに入れられます。ICV 選択キーワード CONTINUE が指定されている場合、直前の呼び出しからの IPS OCV がこの呼び出しの ICV として使用されます。
X9.23 1 バイトから 8 バイトの埋め込みを行って、暗号化ブロック・チェーンを実行します。 これは、ANSI 規格 X9.23 の要件と互換性があります。データが 8 バイトの正確な倍数ではない場合、X9.23 は、生成された暗号化テキストが 8 バイトの正確な倍数となるように非暗号化テキストに埋め込みを行います。非暗号化テキストは、埋め込みにより 8 バイトが追加される場合でも、次の 8 バイトの倍数まで埋め込まれます。OCV が生成されます。
4700-PAD 呼び出し側で指定された埋め込み文字を使用してユーザーの非暗号化テキストを拡張することにより埋め込みを実行します。指定の埋め込み文字の後には、メッセージに追加されるバイトの総数を格納する 1 バイトの 2 進カウント・フィールドが続きます。4700-PAD は、生成された暗号化テキストが 8 バイトの正確な倍数となるように非暗号化テキストに埋め込みを行います。OCV が生成されます。
ICV 選択 (オプション)
CONTINUE これは、chaining_vector パラメーターが指している作業域に含まれている出力チェーニング・ベクトル (OCV) から初期設定ベクトルを取得することを指定します。CONTINUE は、CBC、IPS、および CUSP の処理規則の場合のみ有効です。
INITIAL これは、initialization_vector パラメーターから初期設定ベクトルを取得することを指定します。INITIAL はデフォルト値です。
暗号化アルゴリズム (オプション)
DES これは、Data Encryption Standard を使用し、トークンのマーク付けを無視することを指定します。
TOKEN これは、DATA 鍵トークン内のデータ暗号化アルゴリズムを使用することを指定します。TOKEN はデフォルトです。
以下の推奨事項は、使用する暗号化処理規則を呼び出し側が決定する際に役立ちます。
  • 特定の実装環境 (例えば、CUSP や ANSI X9.23 など) と暗号化データの交換を行う場合は、その実装環境の処理規則を使用します。
  • 暗号化テキストの長さと非暗号化テキストの長さが等しくなければならないときに、非暗号化テキストの長さを 8 バイトの倍数にすることができない場合は、IPS 処理規則か CUSP 処理規則を使用します。

暗号処理規則に、暗号処理規則についての詳しい説明があります。

pad_character
方向 タイプ
入力 整数

4700-PAD 処理規則 (rule_array パラメーター) の埋め込み文字として使用される 0 から 255 までの整数。

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

ICSF がシステム作業域として使用する 18 バイトのフィールド。 ご使用のアプリケーション・プログラムで、このストリングに含まれるデータを変更してはなりません。 チェーニング・ベクトルは呼び出し側からの出力チェーニング・ベクトル (OCV) を保持します。OCV は、18 バイトのストリングの最初の 8 バイトです。

rule_array パラメーターの ICV 選択キーワードが INITIAL の場合、方向は出力です。

rule_array パラメーターの ICV 選択キーワードが CONTINUE の場合、方向は入出力です。

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

呼び出し可能サービスによって返される暗号化テキスト。暗号化テキストの長さは text_length パラメーターで返されます。 cipher_text は、いくつかの処理規則で必要になる埋め込みが原因で、clear_text フィールドの長さより 8 バイト長くなることがあります。

clear_text_id
方向 タイプ
入力 整数

CSNBENC1 および CSNEENC1 の場合のみ、暗号化する非暗号化テキストの ALET。

cipher_text_id
方向 タイプ
入力 整数

CSNBENC1 および CSNEENC1 の場合のみ、アプリケーションが提供した暗号化テキストの ALET。

制約事項

サービスは以下の条件で失敗します。
  • 鍵トークンに倍長の鍵または 3 倍長の鍵が含まれているときに、Triple-DES が使用不可の場合。
  • トークンに CDMF のマークが付けられている場合。

使用上の注意

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

非暗号化テキスト・フィールドと暗号化テキスト・フィールドを破壊的にオーバーラップすることはできません。以下に例を示します。
cccccc
     pppppp  is supported.
cccccc
     pppppp  is not supported.

ppppppcccccc is supported.

P represents the plaintext and c represents the ciphertext.

OCV の生成に使用される方法は、CBC、4700-PAD、および X9.23 の各処理規則では同じです。しかし、この方法は、CUSP 処理規則および IPS 処理規則で使用される方法とは異なります。

暗号処理規則に、暗号処理規則についての説明があります。

復号呼び出し可能サービスについては、復号 (CSNBDEC または CSNBDEC1 および CSNEDEC または CSNEDEC1)で説明しています。

アクセス制御点

「Encipher - DES」アクセス制御点がこのサービスの機能を制御します。

必須ハードウェア

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

表 2. 暗号化の必須ハードウェア
サーバー 必須暗号化ハードウェア 制約事項

IBM eServer zSeries 990
IBM eServer zSeries 890

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

Crypto Express2 コプロセッサー

トークンに CDMF のマークが付けられている場合、サービスは失敗します。

IBM System z9 EC
IBM System z9 BC

Crypto Express2 コプロセッサー トークンに CDMF のマークが付けられている場合、サービスは失敗します。

IBM System z10 EC
IBM System z10 BC

Crypto Express2 コプロセッサー

Crypto Express3 コプロセッサー

トークンに CDMF のマークが付けられている場合、サービスは失敗します。

IBM zEnterprise 196
IBM zEnterprise 114

Crypto Express3 コプロセッサー トークンに CDMF のマークが付けられている場合、サービスは失敗します。

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

トークンに CDMF のマークが付けられている場合、サービスは失敗します。

IBM z13

Crypto Express5 CCA コプロセッサー トークンに CDMF のマークが付けられている場合、サービスは失敗します。