ドメインネームシステムセキュリティ拡張(DNSSEC)

DNSSECは「Domain Name System Security Extensions」の略称で、DNSサーバーが提供する情報の真正性を確保するために設計された拡張プロトコルです。公開鍵暗号方式とデジタル署名を活用し、従来のDNSプロトコルに存在するセキュリティ上の脆弱性に対処します。1983年に開発されたDNSは、ドメイン名(ホスト名)をIPアドレスに変換するシステムですが、堅牢なセキュリティメカニズムが欠如していると指摘されてきました。重大な脆弱性の1つは、DNSキャッシュポイズニング攻撃を受けやすいことです。

DNSインフラストラクチャは、主に次の2種類のサーバーで構成されます。

  1. DNSコンテンツサーバー(権威DNSサーバー):実際のドメイン情報を管理します。
  2. DNSキャッシュサーバー(ネームサーバー):クライアントに代わってコンテンツサーバーに問い合わせ、応答を指定された期間キャッシュに一時保存します。これにより、以降の同様のリクエストに対して、再度問い合わせることなく応答できます。

悪意のあるデータや誤ったデータがキャッシュに保存されると(「キャッシュ汚染」)、DNSキャッシュサーバーがクライアントに誤ったIPアドレスを返し、不正なサイトへリダイレクトする可能性があります。このような意図的な悪用は、DNSキャッシュポイズニングと呼ばれます。これは、サーバー間のDNS通信で、送信元を検証しないステートレスなUDPプロトコルが使用されているために発生します。攻撃者は、正規のリクエストに合わせて偽装した応答パケットを巧妙なタイミングで送信し、キャッシュポイズニングを実行します。

DNSSECは、暗号技術による検証を導入することで、この問題を軽減します。権威DNSコンテンツサーバーは、秘密鍵と公開鍵からなる暗号鍵のペアを生成します。クエリに応答する際、サーバーは秘密鍵を使用してDNS応答に署名します。DNSキャッシュサーバーは応答を受信すると、公開鍵を使用してデジタル署名を検証します。このプロセスにより、データの完全性と真正性が確保され、DNSキャッシュポイズニング攻撃を効果的に防止できます。