デジタル署名生成 (CSNDDSG および CSNFDSG)

デジタル署名生成呼び出し可能サービスは、PKA 秘密鍵 (一部の限定された機能については、セキュア PKCS #11 秘密鍵) を使用してデジタル署名を生成する場合に使用します。 デジタル署名生成呼び出し可能サービスでは、使用しているアルゴリズムに応じて RSA 秘密鍵または ECC 秘密鍵を使用できます。

秘密鍵は署名の使用に有効でなければなりません。 このサービスでは、以下の方式がサポートされています。
  • ANSI X9.30 (ECDSA)
  • ANSI X9.31 (RSA)
  • ISO 9796-1 (RSA)
  • RSA DSI PKCS 1.0 および 1.1 (RSA)
  • 左側にゼロを埋め込む (RSA)
注:
  1. 最大署名長は 512 バイト (4096 ビット) です。
  2. セキュア PKCS #11 秘密鍵の場合、サポートされるサービスは ANSI X9.30 (ECDSA) および RSA PKCS 1.1 のみです。

入力テキストは、片方向ハッシュ生成呼び出し可能サービスまたは MDC 生成呼び出し可能サービスを使用して事前にハッシュされていなければなりません。 署名のフォーマット設定アルゴリズムで ANSI X9.31 が指定されている場合は、テキストのハッシュに使用されたハッシュ・アルゴリズム (SHA-1 または RPMD-160) を指定する必要があります。 公開鍵暗号化でのハッシュおよび鍵のフォーマット設定を参照してください。

private_key_identifier で RSA 秘密鍵が指定されている場合は、rule_array パラメーターによってテキストをフォーマット設定する方式を選択します。 private_key_identifier で ECC 秘密鍵が指定されている場合、ECC 署名は ANSI X9.30 に従って生成されます。

セキュア PKCS #11 鍵では、private_key_identifier で RSA 秘密鍵が指定されている場合は、rule_array パラメーターによってテキストをフォーマット設定する PKCS-1.1 方式を選択する必要があります。 private_key_identifier で ECC 秘密鍵が指定されている場合、ECC 署名は ANSI X9.30 に従って生成されます。

注: RSA PKCS 1.0 または 1.1 の場合、メッセージ要約およびメッセージ要約アルゴリズム ID が、タイプ DigestInfo の ASN.1 値に結合されます。 この値はオクテット・ストリング D を提供するために BER エンコードされています (表 1を参照)。 D は、hash 変数で指定されたテキスト・ストリングです。

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

形式

CALL CSNDDSG(
             return_code,
             reason_code,
             exit_data_length,
             exit_data,
             rule_array_count,
             rule_array,
             private_key_identifier_length,
             private_key_identifier,
             hash_length,
             hash,
             signature_field_length,
             signature_bit_length,
             signature_field)

パラメーター

return_code
方向 タイプ
出力 整数

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

reason_code
方向 タイプ
出力 整数

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

exit_data_length
方向 タイプ
入出力 整数

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

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

インストール・システム出口に渡されるデータ。

rule_array_count
方向 タイプ
入力 整数

rule_array パラメーターで指定するキーワード数。 値は 0、1、2、3 のいずれかです。

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

制御情報を呼び出し可能サービスに提供するキーワード。 1 つのキーワードは、デジタル署名を計算する方式を指定します。 別のキーワードは、RSA デジタル署名生成用のハッシュ値のフォーマット設定を指定します。 3 つめのキーワードは、RSA デジタル署名生成用のハッシュ値を準備するために使用するハッシュ方式を指定します。 表 1 にキーワードがリストされています。 キーワードはそれぞれ、8 バイト・フィールドで左寄せされ、右側にブランクが埋め込まれます。 キーワードはすべて、連続するストレージ内になければなりません。

表 1. デジタル署名生成制御情報のキーワード
キーワード 意味
デジタル署名フォーマット設定方式 (オプション、RSA デジタル署名生成にのみ有効)
ISO-9796 ISO-9796-1 に従って hash でデジタル署名を計算します。 どのハッシュ方式も使用できます。 これがデフォルトです。
PKCS-1.0 RSA Data Security, Inc. Public Key Cryptography Standards #1 V1.5 ブロック・タイプ 00 に従って、ハッシュを含むタイプ DigestInfo の BER エンコード ASN.1 値に対してデジタル署名を計算します。 テキストは、このサービスに入力する前にハッシュされていなければなりません。 注: ブロック・タイプ 00 の使用は、業界では実効的な評価が低下しています。 規則 PKCS-1.1 が推奨されています。
PKCS-1.1 RSA Data Security, Inc. Public Key Cryptography Standards #1 V1.5 ブロック・タイプ 01 に従って、ハッシュを含むタイプ DigestInfo の BER エンコード ASN.1 値に対してデジタル署名を計算します。 テキストは、このサービスに入力する前にハッシュされていなければなりません。
ZERO-PAD RSA 鍵モジュラスの長さまで左側に 2 進ゼロを埋め込むことによって、ハッシュをフォーマット設定します。 サポートされているハッシュ機能はすべて使用できます。
X9.31 ANSI X9.31 標準に従ってフォーマット設定します。 入力テキストは、以下のいずれかのハッシュ・アルゴリズムを使用して事前にハッシュされていなければなりません。
ハッシュ方式仕様: X9.31 で必須
RPMD-160 RIPEMD-160 ハッシュ方式を使用して入力テキストをハッシュします。
SHA-1 SHA-1 ハッシュ方式を使用して入力テキストをハッシュします。
署名アルゴリズム (オプション、CEX3C 以降のコプロセッサーでサポート)
RSA RSA 処理が行われます。
ECDSA 楕円曲線デジタル署名アルゴリズムが使用されます。 指定した場合、これは規則配列で許可された唯一のキーワードです。
private_key_identifier_length
方向 タイプ
入力 整数

private_key_identifier フィールドの長さ。 最大サイズは 3500 バイトです。

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

RSA 秘密鍵または ECC 秘密鍵あるいは保管鍵の内部トークンまたは内部ラベルです。 署名フォーマットが X9.31 の場合、RSA 鍵のモジュラスには少なくとも 1024 ビットの長さが必要です。

セキュア PKCS #11 鍵の場合、これは秘密鍵の 44 バイト・ハンドルです。 EBCDIC 等号文字 (「=」または x'7E') の接頭部が付き、合計長 64 バイトにわたって右側にスペースが埋め込まれます。

hash_length
方向 タイプ
入力 整数

hash パラメーターの長さ (バイト)。 署名するテキストの正確な長さでなければなりません。 ZERO-PAD を rule_array パラメーターに指定した場合、RSA 鍵が署名専用鍵でない限り、長さは 36 バイトに制限され、最大長は 512 バイトになります。

ハッシュ長制限は、アクセス制御点によって制御されます。 RSA 鍵管理鍵のみが、このアクセス制御点に影響を受けます。 RSA 署名使用専用鍵の制限は 512 バイトです。 このアクセス制御点は常に、ドメイン役割内でデフォルトで無効になっています。 有効にするには、TKE ワークステーションが必要です。

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

署名を生成する対象のアプリケーション提供テキスト。 入力テキストは事前にハッシュされている必要があり、PKCS フォーマット設定の場合は前述のとおり BER エンコードされている必要があります。 X9.31 の場合、ハッシュ・アルゴリズムは SHA-1 または RIPEMD-160 でなければなりません。 詳しくは、rule_array パラメーターを参照してください。

signature_field_length
方向 タイプ
入出力 整数

生成されたデジタル署名を入れる signature_field の長さ (バイト)。 返されたとき、このフィールドには生成された署名の実際の長さが含まれています。 最大サイズは 512 バイトです。

注: RSA の場合、これは RSA モジュラス・サイズ以上でなければなりません (X9.31 署名フォーマットの場合は 32 バイトの倍数まで、その他すべての署名フォーマットの場合は 1 バイトまで丸められます)。

RSA の場合、このフィールドはデジタル署名の最小バイト長で更新されます。

ECDSA の場合、S に連結された署名アルゴリズム R がデジタル署名です。 最大出力値は 1042 ビット (131 バイト) になります。 署名のサイズは P のサイズで決まります。 R と S の両方がサイズ P を持つことになります。 基本曲線の場合、最大は 2 * 521 ビットです。 Brainpool 曲線の場合、最大サイズは 2 * 512 ビットです。

signature_bit_length
方向 タイプ
出力 整数

生成されたデジタル署名のビット長。 ISO-9796 の場合、これはモジュラス長から 1 を減算した値です。 その他の RSA 処理方式の場合、これはモジュラス長です。

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

生成されたデジタル署名がこのフィールドで返されます。 デジタル署名は、デジタル署名を収容可能な、その長さが最小バイト数であるストリングの下位ビット (右寄せ) にあります。 このストリングは、signature_field 内で左寄せされます。 右側にある未使用のバイトは未定義です。

制約事項

ISO-9796 では入力ハッシュの長さを整数バイトにする必要はありませんが、このサービスでは hash_length をバイト単位で指定する必要があります。

X9.31 では、RSA トークンに 1024 以上のモジュラス・ビット長が必要であり、長さも 256 ビット (32 バイト) の倍数でなければなりません。

hash パラメーターの長さ (バイト)。 署名するテキストの正確な長さでなければなりません。 最大サイズは 512 バイトです。 ZERO-PAD を rule_array パラメーターに指定した場合、RSA 鍵が署名専用鍵でない限り、長さは 36 バイトに制限され、最大長は 512 バイトになります。

CCA RSA 鍵の場合、ハッシュ長制限は、「DSG ZERO-PAD unrestricted hash length」アクセス制御点によって制御されます。 有効である場合、ZERO-PAD の最大ハッシュ長制限は PKA 秘密鍵のモジュラス長です。 無効である場合、ZERO-PAD の最大ハッシュ長制限は 36 バイトです。 RSA 鍵管理鍵のみが、このアクセス制御点に影響を受けます。 RSA 署名使用専用鍵の制限は 512 バイトです。 このアクセス制御点は、ドメイン役割内で無効になっています。 有効にするには、TKE ワークステーションが必要です。

許可

共通オブジェクトであるセキュア PKCS #11 秘密鍵でこのサービスを使用するには、呼び出し側に、その鍵を含んでいる PKCS #11 トークンに対する SO (READ) 権限または USER (READ) 権限 (任意のアクセス) が必要です。

専用オブジェクトであるセキュア PKCS #11 秘密鍵でこのサービスを使用するには、呼び出し側に、その鍵を含んでいる PKCS #11 トークンに対する USER (READ) 権限 (ユーザー・アクセス) が必要です。

SO およびユーザー PKCS #11 役割について詳しくは、z/OS Cryptographic Services ICSF Writing PKCS #11 Applicationsz/OS Cryptographic Services ICSF Writing PKCS #11 Applicationsz/OS Cryptographic Services ICSF Writing PKCS #11 Applicationsを参照してください。

使用上の注意

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

セキュア PKCS #11 秘密鍵の場合、秘密鍵アクセス制御点を持つ署名によって、このサービスの機能が制御されます。 Enterprise PKCS #11 コプロセッサーのアクセス制御点について詳しくは、「z/OS Cryptographic Services ICSF Writing PKCS #11 Applications」の『PKCS #11 Access Control Points』を参照してください。

アクセス制御点

PKA 秘密鍵の場合、「Digital Signature Generate」アクセス制御点によって、このサービスの機能が制御されます。

ZERO-PAD のハッシュの長さは 36 バイトに制限されています。 「DSG ZERO-PAD unrestricted hash length」アクセス制御点がドメイン役割で有効になっている場合、ハッシュの長さは制限されません。 このアクセス制御点は、デフォルトでは無効になっています。

必須ハードウェア

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

表 2. デジタル署名生成必須ハードウェア
サーバー 必須暗号化ハードウェア 制約事項

IBM eServer zSeries 990
IBM eServer zSeries 890

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

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビット長より大きいモジュラスを持つ RSA 鍵はサポートされていません。

IBM System z9 EC
IBM System z9 BC

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビットから 4096 ビットの範囲内のモジュラスを持つ RSA 鍵サポートには 2007 年 11 月以降のライセンス内部コード (LIC) が必要です。

IBM System z10 EC
IBM System z10 BC

Crypto Express2 コプロセッサー

ECC はサポートされていません。

2048 ビットから 4096 ビットの範囲内のモジュラスを持つ RSA 鍵サポートには、2007 年 11 月以降のライセンス内部コード (LIC) が必要です。

Crypto Express3 コプロセッサー

ECC サポートには、2010 年 9 月のライセンス内部コード (LIC) が必要です。

IBM zEnterprise 196
IBM zEnterprise 114

Crypto Express3 コプロセッサー

IBM zEnterprise EC12
IBM zEnterprise BC12

Crypto Express3 コプロセッサー

Crypto Express4 CCA コプロセッサー

 
Crypto Express4 Enterprise PKCS #11 コプロセッサー セキュア PKCS #11 秘密鍵を使用する必要があります。

IBM z13

Crypto Express5 CCA コプロセッサー  
Crypto Express5 Enterprise PKCS #11 コプロセッサー セキュア PKCS #11 秘密鍵を使用する必要があります。