対称 MAC 生成 (CSNBSMG または CSNBSMG1 および CSNESMG または CSNESMG1)

対称 MAC 生成呼び出し可能サービスは、AES 鍵を使用して アプリケーション指定のテキスト・ストリングに対して 96 ビットまたは 128 ビットのメッセージ認証コード (MAC) を生成する場合に使用します。

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

CSNBSMG および CSNBSMG1 または CSNESMG および CSNESMG1 からの選択

CSNBSMG、CSNBSMG1、CSNESMG、および CSNESMG1 には同じ機能が備わっています。 使用するサービスを選択するときは、以下を考慮してください。
  • CSNBSMG および CSNESMG では、テキストは呼び出し側の 1 次アドレス・スペースに入っていなければなりません。 また、CSNBSMG を使用するプログラムは、IBM の「Common Cryptographic Architecture: Cryptographic Application Programming Interface」に従っていなければなりません。
  • CSNBSMG1 および CSNESMG1 では、テキストは呼び出し側の 1 次アドレス・スペースに入れることも、 データ・スペースに入れることもできます。 これにより、1 回の呼び出しで、より多くのデータを復号できるようになります。 ただし、CSNBSMG1 および CSNESMG1 を使用するプログラムは、IBM の「CCA Cryptographic Architecture: Cryptographic Application Programming Interface」に従いません。 そのようなプログラムは、このプログラミング・インターフェースに従う他の暗号化製品で実行する前に変更しておかなければならない場合があります。

CSNBSMG1 および CSNESMG1 の場合、text_id_in は、問題のテキストが含まれる データ・スペースのアクセス・リスト項目トークン (ALET) パラメーターです。

形式

CALL CSNBSMG(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             key_identifier_length, 
             key_identifier,
             text_length,
             text,
             rule_array_count,
             rule_array,
             chaining_vector_length,
             chaining_vector,
             reserved_data_length,
             reserved_data,
             mac_length,
             mac)
CALL CSNBSMG1(
              return_code,
              reason_code,
              exit_data_length,
              exit_data,
              key_identifier_length, 
              key_identifier,
              text_length,
              text,
              rule_array_count,
              rule_array,
              chaining_vector_length,
              chaining_vector,
              reserved_data_length,
              reserved_data,
              mac_length,
              mac,
              text_id_in) 

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入力 整数

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

exit_data
方向 タイプ
入出力 ストリング
このデータはインストール出口に渡されます。
key_identifier_length
方向 タイプ
入力 ストリング

key_identifier パラメーターの長さ。 KEY-CLR キーワードの場合、長さはバイト単位であり、鍵の長さの値のみが含まれます。 鍵の長さの値は 16、24、または 32 です。 KEYIDENT キーワードの場合、長さは 64 でなければなりません。 KEY-DRV キーワードの場合、これは鍵素材の長さ (バイト) です。 この長さは 16 バイトから 32 バイトまでで指定できます。

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

KEY-CLR キーワードの場合、これは非暗号化 AES 鍵を指定します。 パラメーターは左寄せする必要があります。KEYIDENT キーワードの場合、これは CKDS 内の内部非暗号化 AES トークンを指定するか、または非暗号化 AES 鍵のラベル名を指定します。 標準の CKDS ラベル名構文を使用する必要があります。 KEY-DRV キーワードの場合、これは 128 ビット AES 鍵の導出元となる鍵素材を指定します。

text_length
方向 タイプ
入力 整数

text パラメーターで指定されるテキストの長さ。 最大テキスト長は 2147483647 バイトです。 text_length が 8 バイトの倍数ではない 場合に、rule_array パラメーターの ONLY キーワードまたは LAST キーワードが呼び出されると、 指定の処理規則に従ってテキストに対して埋め込みが行われます。

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

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

rule_array_count
方向 タイプ
入力 整数

rule_array パラメーターで指定するキーワードの数。 値は 1、2、3 または 4 にすることができます。

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

このキーワードは、呼び出し可能サービスに制御情報を提供します。キーワードは、8 バイトの連続するストレージ内になければならず、その 8 バイト位置で左寄せされ、右側にブランクが埋め込まれている必要があります。

MAC 処理規則を 1 つ指定し、セグメント化制御キーワードを 1 つ選択し、MAC 長キーワードを 1 つ選ぶことができます。
表 1. 対称 MAC 生成制御情報のキーワード
キーワード 意味
アルゴリズム (必須)
AES これは、Advanced Encryption Standard (AES) アルゴリズムが使用されることを指定します。
MAC 処理規則 (オプション)
CBC-MAC CBC MAC (すべての鍵の長さに対して埋め込みが行われる)。 これがデフォルト値です。
XCBC-MAC AES-XCBC-MAC-96 および AES-XCBC-PRF-128 MAC 生成 (128 ビット鍵に対して埋め込みが行われる)。
鍵規則 (オプション)
KEY-CLR これは、鍵パラメーターに非暗号化鍵値が含まれることを指定します。 これがデフォルト値です。
KEYIDENT これは、CKDS 内の key_identifier フィールドが内部非暗号化トークンになるか、または非暗号化鍵のラベル名になることを指定します。 標準の CKDS ラベル名構文を使用する必要があります。
KEY-DRV これは、XCBC-MAC 操作に対して 128 ビット AES 鍵を導出するときの導出元となる 鍵素材が鍵パラメーターに 256 ビットまで含まれることを指定します。 これは XCBC-MAC と一緒の場合にのみ有効です。
セグメント化制御 (オプション)
FIRST 最初の呼び出し。 これはアプリケーション・プログラムのデータの最初のセグメントです。
LAST 最後の呼び出し。 これは最後のデータ・セグメントです。
MIDDLE 中間呼び出し。 これは中間データ・セグメントです。
ONLY 呼び出しのみ。 アプリケーション・プログラムでセグメント化は使用されません。 これがデフォルト値です。
chaining_vector_length
方向 タイプ
入出力 整数

chaining_vector パラメーターの長さ。 出力では、チェーニング・ベクトルの実際の長さがパラメーターに保管されます。

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

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

chaining_vector のマッピングは、指定されるアルゴリズムによって異なります。 AES の場合、chaining_vector フィールドの長さは少なくとも 36 バイトでなければなりません。

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

reserved_data_length
方向 タイプ
入力 整数

将来用に予約済み。 値はゼロでなければなりません。

reserved_data
方向 タイプ
無視される ストリング

将来用に予約済み。

mac_length
方向 タイプ
入力 整数

MAC フィールドにおいて返される MAC の長さ (バイト)。 許容値は 12 バイトと 16 バイトです。

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

セグメント化規則が ONLY または LAST の場合に 呼び出し可能サービスが MAC 値を返す 12 バイトまたは 16 バイトのフィールド。

text_id_in
方向 タイプ
入力 整数

CSNBSMG1 および CSNESMG1 に関してのみ、MAC が生成されるときの対象となるテキストの ALET。

使用上の注意

XCBC-MAC 処理規則に関しては、ONLY キーワードまたは LAST キーワードの指定時に text_length を 0 にすることができます。 ただし、最後の呼び出しを行う前に、最初の呼び出しや中間の呼び出しを行う必要があります。

必須ハードウェア

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

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

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