暗号解読とストリーム暗号
共通鍵暗号の安全性
暗号は評価されなければならない。評価されない暗号はその安全性を議論、検証できない。暗号を評価するためには、暗号化関数の詳細、すなわち暗号アルゴリズムを公開する必要がある(図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について解説する。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 暗号とは何か、何であるべきか
- 暗号解読からわかる本当の安全・安心
- WEPの解読方法を知る!
- ブロードバンドタワー、クラウド環境向けのセキュリティサービス群を発表
- Sophos、SSHサーバを標的としたDoSボットネット活動に関する警告を発表
- データベースに関わる暗号化を考える
- Kinectで結成したマイ・ダンスチームを、サンプルを見ながら実際の背景に合成してみよう
- クライアントポリシーを利用したKeycloakの設定方法と、FAPIリファレンス実装の紹介
- Kinectの音声認識を使って、プレイヤーを分離、結合させるデモを試してみる
- Kinectで距離カメラの値を取得して、指定した距離で人物が背景に溶け込むサンプル