暗号
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 の鍵スケジュールを基礎としている。
関連用語
Twofish
Schneier らが設計した 128 ビットブロック・128/192/256 ビット鍵の対称暗号で、AES コンテストの最終候補。安全だが標準採用された AES に押され、利用は限定的。
AES(Advanced Encryption Standard)
NIST が標準化した 128 ビットブロック暗号で、鍵長は 128・192・256 ビット。Daemen と Rijmen が設計し、世界で最も広く使われている対称暗号。
ブロック暗号
固定長の平文ブロックを秘密鍵で暗号化する対称暗号で、任意長のデータを扱うために通常は暗号利用モードと組み合わせて使う。
対称鍵暗号
暗号化と復号に同じ秘密鍵を使う暗号方式で、鍵を安全に共有できれば高速で強力な機密性を提供する。
暗号化
アルゴリズムと鍵を用いて平文を暗号文に変換し、認可された当事者のみが元のデータを復元できるようにする処理。
bcrypt
Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。