一、什么是對稱加密和非對稱加密
1、對稱加密
在對稱加密算法中,加密使用的密鑰和解密使用的密鑰是相同的。也就是說,加密和解密都是使用的同一個密鑰。
2、對稱加密算法的缺點
1、要求提供一條安全的渠道使通訊雙方在首次通訊時協商一個共同的密鑰。直接的面對面協商可能是不現實而且難于實施的,所以雙方可能需要借助于郵件和電話等其它相對不夠安全的手段來進行協商;
2、密鑰的數目難于管理。因為對于每一個合作者都需要使用不同的密鑰,很難適應開放社會中大量的信息交流;
3、對稱加密算法一般不能提供信息完整性的鑒別。它無法驗證發送者和接受者的身份;
4、對稱密鑰的管理和分發工作是一件具有潛在危險的和煩瑣的過程。對稱加密是基于共同保守秘密來實現的,采用對稱加密技術的貿易雙方必須保證采用的是相同的密鑰,保證彼此密鑰的交換是安全可靠的,同時還要設定防止密鑰泄密和更改密鑰的程序。
3、非對稱加密
非對稱加密:指加密和解密使用不同密鑰的加密算法。非對稱加密算法需要兩個密鑰:公鑰(publickey)
和私鑰(privatekey)
。
公鑰與私鑰是一對存在,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用密鑰對數據進行加密,那么只有用對應的公鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
4、兩種加密體制的特點
非對稱密碼體制
的特點:算法強度復雜、安全性依賴于算法與密鑰但是由于其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快。
對稱密碼體制
中只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰,所以保證其安全性就是保證密鑰的安全。而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。
假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。
如果企業中有n個用戶,企業需要生成n對密鑰,并分發n個公鑰。由于公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發將變得 十分簡單。同時,由于每個用戶的私鑰是唯一的,其他用戶除了可以通過"信息發送者的公鑰"來驗證信息的來源是否真實,還可以確保發送者無法否認曾發送過該信息。非對稱加密的缺點是加解密速度要遠遠慢于對稱加密,在某些極端情況下,甚至能比對稱加密慢上1000倍。
非對稱的好處顯而易見,非對稱加密體系不要求通信雙方事先傳遞密鑰或有任何約定就能完成保密通信,并且密鑰管理方便,可實現防止假冒和抵賴,因此,更適合網絡通信中的保密通信要求。
二、數字證書和數字簽名簡介
1、什么是數字證書
1.1、
數字證書就是互聯網通訊中標志通訊各方身份信息的一串數字,提供了一種在Internet上驗證通信實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。
1.2、
它是由權威機構——CA機構,又稱為證書授權(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。
1.3、
數字證書綁定了公鑰及其持有者的真實身份,它類似于現實生活中的居民身份證,所不同的是數字證書不再是紙質的證照,而是一段含有證書持有者身份信息并經過認證中心審核簽發的電子數據,廣泛用在電子商務和移動互聯網中。
2、什么是數字簽名
2.1、
數字簽名是將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發送者的公鑰才能解密被加密的摘要信息,然后用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。
如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改;
否則說明信息被修改過,因此數字簽名能夠驗證信息的完整性。
如果中途數據被纂改或者丟失。那么對方就可以根據數字簽名來辨別是否是來自對方的第一手信息數據。
2.2、
數字簽名是個加密的過程,數字簽名驗證是個解密的過程。
2.3、
數字簽名用來,保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。
非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。
三、非對稱加密和對稱加密在HTTPS協議中的應用
3.1、瀏覽器向服務器發出請求,詢問對方支持的對稱加密算法和非對稱加密算法;服務器回應自己支持的算法。
3.2、瀏覽器選擇雙方都支持的加密算法,并請求服務器出示自己的證書;服務器回應自己的證書。
3.3、瀏覽器隨機產生一個用于本次會話的對稱加密的鑰匙,并使用服務器證書中附帶的公鑰對該鑰匙進行加密后傳遞給服務器;服務器為本次會話保持該對稱加密的鑰匙。第三方不知道服務器的私鑰,即使截獲了數據也無法解密。非對稱加密讓任何瀏覽器都可以與服務器進行加密會話。
3.4、瀏覽器使用對稱加密的鑰匙對請求消息加密后傳送給服務器,服務器使用該對稱加密的鑰匙進行解密;服務器使用對稱加密的鑰匙對響應消息加密后傳送給瀏覽器,瀏覽器使用該對稱加密的鑰匙進行解密。第三方不知道對稱加密的鑰匙,即使截獲了數據也無法解密。對稱加密提高了加密速度 。
四、完整的非對稱加密過程
假如現在 你向支付寶 轉賬(術語數據信息),為了保證信息傳送的保密性、真實性、完整性和不可否認性,需要對傳送的信息進行數字加密和簽名,其傳送過程為:
1、首先你要確認是否是支付寶的數字證書,如果確認為支付寶身份后,則對方真實可信。可以向對方傳送信息;
2、你準備好要傳送的數字信息(明文)計算要轉的多少錢,對方支付寶賬號等;
3、你 對數字信息進行哈希運算,得到一個信息摘要(客戶端主要職責);
4、你用自己的私鑰對信息摘要進行加密得到 你 的數字簽名,并將其附在數字信息上;
5、你隨機產生一個加密密鑰,并用此密碼對要發送的信息進行加密(密文);
6、你用 支付寶的公鑰對剛才隨機產生的加密密鑰進行加密,將加密后的 DES 密鑰連同密文一起傳送給支付寶;
7、支付寶收到 你 傳送來的密文和加密過的 DES 密鑰,先用自己的私鑰對加密的 DES 密鑰進行解密,得到 你隨機產生的加密密鑰;
8、支付寶 然后用隨機密鑰對收到的密文進行解密,得到明文的數字信息,然后將隨機密鑰拋棄;
9、支付寶 用你 的公鑰對 你的的數字簽名進行解密,得到信息摘要;
10、支付寶用相同的哈希算法對收到的明文再進行一次哈希運算,得到一個新的信息摘要;
11、支付寶將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過;
12、確定收到信息,然后進行向對方進行付款交易,一次非對稱密過程結束。
五、參考
1、詳解HTTPS是如何確保安全性的?
2、【安全加密技術】非對稱加密
3、再談加密-RSA非對稱加密的理解和使用
4、一個故事教你看懂什么是數字證書,它的原理是什么?它的作用是什么?
5、關于Https協議中的ssl加密解密流程
6、對稱加密和非對稱加密介紹和區別
7、理解SSL(https)中的對稱加密與非對稱加密
8、非對稱加密算法
9、基于OpenSSL自建CA和頒發SSL證書
10、OpenSSL 與 SSL 數字證書概念貼