要講DoT和DoH,不可避免的咱們要重溫一下DNS協議的歷史。程序員
DNS協議在1987年甚至更早的時候就被規範好,那個年代互聯網安全還不是嚴重的威脅,DNS協議使用非可靠的UDP和TCP協議。chrome
UDP是一個無狀態的傳輸協議,儘管在傳遞數據時很是快,但它是沒法避免攻擊的。此外,在數據傳遞時,由於網絡狀態差的時候,很容易發生丟包的狀況。此外,UDP是明文在網絡上傳輸。瀏覽器
TCP相對於UDP安全性是略高。它的可靠體如今TCP在傳遞數據以前,會經過三次握手來創建鏈接。緩存
然而TCP就是完美的解決方案嗎?並不盡然。
安全
正是由於TCP的三次握手機制,致使TCP很容易被利用來實現DOS等攻擊時至今日,互聯網的安全環境已經大相徑庭。假設用戶被某個攻擊者盯上,咱們來看原來的使用UDP和TCP協議可能存在什麼樣的安全隱患:服務器
1)沒法驗證對端的身份微信
當瀏覽器接收到一個DNS的響應時,它沒法確認這個響應是否來自它信任的DNS服務商。在DNS服務商答覆以前,攻擊者可能搶先主動發送一個虛假的DNS響應,讓用戶採用他提供的IP地址做爲解析結果,而忽略正規服務商的響應結果。網絡
2)沒法確保數據的安全app
DNS報文以明文的方式在網絡中傳輸,是一件危險的事情。攻擊者能看到你訪問的是哪一個網站,也能看到DNS服務商給你答覆的內容。若是攻擊者篡改了回覆給用戶的響應報文,好比將響應中的IP地址替換成了惡意地址,被攻擊的用戶並不知情的。svg
假設攻擊者利用上述安全隱患對用戶的DNS攻擊成功,他就可能把你想訪問的銀行的網址轉移到本身的惡意地址上。好比說小明在想訪問工商銀行的網站「www.icbc.com.cn",正常狀況下,瀏覽器收到DNS服務商解析後的合法IP地址,網頁請求會被髮送到工商銀行的服務器上;然而攻擊者的存在致使瀏覽器拿到了錯誤的IP地址,網頁請求被髮送到了惡意服務器上。攻擊者只須要在惡意服務器上山寨一個肉眼沒法分辨出來的銀行頁面,在用戶操做的時候就能非法盜取用戶的銀行帳號信息,而這一切用戶徹底感知不到。
爲了解決此類的問題,人們想出了不少的辦法改進或擴展DNS協議。好比說讓DNS協議中攜帶的網址大小寫變得隨機,這樣攻擊者就難以準確猜想到正確的網址,好比說在報文裏面添加校驗驗證報文的來源或報文數據是否被篡改過等。
目前看來最爲安全有效的方式,是DoT/DoH方案。
DoT全稱是DNS over TLS,它使用TLS協議來傳輸DNS協議。TLS協議是目前互聯網最經常使用的安全加密協議之一,咱們訪問HTTPs的安全基礎就是基於TLS協議的。相比於以前使用無鏈接無加密的UDP模式, TLS 自己已經實現了保密性與完整性。
那麼 TLS 協議是如何實現完整性與保密性的呢?
TLS協議的基本思路是證書+加密機制,左右開弓保證安全。證書至關於申請了一個合法的身份證,當客戶端向服務器發起鏈接的時候,雙方會相互校驗一下身份,服務器把證書給客戶端,客戶端來校驗證書的內容和合法性。
握手協議則是用的公鑰加密法:首先,客戶端會向服務器端索要並驗證公鑰,驗證後雙方會協商生成"對話密鑰",相似於兩我的獨有的摩斯密碼,在此以後, 雙方就會採用對話密鑰進行加密通訊。
通俗的理解就是:你要和你的筆友寫信,握手協議是你和你的筆友之間商量出來一套加密通訊的方式,而證書則是保證拿到你寄出去的信的人是你的筆友本人。
DoH全稱是DNS over HTTPs,它使用HTTPs來傳輸DNS協議。DoH的安全原理與DoT同樣,他們之間的區別只在於:DoH有了HTTP格式封裝,更加通用。
DoT在專用端口上經過TLS鏈接DNS服務器,而DoH是基於使用HTTP應用程序層協議,將查詢發送到HTTPS端口上的特定HTTP端點,這裏形成的外界感知就是端口號的不一樣,DoT的端口號是853,DoH端口號443。
也許你會問:增長了握手的過程,以及數據增長了加密的步驟,是否是傳輸速度會變慢?
實際上,使用TLS或HTTPS的確會增長前期協商帶來的時間損耗,可是!此處劃重點:
通過騰訊雲相關團隊的努力,程序員小哥哥們經過對客戶端側改造和優化,採用本地緩存,提早預取,鏈接複用等技術方案,積極優化了總體流程,實現了與原DNS協議相近的時延效果!(此處應有掌聲)
其次,是客戶端和服務器端生成的對話密鑰是對稱加密,運算速度很是快,而服務器公鑰只用於加密"對話密鑰"自己,這樣就減小了加密運算的消耗時間。
DNSPod一直以來對DNS安全都很是關注,目前已經DoT/DoH方案已經正式開放公測:爲DNSPod用戶的信息和隱私安全保駕護航。
DoT 的服務器地址:dns.pub 或者 doh.pub
DoH 的地址:https://doh.pub/dns-query 。
PC端教程:
讓DNSPod保護您的網頁安全也很是簡單,若是您使用的是Chrome瀏覽器(83及以上),只須要在Chrome瀏覽器的設置項中設置好DNS訪問安全選項便可。操做步驟以下:
進入到Chrome瀏覽器設置頁面,在設置搜索框中搜索DNS。
1:點擊搜索結果中的「安全」,往下拉,就能看到DNS安全設置。
2:輸入DNS安全服務提供商地址:
https://doh.pub/dns-query
若是你使用的是Chrome瀏覽器(78-82),那麼首先你須要
1:點擊:chrome://flags/#dns-over-https
2:將Secure DNS lookups這裏的Default修改成Enabled。
3:進入網絡設置-更改適配器選項-右鍵-選擇ipv4-點擊屬性
4:點擊高級-選擇dns-在彈出「DNS服務器」下方框中輸入:162.14.21.56或者162.14.21.178(正式上線後會更改,請同步關注)
使用FireFox也可輕鬆設置,與Chrome步驟相似。進入到設置頁面,搜索「dns」,點擊「網絡設置」,下拉後勾選「DNS over HTTPS「,輸入DNS安全服務商地址https://doh.pub/dns-query便可。
至此,你的DNS請求就以加密的方式安全的送達到了DNSPod,今後歲月靜好。
SMB
騰訊雲中小企業產品中心
騰訊雲中小企業產品中心(簡稱SMB),做爲騰訊雲體系中惟一專業服務於8000萬中小企業的業務線,致力於爲中小微企業提供全面完善貼心的數字化解決方案。產品線覆蓋了企業客戶從創業起步期、規範治理期、規模化增加期、戰略升級期等全生命週期,針對性的解決企業的信息化、數字化、智能化的生產力升級需求。本中心還擁有兩大獨立騰訊子品牌:DNSPod與Discuz!,在過去15年間,爲超過500萬企業級客戶提供了強大、優質、穩定的IT服務。
SMB團隊成員大多都有過創業經歷,有得到過知名VC數千萬投資的,有被一線互聯網巨頭以數千萬全資收購的,也有開設數十家分公司後技術轉型而失敗倒閉的,咱們成功過,也失敗過,咱們深知創辦企業的難處與痛點,深入的理解中小企業該如何敏捷起步、規範治理、規模化增加與數字化升級發展,咱們會用本身踩坑的經驗給出最適合你的答案。
騰訊雲中小企業產品中心,助力中小企業數字化升級的好夥伴。
想了解更多官方資訊?
掃描阿D二維碼邀您加入DNSPod交流羣
本文分享自微信公衆號 - DNSPod(dnspod)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。