密碼學入門科普
一、對稱加密和非對稱加密入門
1. 如何不被竊聽 —— 加密
- 這種加密方案在密碼學裡稱為對稱密碼,加密方和解密方使用的是相同的密鑰。
- 知名的密碼演算法有 AES(2001)、Blowfish(1993)、DES(1977),再遠一點,有二戰時期的恩尼格碼(轉輪機原理,德國)、紫色密碼(轉輪機原理,日本),以及著名的凱撒密碼(沒錯就是地中海北岸那個凱撒)、柵欄密碼等。
2. 如何交換密鑰 —— 非對稱加密
解決信道安全問題
- Bob 事先生成一對公鑰和私鑰,私鑰 pri 由自己保管,把公鑰 pub 發給 Alice。
- Alice 使用 pub 對消息內容進行加密,Bob 用 pri 進行解密。
- 需要注意的是, 只有私鑰才可以解密,所以即使 Eve 竊取到了 pub(只有 pub 被傳輸而容易被竊取),她也無法解密。
- 這種加密方式在密碼學裡稱為非對稱密碼,所謂「非對稱」指的是加密方和解密方用的密鑰不一樣。
- 知名的非對稱演算法有:DSA(數字簽名演算法,只能用於簽名,1991)、ECC(橢圓曲線加密,1985)、RSA(公鑰加密演算法,1977)等。
- 這些演算法除了用於加密外,還可以用於 數字簽名。非對稱演算法有個致命弱點: 性能很低。實際應用中一般採用混合加密體制、哈希簽名體制。
3. 如何防止數據篡改 —— MAC
圖中的 MAC 指的是 消息認證碼(Message Authentication Code),你現在不需知道它的原理,只要記住 :(1)傳入兩個參數 message 和 key,進行一系列計算後得到一個值叫 MAC。(2)只有 message 和 key 相同的情況下,才能得到相同的 MAC。
- 消息認證碼有多種實現方式,其中最常見的是 HMAC(Hash MAC),即使用哈希演算法來實現 MAC,還有一種是基於分組密碼演算法的 MAC,不常見。
- 聰明如你,肯定會想到如果 key 被竊取該怎麼辦?這就涉及到 數字簽名了,後文會講到。
4. 如何校驗身份 —— MAC
- MAC包含幾種實現方式:基於 HASH 的 MAC 稱為 HMAC,應用比較廣泛。
- 有些同學應該接觸過阿里雲的 Access Key,其實就是 HMAC 的原理。
- 有些同學在兩個系統之間API調用時,會使用同一個 key 做 md5 計算來實現 API 鑒權,這稱為「加鹽HASH」,可以簡單理解為 HMAC 的簡化版。
- 同樣的,如果 key 被竊取該怎麼辦?這可以用 數字簽名來解決。
5.更進一步 —— 數字簽名
發送方是用 私鑰進行簽名,而接收方用 公鑰 進行驗簽,這跟加密情況正好相反。
6. 公鑰的身份證 —— 數字證書
偽造公鑰,Bob 需要事先生成公鑰 pub 和私鑰 pri ,然後把 pub 分發給 Alice。那麼攻擊過程就從這入手,Eve 生成自己的一對公鑰 pub" 和 私鑰 pri",截獲 Bob 的 pub,並用自己的 pub" 冒充 Bob 的公鑰發給 Alice。
這是個「偷天換日」的過程,Eve 通過偽造公鑰(中間人攻擊),不光竊聽到 Alice 的消息,還能保證整個過程中 Alice 和 Bob 都沒有察覺!
Eve 不是喜歡偽造公鑰嗎,Bob 這次就要請 Trent 為自己的公鑰註冊一張 「身份證」 —— 數字證書。見證如見人,哦不對,見證如見公鑰!以下是註冊數字證書的過程:
- Bob 請求 Trent 為自己的公鑰 pub 註冊一個證書。
- Trent 收到請求後,用自己的私鑰 pri " 對 pub(以及身份信息) 進行簽名,得到一個 sign。
- Trent 把證書 certificate = pub + sign 頒發給 Bob。
- Bob 把自己的證書 pub + sign 發給 Alice。
- Alice 使用 Trent 的公鑰 pub " 對 sign 進行驗簽,如果校驗成功則說明 pub 的確是 Bob 的公鑰,因為她相信 Trent 的權威性。
Eve 不可能找 Trent 為她辦一個 Bob 的數字證書,因為 Trent 不會同意的,就像警察蜀黍不會給我辦一張別人的身份證一樣。所以,Eve 無法偽造 Bob 的公鑰。
- 考慮到非對稱演算法的效率問題,實際應用中一般是先對數據進行哈希,然後才用私鑰對哈希值(摘要)進行簽名。
- Trent 在密碼技術領域中一般稱為 認證機構(Certification Authority,即 CA)。
- 以數字證書為基礎,業界制定了一系列的規範和規格,比如由誰頒發證書、如何進行頒發、如何作廢證書等,稱為 公鑰基礎設施(Public-Key Infrastructure,即 PKI)。
二、對稱加密常見密碼學
AES,DES,3DES,TDEA,Blowfish,RC5,IDEA
三、非對稱加密經典演算法
RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)
※ngrinder 壓測grpc協議方案
※Word最常用的100個通用快捷鍵
TAG:程序員小新人學習 |