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