第1回はDNSの仕組みとDNSSECについて解説しました。
第2回となる本稿では、DNSSECの仕組みのひとつである署名、そして署名に利用される鍵のひとつZSK(ゾーン署名鍵)について説明します。
DNSSECに利用される公開鍵暗号
DNSSECにはZSKとKSKの2つの鍵が利用されることを前回お伝えしました。どちらも公開鍵暗号という仕組みの鍵で、電子署名として利用されます。まずは公開鍵暗号について理解を深めましょう。
RSA暗号と電子署名
● DNSSECの電子署名に利用される暗号アルゴリズム
DNSSECの電子署名は複数の暗号アルゴリズムに対応しています。
http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml
本稿では比較的理解しやすく、また広く使われているRSA暗号を利用したケースを説明します。
● 閉める鍵と開ける鍵が異なる
RSA暗号では秘密鍵と公開鍵の2つの鍵が利用されます。
これらは暗号化と復号に使われますが、秘密鍵で暗号化したデータは公開鍵で復号することができ、公開鍵で暗号化されたデータは秘密鍵で復号ができるという特性があります。別の言い方をすれば暗号化に利用した鍵では復号することができません。
公開鍵は名前が示す通り利用者に公開され自由に利用できる鍵です。一方で、秘密鍵は公開鍵を作成した人が厳重に管理して外部に漏れないようにします
機密情報を送って欲しい場合は、秘密鍵と公開鍵のペアを作成し相手に公開鍵を送ります。そして相手から公開鍵で暗号化した機密情報を送ってもらいます。
仮に悪意を持つ人が公開鍵を取得し、暗号化された機密情報を傍受したとしても復号できません。公開鍵で暗号化された機密情報は、もう一方の鍵である秘密鍵でなければ復号できない(極めて困難である)からです。
● 秘密鍵で暗号化して電子署名とする
機密情報をやり取りするのであれば前述の通り、公開鍵で暗号化して秘密鍵で復号する必要があります。しかしその逆の処理、つまり秘密鍵で暗号化し公開鍵で復号するケースがあります。それは電子署名です。
まず秘密鍵と公開鍵のペアを作成し、公開鍵を誰でも取得できるようにします。
相手にデータを送る際、そのデータを秘密鍵で暗号化して署名として付与します。
署名付きのデータを受け取った人は署名を公開鍵で復号します。署名を復号すると暗号化する前の情報、つまり取得したデータと同等の情報が得られます。これにより2つのことがわかります。
まず1つは公開鍵を公開している人が送信したデータであるということ。手に入れた公開鍵で復号できるのはペアとなる秘密鍵で暗号化されたデータだからです。秘密鍵は公開鍵を公開している人が厳重に管理しているはずなので、秘密鍵で暗号化できる人、すなわち公開鍵を公開している人が送信したデータであると考えられます。
そしてもう1つは通信途中でデータが改ざんされていないことです。データを改ざんしたとしても、署名という形で暗号化されたデータを同じように改ざんすることはできません。そのため、データと署名を復号したときのデータで不一致が発生し、署名の検証に失敗します。
このように署名の検証に成功すると、得られたデータが改ざんされていないことが分かります。この役割を果たすのがZSK(ゾーン署名鍵)です。
ZSKだけでは足りない信頼性
ZSKがあればDNSの問い合わせをした先のサーバの応答であること、そして応答データが改ざんされていないことが分かります。しかしこれだけでは安全とは言えません。
●問い合わせ先の権威DNSサーバが信頼できるものとは限らない
「example.com」のDNS情報を応答するのは「example.comゾーン」の情報を持つ権威DNSサーバです。その権威DNSサーバ情報は上位の「comゾーン」の権威DNSサーバからの応答で知ることになります。つまり上位ゾーンの権威DNSサーバの応答を改ざんすることができれば、「example.comゾーン」を持つ不正な権威DNSサーバへ誘導することが可能です。
●権威DNSサーバは他者のドメインのゾーンファイルを作成することができる
不正な権威DNSサーバへ誘導されたとしても、それらは「example.com」のドメインを管理する権限を持たないサーバです。「example.com」のDNS問い合わせを受けた場合にDNSの応答をすることが可能でしょうか。
答えは”可能”です。
権威DNSサーバは他者のドメインに対するゾーンファイルを作成、管理することができます。上位のゾーンから委任されていないため通常はそれらのゾーンの応答をすることはありません。しかし、何らかの理由で本来の委任先ではない不正な権威DNSサーバへDNSの問い合わせを行った場合、それらの権威DNSサーバから悪意のあるDNS情報を受け取る可能性があります。
●権威DNSサーバは勝手に作成した他者のドメインに対するゾーンファイルに署名することができる
前述の通り「example.com」のドメインを管理する権限を持たない権威DNSサーバであっても「example.comゾーン」を作成することが可能です。さらに秘密鍵、公開鍵を生成し勝手に作成した「example.comゾーン」に署名することもできます。
KSKを利用して権威DNSサーバの正当性を検証する
ZSKは問い合わせ先が変わっていないことや応答したDNS情報が改ざんされていないことを検証することができます。しかし問い合わせ先がもともと不正であった場合には効果がありません。そこで利用されるものがDNSSECのもうひとつの鍵「KSK(鍵署名鍵)」です。
第2回目の本稿では電子署名とZSKの役割について説明しました。
次回はKSKの役割について説明します。
=====================================
>>CDNetworksのサービス全般についてはこちら
>> お問い合わせ、ご相談はこちら
株式会社シーディーネットワークス・ジャパン
TEL:03-5909-3373(営業部)