關於國密HTTPS 的那些事(一)

隨著《密碼法》密碼法的頒佈與實施,國密的應用及推廣終於有法可依。而對於應用國密其中的一個重要組成部分----國密HTTPS通訊也應運而生。為了大家更好的瞭解國密HTTPS相關的知識,接下來打算和大家一起分享關於國密HTTPS 的那些事。聊一聊關於HTTPS通訊協議本身;聊一聊為什麼要有這些協議;以及國密SSL協議到底又是如何對一個網站進行資料加密的;國密SSL協議中又使用了哪些國密演算法;國密的雙證書和傳統的RSA證書單證書在握手協商中又有什麼區別等等,由於篇幅較長,時間有限,所以只能選擇逐步和大家分享。

為了讓更多的朋友看懂和了解這個行業和領域,明白其中的內容,本文用通俗易通、輕鬆愉快的方式來表達解析這些枯燥的詞彙。

 1.關於HTTPS

講到https通訊,那就避免不了要講到枯燥乏味的通訊協議,相信大家在上網的時候肯定會有意無意的都會見到HTTPHTTPSSSLTLS 等 這些關鍵字或標籤。那麼我們先簡單的瞭解一下他們代表的含義 ,然後梳理一下它們之間的關係。

HTTP:  (HyperText Transfer Protocol)超文字傳輸協議,相信大家都不陌生,開啟瀏覽器就能看到。

SSL:( Secure Sockets Layer )安全套件字層。可分為兩層: SSL記錄協議(SSL Record Protocol)和 SSL握手協議(SSL Handshake Protocol)。

TLS :( Transport Layer Security )傳輸層安全協議。也分為兩層 TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。

之所以這麼表達,就是讓聰明的你看出其中的端倪。細心的朋友肯定會發現,SSL 和TLS怎麼這麼相似啊,難道?對!你的直覺就體現了他們之間的關係。TLS就是建立在SSL3.0協議規範之上的協議。所以很多時候你會發現他們倆是被繫結在一起呈現的SSL/TLS。要硬說他們的關係,用時下的網路語言描述那就是:有點像CP,又好似前浪和後浪。至於這些協議怎麼用後面會介紹到。

HTTPS: 就是HTTP + SSL/TLS。

理清楚了他們的關係,我們就算是入門了。至於為什麼要把http協議變成https。相信大家都很清楚,因為少了s,就像光著身子在人潮湧動的人流中奔跑。只要別人想看,你的腳步,永遠比不過人家看的你速度,甚至還有人會駐足,對你注目。 好像還有點押韻,skr...。

所以對一個http的站點來說,毫無隱私可言,更談不上安全了。所以趕緊給你的站點穿上“衣服”吧。

  1. 關於協議

前面說了https,說到這裡,問題又來了。既然說部署了https,就像給網站穿了“衣服”,保護住了自己的隱私,那麼這個“衣服”又是怎麼來保護自己的隱私的呢?沒錯,就是通過SSL/TLS協議,我們先來看看國密協議的整個流程,大家在看整個流程的時候思考一下 SSL/TLS到底解決了哪些問題,他是如果保護你資料安全的?

  國密SSL通訊依據的協議是中國人民共和國密碼行業標準《SSL VPN技術規範GM/T 0024--2014》協議。其協議流程和 傳統的使用RSA證書的TLS協議流程基本一致,但是又有區別,因為傳統的TLS協議中服務端使用的是單證書,而國密SSL VPN協議在雙方的握手的過程中服務端使用的是雙證書(簽名證書和加密證書)。

下面我們來看國密SSL的主要握手流程:

根據《SSL VPN技術規範GM/T 0024--2014》協議,我們對整個握手的流程整理如下:

下面我們來分析整個過程。

  1. 客戶端首先會發送ClientHello訊息與服務端進行握手,在ClinentHello訊息中包括了加密套件和隨機數。
  2. 在服務端接收到客戶端的握手請求後,會結合自己的證書選擇合適的加密套件返回給客戶端,並且會產生隨機數一起傳送。
  3. 服務端會繼續傳送Certificate訊息給客戶端,在Certificate訊息中會包含雙證書,即簽名證書和加密證書,加密證書放在簽名證書前面。
  4. 服務端根據選定的握手協議,接著傳送ServerKeyExchange訊息。如果選用的是ECC_SM4_SM3套件,則在訊息中包含著服務端對雙方隨機數和服務端加密證書的簽名。
  5. 如果服務端開啟了雙向認證,則會繼續傳送CertificateRequest訊息給客戶端。
  6. 在客戶端接收到服務端的回覆後,如果收到了5中傳送的訊息,則會先回復ClientCertificate訊息給服務端,如果沒有收到,則跳過此步驟。
  7. 如果客戶端收到了5的請求, 則在傳送完6的訊息後緊接著傳送ClientKeyExchange給服務端,否則ClientKeyExchange是客戶端在收到服務端訊息後回覆給服務端的第一條資訊。如果選用的是ECC_SM4_SM3套件,則這條訊息的主要內容是用服務端加密證書公鑰加密的預主祕鑰。
  8. 如果客戶端傳送了6的訊息,則需要傳送CertificateVerify訊息給服務端,這條訊息用來鑑別客戶端是否為證書的合法持有者。
  9. 最後在服務端和客戶端各自在密碼規格變革訊息後都會發送Finished訊息給對方。用於驗證祕鑰交換過程是否成功,並校驗握手過程的完整性。
  10. 到此整個國密SSL握手的流程就結束了,協議雙方會使用協商出來的對稱祕鑰對通訊的資料進行加解密。

以上就是國密SSL通訊的整個握手流程。

不知道大家看完之後的感受是什麼?是意猶未盡,是五味雜陳,還是有些萌萌達?沒關係,這些都不重要!重要的是!!!  SSL/TLS協議到底解決了哪些問題?它又是如果通過這個流程來保障資料安全的呢?我們下回接著聊!

原創:探花郎

申請支援國密演算法SM2 256位加密證書,來沃通選購吧:

https://wosign.com/price_sm2.htm