図1 DNSSECのしくみ 電子署名によって正しいDNSサーバーからの回答であることを証明する。DNSキャッシュ・ポイズニングなどの攻撃を防ぐ。
図1 DNSSECのしくみ 電子署名によって正しいDNSサーバーからの回答であることを証明する。DNSキャッシュ・ポイズニングなどの攻撃を防ぐ。
[画像のクリックで拡大表示]

 DNSSECとは,DNSサーバーから送られてくるIPアドレスとホスト名の対応情報の信頼性を証明するセキュリティ拡張機能である。DNSキャッシュ・ポイズニングのようなDNS応答のなりすまし攻撃を防ぐためのものだ。DNSキャッシュ・ポイズニングとは,DNSサーバーに一時的に保存(キャッシュ)してあるホスト名とIPアドレスの対応情報を偽の情報に書き換える攻撃のことである。この攻撃を受けると,ユーザーのWebブラウザは偽のWebサイトに誘導されてしまう。

 DESSECでは,応答を送信するDNSサーバーが秘密鍵を使って応答に署名し,受信する側が公開鍵で検証する(図1)。秘密鍵を持っていないと正しく署名を付けられないので,署名の検証によって偽の応答を検知できる。通常のDNSサーバーは通信相手の認証手段を持たないため,DNSSECに対応することで,その機能を持たせることができる。

 ただし,DNSSECには運用上の課題が指摘されている。例えば,署名の検証に使う公開鍵を正しいサーバーのものであることを確認するための運用方法だ。自分の公開鍵が正しいことを証明するために,上位のDNSサーバーが署名することになるが,上位のDNSサーバーにどのように安全に公開鍵を届けるのか,最上位の署名は誰が担当するのかといった問題を解決しなければならない。また,各階層のDNSとそのキャッシュ・サーバーすべてをDNSSEC対応にする必要がある。

 最近になって,DNSSECの本格的な実装が始まった。2009年7月,日本レジストリサービス(JPRS)が2010年中をめどに,DNSSECをJPドメインのDNSに展開すると発表した。具体的には「co.jp」,「jp」,「ne.jp」といったJPドメインへのDNSSECを実装する。これまでなかなか実現されなかったDNSサーバーのセキュリティ対策がついに本格化しそうだ。