RSA 秘密外部鍵トークン

RSA 秘密外部鍵トークンには、以下のセクションがあります。
  • トークン ID X'1E' で始まる、必須の PKA トークン・ヘッダー
  • 以下のいずれかのセクション ID で始まる、必須の RSA 秘密鍵セクション:
    • X'02'。これは最大 1024 ビットのモジュラス長の、モジュラス指数形式の RSA 秘密鍵セクション (最適化されていない) を示します。
    • X'08'。これは最大 4096 ビットのモジュラス長の、最適化された中国剰余定理形式の秘密鍵セクションを示します。
    • X'09'。これは最大 4096 ビットのモジュラス長の、モジュラス指数形式の RSA 秘密鍵セクション (最適化されていない) を示します。
    • X'30'。これは最大 4096 ビットのモジュラス長の、AES オブジェクト保護鍵を持つ、モジュラス指数形式の RSA 秘密鍵セクションを示します。
    • X'31'。これは最大 4096 ビットのモジュラス長の、AES オブジェクト保護鍵を持つ、中国剰余定理形式の秘密鍵セクションを示します。
  • セクション ID X'04' で始まる、必須の RSA 公開鍵セクション
  • セクション ID X'10' で始まる、オプションの秘密鍵名セクション

表 1 は、RSA 秘密外部鍵トークンの基本レコード形式を示します。 長さフィールドはすべて 2 進数です。 すべての 2 進数フィールド (指数、長さなど) は、まず上位バイトが格納されます。 トークンの秘密セクション内のすべての 2 進数フィールド (指数、モジュラスなど) は、右寄せされ、左側にはゼロが埋め込まれます。

表 1. RSA 秘密外部鍵トークンの基本レコード・フォーマット
オフセット (10 進) バイト数 説明
    トークン・ヘッダー (必須)
000 001 トークン ID。 X'1E' は外部トークンを示します。 秘密鍵は、非暗号化テキストであるか、またはトランスポート鍵暗号鍵で暗号化されるかのいずれかです。
001 001 バージョン、X'00'
002 002 鍵トークン構造体の長さ。
004 004 無視されます。ゼロでなければなりません。
    RSA 秘密鍵セクション (必須)
    RSA 公開鍵セクション (必須)
000 001 X'04'、セクション ID、RSA 公開鍵。
001 001 X'00'、バージョン。
002 002 セクション長: 12+xxx。
004 002 予約フィールド。
006 002 RSA 公開鍵指数フィールド長 (バイト): "xxx"
008 002 公開鍵モジュラス長 (ビット)。
010 002 RSA 公開鍵モジュラス・フィールド長 (バイト)。これは秘密トークンの場合はゼロです。
注: RSA 秘密鍵トークンでは、このフィールドはゼロでなければなりません。 RSA 秘密鍵セクションには、モジュラスが含まれています。
012 xxx 公開鍵指数、e (これは一般に、1、3、または 64 から 512 バイトの数量)。 e は奇数および 1<e<n でなければなりません。 (多くの場合、e の値は 16+1 2**16+1 (=65,537) です。
    秘密鍵名 (オプション)
000 001 X'10'、セクション ID、秘密鍵名。
001 001 X'00'、バージョン。
002 002 セクション長、X'0044' (10 進数の 68)。
004 064 秘密鍵名 (ASCII フォーマット)、左寄せされ、スペース文字 (X'20') が埋め込まれます。 アクセス制御システムは、秘密鍵名を使用して、呼び出し側アプリケーションが鍵を使用する資格があることを確認できます。

RSA 秘密鍵トークン、1024 ビットのモジュラス指数外部フォーマット

表 2. RSA 秘密鍵トークン、1024 ビットのモジュラス指数外部フォーマット
オフセット (10 進) バイト数 説明
000 001 X'02'、セクション ID、RSA 秘密鍵、モジュラス指数フォーマット (RSA-PRIV)
001 001 X'00'、バージョン。
002 002 RSA 秘密鍵セクション X'016C' の長さ (10 進数 364)。
004 020 秘密鍵サブセクション非暗号化テキストの SHA-1 ハッシュ値、セクションの終わりまでのオフセット 28。 このハッシュ値は、暗号化された秘密鍵を使用のために復号した後に検査されます。
024 004 予約済み、2 進ゼロに設定します。
028 001 鍵のフォーマットおよびセキュリティー:
X'00'
暗号化されていない RSA 秘密鍵サブセクション ID。
X'82'
暗号化されている RSA 秘密鍵サブセクション ID。
029 001 予約済み、2 進ゼロ。
030 020 オプションの鍵名セクションの SHA-1 ハッシュ。 鍵名セクションがない場合、20 バイトの X'00'
050 004 鍵用途フラグ・ビット。
ビット
オンに設定されたときの意味
0
鍵管理の使用は許可されます。
1
署名の使用は許可されません。
6
この鍵は変換可能です。

他のすべてのビットは予約済みであり、2 進ゼロに設定されます。

054 006 予約済み、2 進ゼロに設定します。
060 024 予約済み、2 進ゼロに設定します。
    オプションで暗号化されたセキュア・サブセクションの開始。
084 024 乱数、コンファウンダー。
108 128 秘密鍵指数、d。d=(e**-1) mod((p-1)(q-1))、および 1<d<n。ここで e は、公開鍵指数です。
    オプションで暗号化されたサブセクションの終わり。コンファウンダー・フィールドと秘密鍵指数フィールドは、秘密鍵が暗号化されていることを鍵フォーマットおよびセキュリティー・フラグ (オフセット 28) が示している場合、鍵の機密性のために暗号化されます。 それらのフィールドは、ede2 アルゴリズムを使用して、倍長トランスポート鍵で暗号化されます。
236 128 モジュラス、n。 n=pq。ここで p および q は、基本および 1024 です。1<n<2**1024 です。

RSA 秘密鍵トークン、4096 ビット・モジュラス指数外部フォーマット

この RSA 秘密鍵トークンおよび外部 X'09' トークンは、CCA Crypto Express コプロセッサー上でサポートされます。

表 3. RSA 秘密鍵トークン、4096 ビット・モジュラス指数外部フォーマット
オフセット (10 進) バイト数 説明
000 001 X'09'、セクション ID、RSA 秘密鍵、モジュラス指数フォーマット (RSAMEVAR)。
001 001 X'00'、バージョン。
002 002 RSA 秘密鍵セクションの長さ: 132 + ddd + nnn + xxx。
004 020 秘密鍵サブセクション非暗号化テキストの SHA-1 ハッシュ値、セクションの終わりまでのオフセット 28。 このハッシュ値は、暗号化された秘密鍵を使用のために復号した後に検査されます。
024 002 暗号化された秘密鍵セクションの長さ 8 + ddd + xxx。
026 002 予約済み、2 進ゼロに設定します。
028 001 鍵のフォーマットおよびセキュリティー:
X'00'
暗号化されていない RSA 秘密鍵サブセクション ID。
X'82'
暗号化されている RSA 秘密鍵サブセクション ID。
029 001 予約済み、2 進ゼロに設定します。
030 020 オプションの鍵名セクションの SHA-1 ハッシュ。 鍵名セクションがない場合、20 バイトの X'00'
050 001 鍵用途フラグ・ビット。
ビット
オンに設定されたときの意味
0
鍵管理の使用は許可されます。
1
署名の使用は許可されません。
6
この鍵は変換可能です。

他のすべてのビットは予約済みであり、2 進ゼロに設定されます。

051 001 予約済み、2 進ゼロに設定します。
052 048 予約済み、2 進ゼロに設定します。
100 016 予約済み、2 進ゼロに設定します。
116 002 秘密鍵指数の長さ、d (バイト): ddd。
118 002 モジュラスの長さ、n (バイト): nnn。
120 002 埋め込みフィールドの長さ (バイト): xxx。
122 002 予約済み、2 進ゼロに設定します。
    オプションで暗号化されたセキュア・サブセクションの開始。
124 008 乱数、コンファウンダー。
132 ddd 秘密鍵指数、d。-1 mod((p-1)(q-1))、d=(e**-1) mod((p-1)(q-1))、および 1<d<n。ここで e は、公開鍵指数です。
132+ddd xxx 長さが xxx バイトの X'00' 埋め込み。上記の乱数の開始から埋め込みフィールドの終わりまでの長さは、8 バイトの倍数になります。
    オプションで暗号化されたサブセクションの終わり。コンファウンダー・フィールドと秘密鍵指数フィールドは、秘密鍵が暗号化されていることを鍵フォーマットおよびセキュリティー・フラグ (オフセット 28) が示している場合、鍵の機密性のために暗号化されます。 それらのフィールドは、ede2 アルゴリズムを使用して、倍長トランスポート鍵で暗号化されます。
132+ddd+xxx nnn モジュラス、n。 n = pq。ここで p および q は、基本および 4096 です。1<n<2**4096 です。

RSA 秘密鍵トークン、4096 ビットの中国剰余定理外部形式

最大で 2048 ビットのモジュラスを持つこの RSA 秘密鍵トークンは、すべてのコプロセッサー上でサポートされます。 このモジュラス・サイズは、CCA Crypto Express コプロセッサーにインストールされた 2007 年 11 月以降のバージョンのライセンス内部コードがある、z9 EC、z9 BC、z10 EC、z10 BC またはそれ以降があるマシンでは、4096 ビットに増やされます。

表 4. RSA 秘密鍵トークン、4096 ビットの中国剰余定理外部形式
オフセット (10 進) バイト数 説明
000 001 X'08'、セクション ID、RSA 秘密鍵、CRT フォーマット (RSA-CRT)
001 001 X'00'、バージョン。
002 002 秘密鍵セクションの長さ、132 + ppp + qqq + rrr + sss + uuu + xxx + nnn。
004 020 秘密鍵サブセクション非暗号化テキストの SHA-1 ハッシュ値、モジュラスの末尾までのオフセット 28。
024 004 予約済み、2 進ゼロに設定します。
028 001 鍵のフォーマットおよびセキュリティー:
X'40'
暗号化されていない RSA 秘密鍵サブセクション ID、中国剰余定理形式。
X'42'
暗号化されている RSA 秘密鍵サブセクション ID、中国剰余定理形式。
029 001 予約済み、2 進ゼロに設定します。
030 020 オプションの鍵名セクションの SHA-1 ハッシュ、およびそれに続くすべてのオプション・セクション。 オプションのセクションがない場合は、20 バイトの X'00' です。
050 004 鍵用途フラグ・ビット。
ビット
オンに設定されたときの意味
0
鍵管理の使用は許可されます。
1
署名の使用は許可されません。
6
この鍵は変換可能です。

他のすべてのビットは予約済みであり、2 進ゼロに設定されます。

054 002 基本番号 p の長さ (バイト): ppp。
056 002 基本番号 q の長さ (バイト): qqq。
058 002 dp の長さ (バイト): rrr。
060 002 dq の長さ (バイト): sss。
062 002 U の長さ (バイト): uuu。
064 002 モジュラスの長さ、n (バイト): nnn。
066 004 予約済み、2 進ゼロに設定します。
070 002 埋め込みフィールドの長さ (バイト): xxx。
072 004 予約済み、2 進ゼロに設定します。
076 016 予約済み、2 進ゼロに設定します。
092 032 予約済み、2 進ゼロに設定します。
    オプションで暗号化されたセキュア・サブセクションの開始。
124 008 乱数、コンファウンダー。
132 ppp 素数 p。
132 + ppp qqq 素数 q。
132 + ppp + qqq rrr dp = d mod(p - 1)
132 + ppp + qqq + rrr sss dq = d mod(q - 1)
132 + ppp + qqq + rrr + sss uuu U = q**-1 mod(p)。
132 + ppp + qqq + rrr + sss + uuu xxx 長さが xxx バイトの X'00' 埋め込み。上記の乱数の開始から埋め込みフィールドの終わりまでの長さは、8 バイトの倍数になります。
    オプションで暗号化されたセキュア・サブセクションの終わり。コンファウンダー・フィールドで始まり、可変長埋め込みフィールドで終わるすべてのフィールドは、秘密鍵が暗号化されていることを鍵フォーマットおよびセキュリティー・フラグ (オフセット 28) が示している場合には、鍵の機密性のために暗号化されます。 それらのフィールドは、TDES (CBC 外部チェーニング) アルゴリズムを使用して、倍長トランスポート鍵で暗号化されます。
132 + ppp + qqq + rrr + sss + uuu + xxx nnn モジュラス、n。 n = pq。ここで、p および q は基本および 1**<n<2**2048 です。

RSA 秘密鍵、AES 暗号化 OPK セクション (X'30') 外部フォーマットを持つ 4096 ビットのモジュラス指数フォーマット

この RSA 秘密鍵トークンは、Crypto Express3 コプロセッサーおよび Crypto Express4 コプロセッサー上でサポートされます。

表 5. RSA 秘密鍵、AES 暗号化 OPK セクション (X'30') 外部フォーマットを持つ 4096 ビットのモジュラス指数フォーマット
オフセット (バイト) 長さ (バイト) 説明
000 001 セクション ID:
X'30'
RSA 秘密鍵、AES 暗号化 OPK を持つ ME フォーマット。
001 001 セクションのバージョン番号 (X'00').
002 002 セクション長: 122 + nnn + ppp
004 002 「関連データ・セクション」の長さ
006 002 ペイロード・データの長さ: ppp
008 002 予約済み、2 進ゼロ。
    関連データの開始
010 001 関連データ・バージョン:
X'02'
バージョン 2
011 001 鍵のフォーマットおよびセキュリティー・フラグ:
X'00'
暗号化されていない ME RSA 秘密鍵サブセクション ID
X'82'
暗号化された ME RSA 秘密鍵サブセクション ID
012 001 鍵ソース・フラグ:

予約済み、2 進ゼロ。

013 001 予約済み、2 進ゼロ。
014 001 ハッシュ・タイプ:
X'00'
非暗号化鍵
X'02'
SHA-256
015 032 すべてのオプション・セクションの SHA-256 ハッシュ。これには公開鍵セクションが存在すれば、それに続きます。存在しない場合は、32 バイトの X'00' に続きます。
047 003 予約済み、2 進ゼロ。
050 001 鍵用途フラグ:
B'11xx xxxx'
鍵のアンラップのみ (KM-ONLY)
B'10xx xxxx'
署名の生成および鍵のアンラップ (KEY-MGMT)
B'01xx xxxx'
未定義
B'00xx xxxx'
署名生成のみ (SIG-ONLY)

変換制御:

B'xxxx xx1x'
秘密鍵の変換が許可されます (XLATE-OK)
B'xxxx xx0x'
秘密鍵の変換は許可されません (NO-XLATE)
051 001 予約済み、2 進ゼロ。
052 002 モジュラスの長さ: nnn バイト
054 002 秘密鍵指数の長さ: ddd バイト
    関連データの終わり
056 048 16 バイトのコンファウンダー + 32 バイトのオブジェクト保護鍵。

OPK は AES 鍵として使用されます。

AES KEK で暗号化されます。

104 016 鍵検証パターン
  • 暗号化された秘密鍵の場合、KEK 検証パターン (KVP)
  • 非暗号化秘密鍵の場合、2 進ゼロ
  • スケルトンの場合、2 進ゼロ
120 002 予約済み、2 進ゼロ。
122 nnn モジュラス
122+nnn ppp ペイロードはここから開始され、以下のものが含まれます。
このセクションが暗号化されていない場合:
  • 非暗号化秘密鍵指数 d。
  • ppp バイトの長さ : ddd + 0
このセクションが暗号化されている場合:
  • AESKW ラッピング・ペイロード内の秘密指数 d。
  • ppp バイトの長さ: ddd + AESKW フォーマットのオーバーヘッド

RSA 秘密鍵、AES 暗号化 OPK セクション (X'31') 外部フォーマットを持つ 4096 ビットの中国剰余定理形式

この RSA 秘密鍵トークンは、Crypto Express3 コプロセッサーおよび Crypto Express4 コプロセッサー上でサポートされます。

表 6. RSA 秘密鍵、AES 暗号化 OPK セクション (X'31') 外部フォーマットを持つ 4096 ビットの中国剰余定理形式
オフセット (バイト) 長さ (バイト) 説明
000 001 セクション ID:
X'31'
RSA 秘密鍵、AES 暗号化 OPK を持つ CRT フォーマット
001 001 セクションのバージョン番号 (X'00').
002 002 セクション長: 134 + nnn + xxx
004 002 「関連データ・セクション」の長さ
006 002 ペイロード・データの長さ: xxx
008 002 予約済み、2 進ゼロ。
    関連データの開始
010 001 関連データ・バージョン:
X'03'
バージョン 3
011 001 鍵のフォーマットおよびセキュリティー・フラグ:
X'40'
暗号化されていない RSA 秘密鍵サブセクション ID
X'42'
暗号化された RSA 秘密鍵サブセクション ID
012 001 鍵ソース・フラグ:

予約済み、2 進ゼロ。

013 001 予約済み、2 進ゼロ。
014 001 ハッシュ・タイプ:
X'00'
非暗号化鍵
X'01'
SHA-256
015 032 すべてのオプション・セクションの SHA-256 ハッシュ。これには公開鍵セクションが存在すれば、それに続きます。存在しない場合は、32 バイトの X'00' に続きます。
047 003 予約済み、2 進ゼロ。
050 001 鍵用途フラグ:
B'11xx xxxx'
鍵のアンラップのみ (KM-ONLY)
B'10xx xxxx'
署名の生成および鍵のアンラップ (KEY-MGMT)
B'01xx xxxx'
未定義
B'00xx xxxx'
署名生成のみ (SIG-ONLY)

変換制御:

B'xxxx xx1x'
秘密鍵の変換が許可されます (XLATE-OK)
B'xxxx xx0x'
秘密鍵の変換は許可されません (NO-XLATE)
051 001 予約済み、2 進ゼロ。
052 002 基本番号 p の長さ (バイト): ppp。
054 002 基本番号 q の長さ (バイト): qqq。
056 002 dp の長さ: rrr。
058 002 dq の長さ: sss。
060 002 U の長さ: uuu。
062 002 モジュラスの長さ: nnn。
064 002 予約済み、2 進ゼロ。
066 002 予約済み、2 進ゼロ。
    関連データの終わり
068 048 16 バイトのコンファウンダー + 32 バイトのオブジェクト保護鍵。

OPK は AES 鍵として使用されます。

外部トークン:

AES KEK で暗号化されます。

内部トークン:

ECC マスター鍵で暗号化されます。

116 016 鍵検証パターン
  • 暗号化された秘密鍵の場合、KEK 検証パターン (KVP)
  • 非暗号化秘密鍵の場合、2 進ゼロ
  • スケルトンの場合、2 進ゼロ
132 002 予約済み、2 進ゼロ
134 nnn モジュラス、n、n=pq。ここで p および q は基本です。
134+nnn xxx ペイロードはここから開始され、以下のものが含まれます。

このセクションが暗号化されていない場合:

  • 非暗号化基本番号 p
  • 非暗号化基本番号 q
  • 非暗号化 dp
  • 非暗号化 dq
  • 非暗号化 U
  • 長さ xxx バイト: ppp + qqq + rrr + sss +uuu + 0。
このセクションが暗号化されている場合:
  • 基本番号 p
  • 基本番号 q
  • dp
  • dq
  • U
  • AESKW ラッピングされたペイロード内。

    長さ xxx バイト: ppp + qqq + rrr + sss + uuu + AESKW フォーマットのオーバーヘッド