Blowfish暗号化/復号化ツール
Bruce Schneierが設計した高速対称ブロック暗号
⚠️ セキュリティ注意
Blowfishの64ビットブロックサイズは、大量のデータを暗号化する際にバースデー攻撃に脆弱な場合があります。最高のセキュリティが必要な新規プロジェクトにはAES-256をお勧めします。
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を使用するシステムとの互換性維持