ハッシュ関数を使って、通信経路とDBデータのどちらか一方しか守れないのはなぜ?

サーバがクライアントに尋ねる質問が、

  • このハッシュの中身を当てなさい。
  • この値を中身に含むハッシュを作りなさい。

の2つのうち、どちから1つだから、でしょうか。

  • Basic認証: 「このハッシュの中身を当てなさい。」
    • 入力は生 → 入力(生)からハッシュを計算
    • 盗聴に弱い。
    • DBデータはハッシュなので、漏洩しても入力(生)は得られない。
  • Digest認証: 「この値を中身に含むハッシュを作りなさい。」
    • 入力はハッシュ → DBデータ(生)からハッシュを計算
    • 漏洩に弱い。
    • 1回使った入力を無効にできるので、リプレイ攻撃に耐えられる。

ということなのかなー。