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