MDC 生成 (CSNBMDG または CSNBMDG1 および CSNEMDG または CSNEMDG1)

変更検出コード (MDC) は、データ保全性をある程度サポートするために使用できます。

MDC 生成呼び出し可能サービスは、アプリケーション指定のテキスト・ストリングに対して 128 ビットの変更検出コード (MDC) を生成する場合に使用します。

返される MDC 値は、安全に保管したり別のユーザーに送信したりする必要があります。 テキスト・ストリングの保全性を後で検証するには、MDC 生成呼び出し可能サービスを再度使用して 128 ビットの MDC を生成します。 新しい MDC 値が元の MDC 値と比較されます。 両方の値が同じであれば、そのテキストは、改ざんされていないテキストとして受け入れられます。

CSNBMDG および CSNBMDG1 からの選択

CSNBMDG と CSNBMDG1 には同じ機能が備わっています。 使用するサービスを選択するときは、以下のことを考慮してください。
  • CSNBMDG では、アプリケーション指定のテキストは呼び出し側の 1 次アドレス・スペースに入っていなければなりません。 また、CSNBMDG を使用するプログラムは「IBM Common Cryptographic Architecture: Cryptographic Application Programming Interface」に従います。

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

  • CSNBMDG1 では、アプリケーション指定のテキストは呼び出し側の 1 次アドレス・スペースに入れることも、 データ・スペースに入れることもできます。 これにより、1 回の呼び出しで、より多くのデータを処理できるようになります。 ただし、CSNBMDG1 を使用するプログラムは「IBM Common Cryptographic Architecture: Cryptographic Application Programming Interface」従いません。 そのようなプログラムは、このプログラミング・インターフェースに従う他の暗号化製品で実行する前に変更しておかなければならない場合があります。

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

    CSNBMDG1 の場合、text_id_in パラメーターは、アプリケーション指定のテキストが含まれる データ・スペースのアクセス・リスト項目トークン (ALET) を指定します。

形式

CALL CSNBMDG(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             text_length,
             text,
             rule_array_count,
             rule_array,
             chaining_vector,
             mdc) 
CALL CSNBMDG1(
              return_code,
              reason_code,
              exit_data_length,
              exit_data,
              text_length,
              text,
              rule_array_count,
              rule_array,
              chaining_vector,
              mdc,
              text_id_in) 

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入出力 整数

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

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

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

text_length
方向 タイプ
入力 整数
text パラメーターで指定されるテキストの長さ。 最大テキスト長は 214783647 バイトです。
注: MAXLEN 値は引き続きオプション・データ・セットに指定できますが、最大値制限のみが適用されます (2147483647)。
テキストの長さに対する他の制限は、テキストの埋め込みが要求されるかどうかによって異なり、 使用されるセグメント化制御によっても左右されます。
  • 埋め込みが (rule_array パラメーターで PADMDC-2 または PADMDC-4 の処理規則を指定することで) 要求される 場合は、rule_array パラメーターで指定されるいずれのセグメント制御 (FIRST、MIDDLE、LAST、または ONLY) に対しても テキスト長 0 は有効です。 LAST または ONLY が指定される場合、指定されるテキストに X'FF' が埋め込まれ、 テキストの合計長が次の 8 の倍数 (16 以上) になるように最後のバイトに埋め込みカウントが指定されます。
  • 埋め込みが (MDC-2 または MDC-4 の処理規則を指定することによって) 要求されない場合は、 (単一呼び出し/セグメント化呼び出しに対して) 指定されるテキストの合計長は、16 バイト以上の 8 の倍数でなければなりません。

    埋め込みが行われないセグメント化呼び出しの場合は、セグメント化呼び出しに対する合計長が 16 以上の 8 の倍数であれば、 いずれの呼び出しにおいてもテキスト長 0 は有効です。

    埋め込みが行われない単一呼び出しの場合 (すなわち、セグメント制御が ONLY の場合) は、 指定されるテキストの長さは 16 以上の 8 の倍数でなければなりません。

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

MDC が生成されるときの対象となるアプリケーション指定のテキスト。

rule_array_count
方向 タイプ
入力 整数

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

rule_array
方向 タイプ
入力 文字ストリング
この呼び出し可能サービスに制御情報を 渡す 2 つのキーワードを表 1 に示します。 これら 2 つのキーワードは 16 バイトの連続記憶域に入っていなければなりません。 また、これら 2 つのキーワードはそれぞれ独自の 8 バイト・ロケーションにおいて左寄せにして、右側にブランクを埋め込む必要があります。 次に例を示します。
'MDC-2   FIRST   '
次の表から MDC 処理規則制御キーワードとセグメント化制御キーワードをそれぞれ 1 つずつ選択してください。
表 1. MDC 生成制御情報のキーワード
キーワード 意味
MDC 処理規則 (必須)
MDC-2 MDC-2 は、入力テキストの 8 バイトごとに 2 つの暗号化と、入力テキストの埋め込みなしを指定します。
MDC-4 MDC-4 は、入力テキストの 8 バイトごとに 4 つの暗号化と、入力テキストの埋め込みなしを指定します。
PADMDC-2 PADMDC-2 は、入力テキストの 8 バイトごとに 2 つの暗号化と、入力テキストの埋め込みを指定します。

セグメント規則で ONLY または LAST が指定されると、入力テキストに X'FF' が埋め込まれ、 テキストの合計長が次の 8 の偶数倍 (16 以上) になるように最後のバイトに埋め込みカウントが指定されます。

PADMDC-4 PADMDC-4 は、入力テキストの 8 バイトごとに 4 つの暗号化と、入力テキストの埋め込みを指定します。

セグメント規則で ONLY または LAST が指定されると、入力テキストに X'FF' が埋め込まれ、 テキストの合計長が次の 8 の偶数倍 (16 以上) になるように最後のバイトに埋め込みカウントが指定されます。

セグメント化制御 (必須)
FIRST 最初の呼び出し。 これはアプリケーション・プログラムのデータの最初のセグメントです。
LAST 最後の呼び出し。 これは最後のデータ・セグメントです。
MIDDLE 中間呼び出し。 これは中間データ・セグメントです。
ONLY 呼び出しのみ。 アプリケーション・プログラムでセグメント化は使用されません。
chaining_vector
方向 タイプ
入出力 ストリング

ICSF が システム作業域として使用する 18 バイトのストリング。 ご使用のアプリケーション・プログラムで、このストリングに含まれるデータを変更してはなりません。 チェーニング・ベクトルにより、呼び出し間でデータをチェーニングできます。

最初の呼び出しで、このパラメーターを 2 進ゼロとして初期化します。

mdc
方向 タイプ
入出力 ストリング
セグメント化規則が ONLY または LAST の場合に 呼び出し可能サービスが MDC 値を返す 16 バイト・フィールド。 セグメント化規則が FIRST または MIDDLE の場合、このフィールドで返される値は、 後続の呼び出しに対して入力として使用されることになる中間 MDC 値であり、 アプリケーション・プログラムでこの値が変更されてはなりません。
text_id_in
方向 タイプ
入力 整数
これは、CSNBMDG1/CSNEMDG1 の場合に限り、MDC が生成されるときの 対象となるテキストが含まれるデータ・スペースの ALET です。

使用上の注意

1 回の呼び出しで MDC を計算するには、rule_array パラメーターにおいて セグメント化制御に対して ONLY キーワードを指定します。 複数の呼び出しの場合は、最初の入力ブロックに FIRST キーワードを指定し、 中間ブロックに MIDDLE キーワードを指定し、最後のブロックに LAST キーワードを指定します。 指定されるテキスト・ストリングに関しては、そのテキストがセグメント化されているかどうかに関係なく、結果の MDC は同じです。

MDC 計算の 2 つのバージョン (入力テキスト 8 バイトごとに 2 つまたは 4 つの暗号化) では、 呼び出し側はセキュリティーの低下と引き換えにパフォーマンスを向上させることができます。 2 つの暗号化と 4 つの暗号化では結果が異なるため、MDC 値を検証するには、同じ数の暗号化を使用するようにしてください。

必須ハードウェア

次の表は、サーバー・タイプごとの必須暗号化ハードウェアをリストしたものです。 この表では、この呼び出し可能サービスに対する制限について説明します。

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

IBM eServer zSeries 990
IBM eServer zSeries 890

CP Assist for Cryptographic Functions  

IBM System z9 EC
IBM System z9 BC

CP Assist for Cryptographic Functions  

IBM System z10 EC
IBM System z10 BC

CP Assist for Cryptographic Functions  

IBM zEnterprise 196
IBM zEnterprise 114

CP Assist for Cryptographic Functions  

IBM zEnterprise EC12
IBM zEnterprise BC12

CP Assist for Cryptographic Functions  

IBM z13

CP Assist for Cryptographic Functions