結城浩のはてな日記 このページをアンテナに追加 RSSフィード Twitter

2006年5月7日(Sun)

あなたが10の理由を示すべき10の理由

あなたが10の理由を示すべき10の理由。

  • 「7の理由」ではパターン化しすぎているから。
  • 9では少なすぎ、11では切りが悪いから。
  • 体系的に広い視野で考えているように見てもらえるから。
  • なんだかんだいって10個くらいの理由は思いつくから。
  • 10個も示せば一つくらいは「なるほど」と言ってもらえるから。
  • 10個も示せば一度には読みにくいためブックマークしてもらえるから。
  • 10個も示せば時間経過とともにランキング変動も調査できるから。
  • 10位から発表していけば「1位は何だろう」と盛り上げられるから。
  • タイトルで「10の理由」と書いておいても、実際に10個も示す必要なんてないから。

※流行ものらしいので、書いてみました。

「Hash ≠ MAC」の意味

はてな認証APIに関連して、kazuhoさんが以下のエントリを書いておられます。(via まちゅダイアリー)

これは「秘密鍵をメッセージの頭に付けて計算した一方向ハッシュ関数(メッセージダイジェスト関数)のハッシュ値を、メッセージ認証コード(MAC)として使うことの危険性」について書かれたものです。

はてな認証APIに限らず、同じような仕組みを実装している方がもしいらっしゃいましたら上記のページを確認なさったほうがよいと思います。

要するに、MACがほしかったらMD5SHA-1を生で使うのではなくHMACを使いましょうね、ということになります。

余談:

kazuhoさんがまちゅさんちに書かれていた説明を読んで、結城は最初、愚かにもMD5の脆弱性絡みの話題かと思っていました。でも、それは結城の誤解でした。生のハッシュを使うのではなくHMACを使うのが正しいです。論文Keying Hash Functions for Message Authenticationにも、またシュナイアー『暗号技術大全』(p.508)にも書かれていますね。ハッシュ関数がiterativeな性質(出てきたハッシュ値が自分の次の内部状態になる)を持つ限り、この危険性からは免れません。拙著『暗号技術入門』のMACの章ではこの攻撃については触れていませんでしたね。p.309に類似のクイズがありますが。

勉強になりました。kazuhoさん、ありがとうございます。

追記:

kazuhoさんのエントリが追加されていました。

これに関しては、シュナイアー『暗号技術大全』(p.508)に「メッセージの最後に鍵を入れるH(M, K)のほうがよいが、これにも同様の問題がある」と書かれていますね。参考文献はPreneel→Scheierの私信になっていましたが。

kazuhokazuho 2006/05/08 11:35 > これに関しては、シュナイアー『暗号技術大全』(p.508)に...

すいません。私が寝ぼけていたんですが、ブログで指摘している件は HMAC 特有の話ではなくてハッシュ全般の話になると考えています。

ご指摘の部分は HMAC の実装についての議論だと思いますので、たぶん違う話かと思います (おそらくは HMAC の論文で、 extension attack の直前に書かれている話かと)。

お手数をおかけして申し訳ありません。

hyukihyuki 2006/05/08 15:06 いえ『暗号技術大全』の当該箇所は、HMACの話ではなく、まさにメッセージに秘密鍵を埋め込んで生ハッシュする話題だと思います。

nekonaminekonami 2006/05/08 15:07 これは、はてな側が毎回発行する、毎回のcert値の生成の仕方に問題があるのですか。
それとも、それ以外の何かですか。(的外れな質問でしたらごめんなさい)。

hyukihyuki 2006/05/08 15:38 短い言葉で書くと誤解を招く可能性もありますので、恐れ入りますが、上記のkazuhoさんのエントリをご覧ください。

kazuhookukazuhooku 2006/05/09 15:29 > いえ『暗号技術大全』の当該箇所は、HMACの話ではなく、まさにメッセージに秘密鍵を埋め込んで生ハッシュする話題だと思います。

ありがとうございます。いい機会なので、買うことにします。