華為云計(jì)算 云知識(shí) https雙向認(rèn)證與單向認(rèn)證
https雙向認(rèn)證與單向認(rèn)證

首先要理解非對(duì)稱加密與對(duì)稱加密

(1)非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對(duì),如果用公開密鑰對(duì)數(shù)據(jù)進(jìn)行加密,

只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公開密鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,

所以這種算法叫作非對(duì)稱加密算法。非對(duì)稱加密算法實(shí)現(xiàn)機(jī)密信息交換的基本過程是:

甲方生成一對(duì)密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對(duì)機(jī)密信息進(jìn)行加密后再發(fā)送給甲方;

甲方再用自己保存的另一把專用密鑰對(duì)加密后的信息進(jìn)行解密。

非對(duì)稱加密原理:

1.A要向B發(fā)送信息,A都會(huì)產(chǎn)生一對(duì)用于加密和解密的公鑰和私鑰。

2.A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰告訴A。

3.A要給B發(fā)送信息時(shí),A用B的公鑰加密信息,因?yàn)锳知道B的公鑰。

4.A將這個(gè)消息發(fā)給B(已經(jīng)用B的公鑰加密消息)。

5.B收到這個(gè)消息后,B用自己的私鑰解密A的消息。其他所有收到這個(gè)報(bào)文的人都無法解密,因?yàn)橹挥蠦才有B的私鑰。

(2)對(duì)稱加密算法是應(yīng)用較早的加密算法,技術(shù)成熟。在對(duì)稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,

使其變成復(fù)雜的加密密文發(fā)送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對(duì)密文進(jìn)行解密,

才能使其恢復(fù)成可讀明文。在對(duì)稱加密算法中,使用的密鑰只有一個(gè),發(fā)收信雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,

這就要求解密方事先必須知道加密密鑰。對(duì)稱加密算法的特點(diǎn)是算法公開、計(jì)算量小、加密速度快、加密效率高。

不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對(duì)用戶每次使用對(duì)稱加密算法時(shí),都需要使用其他人不知道的惟一鑰匙,

這會(huì)使得發(fā)收信雙方所擁有的鑰匙數(shù)量成幾何級(jí)數(shù)增長(zhǎng),密鑰管理成為用戶的負(fù)擔(dān)。

對(duì)稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。

在計(jì)算機(jī)專網(wǎng)系統(tǒng)中廣泛使用的對(duì)稱加密算法有DES、IDEA和AES。

單向認(rèn)證:

Https在建立Socket連接之前,需要進(jìn)行握手。

(1)客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息。

(2)服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息,同時(shí)也返回服務(wù)器端的證書,即公鑰證書

(3)客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:證書是否過期,發(fā)型服務(wù)器證書的CA是否可靠,返回的公鑰是否能正確解開返回證書中的數(shù)字簽名

,服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配,驗(yàn)證通過后,將繼續(xù)進(jìn)行通信,否則,終止通信

(4)客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案,供服務(wù)器端進(jìn)行選擇。

(5)服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式。

(6)服務(wù)器將選擇好的加密方案通過明文方式返回給客戶端,

(7)客戶端接收到服務(wù)端返回的加密方式后,使用該加密方式生成產(chǎn)生隨機(jī)碼,用作通信過程中對(duì)稱加密的密鑰,

使用服務(wù)端返回的公鑰進(jìn)行加密,將加密后的隨機(jī)碼發(fā)送至服務(wù)器。

(8)服務(wù)器收到客戶端返回的加密信息后,使用自己的私鑰進(jìn)行解密,獲取對(duì)稱加密密鑰。

在接下來的會(huì)話中,服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密,保證通信過程中信息的安全。

雙向認(rèn)證

雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外,增加了服務(wù)端對(duì)客戶端的認(rèn)證。

(1)客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息。

(2)服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息,同時(shí)也返回服務(wù)器端的證書,即公鑰證書。

(3)客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:

證書是否過期

發(fā)型服務(wù)器證書的CA是否可靠

返回的公鑰是否能正確解開返回證書中的數(shù)字簽名

服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配

驗(yàn)證通過后,將繼續(xù)進(jìn)行通信,否則,終止通信

(4)服務(wù)端要求客戶端發(fā)送客戶端的證書,客戶端會(huì)將自己的證書發(fā)送至服務(wù)端

(5)驗(yàn)證客戶端的證書,通過驗(yàn)證后,會(huì)獲得客戶端的公鑰

(6)客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案,供服務(wù)器端進(jìn)行選擇

(7)服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式

(8)將加密方案通過使用之前獲取到的公鑰進(jìn)行加密,返回給客戶端

(9)客戶端收到服務(wù)端返回的加密方案密文后,使用自己的私鑰進(jìn)行解密,獲取具體加密方式,而后,產(chǎn)生該加密方式的隨機(jī)碼,用作加密過程中的密鑰,

使用之前從服務(wù)端證書中獲取到的公鑰進(jìn)行加密后,發(fā)送給服務(wù)端

(10)服務(wù)端收到客戶端發(fā)送的消息后,使用自己的私鑰進(jìn)行解密,獲取對(duì)稱加密的密鑰,在接下來的會(huì)話中,

服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密,保證通信過程中信息的安全。