Skip to content

タイミング攻撃 ― 時間が秘密を漏らす

📖この章のキーワード
用語意味なぜ重要か
タイミング攻撃処理時間の差を測定して秘密情報を推測する攻撃署名やトークン比較で発生
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に聞く前に、自分の頭で考えてみましょう。

テキストを入力すると有効になります