インターネットの重要な基盤技術の1つであるDNSに対して新たな攻撃手法が公開され、その安全性が脅かされている。DNSにセキュリティ機能を提供するための技術であり、普及が進んでいるDNSSECについて、仕組みと運用方法を紹介する。(編集部)
第1回で説明したとおり、DNSSEC(Domain Name System Security Extensions:DNSセキュリティ拡張)を導入すれば、DNSの応答が「本当に正しい」ことを検証できる。
「本当に正しい」とは、どういう状態を意味するのだろうか? 正しいことを検証するには、以下の2つの事項を検証できればよい。
・データの出自認証(Data origin authentication)
→ゾーンの管理者が登録したとおりの内容であること
・データの完全性(Data integrity)
→通信途中で応答が書き換えられたり、応答の一部が損失したりしていないこと
DNSSECの機能は、従来のDNSの仕組みを拡張する形で実装しており、従来のDNSと上位互換性を保っている。具体的な仕組みは後述するが、DNSSECに対応した権威DNSサーバおよびゾーンの検証は、キャッシュDNSサーバなどの受信側で可能になる。これにより、第1回で説明したDNSキャッシュポイズニングのような脅威を防止する。また、検証を行うか否かは受信側で決定できる。
一方、DNSSECでは、以下の機能までは提供しない。
DNS登録情報はあくまで公開情報であるため、暗号化はそもそも不要だ。
また、ユーザーの見間違いや入力間違いによる攻撃を防止する機能は提供しない。これらは、人の目で見るとよく似たドメイン名、紛らわしいドメイン名であるが、DNSの仕組みからいえば「正しい」ドメイン名である。これらへの対処も、DNSSECがカバーする範囲ではない。
DNSSECは、セキュリティ技術の1つであるデジタル署名(電子署名)をDNSに適用できる形にし、使用している。
デジタル署名は、データ受信側で、本当にそのデータは送信者が送ったデータであるかを検証できるようにするための仕組みで、公開鍵暗号を応用している。
公開鍵暗号は、データの暗号化と復号に、一組でペアとなる鍵を用いる暗号方式である。鍵の作成者が一方の鍵(秘密鍵)を保持し、もう一方の鍵(公開鍵)を外部に公開しておくことで、外部の送信者は安全に受信者(鍵の作成者)にデータを送ることができる(図1)。
公開鍵暗号の特徴としては、一方の鍵で暗号化したデータはそのペアとなるもう一方の鍵でしか復号できないこと、一方の鍵を基にペアとなるもう一方の鍵を推測するのが難しいことが挙げられる。
デジタル署名でデータを検証する際には、公開鍵暗号で用いられる鍵ペアを応用して、図2のような動作を行う。
デジタル署名のポイントは2つある。
1つ目のポイントは、送信者本人しか持たない秘密鍵を使ってデータを暗号化することである。こうして暗号化されたデータは、ペアとなる公開鍵でしか復号できない。つまり、そのデータが、「本当にその送信者が暗号化したデータである」ということが保証できる。
2つ目は、データのハッシュ値を暗号化することである。データそのものを暗号化するよりも暗号化や復号にかかる負荷を軽減できる。
【関連記事】
5分で絶対に分かるPKI
http://www.atmarkit.co.jp/fsecurity/special/02fivemin/fivemin00.html
PKIの基礎を理解しよう
http://www.atmarkit.co.jp/fnetwork/rensai/pki01/pki01.html
それでは、デジタル署名をDNSのやりとりに当てはめてみよう。図3はデジタル署名の動作原理をDNSの応答に置き換えたものである。
権威DNSサーバは自身の秘密鍵で管理するゾーン情報に署名し、一方のキャッシュDNSサーバなどの受信側はそのペアとなる権威DNSサーバの公開鍵を用いて、権威DNSサーバからの応答に対して検証(Validation)を行う。これがDNSSECの基本原理である。
注1:あるデータを入力することで、そのデータを代表する一定の値を出力する関数をハッシュ関数と呼び、出力された一定の値をその関数のハッシュ値と呼ぶ。
Copyright © ITmedia, Inc. All Rights Reserved.