宮川 寧夫
DNS(Domain Name System)は、インターネット上で相手先を特定する手段として、IPアドレスよりも身近な手段であり、重要なインフラストラクチャとなっている。このようなインフラストラクチャを構成するDNSサーバに対しては、昨年来、いわゆる「キャッシュ毒盛り(cache poisoning)攻撃」が現実のものとなってしまい[1]、これに対する対策が注目を集めている。
ここに言う「キャッシュ毒盛り攻撃」とは、不正なDNS応答を送ることによって、偽のリソース・レコードをフルサービス・リゾルバとしてのキャッシュ・サーバに受け取らせる種の攻撃である。この攻撃によって、ユーザが正しいドメイン名でアクセスしても、偽のサーバにアクセスするようにされてしまう。
この種の攻撃の最初の実演は、1997年にEugene Kashpureffによってなされた[2] が、2008年 8月に Dan Kaminskyによって、より高い確率で再現可能であることが示された。
この効率化された攻撃法についての対策としては、短期的な対策と長期的な対策が挙げられる。まず、短期的な対策としては、ソースポートのランダム度およびクエリIDのランダム度の確保等が挙げられる。一方、本格的な長期的対策としては、DNSSEC(DNS Security Extension)プロトコルがインターネット全域にわたって配備される必要があることが認識されている。このDNSSECプロトコル仕様においては、DNSサーバが受け取るリソース・レコードにはディジタル署名が施されるので、その真正性とインテグリティを検証できるようになる。
しかし、DNSSECは、全世界的に未配備な状態にある。DNSSECは、現在、運用されているDNSに整合的に配備されることを要するため、その配備は一朝一夕には進まず、最終形を見据えつつ段階的なものとならざるをえない。
今期、米国の連邦政府において、DNSSECの配備に先立つ環境整備に関する動きが見られたので、ここに報告する。
PKI X.509技術との類似点
PKI X.509技術分野においては、ディジタル署名は各主体に発行されるX.509証明書に対してなされ、X.509証明書には発行対象(サブジェクト)が期待されるとおりにふるまう期待・信頼が表現される。その発行対象が認証局である場合、さらにX.509証明書が発行されるので、信頼関係が連鎖することになる。このような信頼関係が連鎖する構図の模式的な表現が、PKI X.509技術分野においては「トラストモデル」と呼ばれている[3]。
DNSSECにおいても、複数の主体間においてディジタル署名が利用されるが、X.509証明書としては利用されていない。DNSSEC におけるディジタル署名の利用法であるDelegation Signer方式は、RFC 3658[4] において規定されている。DNSSEC においてもトラストモデルを描くとすれば、それは、図1のように、一見、階層型PKIのものと同様になる。
DNSSECとPKIを見比べると、ユーザ寄りの最後の1ホップは、クライアント/サーバ・モデルのシステムとなっていることも似ている。ただし、クライアントとしてのスタブ・リゾルバが、直近のDNSサーバから順にDNSサーバにアクセスする処理は、PKIにおける証明書パスの検証処理とは異なる。
ちなみに、DNSSECの運用における代替手段を確保する際に、PKIのX.509証明書を活用することは有効な手段となり得る。現に、DNSSEC配備が進んでいるスウェーデンにおいても、X.509サーバ証明書が補完的な代替手段として配備されている[2]という。

図1:DNSSECにおけるトラストの連鎖と階層型PKIのトラストモデル
PKI X.509技術との相違点
しかし、両者はX.509証明書の利用の有無以外にも異なる側面ももつ。一定時点に描くトラストモデルの図には表現されないことであるが、長期的な時系を考慮すると両者間には目指すモデルの相違があり、ここでは下記の2点として説明する。
[注1] かつて「DNS上のグローバルPKI(Global PKI on DNS?)」のアイディアについて議論されたことがあった[5] が、現実的なものとはされず、支持されなかった。
DNSSECの段階的な配備のためには、各サイトレベルの配備経験も必要となる。
米国の連邦政府においては、商務省がDNSSECの配備について率先している[6]。今期、GovSec 2009 [7] という連邦政府システム関係者向けの展示会と研修機会を兼ねるイベントにおいてDNSSEC関連のプロジェクトが紹介された。
とりわけNISTによる活動が注目されるが、これはCSD(Computer Security Division)によってではなく、ANT(Advanced Network Technologies Division)によって率先されている。
(1) .govのサブドメインにおけるテストベッド:SNIP Project
SNIP(Secure Naming Infrastructure Pilot)[8] は、NISTのANT、スパルタ社およびDHS(Dept. of Homeland Security)による共同プロジェクトである。dnsops.govというサブドメインにテストベッドが構築されており、連邦政府機関のシステム管理者用に分散トレーニング環境が提供されている。トラストモデルとしては、最終的なではないが、システム管理者がDNSSEC環境に慣れ、現在のDNS操作に対する影響を知ることに意義がある。
SNIPプロジェクトの創設の後ろ盾となっている法律としては新FISMA(Federal Information Security Management Act)がある。この法律のもとで、すべての連邦政府機関が実装しなければならないセキュリティコントロールが指定されている。新しいコントロールのひとつとして「.govドメインのゾーン情報へのDNSSECの配備」が掲げられている。SNIPは、各システム管理者が、この新しいコントロールに対応することを支援するために、指定されている。
標準のネットワークの接続性に加えて、SNIPサーバは、IPv6対応のInternet2との接続を可能にしている。これは、dnsops.govゾーンにIPv4とIPv6の両を通して到達可能にする。これは、またシステム管理者にとって興味深いIPv6移行問題を検討する機会を提供することになる。ちなみに 2048 bit のRSAがKey Signing Keyに採用されている。
(2) 支援ツールの提供:DNSSEC-Tools
DNSゾーン運用管理アプリケーション、DNS配備用ネットワーク管理アプリケーション、DNSデバッグ用アプリケーション、各種ライブラリ(パッチ、プラグイン、ラッパー、モジュールおよび拡張)がDNSSEC-Tools [9] として開発された。これらは、DNSSECの利用を容易にするためにSPARTA社によって開発され、BSDライセンスが採用されている。
[注2] 米国政府関連の動きとは別に、7月に入ってから OpenDNSSECプロジェクト[10] もディジタル署名機能関連のツールのプレビュー版のソースコードを提供するようになった。
(3) 支援ドキュメントの提供
NISTが、SP 800-81として、"Secure Domain Name System (DNS) Deployment Guide“ [11]という文書を2006年5月に提供している。
この文書は、各サイトへの DNSの配備のためのガイドである。DNSの世界的な分散システムであるという性格上、守秘性の観点は問題とされないが、発信元認証とインテグリティの観点からのセキュリティが設定される必要があり、本書はBINDによる DNSSECの設定について扱っている。また、本書は、サービス妨害対策も含んでいる。
[注3] 本書の改訂版のドラフトが2009年8月26日に公表された。
DNSSECは、究極的には全世界的な階層型のトラストモデルが構築されるように配備していく必要があるが、それに先だってサブドメインとしてのDNSSECのテストベッド環境を構築することには、システム管理者がDNSSEC技術に慣れる意義がある。またDNSSECの利用を支援するソフトウェアが、自由なライセンスのもとで配布されるようになってきた。
わが国においても同様なDNSSEC配備について、環境整備的な活動から着手する必要があろう。
以上
| [1] | IPA(独立行政法人 情報処理推進機構),「DNSキャッシュポイズニングの脆弱性に関する注意喚起」(最終更新日:2009年2月6日), |
| [2] | グレン・マンスフィールド,太田 耕平,「DNSSEC技術動向」『情報セキュリティ技術動向調査(2008 年下期)タスクグループ報告書』 |
| [3] | RFC 5217, "Memorandum for Multi-Domain Public Key Infrastructure Interoperability" |
| [4] | RFC 3658, “Delegation Signer (DS) Resource Record (RR)”(2003年) |
| [5] | ` Global PKI on DNS?’, IETF mailing list(2002年6月8日) |
| [6] | DEPARTMENT OF COMMERCE, "Enhancing the Security and Stability of the Internet's Domain Name and Addressing System" |
| [7] | GovSec 2009(2009年3月11日〜12日開催) |
| [8] | SNIP(Secure Naming Infrastructure Pilot) |
| [9] | DNSSEC-Tools, |
| [10] | OpenDNSSEC |
| [11] | NIST SP 800-81, "Secure Domain Name System (DNS) Deployment Guide“ |