【https】对称加密与非对称加密再理解
對(duì)稱加密與非對(duì)稱加密再理解
文章目錄
- 對(duì)稱加密與非對(duì)稱加密再理解
- 一、對(duì)稱加密與非對(duì)稱加密
- 對(duì)稱加密
- 非對(duì)稱加密
- 二、混合加密
- 三、添加數(shù)字證書 + 混合加密
- https的真正請(qǐng)求流程
- 四、數(shù)字證書
- 服務(wù)器獲取證書?
- 摘要
- 簽名
一、對(duì)稱加密與非對(duì)稱加密
HTTPS 的安全性是由 TLS 來保證的。
加密可以分為兩大類:對(duì)稱加密和非對(duì)稱加密。
對(duì)稱加密
對(duì)稱加密的方法是,雙方使用同一個(gè)秘鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密。但是對(duì)稱加密的存在一個(gè)問題,就是如何保證秘鑰傳輸?shù)陌踩?#xff0c;因?yàn)槊罔€還是會(huì)通過網(wǎng)絡(luò)傳輸?shù)?#xff0c;一旦秘鑰被其他人獲取到,那么整個(gè)加密過程就毫無作用了。 這就要用到非對(duì)稱加密的方法。速度要比非對(duì)稱加密快。
非對(duì)稱加密
非對(duì)稱加密的方法是,我們擁有兩個(gè)秘鑰,一個(gè)是公鑰,一個(gè)是私鑰。公鑰是公開的,私鑰是保密的。用私鑰加密的數(shù)據(jù),只有對(duì)應(yīng)的公鑰才能解密,用公鑰加密的數(shù)據(jù),只有對(duì)應(yīng)的私鑰才能解密。我們可以將公鑰公布出去,任何想和我們通信的客戶, 都可以使用我們提供的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,這樣我們就可以使用私鑰進(jìn)行解密,這樣就能保證數(shù)據(jù)的安全了。但是非對(duì)稱加密有一個(gè)缺點(diǎn)就是加密的過程很慢,因此如果每次通信都使用非對(duì)稱加密的方式的話,反而會(huì)造成等待時(shí)間過長的問題。
二、混合加密
對(duì)稱加密和非對(duì)稱加密搭配使用。
基于以上兩點(diǎn)原因,最終選擇了一個(gè)更加完美的方案,那就是在傳輸數(shù)據(jù)階段依然使用對(duì)稱加密,但是對(duì)稱加密的密鑰我們采用非對(duì)稱加密來傳輸。
https使用混合加密,并且還要配合數(shù)字證書來實(shí)現(xiàn)安全性。
從圖中可以看出,改造后的流程是這樣的:
- 首先瀏覽器向服務(wù)器發(fā)送對(duì)稱加密套件列表、非對(duì)稱加密套件列表和隨機(jī)數(shù) client-random;
- 服務(wù)器保存隨機(jī)數(shù) client-random,選擇對(duì)稱加密和非對(duì)稱加密的套件,然后生成隨機(jī)數(shù) service-random,向?yàn)g覽器發(fā)送選擇的加密套件、service-random 和公鑰;
- 瀏覽器保存公鑰,并利用 client-random 和 service-random 計(jì)算出來 pre-master,然后利用公鑰對(duì) pre-master 加密,并向服務(wù)器發(fā)送加密后的數(shù)據(jù);
- 最后服務(wù)器拿出自己的私鑰,解密出 pre-master 數(shù)據(jù),并返回確認(rèn)消息。
到此為止,服務(wù)器和瀏覽器就有了共同的 client-random、service-random 和 pre-master,然后服務(wù)器和瀏覽器會(huì)使用這三組隨機(jī)數(shù)生成對(duì)稱密鑰,因?yàn)榉?wù)器和瀏覽器使用同一套方法來生成密鑰,所以最終生成的密鑰也是相同的。
有了對(duì)稱加密的密鑰之后,雙方就可以使用對(duì)稱加密的方式來傳輸數(shù)據(jù)了。
需要特別注意的一點(diǎn),pre-master 是經(jīng)過公鑰加密之后傳輸?shù)?#xff0c;所以黑客無法獲取到 pre-master,這樣黑客就無法生成密鑰,也就保證了黑客無法破解傳輸過程中的數(shù)據(jù)了
注:什么是加密套件?
加密套件(CipherList)是指在ssl通信中,服務(wù)器和客戶端所使用的加密算法的組合。在ssl握手初期,客戶端將自身支持的加密套件列表發(fā)送給服務(wù)器;在握手階段,服務(wù)器根據(jù)自己的配置從中盡可能的選出一個(gè)套件,作為之后所要使用的加密方式。
其實(shí)就是服務(wù)器選擇一個(gè)雙方要使用的加密方法。
三、添加數(shù)字證書 + 混合加密
對(duì)稱加密和非對(duì)稱加密,以及兩者結(jié)合起來的混合加密,實(shí)現(xiàn)了機(jī)密性。
但僅有機(jī)密性,離安全還差的很遠(yuǎn)。
黑客雖然拿不到會(huì)話密鑰,無法破解密文,但可以通過竊聽收集到足夠多的密文,再嘗試著修改、重組后發(fā)給網(wǎng)站。因?yàn)闆]有完整性保證,服務(wù)器只能“照單全收”,然后他就可以通過服務(wù)器的響應(yīng)獲取進(jìn)一步的線索,最終就會(huì)破解出明文。
另外,黑客也可以偽造身份發(fā)布公鑰。如果你拿到了假的公鑰,混合加密就完全失效了。你以為自己是在和“某寶”通信,實(shí)際上網(wǎng)線的另一端卻是黑客,銀行卡號(hào)、密碼等敏感信息就在“安全”的通信過程中被竊取了。
所以,在機(jī)密性的基礎(chǔ)上還必須加上完整性、身份認(rèn)證等特性,才能實(shí)現(xiàn)真正的安全。
https的真正請(qǐng)求流程
https使用混合加密,并且還要配合數(shù)字證書來實(shí)現(xiàn)安全性。
- 客戶端向服務(wù)器發(fā)起請(qǐng)求,請(qǐng)求中包含使用的TLS版本號(hào)、生成的一個(gè)隨機(jī)數(shù)、以及客戶端支持的加密方法。
- 服務(wù)器端接收到請(qǐng)求后,確認(rèn)雙方使用的加密方法和TLS版本號(hào)、并給出服務(wù)器的證書、以及一個(gè)服務(wù)器生成的隨機(jī)數(shù)。
- 客戶端確認(rèn)服務(wù)器證書有效后,生成一個(gè)新的隨機(jī)數(shù),并使用數(shù)字證書中解密拿到的服務(wù)器公鑰,加密這個(gè)隨機(jī)數(shù),然后發(fā)給服務(wù)器。
- 服務(wù)器使用自己的私鑰,來解密客戶端發(fā)送過來的隨機(jī)數(shù)。這樣服務(wù)器就拿到了第三個(gè)隨機(jī)數(shù)。而且只有客戶端和服務(wù)器端知道這第三個(gè)隨機(jī)數(shù),因?yàn)榈谌齻€(gè)隨機(jī)數(shù)是通過加密傳輸?shù)摹?/li>
- 客戶端和服務(wù)器端根據(jù)約定的加密方法使用前面的三個(gè)隨機(jī)數(shù),生成會(huì)話秘鑰,以后的對(duì)話過程都使用這個(gè)秘鑰(即會(huì)話秘鑰)來加密信息。
- 以后客戶端和服務(wù)器端都使用這個(gè)會(huì)話秘鑰來加密。
四、數(shù)字證書
服務(wù)器獲取證書?
- 首先,服務(wù)器先用Hash算法將自己的公鑰和其他信息(例如認(rèn)證時(shí)長,服務(wù)器域名…)進(jìn)行加密,生成一個(gè)信息摘要,傳遞給認(rèn)證機(jī)構(gòu),并且認(rèn)證機(jī)構(gòu)也會(huì)有自己的公鑰和私鑰,并且認(rèn)證機(jī)構(gòu)會(huì)將自己的公鑰給了瀏覽器。
- 然后認(rèn)證機(jī)構(gòu)會(huì)用自己的私鑰對(duì)已經(jīng)拿到的瀏覽器摘要進(jìn)行加密,生成簽名,簽名和信息摘要合在一起稱為數(shù)字證書,(認(rèn)證機(jī)構(gòu)生成的簽名是證書的關(guān)鍵,有了這個(gè)認(rèn)證機(jī)構(gòu)的簽名,證書就合法了)。
- 然后再把這個(gè)證書傳遞給服務(wù)器,服務(wù)器會(huì)保存自己的證書,服務(wù)器并且也會(huì)把證書傳遞給瀏覽器。
- 瀏覽器用認(rèn)證機(jī)構(gòu)傳給自己的公鑰對(duì)證書進(jìn)行解密拿到摘要A,并讀取證書中相關(guān)的明文信息,采用 CA 簽名時(shí)相同的 Hash 函數(shù)來計(jì)算并得到摘要B,對(duì)比信息摘要 A 和信息摘要 B,如果一致,則可以確認(rèn)證書是合法的,同時(shí)在摘要A中也拿到了服務(wù)器的公鑰。
摘要
給計(jì)算機(jī)一篇文章,計(jì)算機(jī)用摘要算法(主要是哈希類算法)生成一個(gè)字符串,如果文章內(nèi)容改變,哪怕是一個(gè)字,一個(gè)標(biāo)點(diǎn)符號(hào),摘要也會(huì)完全改變。和完全加密一篇文章相比,摘要的體積很小,因此非常有利于存儲(chǔ)和傳輸。
通常對(duì)于一個(gè)給定的摘要算法,無論你的文章多大,有多少字節(jié),最終生成摘要的字節(jié)數(shù)是固定的。
摘要是對(duì)原文的證明,從原文到摘要是一個(gè)不可逆的過程。
通過原文可以計(jì)算出摘要,一旦原文發(fā)生變化,哪怕是一個(gè)標(biāo)點(diǎn)符號(hào),摘要也會(huì)發(fā)生變化。而已知一個(gè)摘要,想要反推出原文,幾乎是不可能的。因?yàn)檎驮牟⒉皇且粚?duì)一的關(guān)系,是多個(gè)原文對(duì)應(yīng)一個(gè)摘要。而且,想要找到兩個(gè)摘要碰撞的原文是非常困難的發(fā)生概率相當(dāng)于買彩票中大獎(jiǎng) 。而且就算黑客找到了碰撞的原文,也未必可以起到作用。
簽名
如果張三將合同生成摘要,再用自己的私鑰加密摘要,得到一個(gè)密文串,那么這個(gè)串就是張三對(duì)合同的數(shù)字簽名
總結(jié)
以上是生活随笔為你收集整理的【https】对称加密与非对称加密再理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue阶段总结
- 下一篇: (3).Mybatis动态sql的使用