ICANN(Internet Corporation for Assigned Names and Numbers)是全球網域名稱系統(Domain Name System,DNS)的管理者,其使命之一便是「維護DNS的安全、穩定及靈活性」。為履行這個使命,ICANN始終從多個面向盡力維護DNS的安全,除了防治域名濫用等相關努力,ICANN也希望從根本,也就是DNS基礎建設上保護全球DNS使用者的安全。網域名稱系統安全擴充程式(Domain Name System Security Extension,DNSSEC)就是這樣的技術,但DNSSEC要發揮功能,實質上保護DNS與使用者,仍須仰賴相關方共同的努力。
有鑑於此,ICANN技術長辦公室(Office of the Chief Technology Officer,OCTO)特地發布《DNSSEC:保護DNS的安全》報告(DNSSEC: Securing the DNS),說明DNSSEC如何運作、DNSSEC的好處,以及如何建置DNSSEC,期能進一步推動DNSSEC全球部署普及率,加強DNS的安全、穩定及靈活性。
什麼是DNSSEC
任何使用網際網路或連網裝置的人,無論是否知情,都會使用到DNS。以最簡化的概念來解釋,DNS的任務是透過搜尋(lookup)或解析(resolution)的自動化流程,配對人腦容易記得的域名(如example.com)和電腦使用但人類難以記住、由數字組成的網際網路協定(Internet Protocol,IP)位址(如192.0.2.189或2001:DB8:107A:61F7),藉此將使用者送達正確目的地。
我們也可將DNS理解為網際網路上的路標:有了路標,我們才知道如何循路前往目的地。但是,若有惡意人士刻意置換路標或更改路標方向,我們就會走錯路,甚至可能到達危險的地方。DNSSEC可以防止上述情形發生,確保我們不會偏離正確的道路。
DNSSEC如何運作
當一個人或組織註冊取得域名後,這個人或團體就會成為這筆域名的註冊人。透過DNSSEC,註冊人可以數位簽署持有域名的相關資訊,在此同時,來自其他客戶端(如使用者網頁瀏覽器)的查詢在取得回應後,也會因為回應中含有註冊人的數位簽章,從而確認回應正確無誤,沒有中途被人掉包偷換過。
2010年,ICANN在DNS根區(Root Zone)啟動DNSSEC,從此以後所有根區的資料都含有DNSSEC數位簽章。照理而言,此舉應能進一步促使全球的DNSSEC部署,但直至10年後的今天,全球DNSSEC部署率仍相當低迷。
建置DNSSEC的好處
啟用DNSSEC到底有哪些好處?OCTO報告中列出以下幾點:
- 保護網際網路:保護DNS資料就是保護DNS,而DNS是網際網路的骨幹,因此DNSSEC也保護了網際網路。
- 保護使用者:DNSSEC確保使用者收到的域名資料並未經過變造。換句話說,有了DNSSEC,使用者若想在網站上觀覽內容或取得服務,他們能成功到達欲前往的網站。
- 保護企業、組織或政府:有了DNSSEC,企業組織可以確保使用者正確抵達自己的網站,而不被誤導至其他假冒或偽造的網頁。
- 促進創新:透過數位簽章,DNSSEC確保DNS資料正確無誤,因此安全可信。越多人使用DNSSEC,就越能保證全球DNS資料庫正確、值得信賴。越多人信任網際網路的安全,就越多人願意在此基礎上創新,發明新技術、服務或功能。舉例而言,DANE(DNS-based Authentication of Named Entitie)憑證技術就是利用DNSSEC驗證的安全資料,解決網際網路安全連線的其中一個弱點。
如何實際使用DNSSEC
粗略而言,DNS包含兩個面向:發布(publish)與查詢(lookup,也就是解析/ resolution)。發布由註冊人(或代理人)負責,查詢則由網路營運方,如網際網路服務供應業者(Internet Service Provider,ISP)執行。要實現DNSSEC真正的效益,雙方都必須啟用DNSSEC。
以域名持有人的面向而言,註冊人必須確保註冊域名的DNS資料有DNSSEC簽章。以前這個步驟一般人很難自己操作,也因此常有錯誤狀況出現。然而隨著時代演進,現在許多受理註冊機構或ISP提供包含DNSSEC的服務套裝,或代理DNSSEC的加值服務,註冊人只須提供必要資料,後續操作就可直接交給專業人士處理。
在網路營運業者方面,則僅須在解析器開啟DNSSEC驗證就大功告成。現在大部分的解析器軟體也都預設啟動DNSSEC功能。
為何DNSSEC全球部署率始終無法提升
根據APNIC首席科學家Geoff Huston今(2020)年3月發表的部落格文章(DNSSEC validation revisited),截至今年2月為止,全球的DNSSEC部署率約仍只有3成,3成中更有3分之1屬於僅「部分部署」的使用者。
如前所述,自ICANN於DNS根區啟用DNSSEC起,至今已長達10年。如果DNSSEC真如ICANN說的那麼好,為什麼過了這麼久還無法普及?Geoff在他的文章中分析原因,提出三點常見的DNSSEC缺點。
首先,對DNS區域(zone)管理人員而言,安裝DNSSEC只是多了個「不知何時會出錯」的不確定因素。DNSSEC不只會讓DNS回應封包變大,進而增加傳輸錯誤的機率,要求「驗證簽名」的額外步驟也會拉長回應和處理DNS查詢的時間。
不僅如此,很多人認為DNSSEC並未真正解決「確保DNS回應未被變造」的問題:大部分的終端系統都沒有親自執行DNSSEC,而是仰賴DNS解析器幫他們執行。這表示用戶端解析器(stub resolver)和負責驗證的解析器之間,仍充分可能發生中間人攻擊(Man-in-the-Middle Attack,MitM)。
最後,未通過DNSSEC的DNS查詢回應也只會回傳「SERVFAIL」訊息。收到訊息的遞迴解析器根本不會知道這代表回應未通過驗證,只會繼續嘗試向其他授權伺服器送出一樣的查詢。
一言以蔽之,DNSSEC作為一個安全技術並不完善,而且安裝成本遠高於效益。這也是許多業者對此技術卻步的原因。
針對類似抱怨,OCTO報告中也回應,部署DNSSEC的成本及風險已經隨著技術發展大幅減低,而且唯有越來越多的網路啟用DNSSEC,才能真正發揮DNSSEC的保護效用,進一步確保網際網路的安全。報告中也建議讀者反向思考:都已經花力氣把資料放進DNS了,為何不再多花點力氣確保這些資料的安全呢?
OCTO的使命是推廣、鑽研ICANN負責管理的單一識別碼系統(unique identifier system)相關知識,並持續加強ICANN的技術深度。OCTO所有發布過的研究報告,都可在ICANN網站中的OCTO出版頁面中找到。
圖片來源:freepik