何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

はてなブックマーク > 高木浩光@自宅の日記 - 公衆無線LANで使うと危ない...(はてなブックマーク)より:

「WSSE認証ではパスワードのハッシュ値が送信されている」ハッシュの種類が気になったので調べてみると、WSSE認証ではSHA1らしい。「すでに終わってる」MD5でなくてよかった。

よかった、のかなぁ?

元の、高木浩光氏のページには、こう書いてあります。

公衆無線LANで使うと危ないiPod touchアプリに注意(高木浩光@自宅の日記)より:

しかし、現状の公衆無線LANサービスは、無線通信の暗号化に用いる鍵が加入者全員で同一のところがほとんどであり(あるいは、暗号化しないところもある)、(略)

この認証方式では、パスワードのハッシュ値が送信されているので、傍受されても(パスワード文字列が十分に長ければ)パスワードを復元されない*4。

*4 (略)パスワードのハッシュ値等が得られる状況では、オフラインでパスワードを試すことができるため、オンラインに比べて高速に試行できることから、長いパスワードが要求される。(無線LANの事前共有鍵でも、同様の理由から長い文字列を必要とする。)

暗号化は、暗号化に使われる鍵が漏れない前提で、安全であるとされます。しかし、「加入者全員で同一の」鍵を用いるという時点で、この前提が崩れています。

そして、図3を見ると、ユーザー名とパスワードのダイジェストが送られています。暗号化の鍵は手に入っているのだから、同じダイジェストになる文字列を探すだけでよい、ということです。

そのため高木氏は脚注に、40文字でも足りないオンラインに比べて高速に試行できることから、長いパスワードが要求される。(無線LANの事前共有鍵でも、同様の理由から長い文字列を必要とする。)と、書かれているのだと思います。

けっして、「MD5 でなくてよかった」と言えるようなものではないと思うのですが、いかがでしょう?

投稿日時 : 2008年12月8日 23:09
コメント
  • # re: 「MD5 でなくてよかった」?
    aetos
    Posted @ 2008/12/08 23:24
    SHA1って、何年か先にはSHA2に移行するようにって言われてたよね。
  • # re: 「MD5 でなくてよかった」?
    Jitta
    Posted @ 2008/12/09 9:28
    aetosさん、コメントありがとうございます。

    ええ、言われますよ。
    記事が見つからないので、ブログ エントリへ
    http://blog.ohgaki.net/sha1a_sa_a_a_ma_ya_a_a_a_a_sa_ma_fa_a_ma
  • # re: 「MD5 でなくてよかった」?
    Jitta
    Posted @ 2008/12/09 9:30
    > 暗号化の鍵は手に入っているのだから
    なんか、勘違いしてる>折れ
    ダイジェストに鍵は、無いよね
  • # re: 「MD5 でなくてよかった」?
    なちゃ
    Posted @ 2008/12/09 15:46
    そもそもハッシュの脆弱性ってまず衝突耐性の話なので、パスワードハッシュやチャレンジ・レスポンスなどの認証の話とは大抵観点が違うと思います。

    辞書攻撃(ここではレインボーテーブルによる攻撃)への耐性に関しては、衝突耐性が改善しようがビット数増やそうがそれほど極端に大きな差はないですよね?
    ハッシュの繰り返しを使うようにして回数上げるほうがよっぽど効果的のように思われます。
  • # re: 「MD5 でなくてよかった」?
    なちゃ
    Posted @ 2008/12/09 15:57
    おっと、レインボーテーブルじゃなくてここでは単なるオフラインでの攻撃ですね。
  • # re: 「MD5 でなくてよかった」?
    Jitta
    Posted @ 2008/12/09 23:14
    なちゃさん、コメントありがとうございます。

    > そもそもハッシュの脆弱性ってまず衝突耐性の話なので
    ええ。どれくらいの時間で、同じハッシュ値になる文字列を作れるか、ですよね。
    オンラインであれば、サーバー側に細工したりして、衝突したと気づかせないようなそぶりをさせることもできます。しかし、目標となる文字列が手に入ってしまっているのだから、時間は関係ないよね、ってことだと思うのです。サーバー/クライアントを行き来する必要がない分早くなるし、アカウントをロックしたり、被攻撃対象者に攻撃を受けていることを知らせることもできません。
    それが、「SSL 通信だから安全だぜ!」と思っているところが、実はみんな同じ鍵なので「自由に出入りできちゃうぜ!」・・・なんだ?「iPod で使っちゃいけない」じゃなく、公衆無線 LAN を使うと危ない、ってこと?
  • # re: 「MD5 でなくてよかった」?
    なちゃ
    Posted @ 2008/12/10 0:26
    「それが、」以降のくだりがちょっとよく分からないんですが、
    WSSEで使われるハッシュや、いわゆるパスワードの認証で使われるハッシュってのは通常NONCEやソルトといったものとくっつけた上で使われるので、
    単順に弱衝突耐性を破っても、そのまま不正使用はできないと思うんですよね、普通は。
    結局オフラインでも、パスワード自体を元ネタにした辞書攻撃を決める必要があります。
    ※もちろんハッシュ元のデータが復元できるかもしれないような脆弱性だとそれ以前の問題ですが

    となると、このような方式での認証に使うハッシュは、衝突耐性そのものよりも、計算に時間がかかることの方が効果が大きくなるはずなんですよね。
    なので、PBKEF2などの方式で例えば数千回以上繰り返すような方式を使用するほうが、ハッシュ関数そのものを強化するよりも効果的なはずです。
    ※ハッシュ関数がいくら強化されても、オフラインの辞書攻撃にはあまり効果がない

    SHA2を一回使うだけなら、むしろSHA1を基にした繰り返し数の多い関数を使うほうがずっと安全なように思います。

    ってのがまあ、
    普通に出てくるハッシュ関数の脆弱性と、WSSEのような方式の認証にハッシュ関数を使う場合の安全性が、必ずしも直結しないのでは?
    という話です。
  • # re: 「MD5 でなくてよかった」?
    なちゃ
    Posted @ 2008/12/10 0:30
    っととと、PBKEF2→PBKDF2 の打ち間違いです。
  • # KbCPVnXmLaDZ
    http://crorkz.com/
    Posted @ 2014/08/07 12:17
    ThYMvs Fantastic article post. Keep writing.
タイトル
名前
Url
コメント