DANE在web以外領域之應用

作者:中華電信 林方傑工程師

DANE全名為DNS-based Authentication of Named Entities,可譯為「基於DNS的域名實體認證」。在〈DANE的過去、現在與未來〉一文曾提及,雖然在web領域中,DANE因為各方支援度或接受度有限而顯得有些窒礙難行,但這並不代表這項技術沒有其他可用武之地。本文將摘要DANE在web以外領域的應用,包括(1)SMTP、(2)VoIP、(3)Jabber/XMPP。對於各項主題,我會先花點篇幅簡介其用途、碰到的問題,接著說明DANE在其中發揮的效益。

SMTP

SMTP全名是Simple Mail Transfer Protocol,可譯為「簡單郵件傳輸協定」。「協定」(protocol)一詞代表著SMTP也是一種共同語言[1],具備事先協議好的格式與規則,使不同機器得以成功交流且忽略彼此軟硬體的差異;「郵件傳輸」指明了協定被應用的情境;至於剩下的「簡單」,我想透過以下的回顧協助大家體會。

在早年沒有Outlook、Thunderbird等郵件軟體可用的時代,人們會使用連線程式(如telnet)登入郵件主機、再下SMTP的指令執行郵件傳送[2]。筆者認為,SMTP的「簡單」除了可見於基於文字指令的操作與運作,更在於這些文字是以「明文」傳輸的預設狀態。

以明文傳輸,代表任何人截獲傳輸中的訊務都可一窺其內容。針對這種資訊外洩的風險(即資安CIA中的confidentiality議題),直覺的對策是採用加密傳輸,而SMTP也確實有「StartTLS」這種「明文通訊協定的擴充功能[3]」,用於以明文通訊的雙方協議建立加密連線,運作程序大致為:(1)發信方透過DNS查詢找出收信方郵件主機及其IP;(2)收發信雙方都使用SMTP StartTSL extension(定義於 RFC 2487)進行加密連線的通知與協商;(3)在交握完成後,收發信雙方便可進行加密連線的建立[4],圖示如下圖1。

圖1・收發郵件雙方應用SMTP StartTLS extension

(筆者繪製,詳可參閱〈Better mail security with DANE for SMTP〉[5]

既然有了加密連線,似乎就可高枕無憂?很遺憾的,問題還沒結束。大家可以留意到,前述加密連線的協商是在初始未受保護的連線下進行,也沒有進行身分驗證。這使得「中間人攻擊」(MITM attack,即man-in-the-middle attacks)仍然有機可乘。如果有駭客在加密連線協商的過程中攔截並竄改傳輸訊息,比如將一方回覆的「能」支援加密連線改為「不能」,或替換進偽造的憑證,前者會造成連線只得續用明文傳輸(downgrade)[6],後者則讓駭客能將信件轉寄到其指定的郵件主機(divert)[7]。簡言之,以StartTLS協商建立加密連線是可以抵抗被動的流量竊聽,但對於主動發起的MITM attack卻束手無策,圖示如下圖2。

圖2・SMTP遭受MITM attack

(筆者繪製,詳可參閱〈Better mail security with DANE for SMTP〉[8]

那麼我們今天的主角DANE可以如何拔刀相助呢?關鍵在於以DNS解析緩解前述「沒有身分驗證」與「加密連線的協商易被介入」兩個問題。首先,如果溝通對象的數位憑證[9]能有來自第三方的對照,則對於提高憑證的可信度應該有所幫助。而事實上,DNS伺服器就是個收發郵件兩端以外的第三方、可將驗證憑證所需的「fingerprint」資訊存於「TLSA紀錄」(TLS Authentication record)並透過解析提供。而DANE的基礎DNSSEC在確保DNS資料完整性(Integrity)的同時也保障了前述fingerprint的正確性,因此改善了沒有身分驗證的問題。

至於另一個問題,透過「域名有TLS紀錄即代表該域名對應設備具有使用TLS的能力」這樣的約定,前述可能被惡搞的收發郵件雙方協商過程便可被DNS解析取代(如下圖3),且DNS所傳遞的資料之完整性也同樣受到DNSSEC的保護。

圖3・SMTP與DANE

(筆者繪製,詳可參閱〈Better mail security with DANE for SMTP〉[10]

VoIP

VoIP全名為Voice Over Internet Protocol,即一般所稱的網路電話。儘管傳統電話技術穩定且成熟,VoIP因其廣泛的用途(除語音外也可傳輸視訊)與高性價比(跨境通話尤其划算,有研究估計成本可降40%以上)仍備受青睞[11]、甚至有喧賓奪主的趨勢。相較於傳統電話技術是以「線路交換」(circuit switching)為基礎,需要為傳輸雙方建立固定路徑並保留頻寬,也因此成本較高[12],VoIP則是基於「封包交換」(packet switching),將資料切割為封包在網路上(盡力)傳送。

VoIP是如何運作的呢?以Alice要用網路電話跟Bob通話為例,SIP(Session Initiation Protocol)[13]連線至少包含通話雙方的話機[14],以及各自對應的SIP代理伺服器,圖示如下圖4。

圖4・網路電話SIP連線示意

(筆者引用並精簡自〈The Threat Model (VoIP)〉[15]

圖中編號(1)的角色之所以能找到(2)、(2)能找到(3),是透過DNS解析「SRV紀錄」(Service Record,可譯為服務定位紀錄)[16],取得網路電話服務相關的主機名稱與port資訊。此外我們仍然需要DNS為我們解析出主機名稱對應的IP。

那麼VoIP潛藏著什麼問題呢?首先,如果SRV紀錄遭竄改,則話機終端或者SIP代理伺服器就可能與錯誤的對象連線。另外,憑證是否可信也會是個議題,除了因為在VoIP的情境中,憑證可見於PBX(Private Branch eXchange,IP-PBX網路電話交換機)系統中或交換機上[17],任何CA可為任何域名簽發憑證[18],因此使得駭客有機會以你我域名的名義取得憑證安裝於其假造的線上服務伺服器之情況,以及實務系統架構中有「middle-boxes」存在的空間,如防火牆設備(或駭客)可居中插手憑證的安排,圖示如下圖5。

圖5・憑證可信度議題之一示意圖(可留意左上與中間節點使用的不是相同的憑證)

(引用自〈DNSSEC and VoIP: Who are you really calling?〉P.36[19]

相對於直接公布我的作答,我相信有輸入也有輸出可深化理解,因此想邀請讀者朋友想想看並試著回答以下兩個問題:

  1. 上一段提到的兩個問題可以怎麼緩解呢?
  2. 在SMTP篇章討論的問題與解法是否有可以借鏡之處?

完成了嗎?就請先帶著您的答案一起看下去(我的作答會在下個篇章內揭曉)。

Jabber/XMPP

根據維基百科的描述,「XMPP」全名為Extensible Messaging and Presence Protocol,是一種以XML為基礎的開放式即時通訊(instant messaging,簡稱IM)協定[20],「Jabber」則是其前稱[21]。XMPP被標榜具有開放、標準、分散式等特性[22],該協定因為被「Google Talk」採用而聲名大噪。

從技術的觀點,XMPP的運作模式、網路結構與email服務相近,任何人都可以在自己的網域上架設並運行XMPP伺服器,並搭配DNS SRV紀錄對外發布它的存在(如同郵件主機與MX紀錄的設置)。XMPP以JabberID(JID)識別用戶,這不只用途與email address相似,長相也是由使用者名稱、「@」符號加上網域名稱構成[23]。看到這兒,推測XMPP與DNS、DNSSEC、DANE有關應該很合理吧!

事實上,因為XMPP服務的運作也需要網域名稱與DNS紀錄來發布提供服務的伺服器是誰與所在、並在建立加密連線的過程中用上數位憑證,這也就衍生出兩個問題如下[24]

  1. 「secure delegation」問題:我連的是正確的伺服器嗎?伺服器名稱與位置(IP)沒遭竄改過嗎?
  2. 「identity verification」問題:跟我連線的伺服器真的是它所宣稱的那臺嗎?它所出示的憑證不是假造的嗎?

而這兩項除了與VoIP所面臨的問題(之二)類似,也可以用DNSSEC與DANE緩解:DNSSEC應用的數位簽章技術可確保DNS紀錄不在傳輸過程中被竄改,也因此提高了透過DNS紀錄取得之伺服器資訊的可信度;另外服務提供者(同時也是域名持有者)應用DANE的TLS紀錄(承載certificate fingerprint[25])、DNS解析機制(讓使用者取得TLSA紀錄內容)、DNSSEC的保護效果(防止DNS資料在傳輸過程中被竄改),便可讓服務使用者取得足以驗證憑證的可信資訊,從而確認連線對象身分的真實性。而這也是我對於VoIP段落提問的作答了。附帶一提,關於如何提升XMPP的安全性,具體的設定步驟可參閱〈.IM TLD DNSSEC DLV DANE XMPP TLSA RR〉一文[26]

小結

雖然本文以DANE在web以外領域之應用為標題,但討論DANE實在少不了做為基礎的DNSSEC。不(只)是為了充篇幅,而是從SMTP、VoIP、XMPP的相關資料中,體會到三者所面對的問題是有交集的。如果用「secure delegation」與「identity verificaton」來代表,則兩者分別可藉DNSSEC與DANE來緩解。以上是我個人的理解,如果能給大家帶來幫助是我莫大的pleasure and honor,如果有疏漏或偏誤也再請不吝指導了,謝謝!

[1] 關於「Protocol」的概念與類比,https://www.ithome.com.tw/node/6349

[2] 關於SMTP指令與telnet的相關操作可參閱http://www.tsnien.idv.tw/Internet_WebBook/chap14/14-4%20SMTP%20%E5%8D%94%E5%AE%9A.htmlhttps://ithelp.ithome.com.tw/articles/10189886等文章。

[3] WIKIPEDIA (2021). STARTTLS. WIKIPEDIA. 檢自:https://zh.wikipedia.org/zh-tw/STARTTLS (Aug. 25, 2021)

[4] 關於收發郵件雙方使用StartTLS extension,筆者參閱https://help.hcltechsw.com/domino/11.0.0/conf_securingsmtpsessionsusingthestarttlsextension_c.html;關於email client與email server及協商的細節步驟則參考https://sendgrid.com/blog/what-is-starttls/https://blog.yowko.com/telnet-check-smtp/http://en.redinskala.com/what-is-the-difference-between-the-heloehlo-commands/等。

[5] 關於SMTP StartTLS的安全弱點,https://blog.apnic.net/2019/11/20/better-mail-security-with-dane-for-smtp/ Figure 2~3。

[6] 關於StartTLS的fallback行為,https://gcn.com/articles/2015/10/05/starttls-email-encryption.aspx

[7] 同註5。

[8] 同註5。

[9] 關於數位憑證,https://docs.oracle.com/cd/E19900-01/820-0848/ablok/index.html

[10] 同註5。

[11] 關於VoIP的好處,https://www.idtexpress.com/zh-TW/blog/voip-cheap-compared-traditional-calls/

[12] 國立台灣大學計算機及資訊網路中心電子報(2007). VoIP網路電話技術發展與應用. 國立台灣大學計算機及資訊網路中心電子報. 檢自:https://www.cc.ntu.edu.tw/chinese/epaper/0002/20070920_2006.htm (Aug. 25, 2021)

[13] 可譯為會談啟始協議,是實務中VoIP的技術。關於SIP,https://www.dialogic.com/glossary/sip-clienthttps://kknews.cc/zh-tw/tech/8v8k2yq.html

[14] VoIP話機常稱SIP UA,UA則是User Agent的簡稱。關於UA,https://www.ithome.com.tw/node/38869

[15] 關於SIP連線,http://what-when-how.com/voip/the-threat-model-voip/

[16] 關於SRV紀錄,https://www.cloudflare.com/learning/dns/dns-records/dns-srv-record

[17] 關於數位憑證與VoIP,https://okay.network/blog-news/free-wildcard-certificates-with-the-white-label-voip-servers.html

[18] IETF Journal《DANE: Taking TLS Authentication to the Next Level Using DNSSEC》https://www.ietfjournal.org/dane-taking-tls-authentication-to-the-next-level-using-dnssec/

[19] 關於DNSSEC與VoIP,https://www.slideshare.net/Deploy360/dnssec-and-voip-who-are-you-really-calling

[20] WIKIPEDIA (2021). XMPP. WIKIPEDIA. 檢自:https://en.wikipedia.org/wiki/XMPP (Aug. 25, 2021)

[21] 關於Jabber,https://www.itread01.com/content/1545528426.html

[22] 關於XMPP的特色,https://xmpp.org/about/technology-overview.html

[23] 關於JabberID等,https://slidetodoc.com/xmpp-protocol-and-application-development-using-open-source/

[24] 關於DANE+XMPP,https://www.ietf.org/proceedings/84/slides/slides-84-dane-3.pdf

[25] 關於certificate fingerprint(A certificate’s fingerprint is the unique identifier of the certificate)https://knowledge.digicert.com/solution/SO9840.html

[26] 關於XMPP的安全設定,https://op-co.de/blog/posts/yax_im_dnssec/

Scroll to Top