加密算法簡介
簽名算法
- 應用場景:檢查封包正确性
- 方案:從封包文本中生成封包摘要
- 常用SHA或者MD5作為簽名算法
- 缺點:簽名算法不是加密算法,不能用來加密,作用是檢查篡改
對稱加密算法
- 應用場景:傳遞不适合明文傳輸的封包
- 方案:如果用一個密碼把消息加密,解密的時候還用這個密碼,這種加密算法就是對稱加密算法
- 常用AES加密算法
- 缺點:密碼需要定期更新,帶來密碼安全傳遞問題
DH密鑰交換算法
- 應用場景:通信雙方需要約定一個密碼,但是又必須通過一個不安全的信道傳遞密碼
- 方案:
- 發送方私有一個 a ,通過已知算法發送遺傳資訊 A
- 接收方私有一個 b ,通過已知算法發送遺傳資訊 B
- 發送方根據 a 和 B 通過算法計算出最終密碼 C ,接收方根據 b 和 A 通過算法計算出最終密碼 C
- 中間人隻擷取到 A B ,不足以計算出 C
- 常用Diffie-Hellman密鑰交換算法
- 缺點:中間人攻擊可破解
中間人攻擊:
僞造接收方向發送方協商密碼,根據 b’ ,發送 B’ ;僞造發送方向接收方協商密碼,根據 a’ ,發送 A’ ;進而獲得最終密碼 C1’ C2’
非對稱加密
- 應用場景:避免密鑰交換流程
- 方案:
- 發送方根據接收方的公鑰,對原文進行加密;
- 接收方根據自己的私鑰,對原文進行解密;
- 發送方會對原文摘要,根據自己的私鑰,進行(加密)簽名;
- 接收方會對原文解密後,根據發送方的公鑰,進行(解密)驗簽;
- 發送方和接收方隻需公開公鑰,保護各自的私鑰,無需向彼此發送秘鑰;
- 中間人沒有雙方的私鑰,無法解密封包,也無法僞造簽名(封包);
簽名:對明文進行摘要後,使用秘鑰對摘要進行加密,得到簽名
驗簽:對簽名使用秘鑰進行解密,與明文的摘要對比,進行驗簽
- 常用RSA非對稱加密算法
- 缺點:
- 需要事先生成公鑰私鑰對
- 針對每個使用者各自生成的一對公鑰私鑰,要對原文進行多次加密和簽名
- 計算量較大