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