Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1282

タイミング攻撃

監修Cybersecurity entrepreneur & security researcher

タイミング攻撃 とは何ですか?

タイミング攻撃さまざまな入力に対して処理にかかる時間を測定することで、秘密情報を回復するサイドチャネル攻撃。


タイミング攻撃は、暗号や認証コードにおける入力に依存した実行時間を悪用します。古典的な標的としては、定数時間ではない文字列比較(最初に不一致となったバイトで早期に打ち切られ、推測がどこまで一致したかが漏れる)、剰余べき乗(square-and-multiply による鍵ビットの漏えい)、キャッシュ状態の影響を受ける AES のテーブル参照、そして所要時間からユーザー名の存在有無が判明するアカウント照会などがあります。ナノ秒単位のわずかな差でも、数千回の測定を平均化してネットワークのジッターを抑制することで増幅できます。

Paul Kocher の 1996 年の論文が、これを RSA と Diffie-Hellman に対して初めて武器化しました。とりわけ重要なのは、Brumley と Boneh による 2003 年の論文「Remote Timing Attacks Are Practical」(USENIX Security)であり、Montgomery リダクションと Karatsuba/通常乗算の切り替えにおけるタイミングの差異を悪用して、OpenSSL 0.9.7 の RSA 秘密鍵をネットワーク越しに抽出しました。これが、OpenSSL が RSA ブラインディングをデフォルトで有効化した理由です。Lucky Thirteen(CVE-2013-0169、2013 年)は、CBC モードのパディング処理における MAC 検証時間の差を測定することで、TLS の平文を回復しました。

flowchart TD
  A[攻撃者が細工した入力を多数送信] --> B[応答時間を精密に測定]
  B --> C[サンプルを平均化してジッターを打ち消す]
  C --> D{時間が秘密と<br/>相関するか?}
  D -->|はい| E[秘密の1ビット/バイトを推測]
  E --> F[繰り返して鍵空間を絞り込む]
  F --> G[秘密を完全に回復]
  D -->|いいえ| H[定数時間コード:漏えいなし]

防御には定数時間の実装が必要です。すなわち、分岐のない条件移動、固定時間での比較(crypto_memcmp、Python の hmac.compare_digest、Java の MessageDigest.isEqual)、RSA/ECC のためのブラインディング、そしてキャッシュ耐性を高めた暗号プリミティブです。自動化ツール(dudect、ctgrind、MicroWalk)はデータ依存のタイミングを監査するのに役立ち、レート制限はネットワーク境界で攻撃者の測定予算を狭めます。

  1. 01

    RSA/Diffie-Hellman の秘密鍵ビットを回復した Kocher による 1996 年のタイミング攻撃。

  2. 02

    Lucky Thirteen(CVE-2013-0169):TLS の CBC パディングに対するタイミング攻撃。

よくある質問

タイミング攻撃 とは何ですか?

さまざまな入力に対して処理にかかる時間を測定することで、秘密情報を回復するサイドチャネル攻撃。 サイバーセキュリティの 脆弱性 カテゴリに属します。

タイミング攻撃 とはどういう意味ですか?

さまざまな入力に対して処理にかかる時間を測定することで、秘密情報を回復するサイドチャネル攻撃。

タイミング攻撃 からどのように防御しますか?

タイミング攻撃 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。

タイミング攻撃 の別名は何ですか?

一般的な別名: タイミング・サイドチャネル。

関連用語

関連項目