タイミング攻撃(Timing Attack)は、セキュリティ分野で知られている攻撃方法の一つです。これは、コンピューターシステムやネットワークが処理を行う際の時間を計測し、その情報から機密データを推測しようとする攻撃です。例えば、暗号化されたデータを処理する時間が異なることから、使用されている暗号鍵やデータの内容を推測することが可能になります。
この攻撃は、コンピューターの動作が一定ではないという事実に基づいています。コンピューターが異なるデータや異なる鍵で暗号化や復号化を行う際、処理にかかる時間に微妙な違いが生じることがあります。タイミング攻撃は、これらの時間差を分析することで、秘密の情報を推測しようとするものです。
たとえば、あるウェブサイトがパスワードを検証する際、正しい文字が入力されるたびにわずかに長い時間を要するとします。攻撃者は多数の試行を行い、それぞれの試行にかかる時間を計測します。すると、時間が長かった試行は正しい文字が含まれている可能性が高いと推測できます。このようにして、攻撃者は徐々に正しいパスワードを組み立てていくことができるのです。
タイミング攻撃は、主に以下のような場面で利用される可能性があります。
- 暗号化アルゴリズムの解析:暗号化や復号化に使われる鍵を推測するために、アルゴリズムの処理時間を計測します。
- パスワードやPINコードの解読:システムがパスワードを検証する際の時間を計測し、正しいパスワードの一部を推測します。
- セキュリティトークンやスマートカードの解析:物理的なセキュリティデバイスがデータを処理する時間を計測して、内部の秘密情報を推測します。
タイミング攻撃を防ぐためには、システムやアルゴリズムが一定の時間で処理を行うように設計する必要があります。これを「タイミング攻撃に対する耐性」と言います。具体的には、以下のような対策が考えられます。
- 処理時間を一定にする:すべての処理に同じ時間がかかるようにすることで、時間差から情報を推測されるリスクを減らします。
- ランダムな遅延を挿入する:処理にランダムな時間の遅延を加えることで、攻撃者が正確な時間を計測することを困難にします。
- セキュリティチェックの順序をランダム化する:例えばパスワードの検証順序をランダムにすることで、攻撃者がどの文字が正しいかを推測するのを難しくします。
タイミング攻撃は、一見すると非常に専門的で複雑な攻撃方法のように思えますが、実際にはシステムの微妙な挙動を観察することで機密情報を盗み出すという、非常に巧妙な手法です。したがって、セキュリティ対策を行う際には、このようなサイドチャネル攻撃(システムの隠れた情報を利用する攻撃)にも注意を払う必要があります。