華為云計算 云知識 https雙向認證與單向認證
https雙向認證與單向認證

首先要理解非對稱加密與對稱加密

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

只有用對應的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,

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

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

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

非對稱加密原理:

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

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

3.A要給B發(fā)送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。

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

5.B收到這個消息后,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰。

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

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

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

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

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

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

對稱加密算法在分布式網(wǎng)絡系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。

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

單向認證:

Https在建立Socket連接之前,需要進行握手。

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

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

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

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

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

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

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

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

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

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

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

雙向認證

雙向認證和單向認證原理基本差不多,只是除了客戶端需要認證服務端以外,增加了服務端對客戶端的認證。

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

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

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

證書是否過期

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

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

服務器證書上的域名是否和服務器的實際域名相匹配

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

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

(5)驗證客戶端的證書,通過驗證后,會獲得客戶端的公鑰

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

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

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

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

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

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

服務器和客戶端將會使用該密碼進行對稱加密,保證通信過程中信息的安全。