參考博客:
深入HTTPS系列 https://www.jianshu.com/p/a677fecec927
數字證書PKI原理 https://cshihong.github.io/2019/04/15/數字證書PKI原理/
HTTPS爲什麼安全 &分析 HTTPS 連接建立全過程 https://www.jianshu.com/p/0d8575b132a8
圖解 HTTPS:https://github.com/youngwind/blog/issues/108
SSL/TLS協議運行機制的概述 http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
一文讀懂對稱加密算法、非對稱加密算法和 Hash 算法 https://www.chainnews.com/articles/222021126804.htm
Https單向認證和雙向認證 https://blog.csdn.net/duanbokan/article/details/50847612
扯一扯HTTPS單向認證、雙向認證、抓包原理、反抓包策略 https://juejin.im/post/5c9cbf1df265da60f6731f0a
HTTPS實戰之單向驗證和雙向驗證 https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA
對這塊內容的學習源於項目中安全性的討論時自己提了一個低級問題:md5公鑰。。。之前自己對加密方法、簽名、https不夠深入,項目中要升級安全性,學習這塊內容刻不容緩了,同時也很慚愧,很多知識連知其然都沒有做到,更不要提知其所以然了。。學習技術如果只是淺嘗輒止,不縱向橫向展開學習,很難有所提高,所以,要讓自己離開學習的舒適區,進入“衣帶漸寬終不悔”的區域才行啊
雙向認證處的邏輯還待補充
對稱加密
AES DES
使用同一個密鑰進行數據的加密、解密;可逆
優點:運算速度快
缺點:密鑰需要分發給數據的加密方和解密方,易泄漏
非對稱加密
RSA
由公鑰和私鑰組成;可逆
優點:解決對稱加密的分發問題
缺點:運算速度遠遠慢於對稱加密
公鑰:由客戶端保存 允許公開
- 加密傳輸信息
- 對簽名進行解密
私鑰:有服務端保存 不允許公開
- 解密傳輸信息
- 簽名
哈希算法
md5 sha1
不可逆,一般用於數據完整性的校驗、數據是否被篡改的校驗
通過hash算法對目標信息生成一段特定長度的唯一的哈希值,通過此哈希值無法推導出目標信息
數字簽名
哈希算法+非對稱加密
https驗證過程
對稱加密+非對稱加密+哈希算法
客戶端使用CA公鑰解密後驗證數字證書:
- 驗證證書是否過期
- 頒發證書的機構是否可靠
- 證書中的公鑰是否能正確解開證書中的數字簽名
- 證書中的域名是否匹配目標域名
單向驗證
只有客戶端對服務端下發的數字證書的校驗
多應用於web應用,用戶數目廣泛
爲什麼需要對服務端下發的數字證書校驗?
如果在客戶端和服務端之前存在中間人,且如果中間人也擁有CA證書,客戶端在發起ssl請求時,被中間人截獲,中間人將自己的CA證書返回給客戶端,如果客戶端不做證書中域名與目標域名的校驗,則會信任中間人的CA證書,對稱加密的私鑰安全性無法保證,則之後數據傳輸的安全性也無法得到保證。
雙向驗證
既有客戶端對服務端下發的數字證書的校驗,也有服務端對客戶端上傳證書的校驗
多應用於金融項目,安全級別高
兩個證書:
- 服務端下發的數字證書:CA機構認證
- 客戶端上傳的證書:不需要CA機構認證,需要與服務端約定認證規則