APOPの件

詳細はこちら↓。
http://www.ipa.go.jp/security/vuln/200704_APOP.html
http://jvn.jp/jp/JVN%2319445002/index.html


今回の件でポイントと思われることを自分の理解のためにまとめてみました。
誤解等ありましたらご指摘いただけると嬉しいです。

暗号/ハッシュ

MD5ハッシュ関数であり、暗号ではない。
暗号化された値は(当たり前だけど)元の値に戻すことができる。
ハッシュ値は元の値に戻すことは不可能。

APOP

APOPはチャレンジ/レスポンス方式
  1. サーバ:
    • チャレンジ文字列をクライアントに送信。
  2. クライアント:
    • チャレンジ文字列とパスワードをもとにして、MD5によりハッシュ値を求める。
    • レスポンス文字列としてサーバに送信。
  3. サーバ:
    • クライアントと同様の方法で、独立にレスポンス文字列を計算。
    • 受信した文字列と照合して認証を行う。
APOPの欠点

仕様上、利用できるハッシュ関数MD5に固定されており、SHAなどの別のハッシュ関数を使うことができない。

MD5

MD5の欠点

ある文字列X1…Xnが分かっていて、かつ、パスワードPとX1…Xnの組み合わせによるハッシュ値をある程度の数集められれば、Pの最初の31文字までを特定することができる。

結論

攻撃を成功させるためには、攻撃者は下記の条件を満たさなければならない。

  1. チャレンジ文字列をコントロールする。
  2. レスポンス文字列を長時間にわたって受け取る。


現実的にはかなり困難な攻撃方法。
でも、APOPは使わない方向で考えるのが安全。