一绣硝、概念
協(xié)議
1拓提、HTTP 協(xié)議(HyperText Transfer Protocol):超文本傳輸協(xié)議停蕉,是客戶端與服務(wù)器之間的通信協(xié)議 勺三。
2雷滚、HTTPS 協(xié)議(HyperText Transfer Protocol over Secure Socket Layer):可以理解為HTTP+SSL/TLS, 即 HTTP 下加入 SSL 協(xié)議吗坚,SSL的作用就是利用多種加密算法對HTTP進(jìn)行加密祈远,保證客戶端和服務(wù)器能夠安全的進(jìn)行通訊。
加密算法
1刻蚯、對稱加密
對稱加密指加密和解密使用相同密鑰的加密算法绊含。它的特點是算法公開、計算量小炊汹、加密速度快躬充、加密效率高。不足之處是讨便,交易雙方都使用同樣鑰匙充甚,安全性得不到保證。
常見算法:DES霸褒、AES等
2伴找、非對稱加密
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對废菱,如果用公開密鑰對數(shù)據(jù)進(jìn)行加密技矮,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進(jìn)行加密殊轴,那么只有用對應(yīng)的公開密鑰才能解密衰倦。它的特點是算法強度復(fù)雜、安全性高旁理。但是由于其算法復(fù)雜樊零,而使得加密解密速度沒有對稱加密解密的速度快。
常見算法:RSA孽文、DSA等
二驻襟、HTTPS
如上圖所示夺艰,HTTP請求過程中,客戶端與服務(wù)器之間沒有任何身份確認(rèn)的過程沉衣。服務(wù)器只要收到請求郁副,都會給予回應(yīng),因此這傳輸?shù)倪^程中厢蒜,數(shù)據(jù)很容易被黑客竊聽和篡改霞势。因此, HTTP 傳輸面臨的風(fēng)險有:
(1) 竊聽風(fēng)險:黑客可以獲知通信內(nèi)容斑鸦。
(2) 篡改風(fēng)險:黑客可以修改通信內(nèi)容愕贡。
(3) 冒充風(fēng)險:黑客可以冒充他人身份參與通信。
那么HTTPS是如何保證請求的安全呢巷屿?
如果利用對稱加密固以,雙方擁有相同的密鑰,信息得到安全傳輸嘱巾,但此種方式也存在著明顯的缺點憨琳,就是一旦公鑰被泄漏了,那么服務(wù)器的安全就無法得到保障旬昭。
如果利用非對稱加密篙螟,客戶端用公鑰對請求內(nèi)容加密,服務(wù)器使用私鑰對內(nèi)容解密问拘,這樣即使公鑰泄漏出去遍略,也不會影響服務(wù)器的安全。但是骤坐,由于非對稱加密算法的復(fù)雜度绪杏,解密的過程需要消耗較多的時間,這樣子會影響到用戶體驗纽绍。
因此蕾久,https取其精華,棄其糟粕拌夏,把兩者的優(yōu)點結(jié)合起來僧著。https協(xié)議在通信的過程中,會先進(jìn)行下圖所示的握手障簿,第1-5步的過程是利用非對稱加密算法盹愚,把客戶端生成的秘鑰傳到服務(wù)器,服務(wù)器利用私鑰機密卷谈,得到客戶端生成的密鑰。然后雙方再利用這個秘鑰對數(shù)據(jù)傳輸進(jìn)行對稱加密霞篡。這樣子世蔗,既保證了傳輸過程的安全端逼,又保證了數(shù)據(jù)傳輸?shù)男省=酉聛韺@個過程進(jìn)行詳細(xì)的分析:
(1)客戶端先向服務(wù)器發(fā)出加密通信的請求污淋,這一步被叫做ClientHello請求顶滩;
(2)圖中第二步的crt是服務(wù)器從證書頒發(fā)機構(gòu)申請的crt證書,證書包含證書的頒發(fā)機構(gòu)寸爆、有效期礁鲁、公鑰、簽名等相關(guān)信息赁豆。注意仅醇,證書中不包含私鑰,私鑰只存在服務(wù)器中
(3)服務(wù)器收到客戶端請求后魔种,向客戶端發(fā)出回應(yīng)析二,這叫做SeverHello請求,在這里节预,服務(wù)器會將證書傳到客戶端叶摄;
(4)客戶端收到響應(yīng)后,會對證書進(jìn)行驗證安拟,如果證書無效蛤吓,則會發(fā)出相應(yīng)的警告,如果證書是有效的糠赦,客戶端會生成一個隨機的秘鑰会傲;
(5)客戶端利用證書的公鑰進(jìn)行加密,把上一步生成的隨機秘鑰傳輸?shù)椒?wù)器愉棱;
(6)服務(wù)器利用對應(yīng)的私鑰進(jìn)行解密唆铐,獲取客戶端生成的隨機密鑰;
(7)服務(wù)器利用隨機密鑰進(jìn)行加密奔滑,把數(shù)據(jù)傳輸給客戶端艾岂;
(8)客戶端利用隨機密鑰進(jìn)行解密,獲取響應(yīng)的數(shù)據(jù)朋其。
三王浴、總結(jié)
綜上所述,相比 HTTP 協(xié)議梅猿,HTTPS 協(xié)議增加了很多握手氓辣、加密解密等流程,雖然過程很復(fù)雜袱蚓,但其可以保證數(shù)據(jù)傳輸?shù)陌踩ァK栽谶@個互聯(lián)網(wǎng)膨脹的時代,其中隱藏著各種看不見的危機,為了保證數(shù)據(jù)的安全体斩,維護(hù)網(wǎng)絡(luò)穩(wěn)定梭稚,建議大家多多推廣HTTPS。