我理解的HTTPS 傳輸

????????http 是什么協(xié)議,怎么工作的,請(qǐng)自行百度

????????iOS 現(xiàn)在普遍都是https,https 和 http 有什么區(qū)別呢,https 更安全,能夠信息加密傳輸,具體是怎樣,這篇文件說(shuō)的很清楚

? ? ? ?http://www.itdecent.cn/p/db9c716c3558

? ? ? ? 但是他沒(méi)有舉例,我現(xiàn)在就把我所理解的通過(guò)一個(gè)例子展示出來(lái)

? ??????RSA性能是非常低的,原因在于尋找大素?cái)?shù)、大數(shù)計(jì)算、數(shù)據(jù)分割需要耗費(fèi)很多的CPU周期,所以一般的HTTPS連接只在第一次握手時(shí)使用非對(duì)稱加密,通過(guò)握手交換對(duì)稱加密密鑰,在之后的通信走對(duì)稱加密。

我們假設(shè) 瀏覽器 client 為C 端,網(wǎng)站 server 為S 端。

1.瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站。

C ----------請(qǐng)求HTTPS連接,及支持的算法-------------> S

2.網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器。證書里面包含了網(wǎng)站地址,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息。

S -------------------算法(假如是Sha2 算法) + 公鑰 (鎖頭,鑰匙只有S 有)------> C

3.瀏覽器獲得網(wǎng)站證書之后瀏覽器要做以下工作

a)驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問(wèn)的地址一致等),如果證書受信任,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭,否則會(huì)給出證書不受信的提示。

驗(yàn)證 公鑰(鎖頭)的合法性

b) 如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼,并用證書中提供的公鑰加密。

隨機(jī)生成一串?dāng)?shù)字,假如是 782345,通過(guò)公鑰加密 ,假設(shè)加密結(jié)果是dhualsdh*&^*&^Dsa

782345(密碼) ------------公鑰加密 -----------------> ?dhualsdh*&^*&^Dsa

c)使用約定好的HASH算法計(jì)算握手消息,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站。

假如握手消息是 : abcdefgh ?----------Hash 算法----------->lkjhgfdsa

對(duì) Hash 結(jié)果進(jìn)行加密 :?

lkjhgfdsa ----------------- 算法加密 (參數(shù) 782345)-------------> khdkah(&)@*)nk8&*

最終發(fā)送給S 的就三個(gè)信息 :

khdkah(&)@*)nk8&* +?dhualsdh*&^*&^Dsa +?lkjhgfdsa

4.網(wǎng)站接收瀏覽器發(fā)來(lái)的數(shù)據(jù)之后要做以下的操作:

a) 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來(lái)的握手消息,并驗(yàn)證HASH是否與瀏覽器發(fā)來(lái)的一致。

通過(guò)私鑰去取出密碼:?dhualsdh*&^*&^Dsa ------------私鑰解密-------------> 782345

解密?khdkah(&)@*)nk8&* :?khdkah(&)@*)nk8&* ------------解密算法(密碼 : 782345) --------> ?xxxxxxxx

驗(yàn)證?xxxxxxxx 是否等于?lkjhgfdsa

b) 使用密碼加密一段握手消息,發(fā)送給瀏覽器。

握手消息: aaaaaa ------------加密算法(密碼 :?782345)--------------> bbbbbbbb?

hash計(jì)算 :?bbbbbbbb -------------> hash 計(jì)算 ---------------> cccccccc

發(fā)送到C 的是 : ?cccccccc +?bbbbbbbb

5.瀏覽器解密并計(jì)算握手消息的HASH,如果與服務(wù)端發(fā)來(lái)的HASH一致,此時(shí)握手過(guò)程結(jié)束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密。

解密bbbbbbbb :?bbbbbbbb -----------解密(密碼:782345) ---------->?aaaaaa

計(jì)算hash ?:?aaaaaa ------------- hash計(jì)算 -------------> dddddddd

判斷dddddddd 是否等于 ?cccccccc


最終 雙方都是通過(guò)密鑰進(jìn)行通信:

內(nèi)容 -----------密鑰加密 --------------> 最終發(fā)送的內(nèi)容

收到的內(nèi)容 ------------> 密鑰解密 ----------> 實(shí)際內(nèi)容

這僅僅是自己的理解,有不對(duì)的地方,歡迎指證、交流

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

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

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