DNSSECは徐々に普及してきているものの、そのことがわれわれにとって何を意味しているのか、あるいは既存機器を継続して使用できるのかといったことはあまり話題に上っていない。そこで本記事では、こういった点について解説する。
DNSはインターネットを支える基盤技術となっている。DNSが危険であると断言できるわけではないものの、DNSからの応答に全幅の信頼を置くのは良い考えとは言えない。というのも、こういった信頼を悪用するDNSスプーフィングという手法が考え出されてしまっているためである。この説明だけではギークにしか理解できないということは筆者も承知している。このため、以下の例を読み進めていただきたい。
インターネットバンキングを使って資金移動を行うという例を考えてみよう。この場合、まずはブックマークに登録してある銀行のサイトを選択することになるはずだ。これで、その銀行のサイトがブラウザ上に表示される。その後、いつも通りにログインしてみると、何らかのエラーが発生したため、後でやり直してくださいというメッセージがサイトから返ってきた。さて、こんな時はどうすればよいのだろうか?
こういった場合、つい先ほどログインしたサイトが本当に銀行のサイトであると言い切れるのだろうか?実は現在のところ、確実にそう言うことはできない。そして、これは悪人たちにとって都合の良いことなのである。つまり、DNS情報を改ざんすることで、ユーザーを偽サイトへと誘導することが可能になっているわけだ。これによりユーザーは、その偽サイトにログインし、個人情報を入力してしまうことになる。
DNSSEC
IETFは1997年から、こういった不正な誘導行為が行われないようにするための方法を模索してきた。その彼らの生み出したソリューションがDNSSEC(Domain Name System Security Extensions)なのである。関連論文に目を通すと、どうやらこれは素晴らしいアイデアのようだ。
ただ、DNSSECの採用によって、われわれ、あるいはわれわれのSOHOや家庭内のネットワーク側でどういった対応が必要になるのかという点に関する情報は、ほとんど目にしないのが現状である。このため筆者は調査を行い、知っておくべきことを以下にまとめてみた。
#1:ルータの機能
ルータは、通常のDNSパケットよりも大きなサイズのパケットを処理できなければならない。というのも、新たな認証要求が必要となるため、DNSSECの応答サイズは、DNSが現在使用している512バイト長のUDPパケットよりも大きなものとなるためだ。これによって問題が引き起こされる可能性もある。一部のルータは、512バイトを超えるDNSパケットを拒否するようになっているからである。
またルータは、TCP/IPによるDNSSECの問い合わせを処理することができなければならない。UDPパケットのサイズの大きさが問題となる場合、DNSサーバはTCP/IPを用いてDNSSECの応答を送信するようになっている。このため、ルータがこの仕組みをサポートしていなければ、DNSへの問い合わせが正しく処理されないことになる。
さらに、ルータはDNSKEYやRRSIG、NSEC、NSEC3を正しく処理できなければならない。これらはいずれも、DNSSECのトラフィックを認証するために必要となるDNSの新たなリソースレコードである。周辺ルータはこれらの処理や、信頼の連鎖が途切れた際の処理を行えるようになっている必要がある。