HTTPS基礎(chǔ)知識(shí):HTTPS (Secure Hypertext Transfer Protocol)安全超文本傳輸協(xié)議喊熟,是一個(gè)安全通信通道,它基于HTTP開發(fā)用于在客戶計(jì)算機(jī)和服務(wù)器之間交換信息打厘。它使用安全套接字層SSL進(jìn)行信息交換绪穆,簡(jiǎn)單來(lái)說(shuō)它是HTTP的安全版,是使用TLS/SSL加密的HTTP協(xié)議纳猫。
HTTP協(xié)議采用明文傳輸信息,存在信息竊聽谈截、信息篡改和信息劫持的風(fēng)險(xiǎn)筷屡,而協(xié)議TLS/SSL具有身份驗(yàn)證、信息加密和完整性校驗(yàn)的功能簸喂,可以避免此類問(wèn)題發(fā)生速蕊。
TLS/SSL全稱安全傳輸層協(xié)議Transport Layer Security, 是介于TCP和HTTP之間的一層安全協(xié)議,不影響原有的TCP協(xié)議和HTTP協(xié)議娘赴,所以使用HTTPS基本上不需要對(duì)HTTP頁(yè)面進(jìn)行太多的改造规哲。
HTTPS協(xié)議的主要功能基本都依賴于TLS/SSL協(xié)議
TLS/SSL的功能實(shí)現(xiàn)主要依賴于三類基本算法:散列函數(shù) Hash、對(duì)稱加密和非對(duì)稱加密诽表,其利用非對(duì)稱加密實(shí)現(xiàn)身份認(rèn)證和密鑰協(xié)商唉锌,對(duì)稱加密算法采用協(xié)商的密鑰對(duì)數(shù)據(jù)加密,基于散列函數(shù)驗(yàn)證信息的完整性竿奏。
散列函數(shù)Hash
常見的有 MD5袄简、SHA1、SHA256泛啸,該類函數(shù)特點(diǎn)是函數(shù)單向不可逆绿语、對(duì)輸入非常敏感、輸出長(zhǎng)度固定候址,針對(duì)數(shù)據(jù)的任何修改都會(huì)改變散列函數(shù)的結(jié)果吕粹,用于防止信息篡改并驗(yàn)證數(shù)據(jù)的完整性;
在信息傳輸過(guò)程中,散列函數(shù)不能單獨(dú)實(shí)現(xiàn)信息防篡改岗仑,因?yàn)槊魑膫鬏斊ジ虚g人可以修改信息之后重新計(jì)算信息摘要,因此需要對(duì)傳輸?shù)男畔⒁约靶畔⒄M(jìn)行加密;
對(duì)稱加密
常見的有 AES-CBC荠雕、DES稳其、3DES驶赏、AES-GCM等,相同的密鑰可以用于信息的加密和解密既鞠,掌握密鑰才能獲取信息煤傍,能夠防止信息竊聽,通信方式是1對(duì)1;
對(duì)稱加密的優(yōu)勢(shì)是信息傳輸1對(duì)1嘱蛋,需要共享相同的密碼蚯姆,密碼的安全是保證信息安全的基礎(chǔ),服務(wù)器和 N 個(gè)客戶端通信浑槽,需要維持 N 個(gè)密碼記錄,且缺少修改密碼的機(jī)制;
非對(duì)稱加密
即常見的 RSA 算法返帕,還包括 ECC桐玻、DH 等算法,算法特點(diǎn)是荆萤,密鑰成對(duì)出現(xiàn)镊靴,一般稱為公鑰(公開)和私鑰(保密),公鑰加密的信息只能私鑰解開链韭,私鑰加密的信息只能公鑰解開偏竟。因此掌握公鑰的不同客戶端之間不能互相解密信息,只能和掌握私鑰的服務(wù)器進(jìn)行加密通信敞峭,服務(wù)器可以實(shí)現(xiàn)1對(duì)多的通信踊谋,客戶端也可以用來(lái)驗(yàn)證掌握私鑰的服務(wù)器身份。
非對(duì)稱加密的特點(diǎn)是信息傳輸1對(duì)多旋讹,服務(wù)器只需要維持一個(gè)私鑰就能夠和多個(gè)客戶端進(jìn)行加密通信殖蚕,但服務(wù)器發(fā)出的信息能夠被所有的客戶端解密,且該算法的計(jì)算復(fù)雜沉迹,加密速度慢睦疫。
結(jié)合三類算法的特點(diǎn),TLS的基本工作方式是鞭呕,客戶端使用非對(duì)稱加密與服務(wù)器進(jìn)行通信蛤育,實(shí)現(xiàn)身份驗(yàn)證并協(xié)商對(duì)稱加密使用的密鑰,然后對(duì)稱加密算法采用協(xié)商密鑰對(duì)信息以及信息摘要進(jìn)行加密通信葫松,不同的節(jié)點(diǎn)之間采用的對(duì)稱密鑰不同瓦糕,從而可以保證信息只能通信雙方獲取。