CoderTools

Blowfish暗号化/復号化ツール

Bruce Schneierが設計した高速対称ブロック暗号

⚠️ セキュリティ注意

Blowfishの64ビットブロックサイズは、大量のデータを暗号化する際にバースデー攻撃に脆弱な場合があります。最高のセキュリティが必要な新規プロジェクトにはAES-256をお勧めします。

Blowfishキー長: 4-56バイト(32-448ビット)。推奨: 16バイト(128ビット)以上
フォーマットオプション

Blowfish暗号について

Blowfishは1993年にBruce Schneierによって設計された対称鍵ブロック暗号です。特許に縛られない最初の安全なブロック暗号の一つで、誰でも自由に使用できます。

Blowfishは64ビットのブロックサイズを使用し、32ビットから448ビットの可変キー長をサポートします。16ラウンドのFeistelネットワーク構造を使用し、高速かつ安全です。

主な特徴

  • 可変キー長: 32〜448ビット(4〜56バイト)、セキュリティレベルを柔軟に調整可能
  • 64ビットブロックサイズ: 8バイト単位でデータを処理
  • 16ラウンドFeistelネットワーク: 強力な拡散と混乱を提供
  • 高速暗号化: 32ビットプロセッサ向けに最適化、DESより大幅に高速

暗号化モード

  • CBC: 各平文ブロックは暗号化前に前の暗号文ブロックとXORされます。IVが必要、最も安全。
  • ECB: 各ブロックは独立して暗号化されます。IVは不要ですが、同じ平文は同じ暗号文を生成します。
  • CFB: ブロック暗号をストリーム暗号に変換します。IVが必要。
  • OFB: 出力フィードバックモード、ブロック暗号をストリーム暗号に変換します。IVが必要。

アルゴリズム比較

アルゴリズム キー長 ブロックサイズ セキュリティ 速度
Blowfish 32-448ビット 64 bits 良好 高速
AES 128/192/256 bits 128 bits 優秀 高速
DES 56 bits 64 bits 弱い 高速
3DES 112/168 bits 64 bits 中程度 低速

セキュリティ上の注意

  • Blowfishの64ビットブロックサイズは、同じキーで大量のデータ(32GB以上)を暗号化する際にバースデー攻撃に脆弱です。
  • 最高のセキュリティが必要な新規プロジェクトには、AESまたはBlowfishの後継であるTwofishの使用を検討してください。
  • セキュリティ向上のため、ECBではなくCBCまたは他のチェーンモードを常に使用してください。
  • 同じキーを使用する場合、各暗号化操作には一意のIVを使用してください。

使用例

  • パスワードハッシュ: bcryptはBlowfishをベースにしており、パスワード保存に広く使用されています
  • ファイル暗号化: 個々のファイルやアーカイブの暗号化に適しています
  • VPNと安全な通信: OpenVPNや他のセキュリティプロトコルで使用されています
  • レガシーシステム互換性: Blowfishを使用するシステムとの互換性維持

参考資料