HTTPS 中SSL協議通信過程及對稱加密和非對稱加密詳解
對稱加密
所謂對稱加密,就是它們在編碼時使用的密鑰e和解碼時一樣d(e=d),我們就將其統稱為密鑰k。
對稱加解密的過程
1、發送端和接收端首先要共享相同的密鑰k(即通信前雙方都需要知道對應的密鑰)才能進行通信。
2、發送端用共享密鑰key對明文p進行加密,得到密文content,并將得到的密文發送給接收端,
3、接收端收到密文content后,并用其相同的共享密鑰key對密文進行解密,得出明文plaintext。
一般加密和解密的算法是公開的,需要保持隱秘的是密鑰key,流行的對稱加密算法有:DES,Triple-DES,RC2和RC4等
用郵局的例子來解釋下對稱加密
Alice 在盒子里放有信息,盒子上有掛鎖,她有鑰匙。通過郵局她把這個盒子寄給Bob。Bob收到盒子后,用相同的鑰匙打開盒子(鑰匙之前就得到了,可能是Alice面對面給他的)。然后Bob可以用同樣的方法回復。

對稱加密的不足主要有兩點:
1,發送方和接收方首先需要共享相同的密鑰,即存在密鑰k的分發問題,如何安全的把共享密鑰在雙方進行分享,這本身也是一個如何安全通信的問題,
一種方法是提前雙方約定好,不通過具體的通信進行協商,避免被監聽和截獲。
另外一種方式,將是下面我們介紹的通過非對稱加密信道進行對稱密碼的分發和共享,即混合加密系統。
2,密鑰管理的復雜度問題。由于對稱加密的密鑰是一對一的使用方式,若一方要跟n方通信,則需要維護n對密鑰。
對稱加密的好處是:
加密和解密的速度要比非對稱加密快很多,因此常用非對稱加密建立的安全信道進行共享密鑰的分享,完成后,具體的加解密則使用對稱加密。即混合加密系統。
另外一個點需要重點說明的是,密鑰k的長度對解密破解的難度有很重大的影響,k的長度越長,對應的密碼空間就越大,遭到暴力破解或者詞典破解的難度就更大,就更加安全。
非對稱加密
所謂非對稱加密技術是指加密的密鑰e和解密的密鑰d是不同的(e!=d),并且加密的密鑰e是公開的,叫做公鑰,而解密的密鑰d是保密的,叫私鑰。
非對稱加解密的過程如下:
加密一方找到接收方的公鑰e(如何找到呢?大部分的公鑰查找工作實際上都是通過數字證書來實現的),
然后用公鑰e對明文p進行加密后得到密文c,并將得到的密文發送給接收方,接收方收到密文后,用自己保留的私鑰d進行解密,得到明文p,
需要注意的是:用公鑰加密的密文,只有擁有私鑰的一方才能解密,這樣就可以解決加密的各方可以統一使用一個公鑰即可。
常用的非對稱加密算法有:RSA
非對稱加密
Bob和Alice各有自己的盒子。Alice要跟Bob秘密通信,她先讓Bob把開著的盒子通過郵局發給她。Alice拿到盒子后放入信息鎖上,然后發給Bob。Bob就可以用他自己的鑰匙打開了。回復的話就用同樣的方法。

非對稱加密的優點是:
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協議是通過非對稱密鑰機制保證雙方身份認證,并完成建立連接,在實際數據通信時通過對稱密鑰機制保障數據安全性
