PKCS #1 フォーマット

PKCS #1 規格1のバージョン 2.0 では、結果のデータ構造の RSA 暗号化の前に行われる、鍵とハッシュのフォーマット設定方式を定義しています。 PKCS #1 規格の下位バージョンでは、ブロック 0、1、および 2 を定義していましたが、現行の標準ではその用語は削除されています。

ICSF はこれらのプロセスを、バージョン 2.0 規格の以下の用語を使用して実装しました。
  • セキュア・トランスポート用の鍵のフォーマット設定の場合 (CSNDSYX、CSNDSYG、CSNDSYI):
    • RSAES-OAEP は、システム間で DATA 鍵を交換する際の鍵暗号化2の推奨方式です。 キーワード PKCSOAEP は、このフォーマット手法を呼び出すために使用されます。 この規格で説明されている P パラメーターは使用されず、その長さはゼロに設定されます。
    • RSAES-PKCS1-v1_5 は、鍵のフォーマット設定のための古い方式です。 キーワード PKCS-1.2 は、このフォーマット技法を呼び出すために使用されます。
  • デジタル署名のハッシュをフォーマット設定する場合 (CSNDDSG および CSNDDSV):
    • RSASSA-PKCS1-v1_5、ブロック・タイプ 1 フォーマットの新規名。 キーワード PKCS-1.1 は、このフォーマット技法を呼び出すために使用されます。
    • PKCS #1 の仕様では、ブロック・タイプ 0 の使用についての説明はなくなりました。 キーワード PKCS-1.0 は、このフォーマット手法を呼び出すために使用されます。 ブロック・タイプ 0 の使用は推奨されません。
PKCS #1 規格の古いバージョンの用語を使用すると、ブロック・タイプ 0 および 1 はハッシュのフォーマット設定に使用され、ブロック・タイプ 2 は DES 鍵のフォーマット設定に使用されます。 ブロックの構成は、X'00' || BT || PS || X'00' D となります (|| は連結を意味します)。各要素は、次のものを意味します。
  • BT はブロック・タイプ、X'00'X'01'X'02' です。
  • PS は、ブロックを RSA 鍵のモジュラスと同じ長さにするために必要なバイト数の埋め込みであり、ブロック・タイプ 0 の場合はバイト X'00'、ブロック・タイプ 1 の場合はバイト X'01'、ブロック・タイプ 2 の場合はランダムな X'00' 以外のバイトです。PS の長さは少なくとも 8 バイトでなければなりません。
  • D は、鍵であるか、または BER エンコード・ハッシュ ID とハッシュの連結です。
以下のようにストリングをハッシュ値の前に付加することで、ASN.1 BER エンコードの MD5、SHA-1、SHA-224、SHA-256、SHA-384、または SHA-512 値を作成できます。
MD5  X’3020300C 06082A86 4886F70D 02050500 0410’ || 16 バイト・ハッシュ値
SHA-1  X'30213009 06052B0E 03021A05 000414’ || 20 バイト・ハッシュ値
SHA-224  X’302D300D 06096086 48016503 04020405 00041C’ || 28 バイト・ハッシュ値
SHA-256  X’3031300D 06096086 48016503 04020105 000420’ || 32 バイト・ハッシュ値
SHA-384  X’3041300D 06096086 48016503 04020205 000430’ || 48 バイト・ハッシュ値
SHA-512  X’3051300D 06096086 48016503 04020305 000440’ || 64 バイト・ハッシュ値
1 PKCS 規格は、http://www.rsasecurity.com/rsalabs/pkcs から入手できます。
2 Optimal Asymmetric Encryption Padding (OAEP) 技法の他の例としては、PKA 92 方式および SET 規格に組み込まれている方式があります。OAEP 技法は、Bellare および Rogaway により提案されたものです。