日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【https】对称加密与非对称加密再理解

發(fā)布時(shí)間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【https】对称加密与非对称加密再理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。