戴聰



【摘要】? ? 本文主要論述一種移動網絡通信數據安全防護方案,該方案基于國產商用密碼算法,描述了注冊信息、密鑰傳輸、應用數據安全防護方法,實現了客戶端和應用服務系統(tǒng)、客戶端和客戶端間通信時的數據安全和訪問控制。
【關鍵字】? ? 數據安全? ? 訪問控制? ? 國密算法
引言
目前移動應用普及生活方方面面,通常移動設備上的客戶端和應用服務系統(tǒng)具有一定的密碼運算能力,但通信網絡中少有配備帶有硬件密碼設備的密碼服務組件提供密鑰管理、密碼運算等服務,一般也不支持國產商用密碼算法。本文提出的移動網絡通信數據安全防護方案基于國產商用密碼算法,實現以下目標:
(1) 保護通信數據的安全性和完整性。
(2) 控制應用服務訪問權限。
(3) 密碼運算過程安全高效。
一、移動網絡通信數據安全防護方案
移動網絡通信數據安全防護方案由客戶端、應用服務系統(tǒng)和密碼服務系統(tǒng)實現,其中客戶端安裝于移動設備上;應用服務系統(tǒng)為客戶端提供應用各項業(yè)務服務;密碼服務系統(tǒng)帶有服務器密碼機,為客戶端和應用服務系統(tǒng)、客戶端和客戶端間業(yè)務通信提供密碼服務,包括證書簽發(fā)服務、公鑰查詢服務、派生密鑰服務等。
移動網絡通信數據安全防護方案包括注冊信息安全防護方案、密鑰傳輸安全防護方案和應用數據安全防護方案。
1.1 注冊信息安全防護方案
客戶端與應用服務系統(tǒng)通信前,二者都需要(1) 使用SM2橢圓曲線公鑰密碼算法[1]產生私鑰和公鑰,私鑰僅用于本地密碼運算對外不可見,公鑰則對外發(fā)布;(2) 在密碼服務系統(tǒng)注冊,注冊流程如圖1所示。
(1)客戶端/應用服務系統(tǒng)獲取移動設備/服務器硬件序列號SN,使用SM3算法[2]計算SN的雜湊值,所得32字節(jié)雜湊值作為客戶端/應用服務系統(tǒng)的唯一標識UID。
(2)客戶端/應用服務系統(tǒng)使用SM2算法產生私鑰SK和公鑰PK,并將UID和PK發(fā)送至密碼服務系統(tǒng)。
(3)密碼服務系統(tǒng)緩存UID和PK。
(4)密碼服務系統(tǒng)中的服務器密碼機預裝16字節(jié)通信保護根密鑰CPRK,CPRK及其派生密鑰都用于SM4算法[3]加解密運算。CPRK分散(即SM4算法加密)UID得到16字節(jié)通信保護主密鑰CPMK,具體方法為CPMK = Enc(UID后16字節(jié), Enc(UID前16字節(jié), CPRK)),PK加密CPMK得到Enc(CPMK, PKM)返回至客戶端/應用服務系統(tǒng)。
(5)客戶端/應用服務系統(tǒng)SK解密Enc(CPMK, PK)得到CPMK,并產生16字節(jié)隨機數R,CPMK加密R得到Token1發(fā)送至密碼服務系統(tǒng)。
(6)密碼服務系統(tǒng)中的服務器密碼機產生16字節(jié)隨機數RCS,Token1分散RCS得到會話密鑰SessKey,CPMK解密Token1得到R并取反得到~R,CPMK加密(~R)RCS得到Token2返回至客戶端。
(7)客戶端/應用服務系統(tǒng)CPMK解密Token2得到(~R)RCS,比較所得~R是否正確,當且僅當~R正確時Token1分散RCS得到會話密鑰SessKey,否則結束整個流程。SessKey加密注冊數據(硬件信息如序列號SN等)得到Enc(注冊數據, SessKey),以所得密文和原文的SM3雜湊值作為注冊請求數據發(fā)送至密碼服務系統(tǒng)。
(8)密碼服務系統(tǒng)SessKey解密Enc(注冊數據, SessKey)得到注冊數據,當且僅當雜湊值驗證并注冊數據審核通過時根據硬件信息構造證書主題項并簽發(fā)證書,否則結束整個流程。持久化UID和PK,SessKey加密證書得到Enc(證書, SessKey),以所得密文和原文的SM3雜湊值作為注冊響應數據返回至客戶端/應用服務系統(tǒng)。
(9)客戶端/應用服務系統(tǒng)SessKey解密Enc(證書, SessKey)得到證書,當且僅當雜湊值驗證通過時寫入證書,否則注冊失敗。
注冊流程中通過客戶端/應用服務系統(tǒng)與密碼服務系統(tǒng)雙向認證協(xié)商會話密鑰來實現通信數據安全防護,步驟(5)~(7)即為雙向認證過程。雙向認證協(xié)商會話密鑰的過程采用軟硬件結合的方式實現密碼運算,實現了客戶端/應用服務系統(tǒng)公鑰發(fā)布和證書下發(fā)。
1.2 密鑰傳輸安全防護方案
客戶端與客戶端、客戶端與應用服務系統(tǒng)通信安全由密碼服務系統(tǒng)派生加解密密鑰實現,加解密密鑰傳輸流程如圖2所示。
(1)客戶端/應用服務系統(tǒng)將16字節(jié)隨機數R、UID和應用名稱作為派生密鑰請求參數發(fā)送至密碼服務系統(tǒng),其中請求派生加密密鑰時R由客戶端/應用服務系統(tǒng)產生,請求派生解密密鑰時R由客戶端/應用服務系統(tǒng)從交互方接收。
(2)收到派生加密密鑰請求時,密碼服務系統(tǒng)中的服務器密碼機產生索引為IDRK的16字節(jié)隨機密鑰RK,和應用名稱綁定;收到派生解密密鑰請求時,密碼服務系統(tǒng)根據應用名稱查詢得到RK。RK分散R得到加解密密鑰EDK,構造密鑰密文結構體返回至客戶端/應用服務系統(tǒng)。密鑰密文結構體分為四部分,第一部分為IDRK + EDK密文,服務器密碼機產生16字節(jié)隨機數RCS,RCS加密IDRK + EDK得到Enc(IDRK + EDK, RCS),算法為SM4;第二部分為隨機密鑰RCS密文,密碼服務系統(tǒng)根據UID查詢得到客戶端/應用服務系統(tǒng)公鑰PK加密RCS得到Enc(RCS, PK),算法為SM2;第三部分為簽名值,密碼服務系統(tǒng)中的服務器密碼機所存儲私鑰SKCS對前兩部分的雜湊值簽名,雜湊算法為SM3,簽名算法為SM2;第四部分為密碼服務系統(tǒng)中的UIDCS和客戶端/應用服務系統(tǒng)的UID。
(3)客戶端/應用服務系統(tǒng)根據密鑰密文結構體的第四部分UIDCS從密碼服務系統(tǒng)查詢得到其公鑰PKCS,依次計算雜湊值、驗證簽名值、解密隨機數RCS密文、解密IDRK + EDK密文,當且僅當以上操作全部成功緩存元組(R, IDRK + EDK),否則密鑰傳輸失敗。
密鑰傳輸流程中采用軟硬件結合的方式實現非對稱算法和對稱算法密碼運算,實現了加解密密鑰的安全傳輸。
1.3 應用數據安全防護方案
客戶端與客戶端、客戶端與應用服務系統(tǒng)通信流程如圖3所示。
(1)通信發(fā)起方按照1.2所述流程獲取加解密密鑰EDK,構造通信數據密文結構體發(fā)送至接收方。通信數據密文結構體分為四部分,第一部分為用于派生密鑰的隨機數R;第二部分為通信數據密文,EDK加密通信數據Data得到Enc(Data, EDK),算法為SM4;第三部分為通信數據雜湊值,算法為SM3;第四部分為發(fā)起方UID和索引IDRK。
(2)通信接收方按照1.2所述流程獲取加解密密鑰EDK,依次解密通信數據密文、驗證雜湊值,當且僅當以上操作全部成功通信成功,否則通信失敗。
為了實現高效的通信數據傳輸,通信流程中采用對稱算法實現通信數據安全,加解密密鑰EDK優(yōu)先從本地緩存的元組(R, IDRK + EDK)獲取,設定的緩存有效期過后再重新從密碼服務系統(tǒng)請求派生新的加解密密鑰。
二、結語
移動網絡通信數據安全防護方案實現了以下目標:
2.1數據安全性和完整性
方案中使用隨機密鑰加密保護數據安全性,雜湊值驗證保證數據完整性。注冊流程中的隨機密鑰由雙向認證協(xié)商產生,僅用于在內存中進行密碼運算,雙向認證結束后失效;通信流程中的隨機密鑰由服務器密碼機產生并加密傳輸,僅用于在內存中進行密碼運算,超過規(guī)定的時效或使用次數后失效。方案實現了通信安全防護所需密鑰安全,從而實現通信安全。
2.2訪問權限控制
方案要求客戶端與客戶端、客戶端與應用服務系統(tǒng)通信前必需從密碼服務系統(tǒng)獲取加解密密鑰,密鑰傳輸流程中基于SM2簽名驗簽實現了通信各方的身份驗證,僅允許在密碼服務系統(tǒng)中注冊了的通信方獲取加解密密鑰,從而實現訪問權限控制。同時,方案中的密鑰密文結構體和通信數據密文結構體中都包含通信發(fā)起方的唯一標識UID,允許通信接收方記錄訪問者并進行安全審計。
2.3密碼運算過程安全高效
方案中所涉及到的密碼算法為國產商用密碼算法SM2、SM3、SM4,采用軟硬件結合的方式實現密碼運算,使整個方案具有安全高效的特點。
參? 考? 文? 獻
[1] GB/T 35276-2017, 信息安全技術 SM2密碼算法使用規(guī)范[S]. 中華人民共和國:國家標準化管理委員會, 2017
[2] GB/T 32905-2016, 信息安全技術 SM3密碼雜湊算法[S]. 中華人民共和國:國家標準化管理委員會, 2016
[3] GB/T 32907-2016, 信息安全技術 SM4分組密碼算法[S]. 中華人民共和國:國家標準化管理委員會, 2016