我們知道,HTTP請求是以明文傳輸的,明文指的是未加密的信息。如果HTTP請求被黑客截獲并包含銀行卡密碼等敏感數據,將非常危險。為了解決這一問題,網景公司制定了HTTPS協議,可以對數據進行加密傳輸,即密文傳輸,即使黑客在傳輸過程中截獲數據也無法破譯,保證了網絡通信的安全性。
密碼學基礎
在正式解釋HTTPS協議之前,我們首先要了解一些密碼學知識。
明文:明文是指未經加密的原始數據。
密文:明文經過某種加密算法加密后,就會變成密文,從而保證原始數據的安全。密文也可以解密以獲得原始明文。
密鑰:密鑰是在將明文轉換為密文或密文轉換為明文的算法中輸入的參數。密鑰分為對稱密鑰和非對稱密鑰,分別應用于對稱加密和非對稱加密。
對稱加密:對稱加密又稱私鑰加密,即信息的發送者和接收者使用同一密鑰對數據進行加密和解密。對稱加密的特點是算法開放,加解密速度快,適用于大量數據的加密。常用的對稱加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
加密過程如下:明文+加密算法+私鑰=>密文
解密過程如下:密文+解密算法+私鑰=>明文
對稱加密中使用的密鑰稱為私鑰,意思是個人的私鑰,即密鑰不能公開。
加密過程中使用的私鑰和pri
解密過程中使用的密鑰是相同的,這就是為什么加密被稱為“對稱”。由于對稱加密的算法是公開的,一旦私鑰泄露,密文很容易被破解,所以對稱加密的缺點是密鑰安全管理困難。
非對稱加密:非對稱加密也稱為公鑰加密。與對稱加密相比,非對稱加密具有更好的安全性。對稱加密的通信使用相同的密鑰。如果一個密鑰被泄露,整個通信就會被破解。非對稱加密使用一對密鑰,即公鑰和私鑰,它們成對出現。私鑰由自己保管,不能對外公開。公鑰,任何人都可以獲得。用公鑰或私鑰加密,用另一個解密。
用公鑰加密的密文只能用私鑰解密。其過程如下:
明文+加密算法+公鑰=>密文,密文+解密算法+私鑰=>明文
用私鑰加密的密文只能用公鑰解密。其過程如下:
明文+加密算法+私鑰=>密文,密文+解密算法+公鑰=>明文
因為加密和解密使用兩個不同的密鑰,這就是非對稱加密“不對稱”的原因。
非對稱加密的缺點是加解密時間長,而且速度慢,只適合對少量數據進行加密。
非對稱加密的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(橢圓曲線密碼)等。
HTTPS通信進程
HTTPS協議=HTTP協議+SSL/TLS協議。在HTTPS數據傳輸過程中,需要SSL/TLS對數據進行加解密,需要HTTP傳輸加密數據??梢钥闯觯琀TTPS是由HTTP和SSL/TLS協同完成的。
SSL的全稱是安全套接字層,即安全套接字層協議,為網絡通信提供安全性和數據完整性。SSL協議是Netscape在1994年發明的。此后所有瀏覽器都支持SSL,其最新版本為3.0。
TLS的全稱是傳輸層安全,即安全傳輸層協議。TLS(Transport Layer Security)是IETF(Internet Engineering Task Force)在SSL3.0協議規范的基礎上制定的新協議,是SSL3.0的后續版本。TLS和SSL3.0之間存在顯著差異,主要是因為它們支持不同的
加密算法,所以TLS和SSL3.0不能互操作。雖然TLS在加密算法上與SSL 3.0有所不同,
在我們對HTTPS的理解中,我們可以將SSL和TLS視為相同的協議。
為了兼顧安全性和效率,HTTPS同時使用對稱加密和非對稱加密。數據通過對稱加密傳輸,對稱加密過程需要客戶端提供密鑰。為了保證密鑰能夠安全地傳輸到服務器,采用非對稱加密對密鑰進行加密。一般來說,數據是對稱加密的,用于對稱加密的密鑰是通過非對稱加密傳輸的。
HTTPS在傳輸過程中涉及三個密鑰:
用于非對稱加密的服務器端公鑰和私鑰
客戶端為對稱加密生成的隨機密鑰
一個HTTPS請求實際上由兩個HTTP傳輸組成,可以分為八個步驟。
1.客戶端向服務器發起HTTPS請求,并連接到服務器端口443
2.服務器端有一個密鑰對,即公鑰和私鑰,用于非對稱加密。服務器端保留私鑰,不能泄露私鑰。公鑰可以發送給任何人。
3.服務器向客戶端發送自己的公鑰。
4.客戶端收到服務器端的公鑰后,會對公鑰進行校驗,驗證公鑰的合法性。如果公鑰有問題,HTTPS傳輸將無法繼續。嚴格來說,這應該是為了驗證服務器發送的數字證書的合法性。以下將說明客戶端如何驗證數字證書的合法性。如果公鑰是限定的,客戶端將生成一個隨機值,該值是用于對稱加密的密鑰。我們把這個密鑰稱為客戶機密鑰,也就是客戶端密鑰,從概念上很容易與服務器密鑰區分開來。然后用服務器的公鑰對客戶端密鑰進行非對稱加密,以便
客戶機密鑰變成密文,HTTPS中的第一個HTTP請求結束。
5.客戶端在HTTPS中發起第二個HTTP請求,將加密的客戶端密鑰發送給服務器。
6.服務器收到客戶端發送的密文后,會用自己的私鑰對其進行非對稱解密。解密后的明文是客戶端密鑰,然后用客戶端密鑰對數據進行對稱加密,使數據變為密文。
7.服務器然后加密,密文發送到客戶端。
8.客戶端接收服務器發送的密文,用客戶端密鑰對稱解密,得到服務器發送的數據。這將完成HTTPS中的第二個HTTP請求,并完成整個HTTPS傳輸。
Coo云 - 基于24小時不關機的云端技術,超高性價比固定IP掛機寶,云主機,Vps服務器,云電腦,掛QQ,YY,微信,機器人等軟件在線,永久免費提供遠程連接工具,安卓ios蘋果手機電腦均可使用!客服QQ:751200202。