什麼是 DNSSEC?理解網域安全擴充套件與數位簽章機制
2008 年 7 月,資安研究員 Dan Kaminsky 發現了 DNS 系統中一個驚人的致命漏洞,讓攻擊者能在幾秒鐘內默默將全球任何網站的流量導向偽造的伺服器。
那場幾乎摧毀網際網路信任的漏洞
當你在瀏覽器輸入網址時,電腦會透過 DNS 查詢把域名轉換成數字 IP 位址。如果想複習這個基礎過程,可以參考我們關於網域運作原理的完整說明。傳統 DNS 協議是在 1983 年設計的,當時的網路環境相當封閉,因此沒有加入任何身份驗證或加密機制。
在 Kaminsky 發現的漏洞(CVE-2008-1447)出現之前,DNS 快取伺服器只能依賴隨機的 16 位元交易 ID(Transaction ID)來比對回應。攻擊者只需要對 DNS 伺服器發射大量偽造的回應封包,總能猜中正確的 ID。一旦猜中,DNS 伺服器就會把假的 IP 位址寫入快取,導致接下來數萬名存取該網站的使用者全部被導向釣魚網站。
這種攻擊被稱為 DNS 快取污染(Cache Poisoning)。由於封包表面上完全合規,受害使用者與伺服器對此毫無察覺。這種攻擊模式通常與 IP 偽造技術結合,成為極具破壞力的網路武器。
為了徹底解決這個問題,網際網路工程任務組(IETF)在 RFC 4033、RFC 4034 與 RFC 4035 標準中,完善了名為 DNSSEC(Domain Name System Security Extensions)的安全擴充套件。
DNSSEC 的核心原理:數位簽章
DNSSEC 並不會加密你的網路查詢內容。如果你的目標是防止網路服務商或第三方竊聽你瀏覽了哪些網址,那是 DNS over HTTPS 的工作範疇。
DNSSEC 的唯一使命是證明真實性:確保你收到的 DNS 回應確實來自該域名的擁有者,且內容在傳輸過程中完全沒有被竄改過。
它的運作方式基於非對稱加密技術(非對稱金鑰密碼學)。域名擁有者使用私鑰為自己的 DNS 紀錄進行「數位簽章」;而全世界的 DNS 解析伺服器則利用公開發布的公鑰來驗證這個簽章。
在深入瞭解各類 DNS 紀錄之前,我們可以先看看驗證流程如何在各層級伺服器之間進行。
當解析伺服器接收到 IP 回應時,它會同時收到相應的簽章資料。只要簽章驗證通過,就能確定該 IP 沒有被中途竄改。
拆解 DNSSEC 的關鍵紀錄類型
DNSSEC 並沒有改變原本的 A 紀錄、AAAA 紀錄或 MX 紀錄,而是引入了幾種全新的 DNS 紀錄類型來承載密碼學資料:
- RRSIG(Resource Record Signature):這就是數位簽章本身。權威伺服器會將相同類型的紀錄打包成資源紀錄組(RRset),並用私鑰對該資料組進行簽章,生成 RRSIG 紀錄。
- DNSKEY:存放用於驗證簽章的公鑰。通常分為金鑰簽署金鑰(KSK)與紀錄簽署金鑰(ZSK)。
- DS(Delegation Signer):存在於上一級網域(例如 .com 或 .tw)的紀錄,裡面包含了下一級網域 DNSKEY 的雜湊值(Hash),用來建立跨層級的信任傳遞。
- NSEC / NSEC3:用於證明「某個域名不存在」。傳統 DNS 回傳「不存在」時很容易被偽造,NSEC3 透過密碼學雜湊證明該區間內確實沒有相應紀錄。
這套機制要求每個層級都必須為下一層級背書。
信任鏈與根金鑰簽署儀式
如果每個人都能自己發布公鑰,攻擊者難道不能偽造金鑰嗎?這就是「信任鏈(Chain of Trust)」發揮作用的地方。
當你查詢 example.com 時:
- 權威伺服器提供
example.com的 RRSIG 與 DNSKEY。 - 解析伺服器向
.com頂層網域伺服器查詢example.com的 DS 紀錄,確認這把公鑰是否經過頂層網域認可。 - 同樣地,解析伺服器再向「根網域(Root Zone)」查詢
.com的 DS 紀錄。 - 最後,信任鏈終點來到了網際網路的最高頂點:根金鑰(Root Key)。
根金鑰的安全性由 ICANN 嚴格把關。ICANN 每季都會舉辦一次極度嚴密的「根金鑰簽署儀式(Root KSK Ceremony)」。來自全球的資安專家會聚集在具備物理防空洞級別的安全設施中,使用硬體安全模組(HSM)來管理根金鑰。
2018 年 10 月 11 日,ICANN 完成了歷史上首次根金鑰滾轉(Root KSK Rollover),成功將舊的金鑰更換為強度更高的新密鑰,整個過程影響了全球數十億人的網路連接。
這套龐大的金鑰管理架構確保了從頂層到底層無可挑剔的真實性。
DNSSEC 防護範圍與侷限
DNSSEC 解決了網路基礎建設中最關鍵的信任問題,但它並非萬靈丹。
| 防護目標 | DNSSEC 能否防範 | 說明 |
|---|---|---|
| DNS 快取污染 | 可防範 | 攻擊者無法偽造有效的 RRSIG 簽章 |
| 中間人竄改 DNS 回應 | 可防範 | 任何修改都會導致數位簽章驗證失敗 |
| DNS 查詢隱私洩漏 | 無法防範 | DNSSEC 封包仍為明文,需搭配 DoH 或 DoT |
| 釣魚網站(使用相同網址) | 無法防範 | 若攻擊者直接入侵網站伺服器,簽章仍為合法 |
| 分散式阻斷服務(DDoS) | 無法防範 | DNSSEC 甚至會因為封包變大而增加被放大的風險 |
理解這些邊界,有助於建構更完善的網路安全防禦策略。
為何 DNSSEC 的全面普及如此緩慢?
儘管 DNSSEC 規範早在 2005 年就已成熟,但根據 APNIC 的統計,截至 2024 年,全球支援 DNSSEC 驗證的解析器比例僅約在 35% 到 40% 之間。
普及緩慢的主要原因在於維護成本與設定風險:
- 設定失誤代價極高:如果域名管理員忘記定期滾轉金鑰,或是 DS 紀錄更新不及時,驗證失敗的解析伺服器會直接拒絕解析,導致整個網站從網路上「消失」。
- 封包膨脹問題:附加了密碼學簽章後,DNS 回應的封包體積大幅增加,容易超越傳統 UDP 的 512 位元組限制,迫使系統回退到 TCP 連線,增加了伺服器負擔。
儘管如此,隨著各國政府與金融機構將 DNSSEC 列為資安合規標準,DNSSEC 正逐步成為現代網路基礎設施不可或缺的安全基石。