hacktricks/src/crypto-and-stego/hash-length-extension-attack.md

41 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ハッシュ長拡張攻撃
{{#include ../banners/hacktricks-training.md}}
## 攻撃の概要
サーバーが**データ**に**秘密**を**追加**してからそのデータをハッシュ化して**署名**していると想像してください。もしあなたが以下を知っているなら:
- **秘密の長さ**(これは与えられた長さの範囲からもブルートフォース可能です)
- **平文データ**
- **アルゴリズム(そしてそれがこの攻撃に対して脆弱であること)**
- **パディングが知られていること**
- 通常はデフォルトのものが使用されるため、他の3つの要件が満たされていれば、これもそうです
- パディングは秘密+データの長さによって異なるため、秘密の長さが必要です
その場合、**攻撃者**は**データ**を**追加**し、**以前のデータ + 追加されたデータ**の有効な**署名**を**生成**することが可能です。
### どうやって?
基本的に、脆弱なアルゴリズムは最初に**データのブロックをハッシュ化**し、その後、**以前に**作成された**ハッシュ**(状態)から**次のデータのブロックを追加**して**ハッシュ化**します。
例えば、秘密が「secret」でデータが「data」の場合、「secretdata」のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\
攻撃者が「append」という文字列を追加したい場合、彼は以下のことができます
- 64の「A」のMD5を生成する
- 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する
- 文字列「append」を追加する
- ハッシュを完了し、結果のハッシュは「secret」 + 「data」 + 「padding」 + 「append」の**有効なもの**になります
### **ツール**
{{#ref}}
https://github.com/iagox86/hash_extender
{{#endref}}
### 参考文献
この攻撃については[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)でよく説明されています。
{{#include ../banners/hacktricks-training.md}}