侯憲鋒 韓磊 王興元 王豐
【摘要】? ? 智能家居給人們帶來(lái)舒適便捷的同時(shí),隱私安全問(wèn)題也日益凸顯。文章闡述了基于自定義協(xié)議的數(shù)據(jù)加密系統(tǒng),系統(tǒng)采用國(guó)密算法,自主可控。建立算法模型,使用SM3,SM4算法實(shí)現(xiàn)終端與服務(wù)端身份互認(rèn)證,數(shù)據(jù)加密,秘鑰因子分發(fā)等功能。提高了各端數(shù)據(jù)安全性。
【關(guān)鍵字】? ? 國(guó)密算法? ? 身份認(rèn)證? ? 數(shù)據(jù)加密? ? 算法模型
引言:
智能家居就是采用現(xiàn)代聯(lián)網(wǎng)、布線及自動(dòng)控制等技術(shù)將家居終端設(shè)備集成,智能家居提高了生活的便捷及舒適性。任何通過(guò)網(wǎng)絡(luò)傳輸?shù)男畔⒍即嬖谝欢ǖ陌踩[患,當(dāng)前,對(duì)智能家居的研究主要集中在應(yīng)用開發(fā),對(duì)使用過(guò)程中安全問(wèn)題投入的關(guān)注度還不夠。
智能家居進(jìn)行終端控制采用的通信方式主要分為兩種:無(wú)線通信和有線通信。無(wú)線通信包含以下通訊方式:ZigBee,Z-wave,RF,Bluetooth,WiFi,Lora,NB-IOT等;有線通信包含以下通訊方式:RS485,RS232,CAN,Lonworks,Modbus,KNX等[1]。
智能家居通過(guò)網(wǎng)絡(luò)傳輸控制指令進(jìn)行家居設(shè)備控制及設(shè)備狀態(tài)上報(bào),達(dá)到智能化。帶來(lái)便捷的同時(shí),也對(duì)家居設(shè)備帶來(lái)了安全威脅問(wèn)題。數(shù)據(jù)安全,才能保障智能家居系統(tǒng)安全,保證用戶隱私安全;智能家電安全同樣引起重視[2-3]。
系統(tǒng)采用身份認(rèn)證,指令數(shù)據(jù)加密提高了抵御來(lái)自網(wǎng)絡(luò)威脅的能力。系統(tǒng)中所涉及到的所有與終端交互數(shù)據(jù)加密部分,都采用國(guó)密算法。國(guó)密常用算法:對(duì)稱算法,SM1,SM4;非對(duì)稱算法,SM2;密碼雜湊算法,SM3(HASH算法庫(kù))[4]。其中SM2,SM3,SM4已公開算法,SM1算法未公開,必須調(diào)用硬件接口。本文主要關(guān)于系統(tǒng)中服務(wù)端與網(wǎng)關(guān)設(shè)備端數(shù)據(jù)交互部分。
一、系統(tǒng)架構(gòu)
系統(tǒng)由服務(wù)端、終端、網(wǎng)絡(luò)等組成。系統(tǒng)軟件框架圖如圖1所示。
系統(tǒng)服務(wù)端負(fù)責(zé)業(yè)務(wù)處理:信息管理、收發(fā)數(shù)據(jù)、身份認(rèn)證、數(shù)據(jù)處理、存儲(chǔ)等功能;用戶端查詢、控制范圍內(nèi)的設(shè)備狀態(tài);終端網(wǎng)關(guān)鏈接服務(wù)端與家居設(shè)備,收發(fā)指令。
二、算法模型
服務(wù)與網(wǎng)關(guān)客戶端數(shù)據(jù)交互采用自定義協(xié)議,方便后期的維護(hù)與擴(kuò)展,協(xié)議格式如下:
數(shù)據(jù)交互過(guò)程中,主要包括:身份認(rèn)證,數(shù)據(jù)加密交互。數(shù)據(jù)加密流程中首先要完成秘鑰因子的生成及確認(rèn)。圖2所示身份認(rèn)證邏輯流程,圖3所示秘鑰因子生成邏輯流程。
2.1身份認(rèn)證
身份認(rèn)證是相互的,假設(shè)通訊雙方是客戶端和服務(wù)端:客戶端認(rèn)證服務(wù)端身份,服務(wù)端認(rèn)證客戶端身份,只有同時(shí)通過(guò)認(rèn)證,才可以進(jìn)行數(shù)據(jù)通訊。
身份認(rèn)證邏輯流程圖2所示。
身份認(rèn)證采用SM3算法,輸出結(jié)果256比特,32字節(jié)。
假設(shè)IN(n)標(biāo)識(shí)長(zhǎng)度為n字節(jié)的字符串,其中n>0。
客戶端身份認(rèn)證數(shù)據(jù)封裝算法模型:
注解:
(1)協(xié)議中校驗(yàn)范圍內(nèi)的所有數(shù)據(jù);(2)驗(yàn)證因子:設(shè)備注冊(cè)到平臺(tái)時(shí),產(chǎn)生的數(shù)值,只保存在服務(wù)端和設(shè)備端,不在網(wǎng)絡(luò)上傳輸,只驗(yàn)證時(shí)參與運(yùn)算;(3)使用SM3計(jì)算校驗(yàn)值,校驗(yàn)范圍數(shù)據(jù)與驗(yàn)證因子組成字符集合做校驗(yàn),生成校驗(yàn)值hash_in(32);(4)封裝身份認(rèn)證數(shù)據(jù)DATA。
客戶端按照算法模型計(jì)算封裝認(rèn)證協(xié)議數(shù)據(jù)包發(fā)送到服務(wù)端。
服務(wù)端身份認(rèn)證算法模型:
注解:
(1)校驗(yàn)值,隨協(xié)議包明文傳輸?shù)尿?yàn)證數(shù)據(jù)32字節(jié);(2)長(zhǎng)度為n(n>0)的協(xié)議數(shù)據(jù),不包含(1)校驗(yàn)值內(nèi)容;(3)驗(yàn)證因子,與客戶端同一驗(yàn)證因子;(4)使用SM3算法計(jì)算出的值生成認(rèn)證數(shù)據(jù)hash(32);(5)比對(duì)兩個(gè)驗(yàn)證數(shù)據(jù)是否相等,結(jié)果為0或1,相等為1通過(guò)驗(yàn)證,不等為0不通過(guò)驗(yàn)證。RET表示最后的結(jié)果0或1。
服務(wù)端認(rèn)證客戶端發(fā)送的數(shù)據(jù),通過(guò)認(rèn)證后,產(chǎn)生認(rèn)證數(shù)據(jù)到客戶端進(jìn)行認(rèn)證,客戶端對(duì)服務(wù)端做出認(rèn)證后,完成認(rèn)證流程,鏈路保持;認(rèn)證失敗,斷開鏈路,釋放資源。
算法模型驗(yàn)證數(shù)據(jù),十六進(jìn)制展示發(fā)送數(shù)據(jù)(表2)。
2.2數(shù)據(jù)加密
交互數(shù)據(jù)在傳輸過(guò)程中采用一數(shù)據(jù)包一秘鑰的方式。
加密算法采用對(duì)稱算法,國(guó)密SM4公開算法,國(guó)密SM1算法沒(méi)有公開,需使用對(duì)應(yīng)的硬件進(jìn)行加解密。SM4為分組加密算法,秘鑰長(zhǎng)度、數(shù)據(jù)分組長(zhǎng)度為128位(16字節(jié))。
data_t=sm4_enc(key,data_i)數(shù)據(jù)加密;data_i=sm4_dec(key,data_t)數(shù)據(jù)解密。data_i原始明文數(shù)據(jù),key加密秘鑰,data_t加密后生成的密文數(shù)據(jù)。
秘鑰因子生成邏輯流程如圖3所示。
1.秘鑰因子的產(chǎn)生
秘鑰因子作為秘鑰的一部分參與到數(shù)據(jù)加解密中,秘鑰因子由服務(wù)產(chǎn)生并定時(shí)進(jìn)行更換。服務(wù)端秘鑰可由硬件生成真隨機(jī)數(shù)并保存形成秘鑰池,使用時(shí)從秘鑰池中提取,秘鑰池定時(shí)更新。
服務(wù)端秘鑰因子數(shù)據(jù)封裝算法模型:
注解:
(1)服務(wù)從秘鑰池中獲取8字節(jié)秘鑰作為秘鑰因子;(2)服務(wù)端與網(wǎng)關(guān)客戶端默認(rèn)的8字節(jié)部分秘鑰;(3)協(xié)議報(bào)文頭中8字節(jié)毫秒時(shí)間戳字段與默認(rèn)8字節(jié)秘鑰組成16字節(jié)加密秘鑰;(4)SM4加密算法加密秘鑰因子,生成16字節(jié)密文數(shù)據(jù)data_t(16);(5)報(bào)文頭數(shù)據(jù);(6)報(bào)文頭與密文數(shù)據(jù)生成32字節(jié)校驗(yàn)值hash(32);(7)封包數(shù)據(jù)結(jié)果DATA。
服務(wù)端認(rèn)證成功客戶端身份后,按照秘鑰因子生成算法模型封裝協(xié)議數(shù)據(jù)包發(fā)送到客戶端。
2.秘鑰因子驗(yàn)證
客戶端接收到數(shù)據(jù)后,驗(yàn)證數(shù)據(jù)包完整性,解密數(shù)據(jù),獲取秘鑰因子,根據(jù)規(guī)則生成加密秘鑰,發(fā)送默認(rèn)數(shù)據(jù)加密后的數(shù)據(jù)到服務(wù)端驗(yàn)證秘鑰因子正確性。
客戶端加密默認(rèn)數(shù)據(jù)驗(yàn)證秘鑰因子算法模型:
注解:
(1)計(jì)算出校驗(yàn)值驗(yàn)證數(shù)據(jù)完整性;(2)解密數(shù)據(jù)內(nèi)容,獲取秘鑰因子;(3)使用毫秒時(shí)間戳和秘鑰因子生成加密秘鑰;(4)加密16字節(jié)默認(rèn)明文數(shù)據(jù);(5)報(bào)文頭數(shù)據(jù);(6)報(bào)文頭與密文數(shù)據(jù)生成32字節(jié)校驗(yàn)值hash(32);(7)封包數(shù)據(jù)DATA,發(fā)送到服務(wù)端,等待服務(wù)處理結(jié)果(按照?qǐng)D3流程)。
身份認(rèn)證及秘鑰因子生成完成后,指令數(shù)據(jù)交互按照一數(shù)據(jù)包一秘鑰的方式進(jìn)行。
算法模型驗(yàn)證數(shù)據(jù),十六進(jìn)制展示發(fā)送數(shù)據(jù)(表3)。
2.3算法性能
封裝數(shù)據(jù)包過(guò)程中高頻次使用SM3、SM4國(guó)密算法,提高數(shù)據(jù)安全。對(duì)算法性能做了相關(guān)測(cè)試,可滿足通訊過(guò)程中數(shù)據(jù)處理要求:
三、結(jié)束語(yǔ)
本系統(tǒng)使用國(guó)密算法,對(duì)數(shù)據(jù)安全進(jìn)行防護(hù)。身份互認(rèn)證機(jī)制,維護(hù)了各端身份安全;系統(tǒng)設(shè)計(jì)使用一數(shù)據(jù)包一秘鑰設(shè)計(jì),提高了每一數(shù)據(jù)包的安全性,實(shí)現(xiàn)了加密數(shù)據(jù)安全實(shí)時(shí)通信功能。算法采用國(guó)密算法,協(xié)議為自定義協(xié)議,自主可控,方便維護(hù)與擴(kuò)展。
參? 考? 文? 獻(xiàn)
[1]許奎.智能家居通訊協(xié)議綜述[J].儀器儀表用戶,2017,2(24):109-111.
[2]吳曉慶,鄭駿. 基于4G網(wǎng)絡(luò)的視頻加密傳輸軟件設(shè)計(jì)[J]. 電子與封裝, 2021, 21(2): 020302 .
[3]肖詩(shī)滿;陳軍;紀(jì)瑤;夏江;楊林. 智能家電電路典型失效機(jī)理與設(shè)計(jì)缺陷[J]. 電子與封裝, 2020, 20(12): 120401 .
[4]王小云,于紅波.SM3密碼雜湊算法[J].信息安全研究,2016,2(11):983-994.