| 一般的な | |
|---|---|
| デザイナー | ヴィンセント・ライメン、パウロ・SLM・バレット |
| 初版 | 2000年、2001年、2003年 |
| 由来 | スクエア、AES |
| 認証 | ネッシー |
| 詳細 | |
| ダイジェストサイズ | 512 ビット |
| セキュリティクレーム | ハッシュサムサイズが大きい |
| 構造 | 宮口プレニール |
| ラウンド | 10 |
| 最高の公開暗号解読 | |
| 2009年には、2120回の動作でワールプールの4.5発の完全衝突、 2120回の動作で5.5発の半自由発進衝突、 2128回の動作で7.5発の半自由発進ニア衝突を示すリバウンド攻撃が発表されました。[1] | |
コンピュータサイエンスと暗号学において、Whirlpool ( WHIRLPOOLと表記されることもある)は暗号ハッシュ関数である。これはVincent Rijmen ( Advanced Encryption Standardの共同作成者) とPaulo SLM Barretoによって設計され、2000 年に初めて説明された。
このハッシュは、 NESSIEプロジェクトによって推奨されています。また、国際標準化機構(ISO) と国際電気標準会議(IEC) によって、共同 ISO/IEC 10118-3国際標準の一部として採用されています。
デザインの特徴

Whirlpool は、 Square ブロック暗号をモデルに設計されたハッシュであり、そのブロック暗号関数のファミリーに属するものと考えられています。
Whirlpool は、大幅に改良されたAdvanced Encryption Standard (AES)に基づくMiyaguchi-Preneel構造です。
Whirlpoolは2256ビット未満の任意の長さのメッセージを受け取り、512ビットのメッセージダイジェストを返します。[3]
著者らは次のように宣言している。
- 「WHIRLPOOLは特許を取得していません(今後も取得することはありません)。いかなる目的にも無料で使用できます。」[2]
バージョンの変更
次のテスト ベクトルでは、 オリジナルの Whirlpool はWhirlpool-0、Whirlpool の最初のリビジョンはWhirlpool-T、最新バージョンはWhirlpoolと呼ばれます。
- 2001 年の最初の改訂では、S ボックスは、優れた暗号化特性を持つランダムに生成されたものから、より優れた暗号化特性を持ち、ハードウェアに実装しやすいものに変更されました。
- 2回目の改訂(2003年)では、拡散行列に欠陥が見つかり、アルゴリズムの推定セキュリティが潜在的可能性以下に低下しました。[4] 8x8回転行列定数を(1、1、3、1、5、8、9、5)から(1、1、4、1、8、5、2、9)に変更することで、この問題は解決しました。
内部構造
Whirlpoolハッシュ関数は、宮口-プレネルモードのAESのようなブロック暗号Wに基づいたMerkle-Damgård構造である。[2]
ブロック暗号W は、8×8 の状態行列のバイトで構成され、合計 512 ビットになります。
暗号化プロセスは、10 ラウンドにわたって 4 つのラウンド関数を使用して状態を更新することから構成されます。4 つのラウンド関数は、SubBytes (SB)、ShiftColumns (SC)、MixRows (MR)、および AddRoundKey (AK) です。各ラウンドで、新しい状態は次のように計算されます 。
サブバイト
SubBytes操作は、状態の各バイトに非線形順列 (S ボックス) を個別に適用します。8 ビットの S ボックスは、3 つの小さな 4 ビットの S ボックスで構成されます。
ShiftColumns
ShiftColumns操作は、状態の各列の各バイトを周期的にシフトします。列jのバイトはj位置だけ下方にシフトされます。
ミックスロウ
MixRows演算は、 上の 8×8 行列による各行の右乗算です。 行列は、分岐数(差分暗号解析に対する耐性を調べるときに重要な特性) が最大の 9 になるように選択されます。
ラウンドキーの追加
AddRoundKey操作は、ビット単位のXOR を使用して、キー スケジュールによって計算されたキーを現在の状態に追加します。キー スケジュールは暗号化自体と同じですが、AddRoundKey 関数が、各ラウンドで事前に決定された定数を追加する AddRoundConstant関数に置き換えられます。
ワールプールハッシュ
Whirlpool アルゴリズムは、2000 年の最初の仕様以降、2 回の改訂が行われています。
Whirlpool を導入する人は、おそらく Whirlpool の最新リビジョンを使用することになります。以前のバージョンの Whirlpool にはセキュリティ上の弱点が知られていませんが、最新リビジョンはハードウェア実装の効率特性が向上しており、より安全である可能性も高くなります。前述のように、これは ISO/IEC 10118-3国際標準で採用されているバージョンでもあります。
512 ビット (64 バイト) の Whirlpool ハッシュ (メッセージ ダイジェストとも呼ばれる) は、通常、128 桁の16 進数として表されます。
以下は、43 バイトのASCII入力 (引用符は含まない) とそれに対応する Whirlpool ハッシュを示しています。
実装
著者らは、 C言語で書かれたバージョンとJavaで書かれたバージョンを含む、Whirlpoolアルゴリズムの参照実装を提供している。[2]これらの参照実装はパブリックドメインにリリースされている。[2]
しかし、Whirlpool関数のセキュリティ分析に関する研究では、平均して8つのランダムな障害を導入するだけで、処理中の512ビットのWhirlpoolハッシュメッセージと、Cloud of Things(CoT)のコンテキスト内のHMAC-Whirlpoolの秘密鍵が危険にさらされることが明らかになりました。これは、実装時にセキュリティ対策を強化する必要があることを強調しています。[5]
採択
Whirlpool を使い始めた最初の広く使われた主流の暗号化プログラムのうちの 2 つはFreeOTFEであり、2005 年にはTrueCryptがそれに続きました。 [引用が必要]
VeraCrypt ( TrueCryptのフォーク)には、サポートされているハッシュアルゴリズムの1つとしてWhirlpool(最終バージョン)が含まれていました。[6]
参照
参考文献
- ^ Florian Mendel1、Christian Rechberger、Martin Schläffer、Søren S. Thomsen (2009-02-24)。リバウンド攻撃: Reduced Whirlpool および Grøstl の暗号解析(PDF)。高速ソフトウェア暗号化: 第 16 回国際ワークショップ。
{{cite conference}}: CS1 maint: 複数名: 著者リスト (リンク) CS1 maint: 数値名: 著者リスト (リンク) - ^ abcde Paulo SLM Barreto (2008-11-25). 「WHIRLPOOLハッシュ関数」。2017-11-29時点のオリジナルよりアーカイブ。2018-08-09に閲覧。
- ^ Barreto, Paulo SLM & Rijmen, Vincent (2003-05-24). 「WHIRLPOOL ハッシュ関数」 。2017-10-26 にオリジナル(ZIP)からアーカイブ。2018-08-09に閲覧。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ Kyoji, Shibutani & Taizo Shirai (2003-03-11). 「Whirlpoolハッシュ関数で使用される拡散行列について」(PDF) 。2018年8月9日閲覧。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ Li, W., Gao, Z., Gu, D., Ge, C., Liao, L., Zhou, Z., Liu, Y., & Liu, Z. (2017). クラウド・オブ・シングスにおける Whirlpool ハッシュ関数のセキュリティ分析。KSII Transactions on Internet and Information Systems, 11(1), 536–551. https://doi.org/10.3837/tiis.2017.01.028
- ^ 「Whirlpool」。VeraCryptドキュメント。IDRIX。2018年 8 月 9 日閲覧。
外部リンク
- Wayback Machineの WHIRLPOOL ハッシュ関数(2017-11-29 アーカイブ)
- SourceForgeの Jacksum は、Whirlpool の 3 つのリビジョンすべてを Java で実装したものです。
- GitHubの whirlpool – Whirlpool の最新リビジョンのオープンソースGo実装
- Whirlpool ハッシュ関数の Matlab 実装
- RHash は、 Whirlpool ハッシュを計算および検証できるオープンソースのコマンドライン ツールです。
- CPANの Perl Whirlpool モジュール
- Rubyで Whirlpool ハッシュアルゴリズムを実装するダイジェストモジュール
- IroncladはWhirlpool実装を含むCommon Lisp暗号化パッケージです。
- ISO/IEC 10118-3:2004規格
- NESSIEプロジェクトの Whirlpool ハッシュのテスト ベクトル
- マネージド C# 実装
- Python Whirlpool モジュール
