タイミング攻撃についての勉強メモ

サイドチャネル攻撃の一つ、タイミング攻撃について。

お隣の仮想マシンの暗号鍵を盗むサイドチャネル攻撃手法

/.のニュースで見つけた記事。
タイミング攻撃によるもので、ハイパースレッディングの脆弱性と類似しているとか。
http://security.slashdot.jp/story/12/11/08/1924211/
ハイパースレッディングの脆弱性については知らなかったので、調べてみた。

ハイパースレッディングの脆弱性

今更ながら知ったけど、実は7年前(2005年)に発見されたらしい。
当時はセキュリティに興味がないどころか、プログラムが書けるかどうか怪しいレベルだったからなぁ。
http://news.mynavi.jp/articles/2005/05/17/ht/001.html
ただし、完全に解読できるものではなく、「512ビットの素数のうち300ビットを推定できた」らしい。

B-CASカードが破られた原因の一つがタイミング攻撃?

上記の記事とは関係なく、もう一つ。
明確なソースは見つからなかったが、B-CASカードの暗号が破られた原因のひとつがタイミングアタックに弱かったという話を聞いたことがある。
たぶんstrcmpとか使うとそうなるんだろうなーと思って調べてみたら、見つかった。

パスワードの判定にstrcmpを使うべきでない理由
http://tabesugi.net/video/timingattack.html

パスワードの判定にstrcmpを使うべきでない理由

実際にコード書いてやろうかと思ったら、やってた人がいた。
http://tabesugi.net/video/timingattack.html
実際にはパスワードはハッシュ化したものと照合することが多い。1
ハッシュ化されたパスワードなら、strcmpで比較しても問題は起こらないと思うけど、やっておいたほうが無難なのだろうか。

B-CASカードの構造・仕組みなどは詳しく知らないけど、幾つか可能性を考えてみた。

  1. マイコンだから計算能力の関係上、極力ハッシュ計算などはしたくない
  2. 耐タンパ性を考慮した構造のため、パスワードをハッシュ化する必要がなかった
  3. 設計者のセキュリティに関する知識不足

1と2のどちらか、もしくは両方だと思う。

ところでハッシュの計算時間ってどのくらいかかるんだろう。 今度ちょっと調べてみようかな。


  1. 未だにできてないWebサービスも結構あるけど ↩︎

関連記事


  1. OpenID Connect Discovery 1.0についての調査メモ
  2. Spring Security + ThymeleafでAjaxリクエストにCSRF対策トークンを適用
  3. 一部のパスだけSpring SecurityのCSRF対策を無効化する
  4. Let's EncryptでDebian+ApacheをSSL/TLS化
  5. SRIによってCDN上のスクリプト改ざんを検知する
  6. OpenSSL+パスワードでファイルの暗号化/復号処理
  7. TrueCryptのレビューレポートを読んでみた

comments powered by Disqus