Camellia
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Camellia(かめりあ)とは、2000年にNTTと三菱電機により共同開発されたブロック暗号である。名称の由来は植物のツバキ(学名:Camellia japonica)。
目次 |
[編集] 概要
CamelliaはFeistel構造を採用したブロック長128ビットのブロック暗号で、鍵長としてAESと同じ128ビット、192ビット、256ビットの3つを選択できる。 また、CamelliaはAESと同等の安全性を保ちつつハードウェアでの低消費電力で高速な暗号化・復号に優れている。 Camelliaは欧州のNESSIEプロジェクトが選定した暗号アルゴリズム、日本のCRYPTRECが作成した「電子政府推奨暗号リスト」、S/MIME(RFC3657)、XML-Encryption(RFC4051)、SSL/TLS(RFC4132)、IPsec(RFC4312)の標準暗号として採用されている。
[編集] 構造
Camelliaの入出力インタフェースはAES互換で、ブロック長は128ビット固定、鍵長は128 / 192 / 256ビットの3つを選択できる。
全体構造は、AESではSPN構造が採用されたのと違い、DESと同じFeistel構造を採用している。ラウンド段数は、鍵長が128ビットのときは18段、192ビット, 256ビットのときは24段で、6段毎に「副変換部」と呼ばれる全単射関数 FL と FL-1 が挿入されている。また、最初と最後に whitening (拡大鍵との排他的論理和)が設けられている。
ラウンド関数はバイト(8ビット)を単位とした処理になっていて、拡大鍵との排他的論理和の後、8ビット入力-8ビット出力のSボックス(4種類ある)と、FEALにも似た阿弥陀籤型のP関数によって構成される。Sボックスは4種類あるが、テーブル1つと、入出力のビットシフト等の組合せで実装することもできる。
鍵スケジューラは、ラウンド関数2段で、鍵を"暗号化"して中間鍵を生成し、中間鍵の一部分を取り出すことで拡大鍵を作り出す。具体的には中間鍵をラウンド毎に定義された分だけシフトして、右64ビット(または左64ビット)を取り出す。CamelliaはFeistel構造を採用して、暗号化と復号の違いはラウンド関数等で使用される拡大鍵の順番のみになるように設計されている。そこで鍵スケジューラは、拡大鍵を1番目から順番に求めることも、最後から逆順に求めることも、どちらも同様な手間で実現できるように設計されている。
[編集] 性能
開発者や第三者による実装報告によると、パソコンで使用されている汎用CPUでは1Gbps、専用LSIでは2Gbpsを超えるスループットがある。
一方、組込み機器で使用される8ビットCPUなどの処理能力が低いプロセッサでも、極端なメモリサイズ増加は生じなく、ハードウェア実装した場合には、暗号化と復号や鍵スケジューラで回路を共用できることで10Kゲート以下でも実装可能であることが確認されている。
[編集] ソフトウェア実装
- 組込み機器等での性能(8bit CPU)
- 7.19 msec(ENC) / 7.51 msec(DEC) - Z80(5MHz), ROM 1,268byte, RAM 60byte (NTT)
- 5.68 msec(ENC) / 1.03 msec(KeyGen) - Z80(), ROM 1,698byte, RAM 63byte (NTT)
- 10.22 msec(ENC/DEC) - 8051(12MHz), ROM 990byte, RAM 32byte (1st NESSIE Workshop)
- パソコンなどでの性能(32/64bit CPU)
- 1,134.6 Mbps - Intel Pentium 4(3.2GHz), Windows XP SP2, 鍵長128ビット (Oda,et.al, SCIS 2006)
- 1,158.8 Mbps - AMD Athlon 64 3500+ Winchester(2.2GHz), Windows XP 64bit edition, ビットスライス実装, 鍵長128ビット (Fukuda,et.al, SCIS 2006)
[編集] ハードウェア実装
- 専用LSIでの性能(ASIC)
- 325.76 Mbps - IBM 0.13μm, 6,511unit, Loop arch, 鍵長128ビット(Satoh,et.al, ISC 2003)
- 2,154.88 Mbps - IBM 0.13μm, 29,809unit, Loop arch, 鍵長128ビット(Satoh,et.al, ISC 2003)
- 汎用LSIを用いたときの性能(FPGA)
- 128.58 Mbps - Xilinx VirtexE, 908 Slice, Loop arch, 鍵長128ビット(Satoh,et.al, ISC 2003)
- 393.24 Mbps - Xilinx VirtexE, 2,833 Slice, Loop arch, 鍵長128ビット(Satoh,et.al, ISC 2003)
[編集] 安全性
Camelliaは解読可能なラウンド数と最低限安全性を保てるラウンド数を元にした指標であるセキュリティーマージンにて1.8~2.0という評価がある。一方、AESのセキュリティーマージンは1.25~1.4であり、この点ではAESよりも安全だといえる。 これに加え、CamelliaはNESSIEにおいてAESと同等の安全性と効率を兼ね備えているという評価もされている。
[編集] 歴史
- 2000年3月10日 Camelliaの公開:NTTと三菱電機による共同開発がニュースリリースされる。
- 2001年4月17日 Camelliaの基本特許の無償化が宣言される。
- 2003年2月20日 「電子政府」における調達のための推奨すべき暗号(電子政府推奨暗号リスト)に Camellia も推奨される。
- 2003年2月27日 欧州の暗号評価プロジェクトNESSIEにて、128ビットブロック暗号として、AESと共に Camellia も選定される。
- 2005年7月15日 国際標準規格ISO/IEC 18033 Part3 の128ビットブロック暗号に、他の2つの暗号(AES、SEED)と共に Camellia も採用される。(5月27日にニュースリリース)
- 2005年7月20日 SSL/TLS、S/MIME、XMLなどの標準規格で、暗号方式として Camellia が追加される。
- 2006年4月13日 Camelliaのオープンソースが公開される。
[編集] 関連項目
[編集] 外部リンク
- Camellia公式サイト
- RFC 3713 — A Description of the Camellia Encryption Algorithm
- RFC 3713(日本語訳)— Camellia暗号アルゴリズムの説明