一、加密算法
對稱加密:加密和解密使用同一個密鑰
非對稱加密:分為私鑰和公鑰,由私鑰加密的數(shù)據(jù)只能由公鑰解密,由公鑰加密的數(shù)據(jù)只能由私鑰解密,且先有的私鑰,公鑰只能由私鑰生成
對比:對稱加密效率更高,非對稱加密安全性更高
二、https原理
1.為啥用https?
http使用明文傳輸,容易被竊取和篡改;
https會對數(shù)據(jù)進行加密,傳輸?shù)氖敲芪模影踩?/p>
2.使用對稱加密?
NO,密鑰很容易被盜取
3.使用非對稱加密?
NO,效率低
4.最佳方案?
??兩者結(jié)合,服務(wù)端持有私鑰,訪問端持有公鑰,隨機生成一個“密鑰”,一方加密,另一方解密,雙方協(xié)商好“密鑰”后,就可以放心進行對稱加密了。
5.訪問端的公鑰怎么來的?
??首先訪問端可能是瀏覽器,也可能是客戶端,瀏覽器不可能事先保存所有網(wǎng)站的公鑰,客戶端也不可能把公鑰寫進代碼,很容易被反編譯拿到,所以這個公鑰應(yīng)該是由服務(wù)器返回的,而且還能動態(tài)更新。
但是服務(wù)器返回的公鑰有被篡改的風(fēng)險,訪問端一旦使用了假的公鑰進行加密,傳輸?shù)臄?shù)據(jù)就能被人以假的私鑰解密。
6.那么如何保證公鑰的正確性?
??訪問端判斷不了公鑰是否正確,因此需要引入第三方來幫助判斷,也就是CA機構(gòu)(數(shù)字證書認證機構(gòu))。具體原理是這樣的:
1、服務(wù)器相關(guān)人員拿著公鑰和money去向CA機構(gòu)申請證書
2、CA機構(gòu)將公鑰、域名、有效期等信息,通過CA機構(gòu)自己的私鑰進行加密,加密后的數(shù)據(jù)就是證書,交給服務(wù)器保管好
3、訪問端向服務(wù)器發(fā)起https連接時,服務(wù)器將證書傳送到訪問端
4、訪問端使用自己內(nèi)置的CA機構(gòu)公鑰(瀏覽器、pc、手機等都會在系統(tǒng)預(yù)置所有CA機構(gòu)的公鑰)對證書進行解密,如果解密成功,就能拿到正確的公鑰,不成功則斷開連接
5、拿到公鑰之后進行協(xié)商密鑰,傳輸數(shù)據(jù)等流程..