TLS/SSL全稱安全傳輸層協(xié)議(Transport Layer Security), 是介于TCP和HTTP之間的一層安全協(xié)議,不影響原有的TCP協(xié)議和HTTP協(xié)議,所以使用HTTPS基本上不需要對HTTP頁面進(jìn)行太多的改造。
TLS/SSL的功能實(shí)現(xiàn)主要依賴三類基本算法:散列函數(shù)hash、對稱加密、非對稱加密。這三類算法的作用如下:
基于散列函數(shù)驗(yàn)證信息的完整性
對稱加密算法采用協(xié)商的秘鑰對數(shù)據(jù)加密
非對稱加密實(shí)現(xiàn)身份認(rèn)證和秘鑰協(xié)商
(1)散列函數(shù)hash
常見的散列函數(shù)有MD5、SHA1、SHA256。該函數(shù)的特點(diǎn)是單向不可逆,對輸入數(shù)據(jù)非常敏感,輸出的長度固定,任何數(shù)據(jù)的修改都會(huì)改變散列函數(shù)的結(jié)果,可以用于防止信息篡改并驗(yàn)證數(shù)據(jù)的完整性。
特點(diǎn): 在信息傳輸過程中,散列函數(shù)不能三都實(shí)現(xiàn)信息防篡改,由于傳輸是明文傳輸,中間人可以修改信息后重新計(jì)算信息的摘要,所以需要對傳輸?shù)男畔⒑托畔⒄M(jìn)行加密。
(2)對稱加密
對稱加密的方法是,雙方使用同一個(gè)秘鑰對數(shù)據(jù)進(jìn)行加密和解密。但是對稱加密的存在一個(gè)問題,就是如何保證秘鑰傳輸?shù)陌踩裕驗(yàn)槊罔€還是會(huì)通過網(wǎng)絡(luò)傳輸?shù)模坏┟罔€被其他人獲取到,那么整個(gè)加密過程就毫無作用了。 這就要用到非對稱加密的方法。
常見的對稱加密算法有AES-CBC、DES、3DES、AES-GCM等。相同的秘鑰可以用于信息的加密和解密。掌握秘鑰才能獲取信息,防止信息竊聽,其通訊方式是一對一。
特點(diǎn): 對稱加密的優(yōu)勢就是信息傳輸使用一對一,需要共享相同的密碼,密碼的安全是保證信息安全的基礎(chǔ),服務(wù)器和N個(gè)客戶端通信,需要維持N個(gè)密碼記錄且不能修改密碼。
(3)非對稱加密
非對稱加密的方法是,我們擁有兩個(gè)秘鑰,一個(gè)是公鑰,一個(gè)是私鑰。公鑰是公開的,私鑰是保密的。用私鑰加密的數(shù)據(jù),只有對應(yīng)的公鑰才能解密,用公鑰加密的數(shù)據(jù),只有對應(yīng)的私鑰才能解密。我們可以將公鑰公布出去,任何想和我們通信的客戶, 都可以使用我們提供的公鑰對數(shù)據(jù)進(jìn)行加密,這樣我們就可以使用私鑰進(jìn)行解密,這樣就能保證數(shù)據(jù)的安全了。但是非對稱加密有一個(gè)缺點(diǎn)就是加密的過程很慢,因此如果每次通信都使用非對稱加密的方式的話,反而會(huì)造成等待時(shí)間過長的問題。
常見的非對稱加密算法有RSA、ECC、DH等。秘鑰成對出現(xiàn),一般稱為公鑰(公開)和私鑰(保密)。公鑰加密的信息只有私鑰可以解開,私鑰加密的信息只能公鑰解開,因此掌握公鑰的不同客戶端之間不能相互解密信息,只能和服務(wù)器進(jìn)行加密通信,服務(wù)器可以實(shí)現(xiàn)一對多的的通信,客戶端也可以用來驗(yàn)證掌握私鑰的服務(wù)器的身份。
特點(diǎn): 非對稱加密的特點(diǎn)就是信息一對多,服務(wù)器只需要維持一個(gè)私鑰就可以和多個(gè)客戶端進(jìn)行通信,但服務(wù)器發(fā)出的信息能夠被所有的客戶端解密,且該算法的計(jì)算復(fù)雜,加密的速度慢。
綜合上述算法特點(diǎn),TLS/SSL的工作方式就是客戶端使用非對稱加密與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)身份的驗(yàn)證并協(xié)商對稱加密使用的秘鑰。對稱加密算法采用協(xié)商秘鑰對信息以及信息摘要進(jìn)行加密通信,不同節(jié)點(diǎn)之間采用的對稱秘鑰不同,從而保證信息只能通信雙方獲取。這樣就解決了兩個(gè)方法各自存在的問題。