1. 程式人生 > >https處理的一個過程,對稱加密和非對稱加密

https處理的一個過程,對稱加密和非對稱加密

一,對稱加密

所謂對稱加密,就是它們在編碼時使用的金鑰e和解碼時一樣d(e=d),我們就將其統稱為金鑰k。

對稱加解密的過程如下:

傳送端和接收端首先要共享相同的金鑰k(即通訊前雙方都需要知道對應的金鑰)才能進行通訊。傳送端用共享金鑰k對明文p進行加密,得到密文c,並將得到的密文傳送給接收端,接收端收到密文後,並用其相同的共享金鑰k對密文進行解密,得出明文p。

一般加密和解密的演算法是公開的,需要保持隱祕的是金鑰k,流行的對稱加密演算法有:DES,Triple-DES,RC2和RC4

對稱加密的不足主要有兩點:

1,傳送方和接收方首先需要共享相同的金鑰,即存在金鑰k的分發問題,如何安全的把共享金鑰在雙方進行分享,這本身也是一個如何安全通訊的問題,一種方法是提前雙方約定好,不通過具體的通訊進行協商,避免被監聽和截獲。另外一種方式,將是下面我們介紹的通過非對稱加密通道進行對稱密碼的分發和共享,即混合加密系統。

2,金鑰管理的複雜度問題。由於對稱加密的金鑰是一對一的使用方式,若一方要跟n方通訊,則需要維護n對金鑰。

對稱加密的好處是:

加密和解密的速度要比非對稱加密快很多,因此常用非對稱加密建立的安全通道進行共享金鑰的分享,完成後,具體的加解密則使用對稱加密。即混合加密系統。

另外一個點需要重點說明的是,金鑰k的長度對解密破解的難度有很重大的影響,k的長度越長,對應的密碼空間就越大,遭到暴力破解或者詞典破解的難度就更大,就更加安全。


二,非對稱加密

所謂非對稱加密技術是指加密的金鑰e和解密的金鑰d是不同的(e!=d),並且加密的金鑰e是公開的,叫做公鑰,而解密的金鑰d是保密的,叫私鑰。

非對稱加解密的過程如下:

加密一方找到接收方的公鑰e(如何找到呢?大部分的公鑰查詢工作實際上都是通過數字證書來實現的),然後用公鑰e對明文p進行加密後得到密文c,並將得到的密文傳送給接收方,接收方收到密文後,用自己保留的私鑰d進行解密,得到明文p,需要注意的是:用公鑰加密的密文,只有擁有私鑰的一方才能解密,這樣就可以解決加密的各方可以統一使用一個公鑰即可。

常用的非對稱加密演算法有:RSA

非對稱加密的優點是:

1,不存在金鑰分發的問題,解碼方可以自己生成金鑰對,一個做私鑰存起來,另外一個作為公鑰進行釋出。

2,解決了金鑰管理的複雜度問題,多個加密方都可以使用一個已知的公鑰進行加密,但只有擁有私鑰的一方才能解密。

非對稱加密不足的地方是加解密的速度沒有對稱加密快。

綜上,分析了對稱加密和非對稱加密各自的優缺點後,有沒有一種辦法是可以利用兩者的優點但避開對應的缺點呢?答應是有的,實際上用得最多的是混合加密系統,比如在兩個節點間通過便捷的公開密碼加密技術建立起安全通訊,然後再用安全的通訊產生併發送臨時的隨機對稱金鑰,通過更快的對稱加密技術對剩餘的資料進行加密。


SSL協議通訊過程

(1) 瀏覽器傳送一個連線請求給伺服器;伺服器將自己的證書(包含伺服器公鑰S_PuKey)、對稱加密演算法種類及其他相關資訊返回客戶端;

(2) 客戶端瀏覽器檢查伺服器傳送到CA證書是否由自己信賴的CA中心簽發。若是,執行4步;否則,給客戶一個警告資訊:詢問是否繼續訪問。

(3) 客戶端瀏覽器比較證書裡的資訊,如證書有效期、伺服器域名和公鑰S_PK,與伺服器傳回的資訊是否一致,如果一致,則瀏覽器完成對伺服器的身份認證。

(4) 伺服器要求客戶端傳送客戶端證書(包含客戶端公鑰C_PuKey)、支援的對稱加密方案及其他相關資訊。收到後,伺服器進行相同的身份認證,若沒有通過驗證,則拒絕連線;

(5) 伺服器根據客戶端瀏覽器傳送到密碼種類,選擇一種加密程度最高的方案,用客戶端公鑰C_PuKey加密後通知到瀏覽器;

(6) 客戶端通過私鑰C_PrKey解密後,得知伺服器選擇的加密方案,並選擇一個通話金鑰key,接著用伺服器公鑰S_PuKey加密後傳送給伺服器;

(7) 伺服器接收到的瀏覽器傳送到訊息,用私鑰S_PrKey解密,獲得通話金鑰key。

(8) 接下來的資料傳輸都使用該對稱金鑰key進行加密。

上面所述的是雙向認證 SSL 協議的具體通訊過程,伺服器和使用者雙方必須都有證書。由此可見,SSL協議是通過非對稱金鑰機制保證雙方身份認證,並完成建立連線,在實際資料通訊時通過對稱金鑰機制保障資料安全性