1 各類密鑰區別
- 密鑰對:在非對稱加密技術中,有兩種密鑰,分為
公鑰
和私鑰
公鑰是密鑰對所有者持有,公布給他人的;私鑰也是密鑰對所有者持有,不可公布 - 密鑰:指公鑰或私鑰。
- 公鑰:公鑰用來給數據加密,用公鑰加密的數據只能使用私鑰解密。
- 私鑰:如上,用來解密公鑰加密的數據。
- 摘要:對需要傳輸的文本,做一個
HASH
計算,一般采用SHA1
,SHA2
來獲得。 - 簽名:使用私鑰對需要傳輸的文本的摘要進行加密,得到的密文即被稱為該次傳輸過程的簽名
- 簽名驗證:數據接收端,拿到傳輸文本,但是需要確認該文本是否就是發送發出的內容,中途是否曾經被篡改。因此拿自己持有的公鑰對簽名進行解密(密鑰對中的一種密鑰加密的數據必定能使用另一種密鑰解密),得到了文本的摘要,然后使用與發送方同樣的HASH算法計算摘要值,再與解密得到的摘要做對比,發現二者完全一致,則說明文本沒有被篡改過。
- 總結:公鑰和私鑰是通過一種算法得到的一個密鑰對(即一個公鑰和一個私鑰),將其中的一個向外界公開,稱為公鑰;另一個自己保留,稱為私鑰。通過這種算法得到的密鑰對能保證在世界范圍內是唯一的。
公鑰和私鑰是成對的,它們互相解密(密鑰指公鑰或私鑰,密鑰對指公鑰加私鑰)。
公鑰和私鑰都可以加密和解密。
私鑰數字簽名,公鑰驗證。
注意
:使用這個密鑰對的時候,如果用其中一個密鑰加密一段數據,必須用另一個密鑰解密。比如用公鑰加密數據就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功
2 各類加密
2.1 對稱加密
加密 encryptio
n 與解密 decryption
使用的是同樣的密鑰 secret key
,對稱加密是最快速、最簡單的一種加密方式。加密和解密算法是公開的,秘鑰必須嚴格保存,如果秘鑰泄露,別人就能夠用密文+秘鑰
還原成你的明文。
對稱加密有很多種算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。
對稱加密通常使用的是相對較小的密鑰,一般小於 256bit
。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果只用 1bit
來做這個密鑰,那黑客們可以先試着用 0 來解密,不行的話就再用 1 解;但如果你的密鑰有 1MB 大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間
比如常見的 DES/AES
都是屬於對稱加密算法。
優點:
算法公開、計算量小、加密速度快、加密效率高
缺點:
秘鑰的管理和分發非常困難,不夠安全。在數據傳送前,發送方和接收方必須商定好秘鑰,然后雙方都必須要保存好秘鑰,如果一方的秘鑰被泄露,那么加密信息也就不安全了
2.2 非對稱加密
非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(簡稱公鑰)和私有密鑰(簡稱私鑰),即常說的公鑰加密,私鑰解密
或私鑰加密,公鑰解密
。
私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人,非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰
RSA
就是最常用的非對稱加密算法
雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。
優點:
安全性更高,公鑰是公開的,秘鑰是自己保存的,不需要將私鑰給別人
缺點:
加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
2.3 HTTPS
2.3.1 證書簽名
由於非對稱加密只是把公鑰傳給客戶端,倘若公鑰被中間機構給攔截就會有風險隱患,因此才有了證書秘鑰加密
證書秘鑰加密采用服務器和客戶端雙方都能夠充分信得過第三方證書認證機構
,首先服務器端會制定一種加密方式,稱為公鑰,有了公鑰后,服務器先不給客戶端,而是提交到第三方證書認證機構
,機構先審核,審核通過后,會對公鑰進行進行數字簽名(簽名主要作用就是為了防偽
),然后機構把攜帶了簽名的公鑰封裝到證書中,把證書發給客戶端,證書里面就是包含了數字簽名的公鑰
2.3.2 HTTPS原理
如上所言, HTTPS
協議之所以是安全的是因為采用證書加密
會對傳輸的數據進行加密,而加密過程是使用了非對稱加密實現。但其實:HTTPS
在內容傳輸的加密上使用的是對稱加密,非對稱加密只作用在證書驗證階段
兩個階段圖示:
證書驗證階段:
- 瀏覽器發起
HTTPS
請求,連接到服務器的443
端口; - 服務端返回 HTTPS 證書;
- 客戶端驗證證書是否合法,如果不合法則提示告警。
數據傳輸階段: - 當證書驗證合法后,在本地生成隨機數;
- 通過公鑰加密隨機數,並把加密后的隨機數傳輸到服務端;
- 服務端通過私鑰對隨機數進行解密;
- 服務端通過客戶端傳入的隨機數構造對稱加密算法,對返回結果內容進行加密后傳輸