Camellia

Camelliaとは、2000年にNTTと三菱電機により共同開発されたブロック暗号である。名称の由来は植物のツバキ。

CamelliaはFeistel構造を採用したブロック長128ビットのブロック暗号で、鍵長としてAESと同じ128ビット、192ビット、256ビットの3つを選択できる。また、CamelliaはAESと同等の安全性を保ちつつハードウェアでの低消費電力で高速な暗号化・復号に優れている。

1. 構造
-----

Camelliaの入出力インタフェースはAES互換で、ブロック長は128ビット固定、鍵長は128 / 192 / 256ビットの3つを選択できる。

全体構造は、AESではSPN構造が採用されたのと違い、DESと同じFeistel構造を採用している。ラウンド段数は、鍵長が128ビットのときは18段、192ビット・256ビットのときは24段で、6段毎に「副変換部」と呼ばれる全単射関数FLとFL-1が挿入されている。また、最初と最後にホワイトニングが設けられている。

ラウンド関数はバイトを単位とした処理になっていて、拡大鍵との排他的論理和の後、8ビット入力-8ビット出力のSボックスと、FEALにも似たあみだくじ型のP関数によって構成される。Sボックスは4種類あるが、テーブル1つと、入出力のビットシフト等の組合せで実装することもできる。

鍵スケジューラは、ラウンド関数2段で、鍵を"暗号化"して中間鍵を生成し、中間鍵の一部分を取り出すことで拡大鍵を作り出す。具体的には中間鍵をラウンド毎に定義された分だけシフトして、右64ビットを取り出す。CamelliaはFeistel構造を採用して、暗号化と復号の違いはラウンド関数等で使用される拡大鍵の順番のみになるように設計されている。そこで鍵スケジューラは、拡大鍵を1番目から順番に求めることも、最後から逆順に求めることも、それぞれ、どちらも同様な手間で実現できるように設計されている。

2. 安全性
------

Camelliaは解読可能なラウンド数と最低限安全性を保てるラウンド数を元にした指標であるセキュリティーマージンにてAESを上回る1.8～2.0を確保している。これに加え、CamelliaはCRYPTRECおよびNESSIEにおいてAESと同等の安全性と効率を兼ね備えているという評価もされている。

3. 性能
-----

開発者や第三者による実装報告によると、パソコンで使用されている汎用CPUでは1 Gbps、専用LSIでは2 Gbpsを超えるスループットがある。

一方、組込み機器で使用される8ビットCPUなどの処理能力が低いプロセッサでも、極端なメモリサイズ増加は生じず、ハードウェア実装した場合には、暗号化と復号や鍵スケジューラで回路を共用できるため10,000ゲート以下でも実装可能であることが確認されている。

3.1. ソフトウェア実装
-------------

組込み機器等での性能
7.19 msec  / 7.51 msec  - Z80 , ROM 1,268バイト, RAM 60バイト 
5.68 msec  / 1.03 msec  - Z80 , ROM 1,698バイト, RAM 63バイト 
10.22 msec  - 8051 , ROM 990バイト, RAM 32バイト 
パソコンなどでの性能
1,134.6 Mbps - Intel Pentium 4 , Windows XP SP2, 鍵長128ビット 
1,158.8 Mbps - AMD Athlon 64 3500+ Winchester , Windows XP 64-Bit Edition, ビットスライス実装, 鍵長128ビット 

3.2. ハードウェア実装
-------------

ASIC
325.76 Mbps - IBM 0.13 μm, 6,511 unit, Loop arch, 鍵長128ビット 
2,154.88 Mbps - IBM 0.13 μm, 29,809 unit, Loop arch, 鍵長128ビット 
FPGA
128.58 Mbps - Xilinx Virtex-E, 908 Slice, Loop arch, 鍵長128ビット 
393.24 Mbps - Xilinx Virtex-E, 2,833 Slice, Loop arch, 鍵長128ビット 

4. 歴史
-----

2000年3月10日 Camelliaの公開：NTTと三菱電機による共同開発がニュースリリースされる。
2001年4月17日 Camelliaの基本特許の無償化が宣言される。
2003年2月20日 日本の暗号評価プロジェクトCRYPTRECによる電子政府推奨暗号リストにCamelliaも推奨される。
2003年2月27日 欧州の暗号評価プロジェクトNESSIEにて、128ビットブロック暗号として、AESと共にCamelliaも選定される。
2005年7月15日 国際標準規格ISO/IEC 18033 Part 3の128ビットブロック暗号に、他の2つの暗号と共にCamelliaも採用される。
2005年7月20日 SSL/TLS、S/MIME、XMLなどの標準規格で、暗号方式としてCamelliaが追加される。
2006年4月13日 Camelliaのオープンソースが公開される。
2006年11月8日 OpenSSLにCamelliaが追加される。
2007年6月7日 FreeBSD ProjectがCamelliaへの対応を発表する。
2008年6月17日 ウェブブラウザとして初採用したMozilla Firefox 3がリリースされた。
2013年3月1日 CRYPTRECによって改訂された電子政府推奨暗号リストに、日本初のブロック暗号として唯一Camelliaが推奨される。

5. 標準化
------

Camelliaは、欧州のNESSIEプロジェクトや日本のCRYPTRECが作成した「電子政府推奨暗号リスト」に採用されている。

また、TLS/SSLやIPsecをはじめとして、IETFやISO/IECなど多くの標準化団体に採用されている。主な標準化実績は以下の通りである。

CRYPTREC
NESSIE
IETF
アルゴリズム
3713}}: A Description of the Camellia Encryption Algorithm
5528}}: Camellia Counter Mode and Camellia Counter with CBC-MAC Mode Algorithms
S/MIME
3657}}: Use of the Camellia Encryption Algorithm in Cryptographic Message Syntax 
XML暗号化
4051}}: Additional XML Security Uniform Resource Identifiers 
TLS/SSL
4132}}: Addition of Camellia Cipher Suites to Transport Layer Security 
5932}}: Camellia Cipher Suites for TLS
6367}}: Addition of the Camellia Cipher Suites to Transport Layer Security 
IPsec
4312}}: The Camellia Cipher Algorithm and Its Use With IPsec
5529}}: Modes of Operation for Camellia for Use with IPsec
OpenPGP
5581}}: The Camellia Cipher in OpenPGP
RSA-KEM in CMS
5990}}: Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax 
PSKC
6030}}: Portable Symmetric Key Container 
スマートグリッド
6272}}: Internet Protocols for the Smart Grid
ISO/IEC
ISO/IEC 18033  Information technology -- Security techniques -- Encryption algorithms -- Part 3: Block ciphers
ITU-T
security mechanisms and procedures for NGN 
RSA Laboratories
approved cipher in the PKCS#11
TV-Anytime Forum
approved cipher in TV-Anytime Rights Management and Protection Information for Broadcast Applications
approved cipher in Bi-directional Metadata Delivery Protection

6. 脚注
-----

7. 関連項目
-------

ブロック暗号
共通鍵暗号
暗号理論

8. 外部リンク
--------

[2]
[3]
3657}} Use of the Camellia Encryption Algorithm in Cryptographic Message Syntax 
3713}} A Description of the Camellia Encryption Algorithm
日本語訳：[4]
4051}} Additional XML Security Uniform Resource Identifiers 
4132}} Addition of Camellia Cipher Suites to Transport Layer Security 
4312}} The Camellia Cipher Algorithm and Its Use With IPsec
5528}} Camellia Counter Mode and Camellia Counter with CBC-MAC Mode Algorithms
5529}} Modes of Operation for Camellia for Use with IPsec
5581}} Certification of Camellia Cipher as IETF standard for OpenPGP
5932}} Camellia Cipher Suites for TLS
5990}} Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax 
6030}} Portable Symmetric Key Container 
6272}} Internet Protocols for the Smart Grid
6367}} Addition of the Camellia Cipher Suites to Transport Layer Security 
[5] Information technology -- Security techniques -- Encryption algorithms -- Part 3: Block ciphers