Serpent暗号化/復号化ツール
AES最終候補 - 128/192/256ビットキー対応の超高セキュリティブロック暗号
⚠️ パフォーマンス注意
Serpentは32ラウンドでAESの10-14ラウンドに比べて遅いです。パフォーマンスが重要なアプリケーションにはAESを検討してください。最大のセキュリティマージンが優先事項の場合はSerpentを選択してください。
Serpent暗号について
Serpentは Ross Anderson(ケンブリッジ)・Eli Biham(テクニオン)・Lars Knudsen(デンマーク工科大学)が設計した対称ブロック暗号。1998年NIST AES競技に提出し準優勝—全5決勝候補中最高の安全評価を得ながらRijndael(現AES)に次ぐ2位。置換-置換ネットワーク(SP)が128ビットブロックを32ラウンド処理、AES-128の10ラウンドの3倍の安全マージン。
Serpentは32ラウンドで8種の4ビット→4ビットSボックスをラウンドロビン適用(各Sボックスが正確に4回登場)。全Sボックスは差分・線形解読への耐性を最適化するため穷举検索で選択。ビットスライス実装:32並行ブロックの各ビット位置が32ビットCPUレジスタを占有。
NIST評価委員会はSerpentを最高安全信頼性と評価しつつ、汎用ハードウェアでの高スループットがRijndael選択の決定的要因と指摘。Bruce Schneierらが競技後に“セキュリティのみが基準ならSerpentが明確な選択”と総括。
主な特徴
- 32ラウンドSPネットワーク:AES-128の3倍・AES-256の2倍超のラウンド数。全5決勝中最大安全マージン。最良攻撃は32ラウンド中12ラウンドまで
- ビットスライスSボックス:32ビット整数レジスタのみで全128ビット処理。テーブルルックアップ不要、キャッシュタイミングサイドチャネル免疫
- 8つの最適化Sボックス:差分・線形解読耐性穷举探索選択。各Sボックスが32ラウンドで正確に4回出現
- 132個の4ビットサブキーを拡張鍵材料の線形フィードバックで導出、各ラウンドで全入力鍵ビットへの代数的依存を保証
- 3鍵サイズ対応:128・192・256ビット鍵、全て同一32ラウンド構造。短い鍵はスケジュール前に256ビットへパディング
暗号化モード
- CBC: Serpent CBC — 128ビットブロックを32ラウンドSPパス前に前密文とXOR。Serpentの128ビットブロックはSweet32類の誕生日攻撃を排除(衝突閾値2⁶⁴ブロック)。実用データ量では問題なし。
- ECB: Serpent ECB — 各128ビット(16バイト)ブロック独立処理。同一ブロックが同一暗号文。単一ブロック操作専用。
- CFB: Serpent CFB — 32ラウンドブロック関数がIVから始まる実行中密文を暗号化し出力が平文とXOR。Sweet32なし、ストリーミングに適用可能。
- OFB: Serpent OFB — フィードバックレジスタ(IV初期化)を平文独立に反復暗号化して決定論的鍵ストリームを生成。128ビットブロックのため現実的な誕生日界制限なし。
アルゴリズム比較
| アルゴリズム | キー長 | ブロックサイズ | ラウンド数 | セキュリティ | 速度 |
|---|---|---|---|---|---|
| Serpent | 128/192/256ビット | 128 bits | 32 | 優秀 | 低速 |
| AES | 128/192/256 bits | 128 bits | 10-14 | 優秀 | 高速 |
| Twofish | 128/192/256 bits | 128 bits | 16 | 優秀 | 高速 |
AESコンペティションの背景
SerpentはNIST AES競技(1999年)最終評価で最高安全マージン評価を獲得。委員会は5候補中(Serpent、AES/Rijndael、Twofish、RC6、MARS)最も保守的な設計と指摘。
RijndaelがAES選出された主要理由は性能:汎用ハードウェアで2〜3倍高スループット、8ビットスマートカードへの適合性。SerpentはRijndaelより安全だが実用速度が下回った。
Kelsey・Schneierが競技後分析で確認:Serpentの32ラウンド設計が他候補より大幅に広い安全マージンを提供し、競技中・後でもアーキテクチャ上の弱点は発見されていない。
セキュリティ上の注意
- 完全32ラウンドSerpentへの多項式時間攻撃は未発表。最良公開攻撃(2011年飛来角攻撃): 2¹²²複雑度で12/32ラウンドのみ、2¹²⁸ブルートフォースより難しい。20ラウンドの安全マージンは未脅威。
- SボックスはNISTへの提出文書で差分・線形解読耐性の穷举検証が完全公開。独立検証可能な設計。
- ビットスライス実装はテーブルルックアップ不使用→全操作が定数時間XOR/AND/OR/NOT→キャッシュタイミングサイドチャネル耐性。AES-NI不要環境で特に有利。
- スループット十分なアプリケーション(ファイル暗号化、長期アーカイブ)にはSerpent-256が最大セキュリティマージン。高スループットネットワークにはAES-256-GCM+AES-NI推奨。
使用例
- 高セキュリティアーカイブ暗号化:数十年使用の長期暗号鍵にSerpent-256。将来の対称解読進歩に対してAESより保守的なヘッジ
- キャッシュタイミングサイドチャネル安全:AES-NI無し・テーブルルックアップAES計時漏洩リスクある組み込みシステム(HSM・スマートカード)でビットスライスSerpentが有効
- VeraCryptカスケードなど多重暗号化コンテナ:Serpent+AES+Twofishで単一暗号破れを構造全体への完全侵害から防止
- AES後学術研究参考:完全公開提出文書・穷举Sボックス選択基準・25年以上の非破解記録がSP-network暗号設計研究の標準参考実装
参考資料
- NIST AESコンペティション文書
- Wikipedia - Serpent暗号
- Anderson、Biham、Knudsenによる元のSerpent論文