CAST5 (CAST-128) 暗号化/復号
可変鍵長(40-128ビット)の安全な対称ブロック暗号
セキュリティ警告
このツールは教育・テスト目的です。高セキュリティが必要な本番環境ではAES-256などの現代的な暗号化アルゴリズムを検討してください。暗号化キーは絶対に共有しないでください。
CAST5 (CAST-128) 暗号化について
CAST5(CAST-128とも呼ばれる)は、NortelのCarlisle AdamsとStafford Tavaresが設計し、1996年にRFC 2144として公開されました。アルゴリズム名「CAST」は設計者のイニシャル(Carlisle Adams Stafford Tavares)に由来します。64ビットブロックで40〜128ビットの可変鍵長(8ビット単位)に対応し、OpenPGP(RFC 4880)の必須対称暗号として採用され、GnuPG 1.x(バージョン1.4まで)のデフォルト一括暗号として使用されました。
CAST5は3種類の異なるラウンド関数(Type 1:XOR出力、Type 2:減算出力、Type 3:加算出力)を使用し、各ラウンドで8つの32ビット出力S-boxから異なるペアを選択します。80ビット以下の鍵は12ラウンド、より長い鍵は16ラウンドを使用します。8つのS-boxは曲げブール関数を使用して構築されており、差分解読法に対する証明可能な耐性の界が設計時に形式的に確立されています。
主な特徴
- 可変鍵長:40〜128ビット(8ビットステップ)— 1990年代の米国輸出規制対応40ビット鍵層と完全な128ビット強度の両方を単一アルゴリズムでサポート
- 3種類の異なるラウンド関数(Type 1 XOR / Type 2 減算 / Type 3 加算)がラウンドで交互に使用され、各関数は8つの32×8ビットS-boxから異なるペアを選択
- 鍵≤80ビットは12ラウンド、81〜128ビット鍵は16ラウンド — 低エントロピーの鍵長に対する明示的なラウンド数補完
- 特許制限のないロイヤリティフリーアルゴリズム
暗号化モード
- CBC: 暗号ブロック連鎖 — 各64ビットCAST5ブロックは12または16ラウンドのFeistelラウンド関数シーケンスの前に前の暗号文ブロックとXORされます。注意: OpenPGP(RFC 4880 §13.9)はバルク暗号化にCBCではなく再同期付きCFBを義務付けています。CBCはSSH2コンテキストでのCAST5使用(CAST128-CBC、RFC 4253)に適しています。
- ECB: 電子符号表 — 各64ビットCAST5ブロックは12または16ラウンドすべてを独立して処理されます。同一の64ビット平文ブロックは常に同一の暗号文を生成し、データ繰り返しパターンを露出します。64ビットブロック幅では、誕生日界の衝突は1つの鍵で約2³²ブロック(~32 GB)後に50%の確率で発生します。
- CTR: カウンターモード - ブロック暗号をストリーム暗号に変換、並列処理が可能
- CFB: 暗号フィードバック — OpenPGP(RFC 4880 §13.9)が義務付けるモード: メッセージ先頭で2ブロックの再同期ステップを伴う64ビットCFB。このOpenPGP固有のCFB-with-resyncにより、受信者はデータ破損前にリードブロックの改ざんを検出できます。
- OFB: 出力フィードバック — CAST5ブロック関数がIVを繰り返し再暗号化して平文から独立した鍵ストリームを生成します。64ビットIVでは誕生日問題により鍵ストリームの統計的周期は約2³²サイクルで制限されます。大規模または長期のデータストリームでは鍵ストリームのサイクル再利用を防ぐためIVを定期的に更新してください。
- RAW: 単一ブロックモード - 連鎖なしの直接暗号化、8バイトブロックのみ
アルゴリズム比較
| アルゴリズム | 鍵長 | ブロックサイズ | セキュリティ | 速度 |
|---|---|---|---|---|
| CAST5 (CAST-128) | 40-128ビット | 64 bits | 良好 | 高速 |
| Blowfish | 32-448 bits | 64 bits | 良好 | 高速 |
| AES | 128/192/256 bits | 128 bits | 優秀 | 高速 |
| Twofish | 128/192/256 bits | 128 bits | 優秀 | 高速 |
セキュリティの考慮事項
- CAST5-128の完全ラウンドに対する実際の攻撃は存在しません。公表されている最良の解読法は16ラウンドのうち6ラウンドにしか到達できません。ただし40ビット輸出用鍵は総当たり攻撃で簡単に破られます — 現代のデプロイでは128ビット未満の鍵を絶対に使用しないでください。
- 64ビットブロックサイズはCAST5の主要な制限です: CBCまたはCFBモードでは約2³²ブロック(鍵ごとに~32 GB)後に誕生日界の統計的漏洩が発生します。OpenPGPはメッセージごとのセッション鍵でこれを軽減していますが、大規模ストリームの長期使用では鍵のローテーションが必要です。
- OpenPGP(RFC 4880 §9.2)はGnuPG 1.xおよびPGP 8.xクライアントとの互換性を確保するためCAST5を必須実装アルゴリズムとしています。新しい実装は新規メッセージの生成にAES-256を優先すべきです — CAST5は受信側の互換性要件であり、新規出力の推奨デフォルトではありません。
- すべての新設計でCAST5をAES-128-CBCまたはAES-256-GCMに置き換えてください。移行の主な理由は暗号解読の弱点ではなく64ビットブロック制限です — 十分な長さの鍵と適切なIV管理で使用する場合、CAST5-128自体は解読されていません。
一般的な用途
- OpenPGPメールとファイル暗号化の互換性: RFC 4880 §9.2はすべての適合OpenPGP実装でCAST5の実装を義務付け、暗号設定を更新していないGnuPG 1.xおよびPGP 8.xユーザーとの相互運用性に必要です
- GnuPG 1.x対称暗号: GnuPG 1.0〜1.4.xは対称鍵(パスフレーズ)暗号化のデフォルトとしてCAST5を使用しました。送信者がAESを明示的に選択していない限り、これらのGnuPGバージョンからのファイルや署名済みメッセージの復号にはCAST5サポートが必要です
- SSH2 CAST128-CBCトランスポート暗号: RFC 4253はCAST128-CBCをSSHトランスポート暗号のSHOULDサポート cipher として定義しています。AES暗号スイートが利用できない場合、ファームウェアが制限されたレガシーSSHサーバーや組み込みデバイスがハンドシェイク時にCAST128-CBCをネゴシエートする可能性があります
- フォレンジックとアーカイブ復号: 1990年代後半から2000年代中頃のPGP暗号化メール、ディスクアーカイブ、バックアップセットは一般的にCAST5をバルク暗号として使用しています。現在のシステムで新しいCAST5暗号化コンテンツが生成されなくなった場合でも、データの回復にはCAST5サポートが必要です