Serpent(暗号):保守的設計を特徴とするAES最終候補のブロック暗号
Serpentは、128ビットブロックと128・192・256ビット鍵を用いる共通鍵暗号である。保守的な設計、ビットスライシングによる高い並列性、パブリックドメインとしての自由な利用で知られるAES最終候補の一つ。
概要
Serpentは、ロス・アンダーソン、イーライ・ビハム、ラース・クヌーセンが、Advanced Encryption Standard(AES)コンペティション向けに設計した共通鍵ブロック暗号である。128ビットのブロックを処理し、128、192、256ビットの鍵を受け付ける。AESの最終候補の一つとして提出されたSerpentは、ラウンド数の最小化よりも、大きな安全余裕と解析のしやすさを優先する保守的な設計で知られる。
設計と構造
Serpentは、32ラウンドの置換・転置ネットワーク(SPN)として規定されている。内部状態は4個の32ビット語、すなわち合計128ビットとして扱われる。各ラウンドでは、鍵の混合、小型の4×4 Sボックスによる置換、および状態全体に拡散をもたらす固定線形変換を組み合わせる。設計者は異なる8種類の4ビットSボックスを選び、各ラウンドでそのうちの一つを状態全体に適用する。
鍵スケジュールとラウンド関数
鍵スケジュールは利用者鍵をラウンド副鍵へ拡張し、定められた箇所でそれらを状態にXORする。ラウンドは、ラウンド鍵の加算、全4ビット位置にわたるSボックスの並列適用、線形変換という反復パターンに従う。ただし最終ラウンドでは、この線形混合の段階を省く。著者らは、既知の攻撃にはより少ないラウンド数でも耐えられると見積もったが、将来の暗号解析上の進展に備えた余裕として32ラウンドを定義した。
Sボックスとビットスライシング
Serpentは慎重に選ばれた8種類の4ビットSボックスを使用し、それぞれは小さく解析しやすい。暗号は、アルゴリズムを32本の並列な1ビット・スライスとして捉えるビットスライス実装で効率的に動作するよう、明示的に設計された。ビットスライシングは幅広い論理演算をサポートするCPUやハードウェア実装に適しており、テーブル参照を使わず、多数の同一Sボックス計算を並列に実行できる。
安全性と暗号解析
Serpentの設計目標は保守性、すなわち既知の攻撃手法への耐性を備え、将来の発見に対する余裕を維持することであった。研究者は低ラウンド版を広範に研究しており、より少ないラウンドを破る理論的攻撃を見いだしている。しかし、公にされた暗号解析によって、全32ラウンドのSerpentを総当たり鍵探索より高速に破る実用的攻撃は示されていない。単純な構造と小さなSボックスにより、Serpentは厳密な解析や現代暗号学で用いられる形式手法にも適している。
性能、実装、用途
単純なソフトウェア実装では、Rijndaelがテーブル駆動の最適化やAESハードウェア命令を活用できるため、SerpentはAES(Rijndael)の採用案より遅いことが多い。一方、ビットスライシングや幅広い並列ビット演算を利用できる場合には良好な性能を示し、ハードウェアや並列論理演算を活用するプラットフォームでも効率的になり得る。パブリックドメインとして公開されたことから、Serpentは多くの学術プロジェクト、オープンソースライブラリ、実験的システムに実装されている。
法的地位と実用上の要点
- ブロック長:128ビット。
- 鍵長:128、192、256ビット。
- 構造:32ラウンドの置換・転置ネットワーク。
- 実装:ビットスライシングと並列実行に適する。
- 安全性の考え方:大きな安全余裕を備える保守的設計であり、実用的な完全鍵回復は知られていない。
- ライセンス:パブリックドメインであり、特許はなく自由に利用できる。
資料
- 仕様書と提出資料
- ラウンド関数の技術的説明
- Advanced Encryption Standardコンペティションの背景
- AESコンテストの年表と最終候補
- Rijndael(AES)採用案の参照資料
- 鍵長と鍵スケジュールに関する注記
- 置換・転置ネットワークの概要
- Sボックスの設計と特性
- ビットスライス実装の技法
- 暗号解析の文献と概説
- DES時代の解析手法との比較
- 設計根拠とラウンド数の正当化
- 安全余裕として32ラウンドを選択した理由
- 特許とライセンスに関する情報
- パブリックドメイン宣言と利用権
関連項目
著者
AlegsaOnline.com Serpent(暗号):保守的設計を特徴とするAES最終候補のブロック暗号 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/89086