一文帶你了解 SSL 協(xié)議
什么是SSL
簡稱是SSL,全稱Secure Sockets Layer 安全套接字協(xié)議,一般我們在學(xué)習(xí) SSL 的時候,都會和 TLS一起來學(xué)習(xí)的,為什么呢?因為 SSL 和 TLS 都是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層與應(yīng)用層之間對網(wǎng)絡(luò)連接進行加密。
我們先看 SSL協(xié)議,然后在看 TLS協(xié)議。
SSL協(xié)議位于 TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL 協(xié)議可分為兩層:
- SSL記錄協(xié)議(SSL Record Protocol):
它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。
- SSL握手協(xié)議(SSL Handshake Protocol):
它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。
要說 SSL 協(xié)議我們先來看看結(jié)構(gòu),
SSL的體系結(jié)構(gòu)中包含兩個協(xié)議子層,其中底層是
- SSL記錄協(xié)議層(SSL Record Protocol Layer);
- 高層是SSL握手協(xié)議層(SSL HandShake Protocol Layer)
SSL記錄協(xié)議層的作用是為高層協(xié)議提供基本的安全服務(wù)的,而SSL握手協(xié)議層是用于SSL管理信息的交換,允許應(yīng)用協(xié)議傳送數(shù)據(jù)之間相互驗證,協(xié)商加密算法和生成密鑰的。
SSL的工作過程
SSL 的工作過程實際上是分為了兩個部分,一個是發(fā)送,而另一個就是接收,每個部分所處理的事情也是不一樣的,畢竟一個是發(fā)送一個是接收。
發(fā)送過程:
(1)從上層接受要發(fā)送的數(shù)據(jù)(包括各種消息和數(shù)據(jù));
(2)對信息進行分段,分成若干記錄;
(3)使用指定的壓縮算法進行數(shù)據(jù)壓縮;
(4)使用指定的MAC算法生成MAC;
(5)使用指定的加密算法進行數(shù)據(jù)加密;
(6)添加SSL記錄協(xié)議的頭,發(fā)送數(shù)據(jù)。
到了這個位置,發(fā)送過程就已經(jīng)結(jié)束,接下來就是接收的過程了。
接收過程:
(1)接收數(shù)據(jù),從SSL記錄協(xié)議的頭中獲取相關(guān)信息;
(2)使用指定的解密算法解密數(shù)據(jù);
(3)使用指定的MAC算法校驗MAC;
(4)使用壓縮算法對數(shù)據(jù)解壓縮(在需要進行);
(5)將記錄進行數(shù)據(jù)重組;
(6)將數(shù)據(jù)發(fā)送給高層。
(7)SSL記錄協(xié)議處理的最后一個步驟是附加一個SSL記錄協(xié)議的頭,以便構(gòu)成一個SSL記錄。SSL記錄協(xié)議頭中包含了SSL記錄協(xié)議的若干控制信息。
如果面試官問你,簡述SSL的工作流程?
如果你這么說,感覺就不是那么的給力,你這時候就可以給他區(qū)分一下了,就是服務(wù)器認(rèn)證階段,和用戶認(rèn)證的階段了。
服務(wù)器認(rèn)證階段:
(1)客戶端向服務(wù)器發(fā)送一個開始信息“Hello”以便開始一個新的會話連接;
(2)服務(wù)器根據(jù)客戶的信息確定是否需要生成新的主密鑰,如需要則服務(wù)器在響應(yīng)客戶的“Hello”信息時將包含生成主密鑰所需的信息;
(3)客戶根據(jù)收到的服務(wù)器響應(yīng)信息,產(chǎn)生一個主密鑰,并用服務(wù)器的公開密鑰加密后傳給服務(wù)器;
(4)服務(wù)器恢復(fù)該主密鑰,并返回給客戶一個用主密鑰認(rèn)證的信息,以此讓客戶認(rèn)證服務(wù)器。
用戶認(rèn)證階段:
在此之前,服務(wù)器已經(jīng)通過了客戶認(rèn)證,這一階段主要完成對客戶的認(rèn)證。經(jīng)認(rèn)證的 服務(wù)器發(fā)送一個提問給客戶,客戶則返回(數(shù)字)簽名后的提問和其公開密鑰,從而向服務(wù)器提供認(rèn)證。
把這玩意給面試官一說,沒啥毛病吧。
SSL 的加密方式
說到加密,這就有點深入了,加密算法主要分為了兩大類。
第一類:
對稱加密
第二類:
非對稱加密
什么事對稱加密呢?
對稱式加密實際上就是加密和解密使用同一個密鑰,通常稱之為“Session Key ”這種加密技術(shù)在當(dāng)今被廣泛采用,如美國政府所采用的DES加密標(biāo)準(zhǔn)就是一種典型的“對稱式”加密法,它的Session Key長度為56bits。
而非對稱加密就稍微復(fù)雜了,
非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網(wǎng)絡(luò)上傳輸加密文件就很難不把密鑰告訴對方,不管用什么方法都有可能被別人竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。
如果使用的話,各位想怎么是用呢?
根據(jù)剛才阿粉說的服務(wù)器認(rèn)證和用戶認(rèn)證了,那么就繼續(xù)來分析一下這個過程中 SSL 是如何加密的。
簡單說:(1)認(rèn)證服務(wù)器 (2)協(xié)商會話秘鑰 (3)加密傳輸
但是如果你敢這么說,你會被錘死。
強制在分解一下:
第一步:客戶端給出支持SSL協(xié)議版本號,一個客戶端隨機數(shù)(Client random,請注意這是第一個隨機數(shù)),客戶端支持的加密方法等信息;
第二步:服務(wù)端收到信息后,確認(rèn)雙方使用的加密方法,并返回數(shù)字證書,一個服務(wù)器生成的隨機數(shù)(Server random,注意這是第二個隨機數(shù))等信息;
第三步:客戶端確認(rèn)數(shù)字證書的有效性,然后生成一個新的隨機數(shù)(Premaster secret),然后使用數(shù)字證書中的公鑰,加密這個隨機數(shù),發(fā)給服務(wù)端。
第四步:服務(wù)端使用自己的私鑰,獲取客戶端發(fā)來的隨機數(shù)(即Premaster secret);(第三、四步就是非對稱加密的過程了)
第五步:客戶端和服務(wù)端通過約定的加密方法(通常是AES算法),使用前面三個隨機數(shù),生成對話密鑰,用來加密接下來的通信內(nèi)容;
這是不是就完成了呢?你學(xué)會了么?