FEAL(Fast Data Encipherment Algorithm)
FEALは、
1987年にNTTの清水明宏氏と宮口庄司氏によって提案された64ビット
ブロック暗号です。開発当初からDES(
Data Encryption Standard)の代わりとなることを目指しており、Feistel構造を採用しています。最初に発表されたのはFEAL-4で、ラウンド数は4、鍵長は64ビットでした。その後、1988年にはFEAL-8、1990年には可変ラウンド数のFEAL-N及び鍵長128ビットのFEAL-NXが登場しました。
構造と設計
FEALの特徴的な点は、ソフトウェアでの効率的な実装を考慮して設計されていることです。従来の
Sボックスやビット単位の転置を避け、あみだ構造のラウンド関数を使用しています。これにより、8ビット単位の簡易な算術演算やシフト演算のみが用いられ、CPUでの実行が容易になるよう工夫されています。このアプローチによって、FEAL-8は8ビットCPU上での処理速度において、DESを上回ることが可能です。
あみだ構造は入力をランダムに散らし、安全性を高める役割も果たしています。設計者たちは、この構造がデータの攪拌効果を持ち、データの安全性を確保すると信じていました。しかし、公開から間もなく、様々な
暗号解読の試みが行われ、特に
線形解読法や
差分解読法の発展に寄与しました。
鍵とラウンド関数
FEALでは、各ブロックに対して最初と最後に拡大鍵との豪論理和(XOR)を行い、さらに左32ビットと右32ビット間のXOR操作を用いた更新が行われます。ラウンド関数は拡大鍵16ビットを使用し、32ビットの入力を
スクランブルし32ビットの出力を生成します。これにより、同じ32ビット内での8ビット単位の演算が繰り返され、出力の多様性が確保されています。
性能
FEAL-32Xは、古いZ80 CPU(5MHz)で6169ステート(51.8kbps)の速度が得られ、Pentium III(650MHz)では117.8Mbpsもの処理を行うことができます。このような性能が認知され、一定期間の実用に供されましたが、その安全性に関する懸念も高まっています。
安全性の分析
FEAL-4は、
線形解読法により、5つの既知平文から解読が可能であるとされています。その報告書では、FEAL-NXについても同様に、
差分解読法を用いれば31ラウンドまで解読可能としており、
線形解読法は25ラウンドまでの解読を可能としています。これにより、FEAL-32Xが2^99の計算量で解読可能であると示されました。さらに、
CRYPTRECの報告では、FEAL-32Xが学術的に解読される可能性があるため、長期使用には不向きとされています。
参考文献
- - Eli Biham, Adi Shamirによる「Differential Cryptanalysis of Feal and N-Hash」
- - Bert den Boerによる「Cryptanalysis of F.E.A.L.」
- - Henri Gilbert, Guy Chasséによる「A Statistical Attack of the FEAL-8 Cryptosystem」
- - 以上のように、FEALはその設計の目的とは裏腹に、多くの脆弱性が発見され、その後の暗号技術の進展において重要な研究対象となりました。