可変長対称鍵トークン
以下の表は、可変長対称鍵トークンのフォーマットを示しています。 トークンの長さは、鍵タイプとアルゴリズムに応じて異なります。
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
ヘッダー | ||
0 | 1 | トークン・フラグ
|
1 | 1 | 予約済み (X'00') |
2 | 2 | トークンの長さ (バイト) |
4 | 1 | トークン・バージョン番号 X'05' (ヌル・トークンには X'00' にすることもできます) |
5 | 3 | 予約済み (X'000000') |
ラッピング情報 | ||
8 | 1 | 鍵の材料の状態。
|
9 | 1 | 鍵検証パターン (KVP) のタイプ。
|
10 | 16 | ペイロードをラップするために使用される鍵の検証パターン。 値は左寄せされます。 |
26 | 1 | ラップ方式: この値は、暗号化セクション内のデータを保護するために使用されるラップ方式を示します。
|
27 | 1 | ラッピング・アルゴリズムで使用されるハッシュ・アルゴリズム。
|
28 | 1 | ペイロードのバージョン
|
29 | 1 | 予約済み (X'00') |
関連データ・セクション | ||
30 | 1 | 関連データのバージョン (X'01') |
31 | 1 | 予約済み (X'00') |
32 | 2 | 関連データの長さ (バイト): adl |
34 | 1 | 鍵名の長さ (バイト): kl |
35 | 1 | IBM 拡張関連データの長さ (バイト): iead |
36 | 1 | インストール先定義可能関連データの長さ (バイト): uad |
37 | 1 | 予約済み (X'00') |
38 | 2 | ペイロードの長さ (ビット): pl |
40 | 1 | 予約済み (X'00') |
41 | 1 | 鍵を使用できるアルゴリズムのタイプ
|
42 | 2 | 鍵タイプ:
AES アルゴリズムの場合:
アルゴリズム HMAC の場合:
アルゴリズム DES の場合:
|
44 | 1 | 鍵用途フィールド・カウント (kuf) - (1 バイト) |
45 | kuf * 2 | 鍵用途フィールド (kuf * 2 バイト)
|
45 + kuf * 2 | 1 | 鍵管理フィールド・カウント (kmf) - (2 バイト):
|
46 + kuf * 2 | kuf * 2 | 鍵管理フィールド (kmf * 2 バイト): |
46 + kuf * 2 + kmf * 2 | kl | 鍵名 |
46 + kuf * 2 + kmf * 2 + kl | iead | IBM 拡張関連データ |
46 + kuf * 2 + kmf * 2 + kl + iead | uad | インストール先定義関連データ |
非暗号化鍵または暗号化ペイロード | ||
30 + adl | (pl+7)/8 | 暗号化された AESKW ペイロード (内部鍵): 暗号化された AESKW ペイロードは、関連するデータ/鍵の材料/埋め込みの、ICV/埋め込み長/ハッシュ・オプションおよびハッシュ長/ハッシュ・オプション/ハッシュで構成される、暗号化されていない AESKW ペイロードから作成されます。 以下の、暗号化されていない AESKW ペイロードを参照してください。 暗号化された PKOAEP2 ペイロード (外部鍵): 暗号化された PKOAEP2 ペイロードは、特定のハッシュ・アルゴリズムの PKCS #1 v1.2 エンコード方式を使用して作成されます。 エンコード内のメッセージ (M) には、[2 バイト: 鍵のビット長] || [非暗号化 HMAC 鍵] が含まれます。 M は OAEP を使用してエンコードされ、それから規格に従って RSA 公開鍵で暗号化されます。 非暗号化鍵ペイロード: 鍵が非暗号化状態である場合、鍵資材のみが、最も近いバイトまで 2 進ゼロで埋め込まれて、ペイロードに含まれます。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 1 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 2 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 2 - 3
|
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
49 | 2 | 鍵用途フィールド 3
DK が使用可能な場合の上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 3 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
49 | 2 | 鍵用途フィールド 3
DK が使用可能な場合の上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 3 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
49 | 2 | 鍵用途フィールド 3
DK が使用可能な場合の上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 3 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
49 | 2 | 鍵用途フィールド 3
DK が使用可能な場合の上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 2、4、5、または 6 |
45 | 2 | 鍵使用フィールド 1 高位バイト: 生成される鍵のタイプを定義します。
他のすべての値は予約済みであり、未定義です。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵用途フィールド 2: 鍵の使用法を示します。
上位バイト (鍵用途フィールドの制御レベル):
値がオフセット 45 = X'00' (D-ALL) の場合は、未定義です。 他のすべての値は予約済みであり、未定義です。 下位バイト (鍵導出シーケンス・レベル):
他のすべての値は予約済みであり、未定義です。 |
49 (定義されている場合) | 2 | 鍵用途フィールド 3 (関連する生成された鍵用途フィールド):
これらの値は、生成される鍵の許容できる鍵の使用法を決定します。 意味はオフセット 45 の値に応じて以下のようになります。
|
51 (定義されている場合) | 2 | 鍵用途フィールド 4 (関連する生成された鍵用途フィールド):
これらの値は、生成される鍵の許容できる鍵の使用法を決定します。 意味はオフセット 45 の値に応じて以下のようになります。
|
53 (定義されている場合) | 2 | 鍵用途フィールド 5 (関連する生成された鍵用途フィールド):
これらの値は、生成される鍵の許容できる鍵の使用法を決定します。 意味はオフセット 45 の値に応じて以下のようになります。
|
55 (定義されている場合) | 2 | 鍵用途フィールド 6 (関連する生成された鍵用途フィールド):
これらの値は、生成される鍵の許容できる鍵の使用法を決定します。 意味はオフセット 45 の値に応じて以下のようになります。
|
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 4 |
45 | 2 | 鍵使用フィールド 1 EXPORTER の上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 IMPORTER の上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
49 | 2 | 鍵用途フィールド 3 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
51 | 2 | 鍵用途フィールド 4 上位バイト:
下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
44 | 1 | 鍵用途フィールド・カウント (kuf): 2 |
45 | 2 | 鍵使用フィールド 1 上位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 下位バイト:
未使用のすべてのビットは予約済みであり、ゼロでなければなりません。 |
47 | 2 | 鍵使用フィールド 2 上位バイト:
未使用のすべての値は予約済みであり、使用してはなりません。 下位バイト: すべてのビットは予約済みであり、ゼロでなければなりません。 |
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
48 | 2 | 鍵管理フィールド 1 上位バイト:
下位バイト: --対称--
|
48 + kuf * 2 | 2 | 鍵管理フィールド 2 上位バイト:
下位バイト (セキュリティー履歴):
|
50 + kuf * 2 | 2 | 鍵管理のフィールド 3 - ペディグリー (このフィールドは、存在する場合としない場合があります)。
鍵が当初どのように作成されて、どのように現行システムに導入されたかを示します。 上位バイト: ペディグリー・オリジナル
|
50 + kuf * 2 (続く) | 2 (続く) |
|
オフセット (10 進) | フィールドの長さ (バイト) | 説明 |
---|---|---|
47 | 1 | 鍵管理フィールド・カウント (kmf): 1 |
48 | 2 | 鍵管理フィールド 1 上位バイト:
下位バイト:
|