2020年09月17日
SSL是一種安全傳輸協(xié)議,及安全套接層。該協(xié)議最初由Netscape發(fā)展而來,現(xiàn)在主要用于網(wǎng)絡上用來鑒別網(wǎng)站和網(wǎng)頁瀏覽者身份,以及在瀏覽器及服務器之間進行加密通訊。例如現(xiàn)在的網(wǎng)上銀行和電子商務等大型網(wǎng)上交易系統(tǒng)普遍采用HTTP和SSL相結合的方式。
SSL協(xié)議的工作流程:
服務器認證階段:
(1)客戶端向服務器發(fā)送一個開始信息“Hello”以便開始一個新的會話連接;
(2)服務器根據(jù)客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;
(3)客戶根據(jù)收到的服務器響應信息,產(chǎn)生一個主密鑰,并用服務器的公開密鑰加密后傳給服務器;
(4)服務器恢復該主密鑰,并返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:
在此之前,服務器已經(jīng)通過了客戶認證,這一階段主要完成對客戶的認證。
SSL采用TCP作為傳輸協(xié)議提供數(shù)據(jù)的可靠傳送和接收。位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可以分為兩層:
SSL記錄協(xié)議(SSLRecord Protocol):它建立在TCP之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。
SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法、交換加密密鑰等。
通過以上SSL加密協(xié)議的介紹,我們知道在傳輸應用數(shù)據(jù)之前,必須先進行通過SSL握手協(xié)議進行身份認證、密鑰交換等,因此我訪問了一個經(jīng)過SSL協(xié)議加密的網(wǎng)站,并對整個過程進行抓包分析,用來詳細分析SSL握手過程,了解其具體是怎樣進行身份密鑰交換。具體情況如下:
客戶端和服務端通過三次握手建立連接后,客戶端首先發(fā)送“Client Hello”消息,其中包含有:協(xié)議版本、隨機數(shù)、以及客戶端所支持的所有加密算法。
服務端在收到客戶端的Hello消息后,首先會返回一個“Server Hello”數(shù)據(jù)包,其中包含:協(xié)議版本、服務端生成的隨機數(shù)、以及從客戶所建議的加密算法中選擇的一套加密算法。
在發(fā)送完Hello消息后,服務端會發(fā)送它的證書和密鑰交換信息。如果服務端被認證,它就會請求客戶端的證書,在驗證后,服務端就發(fā)送“Sever Hello Done”消息,以示達成握手協(xié)議,雙方握手接通。
客戶端收到Server Done消息后,檢查服務器提供的證書,并判斷hello參數(shù)是否可以接受。如果服務端請求證書,則要先發(fā)送一個certificate消息,然后客戶端發(fā)送“clent key exchange”及密鑰交換信息。
客戶發(fā)送一個change_cipher_spec消息,并且把協(xié)商得到的CipherSuite拷貝到當前連接的狀態(tài)之中。然后,客戶用新的算法、密鑰參數(shù)發(fā)送一個finished消息,這條消息可以檢查密鑰交換和鑒別過程是否已經(jīng)成功。其中包括一個校驗值,對所有以來的消息進行校驗。
服務器同樣發(fā)送change_cipher_spec消息和finished消息。握手過程完成,客戶和服務器可以交換應用層數(shù)據(jù)。
至此,一次完整的SSL握手過程完成,接著使用交換過后的加密方式對應用數(shù)據(jù)進行加密傳輸。
江蘇國駿-打造安全可信的網(wǎng)絡世界
為IT提升價值
http://xufei-js.cn/
免費咨詢熱線:400-6776-989