Luciferは、主にホルスト・ファイステルらによって
IBMで開発された初期の民間用
ブロック暗号の一つです。これは、後に広く知られることとなるデータ
暗号標準(DES)の基盤となった
暗号方式です。特に、1970年代に使用されていたDTD-1というバージョンが有名です。
概要と技術的背景
Lucifer
暗号にはいくつかのバージョンが存在しますが、ここでは特許番号3,798,359(1971年7月)による版に焦点を当てます。このバージョンは48ビットの鍵を使用し、同じく48ビットのブロックのデータを処理します。内部構造はSPN(Substitution-Permutation Network)で2つの4ビット
Sボックスを利用し、鍵によって使用する
Sボックスが選ばれます。
一方、特許番号3,796,830(1971年11月)のバージョンでは、64ビットの鍵と32ビットのブロックを扱います。この版では加算と4を法とする合同式演算を行い、1つの4ビット
Sボックスで4ビットずつ処理を行います。Luciferは、当時の
暗号実装としては非常にコンパクトな設計でした。
さらに、より強力なバージョンとして1973年に発表された
Feistel構造を基にしたLuciferがあり、128ビットの鍵と128ビットのブロックを使用します。この構造もSPNを利用しており、鍵によって
Sボックスのどちらを使用するかが決まります。
Sorkin版の特徴
1984年にSorkinによって記述されたバージョンは、DESと同様に16ラウンドの
Feistel構造を持ちますが、最初と最後の並べ替えは行われていません。ここでも鍵とブロックの長さは共に128ビットで、Feistel関数は64ビットのデータと64ビットの部分鍵を掛け合わせて操作します。このFeistel関数においては、任意のビットの交換操作を制御するためのICB(interchange control bits)も活用されます。
ブロックデータは8個のバイトに分けられ、それぞれにICBに従った形でビットの入れ替えが行われます。次に、二つの4×4ビットの
Sボックスを通過し、出力されたデータと部分鍵をXOR演算で組み合わせる「key interruption」のプロセスが行われます。処理の後に2段階の並べ替えを施して、セキュリティ強化が図られています。
鍵スケジュールと実装
鍵スケジュールのアルゴリズムは比較的シンプルで、128ビットの鍵を
シフトレジスタに読み込みます。ラウンドごとにレジスタの左半分が部分鍵として利用され、右側の8ビットがICBビットとなります。レジスタは毎ラウンドごとに56ビット左に回転します。
まとめ
Luciferは、1970年代初頭の
暗号技術の発展に大きく貢献した作品の一つであり、その後のDESの再設計においても重要な役割を果たしました。名前の由来は、ファイステルが開発していたプライバシーシステムの「Demonstration」から派生した駄洒落で、
暗号の構造や機能には革新的な要素が多く見受けられました。これらの技術は、現在の
暗号化技術にも多数影響を及ぼしています。