密碼算法主要用于網絡身份認證以及數據存儲、傳輸的保密,在網絡信息安全中發揮著至關重要的作用。我國當前網銀系統中采用的安全協議和加密算法都為國外制定,密碼應用體系存在安全隱患。為此,我國制定了自主知識產權的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)客戶端發送HELLO消息,包括協議版本,會話標識,密碼套件,隨機數等屬性。
- 2)如果能從客戶端HELLO消息中找到與自身所持證書類型匹配的密碼套件,服務器端發送SERVER HELLO消息作為對客戶端HELLO消息的回復。
- 3)服務端必須發送一個SERVER CERTIFICATE消息給客戶端,該消息緊跟在SERVER HELLO 消息之后,內容為服務端的簽名證書和加密證書,即雙證書。
- 4)緊接著服務端要發送SERVER KEY EXCHANGE消息。
- 5)如果服務端要求認證客戶端,則應該發送CERTIFICATE REQUEST消息,要求客戶端發送自己的證書。該消息緊跟在服務端秘鑰交換消息之后,不要求認證客戶端則不需要發送此消息。
- 6)服務端發送SEVER HELLO DONE消息,表示握手過程的HELLO消息階段完成。
- 7)如果服務端請求客戶端證書,客戶端應該發送CLIENT CERTIFICATE消息,客戶端證書消息與服務端證書消息結構相同,內容包括客戶端的雙證書。
- 8)如果服務端請求客戶端證書,則CLIENT KEY EXCHANGE消息緊跟于客戶端證書消息之后,否則客戶端秘鑰交換消息是客戶端接收到服務端HELLO完成消息后所發送的第一條消息。
- 9)當需要發送CLIENT CERTIFICATE消息時,才會發送CERTIFICATE VERIFY消息。
- 10)客戶端服務端各自發送密碼規格變更消息,FINISHED消息。
基于國密雙證書的SSL握手成功完成了,后續的應用數據都可以通過工作密鑰進行加密運算,保證傳輸數據的安全性。





