これだけは知っておきたいアルゴリズム〜共通鍵暗号編デファクトスタンダード暗号技術の大移行(3)(2/3 ページ)

» 2006年05月20日 00時00分 公開
[神田雅透NTT情報流通プラットフォーム研究所]

主な128ビットブロック暗号

●AES

 AESプロジェクトにおいて安全性と処理性能の両面で最も優れた暗号としてDaemenとRijmenが提案したRijndael[参考文献3]をNISTが選抜し、DES/Triple DESに替わる米国政府標準暗号AESとして2001年にFIPS 197に登録したものである[参考文献4]。ブロック長128ビット、鍵長は128、192、256ビットに対応したSPN型128ビットブロック暗号である。

Rijndaelではブロック長も192、256ビットが選定できたが、AESでは128ビットだけに限定された


図1 SPN型暗号 図1 SPN型暗号

 安全性については、既存の各種攻撃手法に対して安全であることが数値的に評価されており、また実際に世界中の暗号研究者によって多くの攻撃がなされたものの、安全性上の問題点がいままでに指摘されたことはない。現在のところ、鍵長128ビットでは10段中7段、鍵長256ビットでは14段中9段までの攻撃結果がある[参考文献5]

ここでいう「段」とは、段関数の繰り返し回数のことを示す。鍵長128ビットのRijndaelの場合、10個ある段関数のうち、現時点では7番目の段関数までは攻撃可能であるが、8番目の段関数において「必要とされる安全性を確保できたレベル」、9番目と10番目の段関数は「セキュリティマージン」ということになる


 実装面では、全体的にパフォーマンスを重視した設計が行われており、利用環境に応じてソフトウェアでもハードウェアでも非常に効率的な実装が可能になっている。事実、PC上の処理速度は無論のこと、ICカードなどの少メモリ環境での実装性能およびハードウェアでの実装性能について、ほかのAES最終候補暗号と比較して明らかな優位性が認められた[参考文献6]。この点がRijndaelをAES winnerに選抜した最終的な決め手となった可能性が高い。

 なお、注意点としては、図1に示すようにSPN暗号の特性として暗号化と復号の処理が異なるため、実装によっては暗号化と復号の処理速度が大きく違うことがある。

●Camellia

 Camelliaは、2000年にNTTと三菱電機が共同で開発したFeistel型128ビットブロック暗号である[参考文献7]。鍵長は、AESと同じく、128、192、256ビットに対応している。

図2 Feistel型暗号 図2 Feistel型暗号

 安全性については、AESと同じように、既存の各種攻撃手法に対して安全であることが数値的に評価されており、また実際に世界中の暗号研究者によって多くの攻撃がなされたものの、安全性上の問題点がいままでに指摘されたことはない。現在のところ、鍵長128ビットでは18段中9段、鍵長256ビットでは24段中11段までの攻撃結果がある[参考文献8]

 実装面では、全体的にAESよりも安全性を重視した設計を行っていながら、利用環境に応じて使用する命令セットやメモリ使用量、S-boxの実現方法を適切に選択できる[参考文献9]ことが特徴として挙げられる。これにより、ソフトウェアでもハードウェアでも非常に効率的な実装が可能になっている。

 特に、Feistel暗号の特性として暗号化と復号の処理が同一手順であるため、ICカードのようなメモリ量が制限された環境や小型ハードウェア実装ではAESよりも一般には有利になる。

 2000年に開発されて以来、世界中の暗号研究者による徹底した評価を通じ、CamelliaはAESと並んで世界最高水準の安全性と処理性能を兼ね備えていることが実証されている。この点が国際的にも高く評価されており、ISO/IEC国際標準暗号や日本初のインターネット標準暗号にも選定されるなど、事実上日本を代表する128ビットブロック暗号として認められている。また実際に、官公庁や金融業界をはじめ、相当数のシステムですでに稼働しているほか、AESやTriple DESとともに政府系システムの必須仕様として採用されている。

 NTT はCamellia を日本発の最初の暗号技術として安全な高度情報流通社会全般を支える国際的な基盤技術に広めていくために、三菱電機の了解の下、基本特許の無償化を実施しており、特許無償許諾契約を締結しなくてもさまざまな製品やサービスにCamellia 基本特許を無償で利用できる。また、さらなるCamellia の普及・促進を図るために、NTT はCamellia の高速版オープンソース(C言語版とJava版)も無償で公開している[参考文献10]

●SEED

 SEEDは、1998年に韓国情報保護振興院(KISA)が開発したFeistel型128ビットブロック暗号である[参考文献11]。鍵長は128ビットにのみ対応している。

 韓国政府標準暗号として韓国情報通信標準規格KICSに指定されているほか、韓国通信・産業団体標準規格TTASにもなっている。このため、韓国内では、政府はもとより金融機関での標準仕様としても採用されているほか、690以上の企業、大学、研究所などで利用されている。

 技術的には、(1)鍵長が128ビットだけに限定される、(2)客観的な安全性評価が十分ではない、(3)PC上でのソフトウェア実装以外はそれほど高速ではないなど、AESやCamelliaよりも安全性・性能面ともに劣っている点がある。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。