https詳解

概述

網(wǎng)絡(luò)請(qǐng)求方式通常分為兩種,分別是HTTP請(qǐng)求和HTTPS請(qǐng)求,其中HTTP的傳輸屬于明文傳輸,在傳輸?shù)倪^(guò)程中容易被人截取并且偷窺其中的內(nèi)容,而HTTPS是一種在HTTP的基礎(chǔ)上加了SSL/TLS層(安全套接層)的安全的超文本傳輸協(xié)議,其傳輸?shù)膬?nèi)容是通過(guò)加密得到的,所以說(shuō)是一種安全的傳輸

https?
HTTP 通信接口部分采用了了 SSL + TLS 協(xié)議

概念解析
密鑰: 對(duì)稱加密設(shè)置的密碼
公鑰: 公鑰用于加密信息和解密數(shù)字簽名
私鑰: 私鑰用于解密信息和加密消息摘要
消息摘要/數(shù)字指紋 : 對(duì)消息使用HASH算法獲取的固定長(zhǎng)度的字符串
數(shù)字簽名: 使用私鑰加密的消息摘要
數(shù)字證書(shū):CA用自己的私鑰,對(duì)需要認(rèn)證的公鑰及相關(guān)的信息進(jìn)行加密

一、加密方式

1、對(duì)稱加密:

私鑰加密,信息的發(fā)送方和接收方使用同一個(gè)密鑰加密和解密數(shù)據(jù)。


2、非對(duì)稱加密:

生成兩把密鑰公鑰和私鑰。私鑰自己保存,公鑰用于公開(kāi)。可以用公鑰和私鑰中任何一個(gè)進(jìn)行加密,另一個(gè)解密。

具體有兩種情形:

(1)對(duì)方用你的公鑰加密信息,你收到后用私鑰解開(kāi)。

只有你有私鑰,所以只有你能解開(kāi),換句話說(shuō),有私鑰才能看到信息,很安全。

(2)你拿私鑰加密信息,對(duì)方收到后用你的公鑰解開(kāi)。

公鑰是公開(kāi)的,所以其他人也可以看到你的信息,不保密。

私鑰加密,只有對(duì)應(yīng)公鑰能解開(kāi)。既然用你的公鑰能解開(kāi),說(shuō)明加密一定是你的私鑰。私鑰只有你有,所以一定是你發(fā)送的,你不可抵賴。


這里的私鑰加密指的是私鑰簽名,公鑰驗(yàn)簽

但是這樣存在一個(gè)問(wèn)題,竊聽(tīng)者也可以冒充Bob給Alice送信,因?yàn)锳lice的公鑰是公開(kāi)的,這樣就無(wú)法分辨哪個(gè)是真Bob的送信。

3、數(shù)字簽名:

為了表明信息沒(méi)有收到偽造,確實(shí)是信息擁有者發(fā)出??梢允褂脭?shù)字簽名。

Bob用自己的私鑰對(duì)消息加密作為簽名,再與消息一起發(fā)送,接收者用Bob的公鑰驗(yàn)簽。

竊聽(tīng)者竊取冒充Bob的簽名篡改內(nèi)容也沒(méi)用,因?yàn)閮?nèi)容發(fā)生改變時(shí),對(duì)應(yīng)的簽名也要重新計(jì)算,簽名的生成必須使用私鑰,只要私鑰不泄露,簽名就不會(huì)被冒充。


但是數(shù)字簽名只是能驗(yàn)證發(fā)送方身份,未對(duì)報(bào)文進(jìn)行加密。竊聽(tīng)者截取到密文并指定發(fā)送者的身份時(shí),可通過(guò)查閱手冊(cè)即可獲得發(fā)送者的公鑰PKA,就可以竊聽(tīng)報(bào)文的內(nèi)容。

4、數(shù)字證書(shū)(公鑰的數(shù)字簽名):

發(fā)送方可以去證書(shū)中心CA為公鑰做認(rèn)證,證書(shū)中心用自己的私鑰,對(duì)需要加密的公鑰和一些相關(guān)信息一起加密,生成"數(shù)字證書(shū)"。

這樣接收方就可以防止收到假的公鑰,接收方收到帶有數(shù)字證書(shū)的消息后,用CA的公鑰先解開(kāi)數(shù)字證書(shū),就可以拿到發(fā)送方真實(shí)的公鑰了。

5、非對(duì)稱算法的數(shù)字簽名:

即實(shí)現(xiàn)數(shù)字簽名又加密傳輸,就可以使用A私鑰簽名B公鑰加密的方法。

發(fā)送者使用私鑰對(duì)消息加密作為簽名,再使用接收方的公鑰對(duì)消息進(jìn)行加密,接收方使用自己的私鑰進(jìn)行解密后,再對(duì)簽名進(jìn)行驗(yàn)簽。

6、hash算法的數(shù)字簽名(摘要+數(shù)字簽名):

一般而言,不會(huì)直接對(duì)數(shù)據(jù)本身計(jì)算數(shù)字簽名,因?yàn)閿?shù)字簽名屬于非對(duì)稱加密,非對(duì)稱加密依賴于復(fù)雜的數(shù)學(xué)運(yùn)算,耗時(shí)久。所以使用摘要,并且摘要最好是不可逆轉(zhuǎn)的,一般使用開(kāi)頭MD5作為Hash函數(shù),MD5輸出的結(jié)果固定位128位。

并且要對(duì)數(shù)據(jù)的「摘要」進(jìn)行簽名,這樣,竊聽(tīng)者就算解開(kāi)簽名,拿到的也是「摘要」,如果摘要是不可逆轉(zhuǎn)的,也就是無(wú)法從摘要反推出原文,也就達(dá)到了保密的作用。

首先將原數(shù)據(jù)進(jìn)行Hash計(jì)算,得到摘要,再對(duì)摘要私鑰加密生成數(shù)字簽名。再與原文件一起發(fā)送。接收方收到后先用A的公鑰對(duì)數(shù)字簽名解密得到摘要1,證明確實(shí)是A發(fā)送,再對(duì)原文進(jìn)行相同的hash計(jì)算得到摘要2,再進(jìn)行比較,一致則證明消息未被篡改過(guò)。

但是若是竊聽(tīng)者將自己的公鑰換走了發(fā)送方的公鑰,再冒充發(fā)送方給B發(fā)送消息,用自己的私鑰做成假的簽名,此時(shí)接收方無(wú)法判斷哪個(gè)是真正的消息。

總結(jié):

對(duì)稱加密:同一個(gè)密碼加密解密。

非對(duì)稱加密:私鑰加密,公鑰解密或者私鑰加密,公鑰解密。

摘要:對(duì)消息hash計(jì)算生成摘要。

數(shù)字簽名:私鑰加密消息作為簽名,再與源文件一起發(fā)送。

數(shù)字證書(shū):證書(shū)中心對(duì)驗(yàn)簽的公鑰進(jìn)行加密,生成數(shù)字證書(shū)。用CA的公鑰解密得到加密的公鑰。

hash算法的數(shù)字簽名:對(duì)消息hash計(jì)算后再私鑰加密生成數(shù)字簽名。數(shù)字簽名+原文件一起發(fā)送。接收方再進(jìn)行比較。

非對(duì)稱加密的數(shù)字簽名:發(fā)送用私鑰加密得到數(shù)字簽名,再使用接收方的公鑰加密原文,一起發(fā)送,接收方使用發(fā)送方的公鑰驗(yàn)簽,證明是本人發(fā)送,再使用私鑰解密原文,進(jìn)行比較。一致則未被篡改。

二、HTTPS

HTTP協(xié)議:超文本傳輸協(xié)議,明文傳輸,客戶端與Web服務(wù)器間的應(yīng)用層通信協(xié)議。

HTTPS協(xié)議:HTTP+SSL/TLS,即HTTP下加入SSL層,使用SSL加密,用于安全的HTTP傳輸,https默認(rèn)使用端口443。

SSL:安全套接字層,位于可靠的面向連接的網(wǎng)絡(luò)層協(xié)議。SSL通過(guò)互相認(rèn)證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實(shí)現(xiàn)客戶端和服務(wù)器之間的安全通訊。具有數(shù)據(jù)加密和身份驗(yàn)證的功能。

TLS:安全傳輸層協(xié)議、對(duì)SSL擴(kuò)展和優(yōu)化,提供數(shù)據(jù)安全的同時(shí),確保數(shù)據(jù)的完整性。

https流程:

https作為一種安全的應(yīng)用層協(xié)議,使用了以下三種加密手段:

數(shù)據(jù)正文數(shù)據(jù)量較大,適用于對(duì)稱加密,因?yàn)閷?duì)稱加密速度快,適用于大量數(shù)據(jù)加密,但是安全級(jí)別低,密鑰在網(wǎng)絡(luò)中傳輸?shù)倪^(guò)程中容易被竊取,所以對(duì)這個(gè)密鑰進(jìn)行非對(duì)稱加密。

最后由于非對(duì)稱加密的公鑰在網(wǎng)絡(luò)中傳輸,保證接收方接收到正確的公鑰,使用證書(shū)驗(yàn)證:

1、客戶端發(fā)送HTTPS請(qǐng)求。

2、服務(wù)器收到請(qǐng)求后,返回?cái)?shù)字證書(shū)(數(shù)字簽名+公鑰)。

3、客戶端驗(yàn)證證書(shū)是否合法(用服務(wù)端的公鑰驗(yàn)簽),不合法則提示警告。

4、驗(yàn)證合法后,本地生成密鑰(對(duì)稱加密密鑰)并用服務(wù)端的提供的公鑰加密后發(fā)送給服務(wù)端。

5、服務(wù)端用自己的私鑰對(duì)數(shù)據(jù)解密,得到客戶端密鑰(對(duì)稱加密密鑰),再用客戶端密鑰對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行加密后發(fā)給客戶端。

總結(jié):

發(fā)送https請(qǐng)求后,先驗(yàn)證CA證書(shū)是否和好,再生成本地密鑰(對(duì)稱密鑰),使用服務(wù)端公鑰加密對(duì)稱密鑰再發(fā)送服務(wù)端。服務(wù)端用自己的私鑰解密后,取得對(duì)稱密鑰,此時(shí)就可以數(shù)據(jù)傳輸了,服務(wù)端用對(duì)稱密鑰對(duì)請(qǐng)求數(shù)據(jù)加密,發(fā)送給客戶端,客戶端收到后用對(duì)稱密鑰解密拿到明文。

用基于數(shù)字證書(shū)的非對(duì)稱加密 加密 對(duì)稱加密的密鑰后 加密傳輸數(shù)據(jù)。

問(wèn)題小結(jié):

為什么數(shù)據(jù)傳輸是用對(duì)稱加密?

答:HTTP的應(yīng)用場(chǎng)景中通常端與端之間存在大量的交互,非對(duì)稱加密的加解密效率非常低。
另外,在 HTTPS的場(chǎng)景中只有服務(wù)端保存了私鑰,一對(duì)公私鑰只能實(shí)現(xiàn)單向的加解密,所以 HTTPS 中內(nèi)容傳輸加密采取的是對(duì)稱加密

為什么需要證書(shū)?
答:防止“中間人”攻擊,同時(shí)可以為網(wǎng)站提供身份證明。

使用 HTTPS 會(huì)被抓包嗎?
答:會(huì)被抓包,HTTPS 只防止用戶在不知情的情況下通信被監(jiān)聽(tīng),如果用戶主動(dòng)授信,是可以構(gòu)建“中間人”網(wǎng)絡(luò),代理軟件可以對(duì)傳輸內(nèi)容進(jìn)行解密。

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 原文鏈接:https://www.cnblogs.com/huansky/p/13977181.html[http...
    益達(dá)_glmsb閱讀 724評(píng)論 0 1
  • 前言 近幾年,互聯(lián)網(wǎng)發(fā)生著翻天覆地的變化,尤其是我們一直習(xí)以為常的HTTP協(xié)議,在逐漸的被HTTPS協(xié)議所取代,在...
    指尖跳動(dòng)閱讀 7,093評(píng)論 0 2
  • 原文鏈接:https://www.cnblogs.com/huansky/p/13977181.html[http...
    Serp閱讀 242評(píng)論 0 0
  • https原理詳解http://liuduo.me/2018/05/14/https-detail/[http:/...
    小紅軍storm閱讀 1,111評(píng)論 0 10
  • 文章首發(fā)于個(gè)人博客地址:HTTPS詳解[https://wjsummer.top/category/HTTPS%E...
    Mr丶Summer閱讀 1,735評(píng)論 0 17

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