カメリア (Camellia)
カメリアは、
2000年にNTTと
三菱電機が共同で開発した
ブロック暗号であり、その名は
ツバキ(Camellia属)に由来しています。この
暗号は、128
ビットのブロック長を持ち、鍵長としてはAESと同様に128
ビット、192
ビット、256
ビットを選択することが可能です。カメリアは、Feistel構造を採用しており、
ハードウェアにおいて低消費
電力で高速な
暗号化と復号ができる点が大きな特長です。
構造
カメリアの入出力インターフェイスはAES互換であり、ブロック長は固定で128
ビットです。また、鍵長は128、192、256
ビットの3種類があります。この
暗号は、AESが採用しているSPN構造とは異なり、DESと同じFeistel構造を用いて設計されています。鍵長が128
ビットの場合には18ラウンド、192
ビットまたは256
ビットの場合には24ラウンドの処理が行われます。たびたび全単射関数FLとその逆関数FL-1が挿入され、最初と最後にはホワイトニングが使われています。
各ラウンド関数は、8
ビット単位で処理が行われ、拡大鍵との
排他的論理和(XOR)を行った後、
Sボックスを用いた8
ビット入力から8
ビット出力を生成します。
Sボックスは4種類あり、それにより多様な処理を実現しています。鍵のスケジューリングは、2段のラウンド関数で行われ、
暗号化されて生成された中間鍵の一部を使って拡大鍵が作成されます。これにより、
暗号化と復号の処理が統一され、ラウンド関数で使用される拡大鍵の順番のみに焦点を当てて設計されています。
安全性
カメリアは、解読に必要なラウンド数と最低限の安全性を維持するラウンド数に基づいたセキュリティーマージンにおいて、AESを上回る1.8~2.0を確保しています。このため、
CRYPTRECおよび
NESSIEでもAESと同等の安全性と効率性が評価されています。
性能
実装報告によると、一般的なパソコンの
CPUを使用した場合、カメリアは1 Gbps、専門のLSIを用いる場合には2 Gbpsを超える
スループットを達成しています。また、組込み機器で使われるような8
ビットCPUでも、広範なメモリ消費を引き起こすことなく、
ハードウェア実装することで
暗号化や復号の処理が行えます。この場合、10,000ゲート以下でも実装可能であることが確認されています。
ソフトウェア実装
特に組込み機器でのパフォーマンスは興味深く、8
ビットCPUでの実行時間は次のように報告されています:
- - Z80 (5 MHz): 暗号化 7.19 msec / 復号 7.51 msec
- - 8051 (12 MHz): 暗号化・復号 10.22 msec
このように、パソコン等の32
ビットまたは64
ビットCPUでも高い性能を示し、1,134.6 Mbpsや1,158.8 Mbpsを達成しています。
歴史
カメリアの公開は
2000年3月に行われ、その後2001年には基本特許の無償化が宣言されました。2003年には日本の
暗号評価プロジェクトである
CRYPTREC及び欧州の
NESSIEにおいて、推奨
暗号として認定されました。さらに、2005年には国際標準規格に採用され、2006年にはオープンソースとして公開されるなど、多くの進展がありました。
標準化
カメリアは、
NESSIEや
CRYPTRECの「電子政府推奨
暗号リスト」など、さまざまな標準化団体に採用されています。特に、IETFやISO/IECなどの標準化基準にも則しており、SRMやCMS等でもその利用が進められています。
以上のように、カメリアは安全性、速度、効率性を兼ね備えた重要な
暗号アルゴリズムであり、さまざまな分野で利用されています。