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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

对称加密与非对称加密的区别_https原理及对称加密、非对称加密、数字证书、数字签名的含义...

發(fā)布時(shí)間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对称加密与非对称加密的区别_https原理及对称加密、非对称加密、数字证书、数字签名的含义... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、為什么要使用https

使用https的原因其實(shí)很簡(jiǎn)單,就是因?yàn)閔ttp的不安全。

當(dāng)我們往服務(wù)器發(fā)送比較隱私的數(shù)據(jù)(比如說你的銀行卡,身份證)時(shí),如果使用http進(jìn)行通信。那么安全性將得不到保障。首先數(shù)據(jù)在傳輸?shù)倪^程中,數(shù)據(jù)可能被中間人抓包拿到,那么數(shù)據(jù)就會(huì)被中間人竊取。其次數(shù)據(jù)被中間人拿到后,中間人可能對(duì)數(shù)據(jù)進(jìn)行修改或者替換,然后發(fā)往服務(wù)器。最后服務(wù)器收到數(shù)據(jù)后,也無法確定數(shù)據(jù)有沒有被修改或替換,當(dāng)然,如果服務(wù)器也無法判斷數(shù)據(jù)就真的是來源于客戶端。

總結(jié)下來,http存在三個(gè)弊端:

  • 無法保證消息的保密性
  • 無法保證消息的完整性和準(zhǔn)確性
  • 無法保證消息來源的可靠性
  • https就是為了解決上述問題應(yīng)運(yùn)而生的。

    二、https中涉及的基本概念

    為了解決http中存在的問題,https采用了一些加解密,數(shù)字證書,數(shù)字簽名的技術(shù)來實(shí)現(xiàn)。下面先介紹一下這些技術(shù)的基本概念

    1.對(duì)稱加密與非對(duì)稱加密

    為了保證消息的保密性,就需要用到加密和解密。加解密算法目前主流的分為對(duì)稱加密和非對(duì)稱加密。

    1.對(duì)稱加密(共享密匙加密):客戶端和服務(wù)器公用一個(gè)密匙用來對(duì)消息加解密,這種方式稱為對(duì)稱加密。客戶端和服務(wù)器約定好一個(gè)加密的密匙。客戶端在發(fā)消息前用該密匙對(duì)消息加密,發(fā)送給服務(wù)器后,服務(wù)器再用該密匙進(jìn)行解密拿到消息。

    對(duì)稱加密的優(yōu)點(diǎn):對(duì)稱加密解決了http中消息保密性的問題

    對(duì)稱加密的缺點(diǎn):1.對(duì)稱加密雖然保證了消息保密性,但是因?yàn)榭蛻舳撕头?wù)器共享一個(gè)密匙,這樣就使得密匙特別容易泄露。

    2.因?yàn)槊艹仔孤讹L(fēng)險(xiǎn)較高,所以很難保證消息來源的可靠性、消息的完整性和準(zhǔn)確性。

    2.非對(duì)稱加密(公有密匙加密):既然對(duì)稱加密中,密匙那么容易泄露,那么我們可以采用一種非對(duì)稱加密的方式來解決。采用非對(duì)稱加密時(shí),客戶端和服務(wù)端均擁有一個(gè)公有密匙和一個(gè)私有密匙。公有密匙可以對(duì)外暴露,而私有密匙只有自己可見。使用公有密匙加密的消息,只有對(duì)應(yīng)的私有密匙才能解開。反過來,使用私有密匙加密的消息,只有公有密匙才能解開。這樣客戶端在發(fā)送消息前,先用服務(wù)器的公匙對(duì)消息進(jìn)行加密,服務(wù)器收到后再用自己的私匙進(jìn)行解密。

    非對(duì)稱加密的優(yōu)點(diǎn):1.非對(duì)稱加密采用公有密匙和私有密匙的方式,解決了http中消息保密性問題,而且使得私有密匙泄露的風(fēng)險(xiǎn)降低。

    2.因?yàn)楣准用艿南⒅挥袑?duì)應(yīng)的私匙才能解開,所以較大程度上保證了消息的來源性以及消息的準(zhǔn)確性和完整性。

    非對(duì)稱加密的缺點(diǎn):1.非對(duì)稱加密時(shí)需要使用到接收方的公匙對(duì)消息進(jìn)行加密,但是公匙在傳輸過程中很可能被中間人竊取。當(dāng)公匙被竊取之后,消息的來源性就無法得到保障。即無法保證公匙的來源。

    2.非對(duì)稱加密的性能相對(duì)對(duì)稱加密來說會(huì)慢上幾倍甚至幾百倍,比較消耗系統(tǒng)資源。正是因?yàn)槿绱?#xff0c;https將兩種加密結(jié)合了起來。

    2.數(shù)字證書與數(shù)字簽名

    為了解決非對(duì)稱加密中公匙來源的不安全性。我們可以使用數(shù)字證書和數(shù)字簽名來解決。

    1.數(shù)字證書的申請(qǐng)

    在現(xiàn)實(shí)中,有一些專門的權(quán)威機(jī)構(gòu)用來頒發(fā)數(shù)字證書,我們稱這些機(jī)構(gòu)為認(rèn)證中心(CA Certificate Authority)。我們(服務(wù)器)可以向這些CA來申請(qǐng)數(shù)字證書。申請(qǐng)的過程大致是:自己本地先生成一對(duì)密匙,然后拿著自己的公匙以及其他信息(比如說企業(yè)名稱啊什么的)去CA申請(qǐng)數(shù)字證書。CA在拿到這些信息后,會(huì)選擇一種單向Hash算法(比如說常見的MD5)對(duì)這些信息進(jìn)行加密,加密之后的東西我們稱之為摘要。單向Hash算法有一種特點(diǎn)就是單向不可逆的,只要原始內(nèi)容有一點(diǎn)變化,加密后的數(shù)據(jù)都將會(huì)是千差萬別(當(dāng)然也有很小的可能性會(huì)重復(fù),有興趣的小伙伴鴿巢原理了解一下),這樣就防止了信息被篡改。生成摘要后還不算完,CA還會(huì)用自己的私匙對(duì)摘要進(jìn)行加密,摘要加密后的數(shù)據(jù)我們稱之為數(shù)字簽名。最后,CA將會(huì)把我們的申請(qǐng)信息(包含服務(wù)器的公匙)和數(shù)字簽名整合在一起,由此而生成數(shù)字證書。然后CA將數(shù)字證書傳遞給我們(這里可能會(huì)引出另一個(gè)疑問,認(rèn)證中心如何安全的將數(shù)字證書傳遞給服務(wù)器的呢?如果在傳遞的過程中,數(shù)字證書被中間人給替換了呢?對(duì)于這個(gè)問題,其實(shí)現(xiàn)在如果我們?nèi)ド暾?qǐng),那么認(rèn)證中心是通過https傳遞給我們的。但是剛開始沒有https的時(shí)候呢?其實(shí)我是不太明白的,但其實(shí)沒必要糾結(jié),因?yàn)檫@就像蛋生雞雞生蛋,沒完沒了,我們就認(rèn)為數(shù)字證書不是誰都能申請(qǐng)的,要經(jīng)過嚴(yán)格的認(rèn)證才行,反正數(shù)字證書就可以安全的達(dá)到服務(wù)器)。

    2.數(shù)字證書怎么起作用

    服務(wù)器在獲取到數(shù)字證書后,服務(wù)器會(huì)將數(shù)字證書發(fā)送給客戶端,客戶端就需要用CA的公匙解密數(shù)字證書并驗(yàn)證數(shù)字證書的合法性。那我們?nèi)绾文苣玫紺A的公匙呢?我們的電腦和瀏覽器中已經(jīng)內(nèi)置了一部分權(quán)威機(jī)構(gòu)的根證書,這些根證書中包含了CA的公匙。

    之所以是根證書,是因?yàn)楝F(xiàn)實(shí)生活中,認(rèn)證中心是分層級(jí)的,也就是說有頂級(jí)認(rèn)證中心,也有下面的各個(gè)子級(jí)的認(rèn)證中心,是一個(gè)樹狀結(jié)構(gòu),計(jì)算機(jī)中內(nèi)置的是最頂級(jí)機(jī)構(gòu)的根證書,不過不用擔(dān)心,根證書的公匙在子級(jí)也是適用的。

    客戶端用CA的公匙解密數(shù)字證書,如果解密成功則說明證書來源于合法的認(rèn)證機(jī)構(gòu)。解密成功后,客戶端就拿到了摘要。此時(shí),客戶端會(huì)按照和CA一樣的Hash算法將申請(qǐng)信息生成一份摘要,并和解密出來的那份做對(duì)比,如果相同則說明內(nèi)容完整,沒有被篡改。最后,客戶端安全的從證書中拿到服務(wù)器的公匙就可以和服務(wù)器進(jìn)行安全的非對(duì)稱加密通信了。服務(wù)器想獲得客戶端的公匙也可以通過相同方式。

    下圖用圖解的方式說明一般的證書申請(qǐng)及其使用過程。

    三、https原理

    通過上面的學(xué)習(xí),我們了解對(duì)稱加密與非對(duì)稱加密的特點(diǎn)和優(yōu)缺點(diǎn),以及數(shù)字證書的作用。https沒有采用單一的技術(shù)去實(shí)現(xiàn),而是根據(jù)他們的特點(diǎn),充分的將這些技術(shù)整合進(jìn)去,以達(dá)到性能與安全最大化。這套整合的技術(shù)我們稱之為SSL(Secure Scoket Layer 安全套接層)。所以https并非是一項(xiàng)新的協(xié)議,它只是在http上披了一層加密的外殼。

    https的建立

    先看一下建立的流程圖:

    這里把https建立到斷開分為6個(gè)階段,12過程。下面將對(duì)12個(gè)過程一 一做解釋

    1.客戶端通過發(fā)送Client Hello報(bào)文開始SSL通信。報(bào)文中包含客戶端支持的SSL的指定版本、加密組件(Cipher Suite)列表(所使用的加密算法及密匙長(zhǎng)度等)。

    2.服務(wù)器可進(jìn)行SSL通信時(shí),會(huì)以Server Hello報(bào)文作為應(yīng)答。和客戶端一樣,在報(bào)文中包含SSL版本以及加密組件。服務(wù)器的加密組件內(nèi)容時(shí)從接收到的客戶端加密組件內(nèi)篩選出來的。

    3.服務(wù)器發(fā)送證書報(bào)文。報(bào)文中包含公開密匙證書。

    4.最后服務(wù)器發(fā)送Server Hello Done報(bào)文通知客戶端,最初階段的SSL握手協(xié)商部分結(jié)束。

    5.SSL第一次握手結(jié)束之后,客戶端以Client Key Exchange報(bào)文作為回應(yīng)。報(bào)文包含通信加密中使用的一種被稱為Pre-master secret的隨機(jī)密碼串。該報(bào)文已用步驟3中的公開密匙進(jìn)行加密。

    6.接著客戶端繼續(xù)發(fā)送Change Cipher Spec報(bào)文。該報(bào)文會(huì)提示服務(wù)器,在此報(bào)文之后的通信會(huì)采用Pre-master secret密匙加密。

    7.客戶端發(fā)送Finished報(bào)文。該報(bào)文包含連接至今全部報(bào)文的整體校驗(yàn)值。這次握手協(xié)商是否能夠成功,要以服務(wù)器是否能夠正確解密該報(bào)文作為判定標(biāo)準(zhǔn)。

    8.服務(wù)器同樣發(fā)送Change Cipher Spec報(bào)文

    9.服務(wù)器同樣發(fā)送Finished報(bào)文

    10.服務(wù)器和客戶端的Finished報(bào)文交換完畢之后,SSL連接就算建立完成。當(dāng)然,通信會(huì)收到SSL的保護(hù)。從此處開始進(jìn)行應(yīng)用層協(xié)議的通信,即發(fā)送HTTP請(qǐng)求。

    11.應(yīng)用層協(xié)議通信,即發(fā)送HTTP相應(yīng)。

    12.最后由客戶端斷開連接。斷開連接時(shí),發(fā)送close_notify報(bào)文。上圖做了一些省略,這步之后再發(fā)送TCP FIN報(bào)文來關(guān)閉與TCP的通信。

    另外,在以上流程圖中,應(yīng)用層發(fā)送數(shù)據(jù)時(shí)會(huì)附加一種叫做MAC(Message Authentication Code)的報(bào)文摘要。MAC能夠查知報(bào)文是否遭到篡改,從而保證報(bào)文的完整性。

    下面再用圖解來形象的說明一下,此圖比上面數(shù)字證書的圖更加的詳細(xì)一些(圖片來源于《圖解HTTP》)

    經(jīng)過上面的介紹,我們可以看出https先是利用數(shù)字證書保證服務(wù)器端的公匙可以安全無誤的到達(dá)客戶端。然后再用非對(duì)稱加密安全的傳遞共享密匙,最后用共享密匙安全的交換數(shù)據(jù)。

    四、https的使用

    https那么的安全,是不是我們?cè)谑裁磮?chǎng)景下都要去使用https進(jìn)行通信呢?答案是否定的。

    1.https雖然提供了消息安全傳輸?shù)耐ǖ?#xff0c;但是每次消息的加解密十分耗時(shí),消息系統(tǒng)資源。所以,除非在一些對(duì)安全性比較高的場(chǎng)景下,比如銀行系統(tǒng),購物系統(tǒng)中我們必須要使用https進(jìn)行通信,其他一些對(duì)安全性要求不高的場(chǎng)景,我們其實(shí)沒必要使用https。

    2.使用https需要使用到數(shù)字證書,但是一般權(quán)威機(jī)構(gòu)頒發(fā)的數(shù)字證書都是收費(fèi)的,而且價(jià)格也是不菲的,所以對(duì)于一些個(gè)人網(wǎng)站特別是學(xué)生來講,如果對(duì)安全性要求不高,也沒必要使用https。

    總結(jié)

    以上是生活随笔為你收集整理的对称加密与非对称加密的区别_https原理及对称加密、非对称加密、数字证书、数字签名的含义...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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