コンテンツへスキップ
uencoder

Blowfish

Blowfish は Bruce Schneier が 1993 年に設計した対称ブロック暗号であり、可変長鍵(32〜448 ビット)と 64 ビットブロックを使う。高速で、特許の制約がない。

目的

長い鍵とライセンス制限のなさにより、DES に代わる安全な選択肢を提供した。

メカニズム

16 ラウンドの Feistel 構造である。鍵スケジュールは P 配列(32 ビット語 18 個)と 4 個の S ボックス(各 256 要素)を構築し、鍵と固定定数(π の十六進展開)で初期化する。暗号化では F 関数との XOR を通じて両半分を交互に反復処理する。

ユースケース

  • OpenPGP のオプションアルゴリズム
  • bcrypt のパスワードハッシュの基盤
  • 組み込みやソフトウェア暗号
  • 教育用のサンプル

例

  • 入力
    key=128bit, data=8bytes
    Output
    8-byte ciphertext

    The 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

関連用語

関連ツール

References