數據安全HASH,AES,RSA算法實戰講解(1-概述)

個人對數據安全理解是:
算法是公開的,在當前世界算力下,理論上不可破解的,是靠秘鑰來保證安全的,不是算法本身。

在我們日常的開發過程中,我們開發人員保證數據安全,主要通過四個手段。

一 .HASH

通過對數據的簽名(其實就是對數據進行HASH)保證傳輸過程中數據不被篡改。
如:微信的 “微信公眾平臺的接入” 的數據簽名(signature),保證消息的確來自微信服務器,并沒有被篡改過。

Hash簽名

1 .hash算法是內容摘要算法,是有損的,不可逆的,固定長度,輸入改變一點,輸出千差萬別,但可能產生碰撞(可以參考王小云教授的構造md5值),這里的hash算法可以是:md5或sha1等,如下圖:


Hash算法

2 .數據發送方和接收方用同樣的方式(數據,key,hash算法)進行 hash生成signature值。其中key是雙方約定的,并對第三方是絕對保密的,如果在傳輸過程中,其中某個數據被篡改,那么接收方收到的signature和接收方自己hash出的signature值就不相等,這樣保證數據的正確性。

二 . AES

通過數據進行對稱加密(主要是AES),保證數據傳輸過程中數據不被泄密。
如:微信的 “微信公眾平臺的接入” 的數據加密傳輸。

對稱加密算法-加密
對稱加密算法-解密

之所以是對稱加密,指的是這里加密和解密用的是一個秘鑰key,秘鑰key是雙方約定的,并對第三方是絕對保密的,如果秘鑰key泄露了,或者擁有秘鑰key的人作惡了,就不安全了。對稱加密的速度比較快。

三 . RSA - 公鑰加密,私鑰機密

通過非對稱加密(RSA)的公鑰對數據進行加密,然后通過私鑰對應的私鑰對數據進行解密,也是保證數據傳輸過程中數據不被泄密,非對稱加密的速度比較慢。
如:https的ssl協議


RSA - 公鑰加密,私鑰機密

具體步驟:

  1. 主要的流程是通過openssl等工具生成一對公私鑰對,圖中public key 就是生成的公鑰,private key 就是生成的私鑰,公鑰可以公開給任何人,私鑰是自己絕對保密。plaintext是明文,ciphertext是密文,encryption是加密操作,decryption是解密操作,具體步驟:
  2. 明文(plaintext)通過公鑰進行加密加密操作獲得一個密文(ciphertext)
  3. 密文(ciphertext)通過私鑰解密再解密成明文(plaintext)

注意:
加密只能用公鑰,解密只能用私鑰,不要問為什么,這是被數學證明過的。

四 . RSA - 私鑰加密,公鑰解密

通過非對稱加密(RSA)的私鑰對數據進行加密,然后通過公鑰對應的私鑰對數據進行解密,為了證明加密著的身份,用于身份確認,
如:銀行發的U盾,證書。


RSA - 私鑰加密,公鑰解密

具體步驟:

  1. 生成公私鑰對和上面一樣,通過openssl等工具生成一對公私鑰對,圖中public key 就是生成的公鑰,private key 就是生成的私鑰,公鑰可以公開給任何人,私鑰是自己絕對保密。plaintext是明文,ciphertext是密文,encryption是加密操作,decryption是解密操作,具體步驟正好和上面密碼過程相反:
  2. 明文(plaintext)通過私鑰進行加密加密操作獲得一個密文(ciphertext)。
  3. 密文(ciphertext)通過公鑰解密再解密成明文(plaintext),如果能夠被成功解密,就能證明加密者的身份。

注意:

  • 加密只能用私鑰,解密只能用公鑰,不要問為什么,這也是被數學證明過的。意思就是加密者加密一個密文,然后發給別人,別人如果能用加密者的公鑰解密(公鑰是全世界公開的),就能說明這個密文一定是被加密者用他的私鑰加密過的。

  • 私鑰萬萬不能泄密,泄密了別人就會冒充你的身份。

  • 私鑰除了不能泄密,還要保證一定不能丟失。
    比如:比特幣賬戶都是匿名的,賬戶是靠用戶保存私鑰來保證安全的,有很多人忘記了私鑰,結果就是僵尸賬戶。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。