CyberGlossary

暗号

Blowfish

定義

Bruce Schneier が 1993 年に設計した 64 ビットブロック・可変鍵長の Feistel 暗号。暗号解析的には現役だがブロック長が短く、現在は AES に置き換わっている。

Blowfish は Bruce Schneier が 1993 年に DES や IDEA に代わる高速・無料の対称ブロック暗号として設計しました。64 ビットブロックに対して 16 ラウンドの Feistel 構造を適用し、鍵長は 32〜448 ビット、鍵依存の大型 S-Box を用います。フルラウンドの Blowfish 自体は現在も破られていないとされますが、64 ビットのブロック長は、同一鍵で数 GB を暗号化する長時間セッションにおいて Sweet32 のような誕生日攻撃に脆弱です。そのため NIST や現代プロトコルは AES など 128 ビットブロックの暗号を推奨します。Blowfish はパスワードハッシュ bcrypt や Twofish などの派生設計に受け継がれ歴史的価値を持ちますが、新規の暗号用途では非推奨です。

  • 古いバージョンの OpenSSH や OpenVPN は CBC モードの Blowfish に対応していた。
  • パスワードハッシュ bcrypt は Blowfish の鍵スケジュールを基礎としている。

関連用語