你必須知道的 5 個重要的密碼學知識
引言
密碼學用于將輸入(明文)轉換為加密的輸出(密文)。因此,使用不同的算法將輸入轉換為輸出,大多數情況下需要使用密鑰來加密和解密。密碼學中的密鑰是用于算法的字符序列。然后,密文可用在世界各地的安全存儲和傳輸數據,只有發送者和接收者才能解密和讀取明文。
加密分為三種不同的方法:
-
對稱加密(Symmetric Encryption) -
非對稱加密(Asymmetric Encryption) -
散列(Hashing)
對稱加密
對 “FILM” 單詞的加密和解密:
對稱加密的主要優點是速度快。在速度很重要的用例(VPN、數據流等)中,主要使用對稱加密。因此,目前主要使用兩種對稱加密算法:
-
AES -
DES
密鑰交換
在對稱加密中,有一個主要問題必須解決,然后才能夠安全地使用它:如何獲取彼此的密鑰?
Diffie Hellmann
1976 年,該問題的第一個解決方案由 Whitfield Diffie 和 Martin Hellmann ?提出,同時該算法被命名為 Diffie Hellmann。Diffie Hellmann 會對通信的兩個成員生成相同的密鑰,而不需要預先共享密鑰。此過程的步驟是:
-
約定公有值 -
選擇私有(秘密)值 -
交換由公有值和秘密值計算出來的值 -
用步驟 3 得出的值和自己的秘密值計算密鑰,對于兩個通信員來說該密鑰的值是相同的。
這個過程在下圖中用顏色(而非數字)進行了可視化,以便理解:
混合系統
混合系統是使用對稱和非對稱加密的密碼系統。大多數情況下,非對稱加密系統用于加密對稱加密系統的密鑰。因為前者更安全,而后者更快速。
非對稱加密
在非對稱加密中,需要一個密鑰對來進行加密和解密。密鑰對由公鑰和私鑰組成。公鑰用于加密數據,然后只能用私鑰解密密文。公鑰可以公開共享,但私鑰必須保密,才能擁有安全的密碼系統。轉換過程包括以下步驟:
-
接收者共享公鑰 -
發送者用公鑰加密數據 -
密文被傳送至接收者 -
接收者用私鑰解密密文
該系統的優點是,可以在沒有任何安全措施和密鑰交換系統的情況下共享公鑰。缺點是非對稱加密的速度慢。最常見的非對稱加密算法有:
-
RSA -
ECC
散列
散列算法用于生成唯一且固定長度的字符串,也叫做哈希。其要求如下:
-
輸出長度固定(Fixed-Length-Output):輸出的長度始終相同 -
單向函數(One-Way-Function):很容易從輸入計算哈希,反向則幾乎不可。 -
碰撞阻力(Collision resistance):不容易找到兩個能產生相同輸出的輸入
當今最流行的散列算法:
-
SHA-2(Secure Hash Algorithm 2) -
SHA-3(Secure Hash Algorithm 3) -
MD5(Message-Digest Algorithm 5)→ 不應該再被使用 -
bcrypt?→ 主要用于密碼散列
輸入?Foo
?的哈希值示例:
SHA-3
bcrypt
MD5
數字簽名
數字簽名是一個不同的密碼學概念的用例,用于驗證數據和文檔的真實性。因此使用了非對稱加密和散列函數。簽名過程的步驟如下:
-
計算要被簽名文檔的哈希值 -
用非對稱密碼系統的私鑰來加密哈希值 -
創建由文檔和加密哈希值組成的簽名文檔
此過程在下圖中可視化:
要驗證已簽名的文檔,必須執行以下步驟:
-
使用公鑰來解密被附加到文檔的哈希值 -
計算該文檔的哈希值 -
將被解密(被傳輸)的哈希值與根據該文檔計算的哈希值進行比較
若這兩值匹配,則簽名有效,否則簽名無效。
鏈接:https://medium.com/nerd-for-tech/5-cryptography-concepts-you-should-know-9b2681067a35
(版權歸原作者所有,侵刪)