DNSSECとは?署名によるDNS応答の信頼チェーンを解説

DNS応答に電子署名を付けて改ざんの有無を検証するDNSSECの仕組みを順番に見ていきましょう。

通常のDNSが抱えていた問題

通常のDNS応答には電子署名がありません。そのため通信の途中で偽の応答を紛れ込ませるキャッシュポイズニングやDNSスプーフィングを受けると、端末は偽の応答を本物だと信じて偽のサーバーに接続してしまう可能性があります。

DNSSECが行うこと

DNSSEC(DNS Security Extensions)は各DNS応答に電子署名を付け、その応答が本物のドメイン所有者によるもので、途中で改ざんされていないことを検証できるようにする仕組みです。内容を隠す暗号化ではなく、改ざんの有無を確認する整合性・出所の認証技術である点がポイントです。

中心となるレコード:DNSKEY・RRSIG・DS

DNSKEYはゾーンの公開鍵を格納し、RRSIGは各レコード集合に対する電子署名を格納します。DS(Delegation Signer)は上位ゾーンに登録され、下位ゾーンの鍵が本物であることを保証する役割を持ちます。

「存在しない」ことも署名で証明する

「このレコードは存在しません」という応答自体も偽装され得るため、NSECやNSEC3レコードが署名付きで「存在しない」ことを証明します。これにより攻撃者が存在しないサブドメインを勝手に作り出すことができなくなります。

信頼チェーン:ルートからドメインまで

ルートゾーンがトップレベルドメイン(TLD)の鍵に署名し、TLDがさらに各ドメインの鍵に署名するという形で信頼が連鎖していきます。ルートまで続くこの署名チェーンを検証することで、途中のどの段階も改ざんされていないことを確認できます。

DNSSECでは防げないこと

DNSSECは通信内容自体を暗号化しないため、問い合わせ内容そのものを隠したい場合はDoH(DNS over HTTPS)やDoT(DNS over TLS)が必要です。また、すべてのドメインがDNSSEC署名を導入しているわけではなく、署名されていないドメインではこの保護を受けられません。

自分のドメインのDNSSECを確認する方法

LinuxやMacではdigコマンドに+dnssecオプションを付けることで、応答にRRSIGレコードが含まれているか確認できます。オンラインのDNSSEC解析ツールに自分のドメインを入力すれば、署名チェーンが途切れずに検証できるかを視覚的に確認することもできます。

暗号化ではなく整合性の証明である

DNSSECについて最もよくある誤解は、暗号化技術だと思ってしまうことです。DNSSECが証明するのは応答が本物で改ざんされていないことであり、どのドメインを調べたかという事実自体を隠すことはできません。内容の機密性を確保したい場合は、DoHやDoTという別の仕組みが必要です。

導入状況にはまだばらつきがある

DNSSECはドメイン所有者とレジストリの双方が正しく設定して初めて有効になるため、インターネット上には署名されていないドメインもまだ多く存在します。署名がないこと自体が危険信号というわけではありませんが、その分だけキャッシュポイズニングやスプーフィングに対するこの保護を受けられないということになります。

よくある質問

DNSSECを使うと問い合わせ内容も暗号化されますか?

いいえ。DNSSECは応答が改ざんされていないことを証明する整合性・出所認証の技術であり、問い合わせ内容そのものを隠す暗号化技術ではありません。内容を暗号化したい場合はDoHやDoTが必要です。

すべてのドメインがDNSSECで保護されていますか?

いいえ。DNSSECはドメイン所有者とレジストラが別途設定して初めて適用される、いわば任意の機能なので、署名されていないドメインも依然として多く存在します。