Appearance
タイミング攻撃 ― 時間が秘密を漏らす
この章のキーワード
| 用語 | 意味 | なぜ重要か |
|---|---|---|
| タイミング攻撃 | 処理時間の差を測定して秘密情報を推測する攻撃 | 署名やトークン比較で発生 |
| hash_equals() | 定時間で文字列を比較する PHP 関数 | タイミング攻撃を防ぐ |
| 定時間比較 | 入力に関係なく一定の時間で完了する比較 | 実行時間から情報が漏れない |
Phase 1: 観察
LIBOT のコードベースには hash_equals() が 5 箇所で使われています。
php
// 1. Partner API 署名検証
return hash_equals($expectedSignature, $signature);
// 2. メール検証トークン
if (!hash_equals(sha1($user->getEmailForVerification()), $hash)) { ... }
// 3-5. Square Webhook 署名検証(決済、メンバーシップ、クレジット)
if (!hash_equals($expectedSignature, $signature)) { ... }全てに共通するのは、秘密の値を比較している ことです。
Phase 2: 判断
AI禁止ゾーン
hash_equals()が使われている 5 箇所に 共通するパターン は何ですか?- これらの箇所で
===を使ったら、具体的にどんな攻撃 が可能になりますか? - タイミング攻撃は 現実的な脅威 ですか? それとも理論上の話ですか?
AIに聞く前に、自分の頭で考えてみましょう。
テキストを入力すると有効になります