Https詳解

概述

HTTPS,從字面上看,即在HTTP協(xié)議下加上一層SSL(安全套接字層 secure socket layer),對于上層應用來看,原來的發(fā)送接收數(shù)據(jù)的流程不變,這便很好的兼容了HTTP協(xié)議。


一、協(xié)議的加密流程

我們知道,非對稱加密是相較于對稱加密更為安全的一種加密方式,但是非對稱加密所需要耗費的計算資源也會隨之提高許多。所以https協(xié)議的基本原理就是,通過SSL/TLS握手安全的協(xié)商出一份對稱加密的密鑰,隨后傳輸?shù)臄?shù)據(jù)都采用該密鑰進行加解密。

1.1、SSL/TLS握手過程

1. Client Hello

握手第一步是客戶端向服務端發(fā)送 Client Hello 消息,這個消息里包含了一個客戶端生成的隨機數(shù) Random1、客戶端支持的加密套件(Support Ciphers)和 SSL Version 等信息。

2. Server Hello

第二步是服務端向客戶端發(fā)送 Server Hello 消息,這個消息會從 Client Hello 傳過來的 Support Ciphers 里確定一份加密套件,這個套件決定了后續(xù)加密和生成摘要時具體使用哪些算法,另外還會生成一份隨機數(shù) Random2。注意,至此客戶端和服務端都擁有了兩個隨機數(shù)(Random1+ Random2),這兩個隨機數(shù)會在后續(xù)生成對稱秘鑰時用到。
客戶端驗證
這一步是服務端將自己的證書下發(fā)給客戶端,讓客戶端驗證自己的身份,客戶端驗證通過后取出證書中的公鑰。

3. Certificate Verify

客戶端收到服務端傳來的證書后,先從 CA 驗證該證書的合法性,驗證通過后取出證書中的服務端公鑰,再生成一個隨機數(shù) Random3,再用服務端公鑰非對稱加密 Random3 生成 PreMaster Key

上面客戶端根據(jù)服務器傳來的公鑰生成了 PreMaster Key,Client Key Exchange 就是將這個 key 傳給服務端,服務端再用自己的私鑰解出這個 PreMaster Key 得到客戶端生成的 Random3。至此,客戶端和服務端都擁有 Random1 + Random2 + Random3,兩邊再根據(jù)同樣的算法就可以生成一份秘鑰,握手結(jié)束后的應用層數(shù)據(jù)都是使用這個秘鑰進行對稱加密。為什么要使用三個隨機數(shù)呢?這是因為 SSL/TLS 握手過程的數(shù)據(jù)都是明文傳輸?shù)?,并且多個隨機數(shù)種子來生成秘鑰不容易被暴力破解出來。

4. 密鑰協(xié)商驗證

服務器收到客戶端的第三個隨機數(shù)pre-master key之后,計算生成本次會話所用的"會話密鑰"。然后,向客戶端最后發(fā)送下面信息。

(1)編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送。

(2)服務器握手結(jié)束通知,表示服務器的握手階段已經(jīng)結(jié)束。這一項同時也是前面發(fā)送的所有內(nèi)容的hash值,用來供客戶端校驗。

至此,整個握手階段全部結(jié)束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的HTTP協(xié)議,只不過用"會話密鑰"加密內(nèi)容。

總結(jié)

https的傳輸過程,前期密鑰的協(xié)商通過非對稱加密實現(xiàn),后期數(shù)據(jù)的加密使用的是對稱加密。(密鑰由非對稱加密協(xié)商得到)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 協(xié)議 1、HTTP 協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議):是客戶端瀏覽器...
    大富帥閱讀 912評論 0 11
  • 原文地址:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html ...
    高思陽閱讀 665評論 0 0
  • 超文本傳輸安全協(xié)議(HTTPS,常稱為 HTTP over TLS/SSL)是一種通過計算機網(wǎng)絡進行安全通信的傳輸...
    MarchCd閱讀 7,334評論 1 22
  • 牙痛不是病,痛起來要人命。一大早就去人民醫(yī)院掛口腔科看牙齒,原來是牙周炎.牙結(jié)石,通過洗牙把結(jié)石洗出來了,牙齒...
    羅劍華閱讀 157評論 0 3
  • 日子總是飛快著,像高鐵,像飛機,像子彈,像奔馳的野馬,脫了韁繩,可以滿地撒歡,肆意妄為著,真真兒的是一只...
    白字先生甲閱讀 206評論 0 0

友情鏈接更多精彩內(nèi)容