對稱加密與非對稱加密

原文鏈接:https://www.jianshu.com/p/b078282653b3

對稱加密:A與 B 之間之間的通訊數據都用同一套的密鑰來進行加密解密。

  • 優點
    簡單快捷,密鑰較短,且破譯困難。
  • 缺點
    如果用戶一旦多的話,管理密鑰也是一種困難。不方便直接溝通的兩個用戶之間怎麼確定密鑰也需要考慮,這其中就會有密鑰泄露的風險,以及存在更換密鑰的需求。
  • 對稱加密通常有 DES,IDEA,3DES 加密算法。

非對稱加密:用公鑰和私鑰來加解密的算法。打個比方,A 的公鑰加密過的東西只能通過 A 的私鑰來解密;同理,A 的私鑰加密過的東西只能通過 A 的公鑰來解密。顧名思義,公鑰是公開的,別人可以獲取的到;私鑰是私有的,只能自己擁有。

  • 缺點
    加解密比對稱加密耗時.
  • 優點
    比對稱加密安全.

但是非對稱加密也是存在漏洞,因爲公鑰是公開的,如果有 C 冒充 B 的身份利用 A 的公鑰給 A 發消息,這樣就亂套了,所以接下來就採用非對稱加密+摘要算法+數字簽名的機制來確保傳輸安全。

常見的非對稱加密算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

Hash算法(摘要算法)

Hash算法的特點是單向不可還原,用戶可以通過hash算法對目標信息生成一段特定長度的唯一hash值,卻不能通過這個hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。只要源數據不同,算法得到的摘要必定不同。

常見的Hash算法有MD2、MD4、MD5、HAVAL、SHA

數字簽名

數字簽名用來,保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。
數字簽名是 A將原始明文通過 hash 算法得到摘要,這個摘要是不可逆的;將明文加密,連同摘要一起發送給B;B接收到後解密,得到這個摘要 a 和加密的明文,再將加密明文解密得到原始明文,然後通過同一 hash 算法得到新的摘要 b,比較 a 與 b 就可得知在傳輸過程中是否被更改過。
因此數字簽名能夠驗證信息的完整性。如果中途數據被纂改或者丟失。那麼對方就可以根據數字簽名來辨別是否是來自對方的第一手信息數據。

完整的非對稱加密過程

假如現在 你向支付寶 轉賬(術語數據信息),爲了保證信息傳送的保密性、真實性、完整性和不可否認性,需要對傳送的信息進行數字加密和簽名,其傳送過程爲:
1.首先你要確認是否是支付寶的數字證書,如果確認爲支付寶身份後,則對方真實可信。可以向對方傳送信息,
2.你準備好要傳送的數字信息(明文)計算要轉的多少錢,對方支付寶賬號等;
3.你 對數字信息進行哈希運算,得到一個信息摘要(客戶端主要職責);
4.你 用自己的私鑰對信息摘要進行加密得到 你 的數字簽名,並將其附在數字信息上;
5.你 隨機產生一個加密密鑰,並用此密碼對要發送的信息進行加密(密文);
6.你用 支付寶的公鑰對剛纔隨機產生的加密密鑰進行加密,將加密後的 DES 密鑰連同密文一起傳送給支付寶;
7.支付寶收到 你 傳送來的密文和加密過的 DES 密鑰,先用自己的私鑰對加密的 DES 密鑰進行解密,得到 你隨機產生的加密密鑰;
8.支付寶 然後用隨機密鑰對收到的密文進行解密,得到明文的數字信息,然後將隨機密鑰拋棄;
9.支付寶 用你 的公鑰對 你的的數字簽名進行解密,得到信息摘要;
10.支付寶用相同的哈希算法對收到的明文再進行一次哈希運算,得到一個新的信息摘要;
11.支付寶將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。
12 確定收到信息,然後進行向對方進行付款交易,一次非對稱密過程結束。在這後面的流程就不屬於本次非對稱加密的範疇,算支付寶個人的自我流程,也就是循環以上過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章