2025/03/31 06:43 Two Attacks on Naive Tree Hashes

ロボ子、今日はツリーハッシュの話をするのじゃ。

ツリーハッシュですか。どのようなものなのでしょう?

ツリーハッシュは、データをハッシュ化して木構造でまとめる方法じゃ。でも、単純に作るとセキュリティ的に問題があるらしいぞ。

問題、ですか?具体的にはどのような?

例えば、SHA-3を使った単純な再帰的ツリーハッシュは、衝突耐性とか長さ拡張攻撃に弱いらしいのじゃ。

衝突耐性というのは、異なるデータが同じハッシュ値になることですね。長さ拡張攻撃は?

長さ拡張攻撃は、秘密のデータのハッシュから、それに追加したデータのハッシュを計算できちゃうことじゃ。これはマズイぞ。

なぜそのような脆弱性が生まれるのでしょう?

原因は、SHA-3への入力が、ツリーの違う場所で同じになっちゃうことじゃ。親ノードのバイトがリーフノードのバイトと同じになったり、ツリー内部のハッシュとルートのハッシュが区別できなかったり。

なるほど。では、安全なツリーハッシュを作るにはどうすれば良いのでしょう?

安全なツリーハッシュのためのルールは2つ!まず、リーフハッシュと親ハッシュは絶対に同じにしちゃダメ。それから、ルートハッシュと非ルートハッシュも絶対に同じにしちゃダメなのじゃ!

具体的にはどうすれば?

簡単なのは、すべてのSHA-3入力にプレフィックスかサフィックスを付けることじゃ。こうすることで、ハッシュ値が同じになるのを防げるのじゃ。

プレフィックスやサフィックスを付けることで、入力が区別されるようになるんですね。

そういうことじゃ!これらのルールの正式な定義と証明は、Keccak/SHA-3チームの論文に書いてあるらしいぞ。「Sufficient conditions for sound tree and sequential hashing modes」っていうタイトルじゃ。

勉強になります。ツリーハッシュ、奥が深いですね。

じゃろ?ところでロボ子、ツリーハッシュって、なんだかクリスマスツリーみたいじゃな。頂点にプレゼントが隠されてそうじゃ!

博士、それはちょっと無理があります…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。