検索
特集

IT管理者のためのIPSec講座技術解説(2/3 ページ)

アプリケーションに依存せずに暗号通信が行える「IPSec」が注目を集めている。そこで、本稿ではIPSecの仕組みを解説する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 IPSecの解説に入る前に、暗号化通信の仕組みについて、簡単におさらいしておこう。暗号化通信では、通信に先だって「暗号鍵」と呼ばれるものを通信相手同士で交換しなければならない。暗号鍵とは、例えば、「1101101....」といった長さが数十ビットから1000ビット程度のデータ(ビット列)である。暗号鍵は当事者以外には絶対に漏らしてはならないものであり、また簡単に推測されるようなものであってもならない。たとえば、暗号鍵が2ビットであった場合、4通り鍵を試しただけで、暗号が解読できてしまう。こうした総当り的な暗号解読を防ぐためにも、暗号鍵の長さは重要となる。一般に暗号の強度は、暗号鍵の長さによって決まり、長いほど解読が難しいとされている。とはいえ、暗号鍵が長いと暗号化、復号化に要する計算量、時間が長くなるので、用途に応じた適度な長さのものを使用するべきであろう。

 送信側は、送ろうとするデータに対して、受信側と交換した暗号鍵を使って暗号化を行う。「暗号化」とは、データと暗号鍵を使って行う、ある種の計算である。一方、受信側の方では、受け取ったデータを暗号鍵で復号化することで、元の内容を得ることになる。復号化は、暗号化の逆の計算をしていると思えばよい。この計算方法(暗号化アルゴリズム)によって、各種の暗号化方式のバリエーションが存在するわけだ。暗号化していれば、仮に通信経路の途中で通信内容を盗み見る第三者がいたとしても、その内容は意味のないデータにすぎなくなる。従って、暗号化することによって、通信の当事者以外の第三者に対して、通信の内容を秘匿することができるのである。

■暗号化通信の種類

 暗号化通信の方法には、「共有鍵暗号方式」と「公開鍵暗号方式」の2種類に大別できる。共有鍵暗号方式とは、暗号化と復号化とで同じ暗号鍵を使う暗号化方式である。鍵の生成は、通信の送信側/受信側のどちら側で行ってもよいが、得られた鍵を通信相手同士で共有するために、鍵の受け渡しが必要となる。もし受け渡しの途中で外部に漏洩したりすれば、通信の秘密が守れなくなってしまうので、暗号鍵の交換には細心の注意が必要である。共有鍵暗号方式の暗号化アルゴリズムとしては、「DES(Data Encryption Standard)」が代表的である。IPSecには、この共有鍵暗号方式が採用されている。

共有鍵暗号方式と公開鍵暗号方式の違い

共有鍵暗号方式では、生成した暗号鍵を送信側と受信側の両方で使用する。そのため、鍵を第三者に渡らないように注意しなければならない。一方の公開鍵暗号方式では、同時に公開鍵と秘密鍵の2つの暗号鍵を生成し、公開鍵を送信側に渡し、その鍵を使って暗号化を行ってもらう。その暗号文は秘密鍵でのみ解読が可能だ。公開鍵は多くの人に渡してもいいが、秘密鍵は第三者に渡らないように注意しなければならない。


 もう一方の公開鍵暗号方式とは、暗号化と復号化とで別々の暗号鍵を用いる方式である。公開鍵暗号方式では、通信の受け手側で2つの暗号鍵が生成される(この2つの鍵はまったく無関係ではなく、ある数学的な法則に基づいて関連付けられている)。そのうちの1つは「秘密鍵」と呼ばれ、生成した側で保管、使用する。秘密鍵は、絶対に第三者に渡してはならない鍵であり、通信の受信者だけが知っているべき鍵である。もう1つは「公開鍵」と呼ばれ、公表してもかまわない。どのような方法でも、とにかく通信相手である送信側に渡せばよい。データを送る場合には、まず通信相手の公開鍵を使ってデータを暗号化し、それを通信相手に送ればよい。公開鍵で暗号化された内容は、同時に生成された秘密鍵でなければ復号化ができない仕組みになっているので、正当な受信者以外には通信内容が分からない。ただし、双方向の通信を行うためには、通信相手が相互に鍵の生成と受け渡しを行う必要がある。公開鍵暗号方式の代表的な暗号化アルゴリズムとしては、RSA(考案者のRivest、Shamir、Adlemanの3人の頭文字を取ったもの)が有名だ。

通信のセキュリティには「完全性の確保」と「認証」も必要

 通信のセキュリティを確保するためには、通信内容を暗号化しさえすればよいと考えがちだが、実際はそれだけでは不十分だ。暗号化は、あくまでも通信の「機密性」を満たすだけであり、通信内容を隠すだけの役割しか持っていない。セキュリティを考えた場合、さらに「完全性の確保」と「認証」という条件を満たす必要がある。完全性の確保とは、通信内容が通信途中の経路上で改変されることなく、元の内容のまま通信相手に届くことが保証されることである。もし、途中で改変されている可能性があるとしたら、その通信内容を信じることができないのは明らかだ。同様に、通信の相手が確かに意図した相手本人であることが確実でなければ、その通信内容が無意味なものであることも分かるだろう。そのために、通信相手が意図した本人であることを確実にするための「認証」という仕組みが重要になるわけだ。

 加えて暗号化通信では、暗号鍵の取り扱いも問題になる。例えば、ここで解説するIPSecで使う共有鍵暗号方式は、暗号鍵を共有している当事者同士しか通信内容は分からない。ということは、逆にいえば、仮に第三者が暗号鍵を入手してしまうと、通信内容が分かってしまうということでもある。暗号鍵が第三者に渡るようなことがあれば、暗号化は無意味になってしまうのである。ここで冒頭の説明を思い出していただきたい。暗号化通信を行うためには、事前に暗号鍵を当事者の間で交換しなければならない。これを「鍵交換」といい、このために利用されるプロトコルを「鍵交換プロトコル」という。この鍵交換を安全に行うにはどうすればよいのだろうか? 暗号鍵の交換前には暗号による通信はできない。かといって、暗号鍵をそのまま平文のメールで送るなどというのは論外である。何のための暗号化なのか分からなくなってしまうからだ。安全な通信の前には安全な暗号鍵の交換を行うための仕組みが、さらに必要となるのである。

IPSecの仕組み

 IPSecは、インターネットに関する各種のプロトコルなどの標準化組織であるIETF(Internet Engineer Task Force)が標準化を進めている、暗号化通信方式の標準規格である。IPSecの特徴は、単に特定のアプリケーションによる通信だけを暗号化するのではなく、ホストから送信されるあらゆる通信を、IPレベルで暗号化できるというところにある。ユーザーが暗号化通信を行っていることを意識することなく、またアプリケーションの種類に左右されることなく、安全な通信が可能になるのだ。

 またIPSecでは、利用する具体的な暗号化アルゴリズムなどをあえて特定せず、あらゆる暗号を利用できるような柔軟な枠組みを提供している点も特徴といえる(下表「IPSecで利用可能な暗号化アルゴリズム」)。これは、どんなに強固な暗号であっても、コンピュータの計算能力の向上によって、次第に安全とはいえなくなってしまうことを踏まえての方針である。これにより、IPSecではそれ自体の仕組みを変えることなく、使用する暗号アルゴリズムの種類を変更することで、将来にわたって使い続けられる設計になっている。なお、前述のようにIPSecは、暗号化方式として共有鍵暗号方式が採用されている。これは、公開鍵暗号方式より共有鍵暗号方式のほうが、暗号化・復号化の速度が高速であるためだ。

アルゴリズム IPSecので取り扱い
DES-CBC 実装が必須とされている
3DES-CBC 実装はオプション(多くのIPSec製品が実装)
CAST-128 実装はオプション
RC-5 実装はオプション
IDEA 実装はオプション
Blowfish 実装はオプション
IPSecで利用可能な暗号化アルゴリズム

IPSecの特徴

 IPSecの通信時に実際に使う暗号化アルゴリズムと暗号鍵であるが、これらはあらかじめ手動で設定しておくか、あるいは通信の開始直前に行われる通信相手とのネゴシエーション(事前の折衝)の段階で動的に決定、交換が行われる。ネゴシエーションの過程で、相互に使用可能な暗号化アルゴリズムの提示が行われ、最終的に双方で利用可能な方法に落ち着くようになっている。このとき、最低限DESだけは利用可能としておくことが仕様上、必須とされている。使用する暗号化アルゴリズムが決定されると、次はその暗号化アルゴリズムに対応した暗号鍵の交換が行われる。

 一連のネゴシエーションの結果として、お互いの間で得られた暗号化アルゴリズムや暗号鍵に関する合意は、「SA(Security Association)」と呼ばれる。このSAの確定と同時に、SAと関連付けされた「SPI(Security Pointer Index)」と呼ばれる32ビットの整数値が割り当てられる。SPIは暗号化通信で各パケット中に挿入され、パケット内の通信内容がどのような暗号化アルゴリズムで暗号化されたのか、どの暗号鍵を使うのかといったことを示すガイドとなる。

 SPIを各パケットに挿入するのは、ホストが同時に複数の相手と暗号化通信を行うことがあるからだ。このとき、それぞれの相手と個別にネゴシエーションを行うため、それぞれの通信で使用する暗号化アルゴリズムや暗号鍵などのSAが異なってしまう。そのため、パケットを受信するたびに、暗号化アルゴリズムと暗号鍵を照合する必要がある。そこで、パケット内のSPIを検索キーのように使って、必要な情報を引き出すようにしている。SPIの値は、この値から暗号化アルゴリズムや暗号鍵が推測できないように、暗号化通信の開始時に任意のものが割り当てられ、値の意味がネゴシエーションを行った当事者者同士以外には分からないように工夫されている。

IPSecの通信の段取り

まず、後述のIKEによりIPSecによる暗号通信につかう暗号方式や暗号鍵などについての情報のやり取りを行う。この作業も2段階になっており、盗聴が行われていても、解読ができないような工夫がなされている。


 このような工夫により、盗聴者がパケットを盗み見ただけでは、暗号を解読する以前に、一体どの暗号を使っているのかすら分からないようになっている。このようにパケット内に直接暗号化アルゴリズムなどに関する情報を記述しないことも、IPSecの特徴の1つである。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る