慧敏應用交付網關基于國密算法的SSL雙證書認證及加解密實現

引言
國密背景知識
國密雙證書在慧敏中的應用
國密雙證書申請
引言

密碼算法主要用于網絡身份認證以及數據存儲、傳輸的保密,在網絡信息安全中發揮著至關重要的作用。我國當前網銀系統中采用的安全協議和加密算法都為國外制定,密碼應用體系存在安全隱患。為此,我國制定了自主知識產權的ECC國家標準算法即國產密碼技術,推廣和應用國產密碼技術,是實現國家網絡信息安全自主可控的基礎,密碼技術在國家安全戰略上與核安全具有同等重要的地位。國產密碼技術將廣泛應用于國產操作系統、手機安全、通信安全、個人信息保護、金融支付、政務辦公等人民生活的各個領域。

應用交付網關是國產密碼算法普及應用的關鍵環節,為了加快國家自主密碼算法的推廣,信諾瑞得以國家密碼行業規范為基礎,通過軟件與硬件兩種方式同時實現了對國密算法雙證書體系的支持。

本文檔以慧敏ADC5000應用交付網關產品為例,介紹國密雙證書技術在互聯網訪問中的安全應用,其中會涉及國密雙證書的SSL握手以及國密雙證書申請等關鍵技術點。針對的讀者為致力于國產密碼技術在應用中的推廣,愿意為發展國家自主知識產權做出貢獻,以及需要基于國密規范進行安全開發的人員。

國密背景知識 國密算法

國密算法是由國家密碼局制定標準的一系列算法。其中包括了對稱加密算法(SM1,SM4),分組長度與秘鑰長度均為128比特,其工作模式為CBC模式;橢圓曲線非對稱加密算法(SM2),可用于數字簽名與秘鑰交換,其加密強度為256位;雜湊算法(SM3)等。

國密算法套件

客戶端瀏覽器使用HTTPS訪問WEB服務器時,比如(https://sinogrid.com),在發送HTTP請求之前首先要進行的是SSL握手過程,服務器根據自身配置的證書信息、自身支持的算法套件列表和客戶端支持的算法套件列表,選出雙方共同支持的一個算法套件,用于建立SSL連接和連接建立之后的數據傳輸。一個算法套件包含四個算法,其格式為:秘鑰交換算法—數字簽名算法—對稱加解密算法—數據摘要算法,這些算法用于保障通信數據在網絡傳輸過程中的安全。而SM2-SM2-SM4-SM3(即ECC-SM4-SM3)由于使用了國密算法可以稱之為國密算法套件。

目前慧敏應用交付網關支持的國密算法套件僅為ECC-SM4-SM3(ID為e013)。對ECC-SM1-SM3(ID為e003),ECC-SM1-SHA1 (ID為e004),RSA-SM1-SM3 (ID為e009) 等一系列國密算法套件的支持實現過程與ECC-SM4-SM3完全類似。

國密雙證書

通常我們使用HTTPS訪問網站時,客戶端服務器協商的都是國際通用算法,使用的也是單證書體系,即服務器只需要提供一個簽名證書用于向客戶端證明自己的身份。但國密規范標準規定,基于國密算法的應用使用國密的雙證書體系,雙證書包括簽名證書與加密證書,簽名證書用于身份驗證,加密證書用于秘鑰交換。

在單向認證的情況下,如果雙方協商為國密算法套件,則服務器方應該具有簽名證書,加密證書,簽名私鑰,加密私鑰。

在雙向認證的情況下,如果雙方協商為國密算法套件,則客戶端服務器都應該具有各自的簽名證書,加密證書,簽名私鑰,加密私鑰。

基于國密雙證書的握手協議

不同于普通的SSL協議握手過程,基于國密雙證書的SSL協議握手包括如下步驟:

  1. 1)客戶端發送HELLO消息,包括協議版本,會話標識,密碼套件,隨機數等屬性。
  2. 2)如果能從客戶端HELLO消息中找到與自身所持證書類型匹配的密碼套件,服務器端發送SERVER HELLO消息作為對客戶端HELLO消息的回復。
  3. 3)服務端必須發送一個SERVER CERTIFICATE消息給客戶端,該消息緊跟在SERVER HELLO 消息之后,內容為服務端的簽名證書和加密證書,即雙證書。
  4. 4)緊接著服務端要發送SERVER KEY EXCHANGE消息。
  5. 5)如果服務端要求認證客戶端,則應該發送CERTIFICATE REQUEST消息,要求客戶端發送自己的證書。該消息緊跟在服務端秘鑰交換消息之后,不要求認證客戶端則不需要發送此消息。
  6. 6)服務端發送SEVER HELLO DONE消息,表示握手過程的HELLO消息階段完成。
  7. 7)如果服務端請求客戶端證書,客戶端應該發送CLIENT CERTIFICATE消息,客戶端證書消息與服務端證書消息結構相同,內容包括客戶端的雙證書。
  8. 8)如果服務端請求客戶端證書,則CLIENT KEY EXCHANGE消息緊跟于客戶端證書消息之后,否則客戶端秘鑰交換消息是客戶端接收到服務端HELLO完成消息后所發送的第一條消息。
  9. 9)當需要發送CLIENT CERTIFICATE消息時,才會發送CERTIFICATE VERIFY消息。
  10. 10)客戶端服務端各自發送密碼規格變更消息,FINISHED消息。

基于國密雙證書的SSL握手成功完成了,后續的應用數據都可以通過工作密鑰進行加密運算,保證傳輸數據的安全性。

國密雙證書在慧敏中的應用
典型的應用場景如圖:目前基于國密雙證書的SSL握手協議已經在慧敏這種應用交付網關上得到了實現。由于原有密碼產品的政策限制,之前沒有任何一款瀏覽器產品支持國產密碼算法。這給網銀系統中應用國產密碼算法以及網銀體系安全改善帶來了嚴重的阻礙作用,也為我們的調試工作帶來了麻煩,之后360安全瀏覽器國密專版成為國內首個支持國產密碼算法的瀏覽器,有了支持國密算法的瀏覽器,也使信諾瑞得支持國密算法的應用交付網關變得更加有意義?;勖糇鳛檎鎸峎EB服務器的代理,實現了通過360國密專版瀏覽器對HTTPS網站的訪問。
 
如下圖為通過360國密專版瀏覽器對域名https://sinogrid.com的訪問結果。 證書信息
 
在訪問過程中通過抓包可知,慧敏不僅支持基于國密雙證書的SSL協議,也支持國密SSL的會話復用功能。大家都知道SSL的握手過程不可避免的消耗了服務器的處理性能,而會話復用可以避免安全參數的重復協商,提高了SSL的握手效率。從下面的抓包信息可以看出瀏覽器發送的CLIENT HELLO消息中攜帶了32字節的會話ID,而服務器在SERVER HELLO中回復了相同的會話ID,說明服務器找到了之前緩存的對應ID的會話信息,會話復用成功。

 
國密雙證書申請
在申請360國密專版瀏覽器信任的服務端證書時,比如申請CFCA機構頒發的國密證書,就需要按照CFCA的要求生成指定格式的PKCS#10規范請求文件,否則無法申請證書。下圖為符合CFCA格式要求的SM2雙證書請求文件供參考。
 
總結
通過在慧敏應用交付網關上配置國密雙證書認證和基于國密算法的SSL協議,我們可以幫助企業Web應用無縫升級成為基于國密SSL保護的WEB應用。此外,我們還可以在服務器端和客戶端實現不同的SSL 加密和證書認證方法。比如在服務器端采用標準RSA 的SSL/TLS , 在客戶端采用國密算法SM2,3,4的SSL/TLS ;或者相反,在客戶端采用標準的RSA 的SSL/TLS , 在服務器端采用國密算法的SSL/TLS。這樣,我們既幫助企業客戶實現了更高級別的安全性,又最大限度地照顧到應用和互聯網的兼容性。

了解更多信息

關注官方微信

電話:(8610)8580 4799

傳真:(8610)8580 4800

咨詢熱線:400 610 0319

第一次处破美女完整版,真实处破女刚成年,学生第一次破苞免费视频