暗号化ハッシュを構築する目的で、Merkle–Damgård 構築で Blowfish を使用するライブラリはありますか? パスワードハッシュには興味がありませんが、汎用の暗号化ハッシュには興味があります。(既に Blowfish を使用しているアプリケーションで。)
2 に答える
独自の暗号を展開することは、非常に悪い考えです。読んで、大声で繰り返して、もう一度やり直してください。
特にハッシュ関数の場合。現在、世界中の暗号学者がSHA-3 コンテストを通じて、新しいハッシュ関数を設計中です。それは 2007 年に始まり、おそらく 2012 年に終了し、数十人 (おそらく数百人) の暗号設計 (博士号など)を専門とする優秀な人々が熱心に取り組んでいます。あなたが数週間で一人で、5年でそれらすべての人々よりもうまくやれると仮定すると、ばかげています. 安全なハッシュ関数を構築することは難しい問題であることが判明しました (理論的な観点からは、安全なハッシュ関数が実際に存在するかどうかさえわかりません)。安全なブロック暗号の構築は非常に簡単です。
Blowfish のデザイナー (Bruce Schneier) は、SHA-3 の候補の 1 つであるSkeinのデザイナーの 1 人です。彼はそのためにフグを再利用しなかったことに注意してください. 彼は 1998 年に、Blowfish の後継として、AES 選択プロセスの候補であるTwofishブロック暗号も公開したことに注意してください。Twofish は Blowfish よりもはるかに精査されていたため、対称暗号化の場合でも、Blowfish ではなく Twofish を使用する必要があります (または、Twofish よりも好まれた AES、別名「Rijndael」を使用することをお勧めします)。
Blowfish をハッシュ圧縮関数として使用するには、いくつかの理由で問題があります。
まず、ブロック暗号をハッシュ関数に変換するための壊れていないスキームの多くは、ブロック暗号のブロック長と同じ長さのハッシュを生成します。ブロック サイズが 64 ビットしかない Blowfish の場合、これでは不十分です。64 ビットのハッシュ長では 32 ビットのセキュリティしか提供されず、これは簡単に無効になります。
第二に、すべての安全なスキームは、入力メッセージのすべてのブロックでブロック暗号鍵を変更します。Blowfish のキー設定手順は非常に遅いことで知られているため、それに基づくハッシュも必然的に遅くなります。
思いとどまらない場合は、Tandem Davies-MeyerやAbreast Davies- Meyer などのブロック長が 2 倍のハッシュ構造を調べてください。ただし、代わりに SHA-2 ファミリの関数の実装を使用することを強くお勧めします。これらも見つけやすく、高速で、安全と見なされます。Blowfish をハッシュ関数として再利用しても、何も得られません。