眾所周知,HTTP協議作為互聯網應用層協議標準,并未對安全做過多的設計。從密碼學理論來分析,一個傳輸的安全性必須保證三大基本要要素:(1)數據的保密性;(2)數據的完整性;(3)身份校驗的安全性。
HTTPS簡單理解成HTTP over SSL/TLS??蛻舳撕头斩嗽谑褂肏TTPS傳輸業務數據前,首先由SSL/TLS協議在兩端之間建立安全信道(這個過程稱作握手協商階段),然后在該安全信道上對HTTP業務報文進行加密傳輸(這個過程稱作加密數據傳輸階段)。接下來我們將從HTTP本身存在的安全問題和HTTPS如何解決上述三個問題來詳細論述HTTPS協議為什么安全。
SSL/TLS的安全性體現在哪里,解決了哪些安全問題,如何解決的,下面一步步介紹。
首先,先了解下客戶端和服務端之間使用明文HTTP通信存在的安全問題。
關于HTTP協議的明文數據傳輸,攻擊者最常用的攻擊手法就是網絡嗅探,試圖從傳輸過程的數據包中分析出敏感的數據,例如管理員在Web程序后臺的登錄過程、用戶的隱秘信息(手機號碼、身份證號碼、信用卡號)等重要資料,可能導致嚴重的安全事故。
HTTP協議在傳輸客戶端請求和服務端響應時,唯一的數據完整性檢驗就是在報文頭部包含了本次傳輸數據的長度,而對內容是否被篡改不作確認。因此攻擊者可以輕易的發動中間人攻擊,修改客戶端和服務端傳輸的數據,甚至在傳輸數據中插入惡意代碼,導致客戶端被引導至惡意網站被植入木馬。
SSL/TLS協議通過數字證書、非對稱密鑰、對稱加密算法、消息驗證碼算法等技術,實現了通信雙方的身份驗證、數據傳輸加密、防篡改等安全保護措施,其主要目標是:
3.1 如何通過SSL/TLS協議實現數據保密性?
HTTPS中,數據保密性指對客戶端和服務端傳輸的HTTP明文數據進行加密傳輸。使用的算法為對稱加密算法,如AES。數據保密性實現流程如下圖:
數據保密性需要通信雙方具有相同的密鑰,而且這個密鑰只能通信雙方知道,不能被第三方獲取。實際通信中,這個密鑰并不是固定不變的,也不會保存到磁盤文件中??蛻舳嗣看魏头掌鹘⑿逻B接的時候,都會重新協商出相同的密鑰。在SSL/TLS協議的第一階段——握手協商階段,服務器和客戶端會交互一些報文信息,服務器和客戶端根據報文中的信息各自生成相同的密鑰,并把密鑰保存在內存中。一旦這個連接斷開,內存中的密鑰將會自動銷毀,避免密鑰的泄漏。
3.2 如何通過SSL/TLS協議實現數據完整性?
數據完整性用于防止HTTP數據被篡改,如果一旦發現數據被篡改則拒收數據包。使用的算法稱作消息驗證碼算法(MAC)。數據完整性實現流程如下圖:
和數據保密性中的密鑰獲取方式一樣,這里的密鑰也是在SSL/TLS密鑰協商階段生成的、相同的、并保存在各自內存中。
3.3 如何通過SSL/TLS協議實現身份校驗的安全性?
HTTPS中,客戶端需要對通信端的身份有效性進行校驗,確定客戶端是和期望的真正服務端通信,而非和冒充的攻擊者進行通信。
身份校驗安全性主要利用數字證書技術實現。數字證書涉及的概念非常多,比如數字證書簽發、CA證書、根證書、證書鏈、證書有效性校驗、非對稱密鑰算法、簽名/驗證等,本文不做全面介紹,僅描述SSL/TLS涉及的概念:
3.3.1 非對稱密鑰算法
對稱密鑰算法中,加解密操作使用的密鑰是同一個,且通信雙方都需要知道這個密鑰。而非對稱密鑰算法有兩個密鑰,組成一個密鑰對;可以公開的密鑰為公鑰,公鑰誰都可以知道,不怕泄漏;需要保密不能泄露的密鑰稱為私鑰,私鑰只有自己知道,不能被泄漏;通信雙方的每一方,可以把自己的公鑰發送給對端,但自己的私鑰一定只有自己知道;同一份數據,使用公鑰加密,私鑰可以解密,反之,私鑰加密,公鑰可以解密。
如圖5所示,在SSL/TLS協議中,存在使用非對稱密鑰算法對通信數據進行加密傳輸的操作,在使用非對稱密鑰算法對通信數據進行加密傳輸的場景將使用圖5中左圖的流程。這里需要注意圖5右圖流程,公鑰是公開的,誰都可以知道,用私鑰加密的數據是不具有保密性的,因為只要擁有公鑰就能解密數據,所有竊聽者都可以取到公鑰,都會看到真實數據內容。實際上,圖5右圖“私鑰加密-公鑰解密”的使用場景稱作簽名的生成和校驗,SSL/TLS協議也會用到,簽名生成和驗證流程如下圖:
私鑰加密的數據——簽名值——不具備保密性,但卻有校驗作用。圖7中,通信數據是明文消息加上該消息的簽名值,簽名值用于對明文消息進行校驗,驗證明文消息的正確性、是否被篡改過。
非對稱密鑰算法的用法,總結下來就是:
公鑰加密-私鑰解密?用于數據加密傳輸?通信數據是密文
私鑰加密-公鑰解密?用于簽名的生成和校驗?通信數據是明文消息加上消息簽名值
3.3.2 數字證書
數字證書的簽發、數字證書的校驗、證書鏈的相關細節,本文不做詳述,只要知道以下幾點:
①HTTP到HTTPS,客戶端和服務器涉及的一些改造,主要包括
-服務端需要針對某個服務配置SSL/TLS相關配置項,如密碼套件、證書/私鑰文件路徑。
-部署由CA機構簽發的,包含服務器公鑰、服務器域名信息的數字證書,可公開證書。
-部署和公鑰配對的私鑰文件,私鑰文件要具有一定安全保護措施,不能被泄漏。
-瀏覽器配置CA證書、根證書等文件,一般默認內置。
②證書的使用主要在SSL/TLS協議握手協商階段,簡述如下:
-客戶端和服務端建連后,在SSL/TLS協議握手協商階段初期,服務端將自己的數字證書發送給客戶端,服務端私鑰文件自己使用。
-客戶端收到服務器數字證書后,通過配置的CA證書、根證書,依據證書鏈的校驗邏輯,驗證服務器數字證書的有效性,一旦驗證通過,說明服務器身份正確。
-客戶端從數字證書中取出服務器公鑰,服務端從自己的私鑰文件中取出服務器私鑰。
之后,客戶端和服務端,就會使用這對非對稱密鑰進行SSL/TLS協議握手協商階段的其他處理。RSA密鑰協商算法中使用了圖5的用法,而DHE、ECDHE密鑰協商算法中使用了圖6的用法。
在互聯網快速發展的今天,網絡安全成為關系經濟平穩運行和安全的重要因素,而隨著國際信息安全環境日趨復雜,西方加緊對我國的網絡遏制,并加快利用網絡進行意識形態滲透,我國的網絡安全面臨嚴峻挑戰,中國移動作為我國基礎網絡設施的運營商,未來將加速網絡安全方面的相關建設。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。