仕様翻訳: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions - 転置に基づくハッシュ関数と拡張可能出力関数
Abstract
この標準はバイナリデータに対する Secure Hash Algorithm-3 (SHA-3) 関数ファミリーを規定する。各 SHA-3 関数は NIST が SHA-3 暗号化ハッシュアルゴリズム策定の勝者として選んだ Keccak-
SHA-3 ファミリーは SHA3-224, SHA3-256, SHA3-384 および SHA3-512 と呼ばれる 4 つの暗号論的ハッシュ関数と、SHAKE128 および SHAKE256 と呼ばれる 2 つの拡張可能出力関数 (XOF; extendable-output function) で構成されている。
ハッシュ関数は 1) デジタル署名の生成と検証、2) 鍵の導出、3) 疑似乱数ビットの生成など多くの重要な情報セキュリティアプリケーション構成要素である。この規格で規定されるハッシュ関数は SHA-1 ハッシュ関数と FIP 180-4 (Secure Hash Standard) で規定されている SHA-2 ハッシュ関数ファミリーを保管するものである。
拡張可能出力関数はハッシュ関数とは異なるが同様の方法で使用することができ、セキュリティを考慮した上で個々のアプリケーション要件に直接適合できる柔軟性を備えている。
キーワード: computer security, cryptography, extendable-output function, Federal Information Processing Standard, hash algorithm, hash function, information security, Keccak, message digest, permutation, SHA-3, sponge construction, sponge function, XOF.
Table of Contents
- Abstract
- 1 導入
- 2 用語集
- 3 Keccak-
転置 - 4 スポンジ構造
- 5 Keccak
- 6 SHA-3 関数仕様
- 7 適合性
- A セキュリティ
- B 例
- C オブジェクト識別子
- D References
- 翻訳抄
1 導入
この標準は SHA-1 および FIPS 180-4 [1] で規定されているハッシュ関数ファミリーの SHA-2 を補完する新しい関数ファミリーを規定する。SHA-3 (Secure Hash Algorithm-3) と呼ばれるこのファミリーは Keccak ─ NIST が SHA-3 暗号ハッシュアルゴリズム策定 [3] の勝者として採択したアルゴリズム1に基づいている。SHA-3 ファミリーは 4 つの暗号論的ハッシュ関数と 2 つの拡張可能出力関数 (extandable-output function) で構成されている。これら 6 つの関数は [4] で説明されている構造、つまりスポンジ構造 (sponge construction) を共有しており、この構造を持つ関数をスポンジ関数と呼ぶ。
ハッシュ関数はバイナリデータ (つまりビット列) に対する関数で出力の長さが固定されている2。ハッシュ関数への入力はメッセージと呼ばれ、出力は (メッセージ) ダイジェストまたはハッシュ値と呼ばれる。ダイジェストは多くの場合、メッセージの要約表現として機能する。4 つの SHA-3 ハッシュ関数はそれぞれ SHA3-224, SHA3-256, SHA3-384, SHA3-512 という名前が付けられている。いずれの場合もダッシュ後の接尾辞はダイジェストの固定長を示し、例えば SHA3-256 は 256 ビットのダイジェストを生成する。SHA-2 関数、つまり SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 および SHA-512/256 は同様のダイジェスト長のセットを提供する。したがって SHA-3 ハッシュ関数は SHA-2 関数の代替として実装することができ、またその逆も可能である。
拡張可能出力関数 (XOF; extendable-output function) はメッセージとも呼ばれるビット列に対する関数で出力を任意の長さに拡張することができる。2 つの SHA-3 XOF はそれぞれ SHAKE128 および SHAKE256 という名前が付けられている3。128 と 256 の接尾辞は、ハッシュ関数の接尾辞がダイジェスト長を表すのとは対照的に、これらの 2 つの関数が一般的4にサポートできるセキュリティ強度を示している。SHAKE128 と SHAKE256 は NIST が標準化した最初の XOF である。
6 つの SHA-3 関数は、衝突攻撃、原像攻撃、および第二原像攻撃に対する耐性などの特別な特性を提供するように設計されている。これら 3 種類の攻撃に対する耐性レベルはセクション A.1 にまとめされている。暗号論的ハッシュ関数は、電子署名の生成と検証、鍵の導出、疑似乱数ビットの生成など、様々な情報セキュリティアプリケーションにおける基本的な構成要素である。
FIPS が承認しているハッシュ関数のダイジェスト長は 160, 224, 256, 384, および 512 ビットである。アプリケーションが非標準のダイジェスト長を持つ暗号論的ハッシュ関数を必要とするのであれば、XOF はハッシュ関数を複数回呼び出したり出力ビットの切り捨てを行う構成に代わる自然な代替手段となる。しかし XOF はセクション A.2 で議論する追加のセキュリティ考慮事項が適用される。
6 つの SHA-3 関数のそれぞれはスポンジ構造の主要構成要素として同じ転置を採用している。事実上、SHA-3 関数は転置の動作モード (modes of operation) (modes) である。この標準では転置は Keccak-
4 つの SHA-3 ハッシュ関数は SHA-3 策定 [3] で提案された Keccak のインスタンスとは若干異なる。特に SHA-3 ハッシュ関数と SHA-3 XOF を区別し、個々のアプリケーションドメインに特化した SHA-3 関数の新しいバリアントを開発することを容易にするためにメッセージに 2 ビットの接尾辞が付加されている。
また 2 つの SHA-3 XOF は専用のバリアント開発を可能にするように規定されている。さらに SHA-3 XOF は XOF の並列化可能なバリアント開発をサポートするために、別の文書で規定されているツリーハッシュ [7] に対する Sakura エンコーディングスキーム [6] と互換性がある。
この標準の表記と用語のほとんどは [8] の Keccak 仕様と一致している。
- 1より正確には策定では 4 つのハッシュ関数が求められたが Keccak はより大きな関数ファミリーである。
- 2多くのハッシュ関数には入力データの長さに (非常に大きな) 限度がある。
- 3"SHAKE" という名称は "Secure Hash Algorithm" with "KEccak" を組み合わせて [5] で提案された。
- 4例外は出力長が非常に小さい場合である。セクション A.1 の議論を参照。
2 用語集
2.1 用語と略語
| ビット (bit) | 2 進数: 0 または 1。この標準ではビットは Courier New フォントで示される。 |
| バイト (byte) | 8 ビットのシーケンス。 |
| 容量 (capacity) | スポンジ構造では、基礎となる関数の幅からレートを引いたもの。 |
| 列 (column) | 状態配列に対して |
| ダイジェスト (digest) | 暗号論的ハッシュ関数の出力。ハッシュ値とも呼ばれる。 |
| ドメイン分離 (domain separation) | 関数に対して、どの入力も単一のドメインに割り当てられるように異なるアプリケーションドメインへの入力を分離すること。 |
| 拡張可能出力関数 (XOF) (extendable-output function) | 出力を任意の希望する長さに拡張できるビット列の関数。 |
| FIPS | 連邦情報処理標準。 |
| FISMA | 連邦情報セキュリティ管理法。 |
| ハッシュ関数 | 出力の長さが肯定されているビット列関数。多くの場合、出力は入力の圧縮表現として機能する。 |
| ハッシュ関数 | ダイジェストを参照。 |
| HMAC | Keyed-Hash Message Authentication Code |
| KDF | 鍵導出関数。 |
| Keccak | Keccak- |
| レーン (lane) | 幅 |
| メッセージ | SHA-3 関数への入力となる任意長のビット列。 |
| マルチレートパディング | パディングルール pad10*1。この出力はまず 1 がありその後に 0 個以上の 0 があり 1 で終わる。 |
| NIST | 米国国立標準技術研究所。 |
| プレーン (plane) | 幅 |
| レート | スポンジ構造において、基礎となる関数を呼び出すごとによりされる入力ビットの威阿須、または生成される出力ビットの数。 |
| ラウンド | Keccak- |
| ラウンド定数 | Keccak- |
| ラウンドインデックス | Keccak- |
| 行 (row) | 状態配列に対して定数 |
| SHA-3 | Secure Hash Algorithm-3 |
| SHAKE | Secure Hash Algorithm Keccak |
| シート (sheet) | 幅 |
| スライス (slice) | 状態配列に対して定数 |
| スポンジ構造 | 元は [4] で規定された、次のものから関数を定義する方法: 1) 固定長のビット列を基礎とする関数、2) パディングルール、3) レート。結果として得られる関数の入力はどちらも任意の長さのビット列である。 |
| スポンジ機能 | スポンジ構造に従って定義された関数。場合によっては固定出力長に特化している。 |
| 状態 | 計算手順の中で繰り返し更新されるビット配列。Keccak- |
| 状態配列 | Keccak- |
| ステップマッピング | Keccak- |
| 列 (string) | 非負整数 |
| 幅 | スポンジ構造における基礎となる関数の入力と出力の固定長。 |
| XOF | 拡張出力関数を参照。 |
| XOR | 記号 |
2.2 アルゴリズムパラメータとその他の変数
| |
状態配列 |
| |
状態配列 |
| |
Keccak- |
| |
スポンジ関数の容量。 |
| |
ハッシュ関数のダイジェスト長、または XOF の出力に要求された長さ。単位はビット。 |
| |
スポンジ構造の一般的な基礎関数。 |
| |
Keccak- |
| |
RawSHAKE128 または RawSHAKE256 への入力列。 |
| |
Keccak- |
| |
状態配列 |
| |
SHA-3 ハッシュまたは XOF 関数への入力列。 |
| |
|
| |
Keccak- |
| |
スポンジ構造の一般的なパディングルール。 |
| |
状態配列 |
| |
スポンジ関数のレート。 |
| |
Keccak- |
| |
Keccak- |
2.3 基本操作と関数
| |
正の整数 |
| |
ビット列 |
| |
列 |
| |
正の整数 |
| |
ビット長が等しい列 |
| |
列 |
| |
整数 |
| |
整数 |
| |
実数 |
| |
正の実数 |
| |
実数 |
2.4 特定の機能
| |
ラウンドを構成する 5 つのステップのマッピング。 |
| Keccak |
Keccak- |
| Keccak- |
Keccak の基礎関数として [8] で規定された 7 つの転置のファミリー。転置の幅 |
| Keccak- |
Keccak- |
| pad10*1 | 元は [8] で規定された Keccak のマルチレートパディングルール。 |
| RawSHAKE128 | SHAKE128 の代替定義の中間関数。 |
| RawSHAKE256 | SHAKE256 の代替定義の中間関数。 |
| |
ラウンド定数の可変ビットを生成する関数。 |
| Rnd | Keccak 転置のラウンド関数。 |
| SHA3-224 | 224 ビットのダイジェストを生成する SHA-3 ハッシュ関数。 |
| SHA3-256 | 256 ビットのダイジェストを生成する SHA-3 ハッシュ関数。 |
| SHA3-384 | 384 ビットのダイジェストを生成する SHA-3 ハッシュ関数。 |
| SHA3-512 | 512 ビットのダイジェストを生成する SHA-3 ハッシュ関数。 |
| SHAKE128 | 出力が十分に長い場合、通常 128 ビットのセキュリティ強度をサポートする SHA-3 XOF。セクション A.1 参照。 |
| SHAKE256 | 出力が十分に長い場合、通常 256 ビットのセキュリティ強度をサポートする SHA-3 XOF。セクション A.1 参照。 |
| SPONGE |
基礎関数 |
3 Keccak- 転置
このセクションでは Keccak-
Keccak-
3.1 状態
Keccak-
| |
25 | 50 | 100 | 200 | 400 | 800 | 1600 |
|---|---|---|---|---|---|---|---|
| |
1 | 2 | 4 | 8 | 16 | 32 | 64 |
| |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
転置の入力と出力の状態を
3.1.1 状態配列の部分
Keccak-
3.1.2 列から状態配列への変換
Keccak-
3.1.3 状態変数から列への変換
3.1.4 状態配列のラベル付け規則
ステップマッピングの仕様に付随する状態の図では、座標
3.2 ステップマッピング
Keccak-
各ステップマッピングのアルゴリズムは
3.2.1 の仕様
アルゴリズム 1:
入力: 状態配列
出力: 状態配列
ステップ:
および となるすべてのペア に対して とする。
および となるすべてのペア に対して とする。
、 、および となるすべてのトリプル に対して とする。
以下に示す Figure 3 の
3.2.2 の仕様
アルゴリズム 2:
入力: 状態配列
出力: 状態配列
ステップ:
となるすべての に対して、 とする。
とする。 0 から 23 の
に対して
となるすべての に対して、 とする。
とする。
を返す。
| |
|
|
|
|
|
|---|---|---|---|---|---|
| |
153 | 231 | 3 | 10 | 171 |
| |
55 | 276 | 36 | 300 | 6 |
| |
28 | 91 | 0 | 1 | 190 |
| |
120 | 78 | 210 | 66 | 253 |
| |
21 | 136 | 105 | 45 | 15 |
アルゴリズム 2 のステップ 3.1 の計算結果から得られた各レーンのオフセットを上記 Table 2 に示す。
Figure 4 の各レーンについて、黒い点は
3.2.3 の仕様
アルゴリズム 3:
入力: 状態配列
出力: 状態配列
ステップ:
, , となるすべてのトリプル に対して とする。
を返す。
3.2.4 の仕様
アルゴリズム 4:
入力: 状態配列
出力: 状態配列
ステップ:
, , となるすべてのトリプル に対して とする。
を返す。
ステップ 1 の代入の右側のドットは整数の乗算を表し、この場合は、これは意図されたブール "AND" 演算に相当する。
3.2.5 の仕様
アルゴリズム 5:
入力: 整数
出力: ビット
ステップ:
もし
であれば 1 を返す。
とする。 1 から
までの に対して
-
-
-
-
-
-
とする。
を返す。
アルゴリズム 6:
入力: 状態配列 ; ラウンドインデックス
出力: 状態配列
ステップ:
, および となるすべてのトリプル に対して とする。
とする。 0 から
までの に対して とする。
となるすべての に対して とする。
を返す。
3.3 Keccak-
状態配列
アルゴリズム 7: Keccak-
入力: 長さ の列 ; ラウンド数
出力: 長さ の列
ステップ:
セクション 3.1.2 で説明したように
を状態配列 に変換する。
から までの に対して とする。
をセクション 3.1.3 で説明したように長さ の列 に変換する。
を返す。
3.4 Keccak- との比較
転置の Keccak-
Keccak-
4 スポンジ構造
スポンジ構造 (sponge construction) [4] は任意の出力長を持つバイナリデータに対する関数を規定するためのフレームワークである。この構造には次の 3 つのコンポーネントが使用される:
-
で表される、固定長の列の基礎となる関数、 -
で表される、レートと呼ばれるパラメータ、および - pad で表されるパディングルール。
これらのコンポーネントから構造が生成する関数はスポンジ関数と呼ばれ SPONGE
スポンジ構造は [4] から引用した以下の Figure 7 に示される。
関数
レート
パディングルール
以上のように
アルゴリズム 8: SPONGE-
入力: 列 , 非負整数
出力: となるような列
ステップ:
-
とする。 -
とする。 -
とする。 -
を となるように長さ の列の一意なシーケンスとする。 -
とする。 - 0 から
までの に対して とする。 -
を空の列とする。 -
とする。 -
であれば を返し、そうでなければ続行する -
とし、ステップ 8 に進む。
入力
5 Keccak
Keccak は元々 [8] で定義されたスポンジ関数のファミリーである。マルチレートパディングと呼ばれる Keccak のパディングルールはセクション 5.1 で規定される。Keccak のパラメータと基本的な転置はセクション 5.2 に説明されており、Keccak 関数のより小さなファミリーである Keccak
5.1 pad10*1 の仕様
アルゴリズム 9: pad10*1
入力: 正の整数 ; 非負整数
出力: が の正の倍数となるような列
ステップ:
-
とする。 -
を返す。
したがって "pad10*1" のアスタリスクは必要な長さの出力列を生成するために "0" ビットが省略または繰り返されることを示している。
5.2 Keccak の仕様
Keccak は基礎関数として Keccak-
6 SHA-3 関数仕様
セクション 6.1 では 4 つの SHA-3 ハッシュ関数が定義されている。またセクション 6.2 では 2 つの SHA-3 XOF が定義されている。セクション 6.3 では中間関数の観点から各 SHA-3 XOF の代替定義を示している。
6.1 SHA-3 ハッシュ関数
メッセージ
6.2 SHA-3 拡張可能出力関数
メッセージ
6.3 SHA-3 拡張可能出力関数の代替定義
RawSHAKE128、RawSHAKE256 と呼ばれる 2 つの追加スポンジ関数が、以下の Keccak
斜体の接尾辞 (つまり
Keccak
7 適合性
Keccak
SHA3-224、SHA3-256、SHA3-384、SHA3-512 は承認された暗号論的ハッシュ関数である。暗号論的ハッシュ関数の認可された用途の一つは Keyed Message Authentication Code (HMAC) である。MHAC 仕様 [10] において
| ハッシュ関数 | SHA3-224 | SHA3-256 | SHA3-384 | SHA3-512 |
|---|---|---|---|---|
| ブロックサイズ (バイト) | 144 | 136 | 104 | 72 |
SHAKE128 および SHAKE256 は承認された XOF であり、その承認された用途は NIST Special Publications で規定される。これらの用途の一部は認証されたハッシュ関数の用途と重複する可能性があるが、セクション A.2 で説明する特性により、XOF はハッシュ関数としては承認されていない。
Keccak
Keccak
SHA-3 関数は空の列を含む任意のビット長のメッセージに対して定義される。SHA-3 関数の適合実装ではメッセージに対してサポートされるビット長のセットが制限される場合がある。同様に SHA-3 XOF の適合実装では出力長に対してサポートされる値のセットが制限される場合がある。どちらの場合もそのような制限は他の実装との相互運用性に影響を与える可能性がある。
この標準で規定されているすべての計算手順について、適合する実装では与えられた手順のセットを数学的に等価な手順のセットで置き換えることができる。言い換えれば、すべての入力に対して正しい出力を生成する異なる手段が許可されている。
- 5一般にスポンジ関数の入力ブロックサイズ (ビット) がそのレートになる。
A セキュリティ
[8] の Keccak のセキュリティ特性似関する詳細な分析はハッシュ関数と拡張可能出力関数の SHA-3 ファミリーに適用される。SHA-3 ファミリーはスポンジ構造からもセキュリティ特性を継承している。これらの特性は [4] で詳細に分析されている。
ハッシュ関数の用途は多くの場合、衝突耐性、原像耐性、第二原像耐性を必要とする。これらの特性は SHA-3 ファミリーのハッシュ関数と XOF についてセクション A.1 で要約されている。XOF は密接に関連した出力を生成すると言う点でハッシュ関数とは異なる。この重要なセキュリティ上の考慮事項についてはセクション A.2 で説明する。
A.1 サマリー
この標準の発行時点での SHA-3 関数のセキュリティ強度を Table 4 にまとめる。SHA-1 関数と SHA-2 関数は比較のために含まれており、[11] の議論の一部と重複している。これは必要に応じて最新のセキュリティ情報を更新する。
| 関数 | 出力サイズ | ビット単位のセキュリティ強度 | ||
|---|---|---|---|---|
| 衝突 | 原像 | 第二原像 | ||
| SHA-1 | |
|
|
|
| SHA-224 | |
|
|
|
| SHA-512/224 | |
|
|
|
| SHA-256 | |
|
|
|
| SHA-512/256 | |
|
|
|
| SHA-384 | |
|
|
|
| SHA-512 | |
|
|
|
| SHA3-224 | |
|
|
|
| SHA3-256 | |
|
|
|
| SHA3-384 | |
|
|
|
| SHA3-512 | |
|
|
|
| SHAKE128 | |
|
|
|
| SHAKE256 | |
|
|
|
4 つの SHA-3 ハッシュ関数は SHA-2 関数の代替となるもので、衝突攻撃、原像攻撃、第二原像攻撃に対して対応する SHA-2 関数が提供する体制と同等以上の耐性を提供するように設計されている。SHA-3 関数は、同じ出力長のランダム関数が抵抗するような伸張攻撃などの他の攻撃にも耐性があるように設計されており、一般に出力までランダム関数と同じセキュリティ強度を提供する。
2 つの SHA-3 XOF は衝突攻撃、原像攻撃、第二原像攻撃、および要求された出力長のランダム関数で抵抗されるその他の攻撃に耐性があるように設計されており、SHAKE128 では 128 ビット、SHAKE256 では 256 ビットのセキュリティ強度まで対応する。出力長が
A.2 拡張可能出力関数に関する追加的考察
XOF は任意の長さの出力を生成する柔軟性を提供する強力な新しい種類の暗号プリミティブである。技術的には固定の出力長を選択することで XOF をハッシュ関数として使用することが可能である。しかし XOF には関連する出力を生成する可能性がある。これはセキュリティアプリケーションやプロトコル、システムの設計者がハッシュ関数に期待していないかもしれない特性である。この特性は XOF のアプリケーション開発において考慮すべき重要な点である。
設計上、XOF の出力長波 XOF が生成するビットには影響しない。つまり出力長は関数への必須入力ではない。概念的には出力を無限の列にすることができ、関数を呼び出すアプリケーションやプロトコル、システムは単にその列の必要な初期ビット数を計算するだけである。したがって共通のメッセージに対して 2 つの異なる出力長が選択されると、2 つの出力は密接に関連する。例えば、任意の正の整数
実際には 2 つの異なる SHA-3 関数がこの性質を示すことはないだろう。例えばランダムに選択されたメッセージ
ただし、ハッシュ関数のダイジェストを連結したり切り詰めたりすることで任意の出力長を持つ関数を構築するような既存のメカニズムは一般的にこの特性を示す。
密接に関連する出力の可能性は、XOF を呼び出すアプリケーションやプロトコル、システムのセキュリティに影響を与える可能性がある。例えば
実際には XOF をキー導出関数 (KDF) として使用すると、導出キーの長さおよび/またはタイプを KDF へのメッセージ入力に組み込むことにより、関連する出力の可能性を排除することができる。この場合、KDF を使用する 2 つのユーザ間で導出する鍵のタイプや長さについて意見の相違や誤解が生じたとしても、ほぼ確実に関連する出力が発生することにはつながらない。
拡張ダイジェストに問題がある場合、より一般的な解決策はドメイン分離である。これにより出力ビット数に関係なく XOF の異なるインスタンスを作成し、異なる目的に合わせて調整できる。すべての SHA-3 関数は NIST が将来開発する可能性のある新しい個別のドメインのバリアントを許可するように設計されている。
B 例
5 つのステップマッピングと 6 つの SHA-3 関数の例は NIST コンピュータセキュリティリソースセンターの Web サイトで入手できる: http://csrc.nist.gov/groups/ST/toolkit/examples.html
これらの例のビット列は 16 進数の列、つまり 16 進数 16 桁のシーケンスとして表現されている: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F、ここで A は 10 を表す数字、B は 11 を表す数字などである。
SHA-3 の例の入力および出力の 16 進数列をビット列として解釈する規則は、例のページにある他の関数の規則とは異なる。16 進数列と SHA-3 ビット列間の変換関数はセクション B.1 で規定されている。バイト配置されたメッセージでは、SHA-3 関数のパディングの 16 進数形式はセクション B.2 に記述されている。
これらのセクションで特定の 16 進数列は Courier New フォントで書かれ、その前には 0x というマーカーが付けられている。
B.1 変換関数
16 進数列からそれが表す SHA-3 列への (
アルゴリズム 10:
入力: ある正の整数 に対して 桁からなる 16 進数列 ; となるような正の整数
出力: となるようなビット列
ステップ:
-
となるような各整数 に対して、 を の 番目の 16 進数桁とする: -
となるような各 に対して:
-
とする。 -
を となるような一意のビット列とする。 -
および となる各整数ペア に対して とする。 -
を返す。
ステップ 1 では 16 進数のインデックスを定義する。ステップ 2a では 16 進数の各ペアが基数 16 として表す 0 から 255 の整数 (基数 10) に変換される。ステップ 2b ではステップ 2a の各整数がバイトとしてバイナリ表現に変換される。ステップ 3 ではバイトが 1 つの列に連結され、ステップ 4 で結果が希望するビット数に切り詰められる。
例えば
| |
|
|
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |
|
||||||||||||||
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
したがって
出力列
SHA-3 のビット列からそれを表す 16 進数列 (
アルゴリズム 11:
入力: ある正の整数 に対して ビットからなるビット列
出力: 桁からなる 16 進数列
ステップ:
-
とする。 -
および とする。 -
および となるような各整数ペア に対して とする。 -
となる各整数 に対して:
-
とする。 -
と を となるような 16 進数桁とする。 -
を返す。
SHA-3 コンペティションへの Keccak 提出のために [12] で指定された正式なビット再配置関数は、メッセージがバイトに配置されている場合、すなはち
B.2 パディングビットの 16 進数形式
SHA-3 関数の場合、Keccak
| SHA-3 関数のタイプ | パディングバイト数 | パディングメッセージ |
|---|---|---|
| ハッシュ | |
|
| ハッシュ | |
|
| ハッシュ | |
|
| XOF | |
|
| XOF | |
|
| XOF | |
|
Table 5 において "
C オブジェクト識別子
SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, および SHAKE256 のオブジェクト識別子 (OID) は http://csrc.nist.gov/groups/ST/crypto_apps_infra/csor/algorithms.html に掲載されている。
D References
- Federal Information Processing Standards Publication 180-4, Secure Hash Standard (SHS), Information Technology Laboratory, National Institute of Standards and Technology, March 2012, http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf.
- G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche, The KECCAK SHA-3 submission, Version 3, January 2011, http://keccak.noekeon.org/Keccak-submission-3.pdf.
- The SHA-3 Cryptographic Hash Algorithm Competition, November 2007-October 2012, http://csrc.nist.gov/groups/ST/hash/sha-3/index.html.
- G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche, Cryptographic sponge functions, January 2011, http://sponge.noekeon.org/CSF-0.1.pdf.
- Ethan Heilman to hash-forum@nist.gov, October 5, 2012, Hash Forum, http://csrc.nist.gov/groups/ST/hash/email_list.html.
- G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche, SAKURA: a flexible coding for tree hashing, http://keccak.noekeon.org/Sakura.pdf.
- R. C. Merkle, A digital signature based on a conventional encryption function, Advances in Cryptology - CRYPTO '87, A Conference on the Theory Applications of Cryptographic Techniques, Santa Barbara, California, USA, 1987, 369-378.
- G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche, The KECCAK reference, Version 3.0, January 2011, http://keccak.noekeon.org/Keccak-reference-3.0.pdf.
- NIST Cryptographic Algorithm Validation Program (CAVP), http://csrc.nist.gov /groups/STM/cavp/index.html.
- Federal Information Processing Standards Publication 198-1, The Keyed-Hash Message Authentication Code (HMAC), Information Technology Laboratory, National Institute of Standards and Technology, July 2008, http://csrc.nist.gov/publications/fips/fips198-1/ FIPS-198-1_final.pdf.
- NIST Special Publication 800-107 Revision 1: Recommendation for Using Approved Hash Algorithms, August 2012, http://csrc.nist.gov/publications/nistpubs/800-107-rev1/ sp800-107-rev1.pdf.
- G. Bertoni, J. Daemen, M. Peeters, G. Van Assche, and R. Van Keer, KECCAK implementation overview, January 2011, http://keccak.noekeon.org/Keccak- implementation-3.0.pdf.
翻訳抄
暗号論的ハッシュ関数である SHA-3、および可変長出力が可能な SHAKE に関する 2015 年の NIST 仕様。
- DWORKIN, Morris J. SHA-3 standard: Permutation-based hash and extendable-output functions. 2015.






