セキュリティ製品の基礎知識と導入手引き
【連載】情報セキュリティ運用の基礎知識
第1回 情報セキュリティの基盤技術としての暗号
野坂克征
シーフォーテクノロジー
2002/7/10
そもそも暗号とは何か? |
暗号を広義にとらえると、その意味する範囲は広く、例えば、DNAの構造などの解明を必要とする事象なども含むとされる。最近耳にする暗号とは、一般形式暗号をデジタルデータ向けに応用したもので、現代暗号と呼ばれている。コンピュータでは、すべての情報を0と1で表しており、現代暗号の基本要素も、0と1からなるデータを並べ替えたり置き換えたりする関数である。
■Column:暗号学における暗号の分類 根本的な暗号とは、主に、相手方に意思の伝達をする際に第三者に対して秘匿するものをいう。秘匿の方法は、伝達そのものを秘匿する秘匿通信と、伝達が奪われてもその内容を不明にする狭義の暗号とに大別される。前者は、特殊な変調方式を用いることで傍受側での復調を防ぐ方法で、電気通信でよく用いられている。一般的に暗号と呼ばれているのは後者の方である。
|
●共通鍵暗号
共通鍵暗号のしくみは至ってシンプルだ。まず、元のデータ(平文)を意味のわからないデータに変換(暗号化)する方法(暗号アルゴリズム)を選択する。次に、暗号化に使用する条件データを設定(暗号鍵の生成)し、先に選択した暗号アルゴリズムに基づいて、暗号化する。データの暗号化と復号化で同じ鍵を使用するため、「共通鍵(対称鍵)暗号」と呼ばれている。共通鍵暗号には、平文をブロック単位に分割してそれぞれに暗号処理を施すブロック暗号方式と、平文を小さい単位で逐次に暗号処理するストリーム暗号方式の2つの暗号方式がある。現在、主に採用されているのはブロック暗号方式だ。
●ブロック暗号の構造
ここでは、Feistel型共通鍵ブロック暗号「DES」を例に、ブロック暗号の構造を解説する。Feistel型は、入力を2分割し、片方がf(Function)に入力され、他方に影響を与える構造を繰り返す構造を持つ。fは、関数などにより構成される。DESは、その強度に問題があるとされながらも、いまだに使用され続けているアメリカの元標準暗号(現在のアメリカの標準暗号は「AES」*1)。
DESの暗号化のプロセスは次のとおり(図4)。
- 平文(2進法データ)を64ビットに分割する。
- IP(データ置換:Initial Permutation)部において、分割したデータをある決まりに基づいて転置する。
- 転置したデータを、左側L(L:Left)と右側R(R:Right)の各32ビットに分割する。
- fにおいて、データRと暗号鍵生分*2より送られた48ビットの鍵成分との合成から、32ビットの合成データを生成する。
- プロセス4で生成された合成データとLとで演算処理(2進法合成)を行い、次の段において鍵成分との合成対象となる次のRを生成する。
- この作業を16段行い、これをIIP(逆置換:Inverse Initial Permutation)で逆転置して、暗号文として出力する。
- 復号化においては、暗号プロセスは同順、乱数生成プロセスは逆順で行う。
図4 「DES」の構造 |
*1 AES(Advanced
Encryption Standard) 2000年9月、DESに変わる標準として、世界中の候補の中から「Rijndael」(ベルギーの暗号開発者Joan Daemen氏とVincent Rijmen氏が開発)が選ばれた。米国商務省標準技術局NISTは、2001年12月に、「Rijndael」を新しいコンピュータ通信向けの暗号化標準「AES」として採用したことを発表した。ブロック長は128ビット(「DES」、「トリプルDES」は64ビット)で、鍵長は128、192、256ビットから選択できる。 *2 暗号鍵成分 DESでは、平文を暗号化するために暗号鍵を使用する。決められた64ビットのデータ長からなる鍵は、暗号鍵生成側におけるプロセスによって16段の鍵要素となって生成され、データRとの合成を行う為に各段数ごとに暗号プロセス側へと送られる。 |
●そのほかのブロック暗号
DESのほか、一般的に知られているブロック暗号は、主に、ブロック長が64〜128ビット、鍵長が56〜256ビット、構造がFeistel型かSPN型またはその組み合わせとなっている。SPN(Substitution-permutation Network)は、入力を分割せず、S層(線形層)とP層(非線形層)で構成されるラウンド関数を繰り返す構造となっている。また、現在においても、モードの選択やSボックス(データ置換部)内の構造に種類を持たせるなどの特徴を持たせつつも、各開発者の定めた基準に基づいて、強度と速度のバランスを考慮した技術開発が行われている。
●ストリーム暗号
ストリーム暗号は、平文データをブロック単位に分割するのではなく、系列のまま処理を行う。暗号化に用いる鍵成分データは疑似乱数であり、疑似乱数生成器において入力された鍵要素と決定したアルゴリズムに基づいて生成される。平文と鍵成分とを演算処理することにより暗号データを出力し、復号はその逆となる。また、ストリーム暗号の構造は多種多様であり、ブロック暗号のDESのような代表的な構造は存在しない。
●公開鍵暗号
公開鍵暗号は、インターネット環境におけるより高い情報セキュリティを確保するために生み出された技術。その役目は、「守秘」「鍵共有」「相手認証」「署名」などだ。公開鍵暗号の暗号化対称は共通鍵暗号と同じく0と1で表される2進数データであり、元のデータを変換処理などで分からなくするという部分は同じだ。
公開鍵暗号は、暗号化に使った鍵では復号化できないため、暗号化用の鍵を公開しておくことができるという特徴を持っており、共通鍵と区別するためにこの名で呼ばれている。ここで使用される関数(厳密にいえば、機能を持たせるアルゴリズム「暗号スキーム」と安全性を有するアルゴリズム「暗号プリミティブ」と補助関数からなる)は、機能(上に挙げた4つの役目)重視のため暗号化速度が遅く、容量の大きなデータ本体の暗号化は共通鍵暗号にゆだねている。
●公開鍵暗号の種類
公開鍵暗号は、「RSA」「EPOC」などに代表される素因数分解の困難性(素因数分解問題)、「DSA」「DH」などに代表される離散対数の困難性(離散対数問題)、「ECDSA」「ECDH」などに代表される楕円曲線上の離散対数の困難性(楕円曲線上の離散対数問題)に分類される。素因数分解問題を用いる「RSA」は、十分な強度を持たせると暗号化に時間がかかるというデメリットがあるが、初期に登場したため、強度、速度ともに優れるとされる楕円曲線上の離散対数問題などよりも多くのプログラムに使用されている。
- 公開鍵暗号の機能1「守秘」
公開鍵暗号も暗号なので、独自の守秘機能はある。しかし速度が遅いため、大容量データの暗号化には向かないが、短い情報を暗号化して通信する場合には、公開鍵暗号を用いることがある。
- 公開鍵暗号の機能2「鍵共有」
鍵を共有できることは、公開鍵暗号の一番の特徴だ。鍵共有に代表される「DH鍵共有方式」の手順を以下に説明する。
- 利用するグループで共通な公開情報(公開鍵を生成するために必要なデータ)を生成し、各利用者に配布もしくは閲覧可能な状態にする。
- 利用者Aは、乱数で作られる秘密鍵(ASK)を生成する。
- 自分の秘密鍵と公開情報から自分の公開鍵(APK)を生成し、公開する。
- 利用者Bは、乱数で作られる秘密鍵(BSK)を生成する。
- 自分の秘密鍵と公開情報から自分の公開鍵(BPK)を生成し、公開する。
- 利用者A・Bは、相互に公開鍵を交換する。
- 利用者A・Bは、自分の秘密鍵と相手の公開鍵を計算し、その結果をお互いの共有鍵 とする。ここまでが「DH鍵共有方式」の手順だ。図5の手順9〜10は、「DH鍵共有方式」を使用した暗号データの通信例。
※補
・ASK(利用者Aの秘密鍵『Secret Key』)
・APK(利用者Aの公開鍵『Public Key』)
・BSK(利用者Bの秘密鍵『Secret Key』)
・BPK(利用者Bの公開鍵『Public Key』)
・CSK(共通鍵『Common Key』で暗号化した セッション鍵『Session Key』)図5 DH鍵共有方式と暗号データの通信例
- 利用するグループで共通な公開情報(公開鍵を生成するために必要なデータ)を生成し、各利用者に配布もしくは閲覧可能な状態にする。
- 公開鍵暗号の機能3「相手認証」
相手認証では、認証を受ける側と認証する側との間で、あらかじめ定められた手順に従って情報を送受信することで相手の認証を行う。つまり、なりすましがないことを検証する。相手認証は、個人認証と端末認証を含む。下記に記す2つの例は、認証の特徴を解説するために用いたもので、実際には、そのほかにさまざまな応用がされている。
- 相手認証のしくみ1(対称鍵の場合)
認証を要求する人P(Prover)と、認証する人V(Verifier)がいるとする。
1. 要求者Pは、認証者Vに認証を要求する。
2. Vは、乱数Rを生成し、Pに送る。
3. Pは、自分の鍵Kを送られてきた乱数Rで暗号化して、Vに送る。
4. Vは、Rで暗号化された鍵KをあらかじめV側で管理しておいたPの鍵Kで復号して、得られた結果と乱数Rとを照合して、Vが正当な相手であることを認証する。
- 相手認証のしくみ2(非対称鍵の場合)
要求者Aと要求を受ける側Bがいるとする。この場合、Aの公開鍵PKは公開されており、Aの秘密鍵SKはAのみが保管しているものとする。Bは、相手がAであることを認証する。
1. 要求者Aは、Bに認証を要求する。
2. Bは乱数Rを生成し、Aの公開鍵PKを乱数Rで暗号化したデータR'をAに送る。
3. Aは、送られてきたデータR'を自分の秘密鍵SKで復号し、復号したデータをBに送る。
4. Bは、Aから送られてきたデータと乱数Rとを照合して、Aが正当な相手であることを認証する。
- 相手認証のしくみ1(対称鍵の場合)
- 公開鍵暗号の機能4「署名」
署名とは、データを作成したのが自分であるということを証明する技術。仕組みは認証機能とほぼ同じだが、暗号化された通信情報に暗号化されたデータ(署名)が付いて送られるため、受信側は、通信情報の復号化を行う前に相手の身元を確認することができる。
ハッシュ関数の役目 |
インターネットを介する情報通信においては、共通鍵暗号、公開鍵暗号と組み合わせて使用される技術。ハッシュ関数も共通鍵暗号や公開鍵暗号と同じく0と1からなるデジタルデータを変換することに変わりはない。ハッシュ関数の役目は、データの改ざん防止。ハッシュ関数の利用される状況は、公開鍵暗号の署名とよく似ている。しかし、公開鍵に用いられている関数は、改ざん防止機能を持たないため、共通鍵暗号方式や公開鍵暗号方式で足りない機能を、ハッシュ関数の機能で補おうという発想からなる。
●ハッシュ関数による「改ざん防止」
ハッシュ関数は、ある任意の長さの入力データを、ある決まった長さのデータに(通常はより短く)変換する関数であるため、変換された値(ハッシュ値)から元の入力データを求めたり、同じハッシュ値を持つほかのデータを見つけ出すことが極めて難しいという一方向性の特徴を持っている。
具体的には、
- 送信側が情報とそのハッシュ値を暗号化したものを送る。
- 受信側は受け取った情報のハッシュ値を計算して得られた数値を同時に送られてきたハッシュ値と付け合わせる。数値が合致するか否かで、情報が改ざんされているか否かを検証することができる。
◇
以上で暗号に関する説明を終えるが、多少は暗号技術の知識が得られただろうか?
情報セキュリティ製品の基盤技術が理解できたところで、次回は、ローカル環境からメール通信環境における脆弱性と、その脆弱性の解消を目的とするアプリケーションとして販売および公開されている情報セキュリティ製品について解説していきたいと思う。
■参考文献
「基礎暗号学T」加藤正隆著(サイエンス社)
「現代暗号理論」岡本龍明・山本博資著(産業図書)
「現代暗号理論」池野真一・小山謙二共著(電子情報通信学会)
「インターネット時代の情報セキュリティ」佐々木良一・吉浦裕・手塚悟・三島久典共著
(共立出版)
「暗号と認証」(培風館)
「PKIハンドブック」小松文子他著(ソフトリサーチセンター)
■関連記事
技術解説:IT管理者のためのIPSec講座
電子政府に向け、諸外国の暗号製品規制調査を公開
RSAとオープンループ、共同で暗号ソリューション提供へ
開発者が押さえておくべきセキュリティ標準規格動向
|
||||||||||||||||||||||||||||
|
Security&Trust記事一覧 |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|