1. 程式人生 > >https單向認證與雙向認證

https單向認證與雙向認證

加密原理 成熟 實現 服務器 數字 成本 密鑰對 域名 除了

1.首先理解非對稱加密與對稱加密
(1)非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,
只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麽只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,
所以這種算法叫作非對稱加密算法。 非對稱加密算法實現機密信息交換的基本過程是:
甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;
甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。
非對稱加密原理:
1.A要向B發送信息,A都會產生一對用於加密和解密的公鑰和私鑰。
2.A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰告訴A。
3.A要給B發送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。
4.A將這個消息發給B(已經用B的公鑰加密消息)。
5.B收到這個消息後,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰。
(2)對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理後,
使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,
才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,
這就要求解密方事先必須知道加密密鑰。對稱加密算法的特點是算法公開、計算量小、加密速度快、加密效率高。
不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一鑰匙,
這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。
對稱加密算法在分布式網絡系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。
在計算機專網系統中廣泛使用的對稱加密算法有DES、IDEA和AES。

2.單向認證:
Https在建立Socket連接之前,需要進行握手。
(1)客戶端向服務端發送SSL協議版本號、加密算法種類、隨機數等信息。
(2)服務端給客戶端返回SSL協議版本號、加密算法種類、隨機數等信息,同時也返回服務器端的證書,即公鑰證書
(3)客戶端使用服務端返回的信息驗證服務器的合法性,包括:證書是否過期,發型服務器證書的CA是否可靠,返回的公鑰是否能正確解開返回證書中的數字簽名
,服務器證書上的域名是否和服務器的實際域名相匹配,驗證通過後,將繼續進行通信,否則,終止通信
(4)客戶端向服務端發送自己所能支持的對稱加密方案,供服務器端進行選擇。
(5)服務器端在客戶端提供的加密方案中選擇加密程度最高的加密方式。
(6)服務器將選擇好的加密方案通過明文方式返回給客戶端,
(7)客戶端接收到服務端返回的加密方式後,使用該加密方式生成產生隨機碼,用作通信過程中對稱加密的密鑰,
使用服務端返回的公鑰進行加密,將加密後的隨機碼發送至服務器。
(8)服務器收到客戶端返回的加密信息後,使用自己的私鑰進行解密,獲取對稱加密密鑰。
在接下來的會話中,服務器和客戶端將會使用該密碼進行對稱加密,保證通信過程中信息的安全。
3.雙向認證
雙向認證和單向認證原理基本差不多,只是除了客戶端需要認證服務端以外,增加了服務端對客戶端的認證。
(1)客戶端向服務端發送SSL協議版本號、加密算法種類、隨機數等信息。
(2)服務端給客戶端返回SSL協議版本號、加密算法種類、隨機數等信息,同時也返回服務器端的證書,即公鑰證書。
(3)客戶端使用服務端返回的信息驗證服務器的合法性,包括:
證書是否過期
發型服務器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數字簽名
服務器證書上的域名是否和服務器的實際域名相匹配
驗證通過後,將繼續進行通信,否則,終止通信
(4)服務端要求客戶端發送客戶端的證書,客戶端會將自己的證書發送至服務端
(5)驗證客戶端的證書,通過驗證後,會獲得客戶端的公鑰
(6)客戶端向服務端發送自己所能支持的對稱加密方案,供服務器端進行選擇
(7)服務器端在客戶端提供的加密方案中選擇加密程度最高的加密方式
(8)將加密方案通過使用之前獲取到的公鑰進行加密,返回給客戶端
(9)客戶端收到服務端返回的加密方案密文後,使用自己的私鑰進行解密,獲取具體加密方式,而後,產生該加密方式的隨機碼,用作加密過程中的密鑰,
使用之前從服務端證書中獲取到的公鑰進行加密後,發送給服務端
(10)服務端收到客戶端發送的消息後,使用自己的私鑰進行解密,獲取對稱加密的密鑰,在接下來的會話中,
服務器和客戶端將會使用該密碼進行對稱加密,保證通信過程中信息的安全。

https單向認證與雙向認證