2021-02-02 分類: 網站建設
HTTPS:初識ssl
一、ssl簡介
ssl中文名為安全套接字層(Secure Sockets Layer),現如今是應用最廣泛的數據加密協議,該協議是由網景公司在90年代設計的主要用于Web的安全傳輸協議。該協議歷經了三個版本,分別是ssl1.0、ssl2.0、ssl3.0。直到IETF將ssl進行了標準化,并將其稱為TLS(Transport Layer Security)傳輸層安全。嚴格來說TLS(傳輸層安全)是更為安全的升級版 ssl,而現在用的也基本是TLS協議。但是由于ssl這一術語更為常用,因此我們仍然將我們的安全證書稱作 ssl或者ssl/TLS。到現在TLS也已經經歷了四個版本,分別是TLS1.0,TLS1.1(2006),TLS1.2(2008),TLS1.3(2018)。
1.1 非對稱加密算法
所謂的“非對稱加密技術”,意思就是說:“加密”和“解密”使用不同的密鑰 即每個用戶都有兩把鑰匙,一把公鑰一把私鑰。公鑰是對外發布的,所有人都看的到所有人的公鑰,私鑰是自己保存,每個人都只知道自己的私鑰而不知道別人的。用該用戶的公鑰加密后只能該用戶的私鑰才能解密。這種情況下,公鑰是用來加密信息的,確保只有特定的人(用誰的公鑰就是誰)才能解密該信息。1.2 對稱加密算法
所謂的“對稱加密技術”比較簡單,意思就是說:“加密”和“解密”使用相同的密鑰。就好比你用 7zip 或 WinRAR 創建一個帶密碼(口令)的加密壓縮包。當你下次要把這個壓縮文件解開的時候,你需要輸入同樣的密碼。在這個例子中,密碼/口令就如同剛才說的“密鑰”。
1.3 特點
? ssl可對傳輸的數據進行加密,防止第三方竊取數據
? ssl協議具有防篡改機制,如果傳輸的數據在傳輸過程中被人篡改,通信雙方就會立刻發現
? ssl也具有身份驗證機制,防止身份被人冒充
1.4 ssl在TCP/IP模型中的位置
二、. 基本運行過程
ssl/TLS協議基本思路是采用的非對稱加密算法,客戶端先向服務器請求公鑰,然后再用公鑰進行數據加密,服務器接收到密文之后,再用自己的私鑰解密。
? 1.客戶端向服務器端索要并驗證公鑰
? 2.雙方協商生成“對話密鑰”
? 3.雙方采用“對話密鑰”進行加密通信
從上面的簡要過程可以看出,我們還使用了對稱加密算法,這是因為,如果客戶端與服務器的每一次會話都使用公鑰進行加密運算,由于公鑰加密的計算量是非常大的,因此為了減少這個加密計算消耗的時間,我們對交互數據使用對稱加密算法(時間消耗相比于非對稱算法少很多),我們只需要使用在最開始的公鑰加密算法獲取服務器給的對稱加密算法的對話密鑰,接下來的數據交互使用對話密鑰進行加解密就行了。
而上面的1和2我們又將其稱之為"握手階段" 握手階段客戶端與服務器之間存在四次通信,且通信的數據都是明文傳輸的。
2.1客戶端請求
客戶端向服務器發出需要加密通信的請求,這一步叫做ClientHello請求 客戶端提供的信息如下
信息
客戶端支持的TLS協議版本
客戶端生成一個隨機數,用于后續生成“對話密鑰”
客戶端支持的加密方法,比如DHE-RSA非對稱加密算法
支持的壓縮算法
2.2 服務器回應
信息
確認需要使用的TLS協議版本
服務器也會生成一個隨機數,用于后續生成“對話密鑰”
確認使用的加密算法,比如DHE-RSA非對稱加密算法
服務器的證書
如果服務器需要確認客戶端的身份,就會包含一個證書請求,要求客戶端提供客戶端證書確認身份
2.3客戶端再回應
客戶端得到響應之后,先驗證服務器的證書,如果有問題,就會向用戶提示警告是否繼續訪問,如果沒有問題,客戶端就取出證書中的公鑰,然后向服務器發送以下數據
信息
發送一個用公鑰加密的隨機數數據,這個隨機數也被稱為pre-master key
編碼更改通知,告訴服務器以后的數據都將采用已商定的加密方法和密鑰發送
客戶端握手結束通知,這一項同時也是前面發送的所有內容的hash值,用來提供給服務器做防篡改驗證
到這里,我們可能會有疑問,為什么一定要用三個隨機數來生成會話密鑰,原因如下:
不管是客戶端還是服務器,都需要隨機數,這樣生成的密鑰才不會每次都一樣。由于ssl協議中證書是靜態的,因此十分有必要引入一種隨機因素來保證協商出來的密鑰的隨機性。
對于RSA密鑰交換算法來說,pre-master-key本身就是一個隨機數,再加上hello消息中的隨機,三個隨機數通過**一個密鑰導出器最終導出一個對稱密鑰**。
pre master的存在在于
ssl協議不信任每個主機都能產生完全隨機的隨機數,如果隨機數不隨機,那么pre master secret就有可能被猜出來,那么僅適用pre master secret作為密鑰就不合適了,因此必須引入新的隨機因素,那么客戶端和服務器加上pre master secret三個隨機數一同生成的密鑰就不容易被猜出了,一個偽隨機可能完全不隨機,可是是三個偽隨機就十分接近隨機了,每增加一個自由度,隨機性增加的可不是一。"2.4服務器最后的回應
服務器收到客戶端的第三個隨機數pre-master key之后,計算生成本次會話所用的"會話密鑰"。
信息
編碼更改通知,告訴服務器以后的數據都將采用已商定的加密方法和密鑰發送
服務器握手結束通知,這一項同時也是前面發送的所有內容的hash值,用來提供給客戶端做數據防篡改驗證
到這里,整個握手階段全部結束,之后,客戶端就可以與服務器進行加密通信了,對數據使用“會話密鑰”做對稱加密。
當前題目:HTTPS:初識SSL
網頁地址:http://m.newbst.com/news/98739.html
成都網站建設公司_創新互聯,為您提供ChatGPT、品牌網站設計、搜索引擎優化、網頁設計公司、建站公司、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容