個(gè)人對數(shù)據(jù)安全理解是:
算法是公開的,在當(dāng)前世界算力下,理論上不可破解的,是靠秘鑰來保證安全的,不是算法本身。
在我們?nèi)粘5拈_發(fā)過程中,我們開發(fā)人員保證數(shù)據(jù)安全,主要通過四個(gè)手段。
一 .HASH
通過對數(shù)據(jù)的簽名(其實(shí)就是對數(shù)據(jù)進(jìn)行HASH)保證傳輸過程中數(shù)據(jù)不被篡改。
如:微信的 “微信公眾平臺的接入” 的數(shù)據(jù)簽名(signature),保證消息的確來自微信服務(wù)器,并沒有被篡改過。

1 .hash算法是內(nèi)容摘要算法,是有損的,不可逆的,固定長度,輸入改變一點(diǎn),輸出千差萬別,但可能產(chǎn)生碰撞(可以參考王小云教授的構(gòu)造md5值),這里的hash算法可以是:md5或sha1等,如下圖:
Hash算法
2 .數(shù)據(jù)發(fā)送方和接收方用同樣的方式(數(shù)據(jù),key,hash算法)進(jìn)行 hash生成signature值。其中key是雙方約定的,并對第三方是絕對保密的,如果在傳輸過程中,其中某個(gè)數(shù)據(jù)被篡改,那么接收方收到的signature和接收方自己hash出的signature值就不相等,這樣保證數(shù)據(jù)的正確性。
二 . AES
通過數(shù)據(jù)進(jìn)行對稱加密(主要是AES),保證數(shù)據(jù)傳輸過程中數(shù)據(jù)不被泄密。
如:微信的 “微信公眾平臺的接入” 的數(shù)據(jù)加密傳輸。


之所以是對稱加密,指的是這里加密和解密用的是一個(gè)秘鑰key,秘鑰key是雙方約定的,并對第三方是絕對保密的,如果秘鑰key泄露了,或者擁有秘鑰key的人作惡了,就不安全了。對稱加密的速度比較快。
三 . RSA - 公鑰加密,私鑰機(jī)密
通過非對稱加密(RSA)的公鑰對數(shù)據(jù)進(jìn)行加密,然后通過私鑰對應(yīng)的私鑰對數(shù)據(jù)進(jìn)行解密,也是保證數(shù)據(jù)傳輸過程中數(shù)據(jù)不被泄密,非對稱加密的速度比較慢。
如:https的ssl協(xié)議

具體步驟:
- 主要的流程是通過openssl等工具生成一對公私鑰對,圖中public key 就是生成的公鑰,private key 就是生成的私鑰,公鑰可以公開給任何人,私鑰是自己絕對保密。plaintext是明文,ciphertext是密文,encryption是加密操作,decryption是解密操作,具體步驟:
- 明文(plaintext)通過公鑰進(jìn)行加密加密操作獲得一個(gè)密文(ciphertext)
- 密文(ciphertext)通過私鑰解密再解密成明文(plaintext)
注意:
加密只能用公鑰,解密只能用私鑰,不要問為什么,這是被數(shù)學(xué)證明過的。
四 . RSA - 私鑰加密,公鑰解密
通過非對稱加密(RSA)的私鑰對數(shù)據(jù)進(jìn)行加密,然后通過公鑰對應(yīng)的私鑰對數(shù)據(jù)進(jìn)行解密,為了證明加密著的身份,用于身份確認(rèn),
如:銀行發(fā)的U盾,證書。

具體步驟:
- 生成公私鑰對和上面一樣,通過openssl等工具生成一對公私鑰對,圖中public key 就是生成的公鑰,private key 就是生成的私鑰,公鑰可以公開給任何人,私鑰是自己絕對保密。plaintext是明文,ciphertext是密文,encryption是加密操作,decryption是解密操作,具體步驟正好和上面密碼過程相反:
- 明文(plaintext)通過私鑰進(jìn)行加密加密操作獲得一個(gè)密文(ciphertext)。
- 密文(ciphertext)通過公鑰解密再解密成明文(plaintext),如果能夠被成功解密,就能證明加密者的身份。
注意:
加密只能用私鑰,解密只能用公鑰,不要問為什么,這也是被數(shù)學(xué)證明過的。意思就是加密者加密一個(gè)密文,然后發(fā)給別人,別人如果能用加密者的公鑰解密(公鑰是全世界公開的),就能說明這個(gè)密文一定是被加密者用他的私鑰加密過的。
私鑰萬萬不能泄密,泄密了別人就會冒充你的身份。
私鑰除了不能泄密,還要保證一定不能丟失。
比如:比特幣賬戶都是匿名的,賬戶是靠用戶保存私鑰來保證安全的,有很多人忘記了私鑰,結(jié)果就是僵尸賬戶。
