暗号解読とストリーム暗号

2009年2月9日(月)
森井 昌克

共通鍵暗号の安全性

 暗号は評価されなければならない。評価されない暗号はその安全性を議論、検証できない。暗号を評価するためには、暗号化関数の詳細、すなわち暗号アルゴリズムを公開する必要がある(図2-1)。

 しかし第1回で述べたように、暗号アルゴリズムを秘匿することで暗号の強度を保つことは非常に困難である。つまり、暗号が国家機密でなく、民生用に用いられる現在、非常に特殊な用途で利用し、かつ多大なコストをかけない限り、暗号アルゴリズム、すなわち暗号化関数fの詳細を秘匿することは不可能なのである。

 事実、WEPに用いられているRC4と呼ばれる暗号方式も、当初、その暗号アルゴリズムは公開されておらず、極秘事項であった。しかしながら、その秘密事項は漏えいすることとなり、今では公知のアルゴリズムとなっている。

 また暗号化関数を公開する理由の1つに、「トラップドア」の存在がある。トラップドアとは、暗号開発者が独自に、暗号が簡単に解読できる仕掛けを講ずることである。ゲームソフトで言うところの「隠しコマンド」に相当する。よってソースコードや設計回路を含めて、暗号化関数を公開しなければ、利用者にとって、どのような仕掛けがされているかわからない。広い意味での安全性に対する大きな脅威になり得るのである。

 また、安価に大量に暗号器を作るためにも、暗号化関数の詳細を公開し、その安全性を鍵のみに依存させることが現在では前提となっている。

ストリーム暗号

 WEPはRC4と呼ばれるストリーム暗号を利用した無線LAN暗号化方式である。一般にストリーム暗号では、疑似乱数生成器を利用し、そこから得られる疑似乱数系列を用いて暗号化する。すなわち、暗号化鍵から疑似乱数生成器の初期値を設定し、その初期値から疑似乱数系列を発生する。

 ストリーム暗号では、暗号化鍵(復号鍵)や初期化ベクトル(IV:Initialization Vector)をシード(初期値)として「キーストリーム」と呼ばれる任意長の疑似乱数系列を生成する。鍵だけをシードに選ばない理由は、シードが同じならば、同一の疑似乱数系列を発生することとなり、鍵を毎回変更しなければ容易に平文が推定されるからである。

 このキーストリームZと平文Pの排他的論理和をとることで暗号文Cを導出する。また復号の際には暗号文CとキーストリームZの排他的論理和をとることで元の平文Pを得ることができる(図2-2)。

 ストリーム暗号の疑似乱数生成アルゴリズムは一般に2つの機能から構成される。1つは暗号化鍵や初期化ベクトルを用いて疑似乱数生成器の内部状態を初期化するアルゴリズム、もう1つは内部状態を更新しながらキーストリームを生成するアルゴリズムである。前者は「鍵スケジューリングアルゴリズム(KSA:Key Scheduling Algorithm)」、後者は「疑似乱数生成アルゴリズム(PRGA:Pseudo-Random Generation Algorithm)」と呼ばれる。

 次は、ストリーム暗号方式の暗号の1つであるRC4について解説する。

神戸大学大学院
1989年大阪大学大学院工学研究科博士後期課程通信工学専攻修了、工学博士。現在、神戸大学大学院工学研究科教授。インターネット、符号理論、ネットワークセキュリティー、暗号理論等の研究/教育/開発に従事。著書に「新しい暗号技術とその情報セキュリティへの応用」、「食の安全性徹底検証」、「インターネットプロトコルハンドブック」など。http://srv.prof-morii.net/~morii/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています