Blowfish
Blowfish は Bruce Schneier が 1993 年に設計した対称ブロック暗号であり、可変長鍵(32〜448 ビット)と 64 ビットブロックを使う。高速で、特許の制約がない。
目的
長い鍵とライセンス制限のなさにより、DES に代わる安全な選択肢を提供した。
メカニズム
16 ラウンドの Feistel 構造である。鍵スケジュールは P 配列(32 ビット語 18 個)と 4 個の S ボックス(各 256 要素)を構築し、鍵と固定定数(π の十六進展開)で初期化する。暗号化では F 関数との XOR を通じて両半分を交互に反復処理する。
ユースケース
- OpenPGP のオプションアルゴリズム
- bcrypt のパスワードハッシュの基盤
- 組み込みやソフトウェア暗号
- 教育用のサンプル
例
- 入力
key=128bit, data=8bytesOutput8-byte ciphertextThe 64-bit block is now considered small
よくあるエラー
- The 64-bit block invites Sweet32 attacks on large data volumes
- Use AES or Twofish with 128-bit blocks
関連用語
AES
AES(Advanced Encryption Standard)は NIST が 2001 年に確立した対称ブロック暗号であり、128/192/256 ビット鍵をサポートし、現代暗号化の事実上の標準である。 用語集
Twofish
Twofish は Bruce Schneier らが AES 競技のために設計した対称ブロック暗号である。128 ビットブロックと 128/192/256 ビット鍵を持ち、AES 決勝進出アルゴリズムの 1 つだった。 用語集
DES
DES(Data Encryption Standard)は 1977 年に標準化された対称ブロック暗号であり、56 ビット鍵と 64 ビットブロックを用いる。鍵長が短いため廃れている。 用語集
Block Cipher
ブロック暗号は固定長のブロック(例: 128 ビット)を暗号化・復号する対称暗号であり、任意長のデータを扱うには運用モードが必要である。 用語集