張 喆
(中國電信股份有限公司北京分公司,北京 100123)
隨著物聯(lián)網(wǎng)的發(fā)展從數(shù)據(jù)鏈路技術(shù)標(biāo)準(zhǔn)來看,有兩個(gè)重要分支:一個(gè)是低帶寬(100 kb/s左右)廣連接的NB-IoT,另一個(gè)是4G/5G的大帶寬(100 Mb/s以上)長連接的應(yīng)用場景。
低速的NB-IoT的安全方案目前市場上有三種(物理硬件級安全模塊的)解決方案:第一種是模組中內(nèi)置單獨(dú)的SE,實(shí)現(xiàn)物理級的密鑰保護(hù)。比如在海斯Hi2100芯片中增加SE模塊,或者在移遠(yuǎn)模組BC95,BC28內(nèi)增加SE;第二種是設(shè)備種的MCU(Microcontroller Unit)之外在控制板上增加單獨(dú)的安全芯片;第三種是使用運(yùn)營商的JAVA卡標(biāo)準(zhǔn),在SIM中增加單獨(dú)的SE。
高速的4G/5G應(yīng)用市場上目前主要有兩種中方案:第一種是通過 DTU(Data Transfer unit)中發(fā)放證書,key文件安全socket連接;第二種是利用SIM卡發(fā)放證書和key文件,通過模組和SIM的AT指令通道實(shí)現(xiàn)鑒權(quán)握手實(shí)現(xiàn)安全socket連接。
本文中描述的是以SIM為主要SE載體和密鑰分發(fā)介質(zhì),復(fù)用現(xiàn)有運(yùn)營商SIM卡制卡密鑰管理流程體系的方案,以簡化開發(fā)集成商和客戶安全加密方案的總體實(shí)施成本。并且結(jié)合北京熱力集團(tuán)直供熱水表應(yīng)用詳細(xì)說明了服務(wù)器,物聯(lián)網(wǎng)設(shè)備,手機(jī)端三端加密方案的詳細(xì)實(shí)現(xiàn)說明。
(1)如圖1所示,物聯(lián)網(wǎng)應(yīng)用終端設(shè)備接入系統(tǒng)架構(gòu)有4個(gè)主要部分:物聯(lián)網(wǎng)終端、物聯(lián)網(wǎng)關(guān)、物聯(lián)網(wǎng)安全盾服務(wù)、手機(jī)端等上層應(yīng)用。
圖1 總體邏輯架構(gòu)圖
(2)終端中的SIM卡中集成了SE芯片,SE芯片中的應(yīng)用applet提供終端信息安全相關(guān)能力和加密算法。
(3)設(shè)備SDK封裝了卡的能力和算法接口,為設(shè)備上的應(yīng)用提供調(diào)用服務(wù),完成加密、認(rèn)證等。
(4)物聯(lián)網(wǎng)安全盾(以下簡稱物盾)服務(wù)中包括物盾平臺、手機(jī)盾平臺及應(yīng)用接入平臺,物盾平臺負(fù)責(zé)終端與業(yè)務(wù)平臺對接,對設(shè)備上報(bào)的數(shù)據(jù)進(jìn)行身份認(rèn)證和數(shù)據(jù)解密,對業(yè)務(wù)平臺下發(fā)的控制指令進(jìn)行數(shù)字簽名和指令加密。手機(jī)盾平臺負(fù)責(zé)手機(jī)盾數(shù)據(jù)與業(yè)務(wù)平臺數(shù)據(jù)之間進(jìn)行身份認(rèn)證及數(shù)據(jù)加解密工作。
(5)在設(shè)備接入平臺端部署集成物盾平臺的SDK包(HTTP接口),SDK包提供業(yè)務(wù)平臺與物盾平臺的安全通信,接入平臺只需要調(diào)用軟盾本地接口即可使用物盾平臺的加解密服務(wù)。
(6)在用戶端,用戶應(yīng)用進(jìn)行業(yè)務(wù)操作。應(yīng)用集成集成手機(jī)盾SDK,對數(shù)據(jù)進(jìn)行加解密服務(wù),這樣實(shí)現(xiàn)了設(shè)備、服務(wù)器、手機(jī)三端的完整加密。
(1)基于SIM卡中的javacos系統(tǒng)。
(2)Applet提供物聯(lián)網(wǎng)終端的所有安全相關(guān)業(yè)務(wù)功能。如簽名驗(yàn)簽,對稱加解密,非對稱加解密等功能。
(3)通信模組或設(shè)備MCU通過apdu指令訪問applet應(yīng)用提供的安全業(yè)務(wù)功能。
(1)封裝了SIM卡的能力和算法,對上層設(shè)備應(yīng)用提供API接口。上層應(yīng)用像調(diào)用普通接口一樣調(diào)用SDK接口,由設(shè)備SDK完成和卡的交互。
(2)基于設(shè)備上的操作系統(tǒng)和編譯環(huán)境實(shí)現(xiàn),可基于不同操作系統(tǒng)和編譯環(huán)境提供不同的設(shè)備SDK版本。
(1)物盾平臺SDK集成在業(yè)務(wù)平臺中。SDK根據(jù)接入平臺的技術(shù)架構(gòu)和編程語言提供相應(yīng)的定制版本。
(2)業(yè)務(wù)平臺通過調(diào)用物盾平臺API接口使用軟盾的各項(xiàng)安全功能。
(3)SDK提供與物盾平臺的數(shù)據(jù)交互,業(yè)務(wù)平臺需要的安全功能通過SDK與物盾平臺的進(jìn)行交互,物盾平臺將結(jié)果通過SDK返回給業(yè)務(wù)平臺。
(1)物盾平臺是一套獨(dú)立的服務(wù),部署在中國電信云上,作為安全使能服務(wù)的一部分,主要功能為業(yè)務(wù)平臺提供安全功能服務(wù)。
(2)物盾平臺與業(yè)務(wù)平臺之間通過集成在業(yè)務(wù)平臺上的物盾平臺SDK進(jìn)行通信。
(3)手機(jī)盾平臺也是獨(dú)立的服務(wù),部署在電信云上,主要應(yīng)用與業(yè)務(wù)平臺之間進(jìn)行身份認(rèn)證及加解密服務(wù)。
(1)移動(dòng)應(yīng)用APP集成手機(jī)盾SDK,通過手機(jī)盾SDK提供的接口,對數(shù)據(jù)進(jìn)行加解密操作。
(2)移動(dòng)應(yīng)用數(shù)據(jù)提交到應(yīng)用接入平臺后,應(yīng)用接入平臺調(diào)用物盾平臺API接口,對數(shù)據(jù)進(jìn)行加解密操作。
業(yè)務(wù)過程中安全業(yè)務(wù)所有算法均采用國密算法,非對稱加解密SM2,摘要SM3,對稱加解密SM4。
(1)密鑰初始化由兩個(gè)主要流程組成:一個(gè)流程是,SIM卡產(chǎn)線初始化原始對稱密鑰K1,K1使用第一組0348密鑰進(jìn)行SM3 HASH,取前16個(gè)字節(jié),并將對稱密鑰由線下文件的方式發(fā)送給物盾平臺。另外一個(gè)流程是,模組在注冊物盾平臺后,獲取SIM卡的初始化注冊狀態(tài),如未初始化注冊,則啟動(dòng)注冊流程。
注:線下文件為txt格式,文件每一行格式為:ICCID【20位】K1【32位】。
(2)終端MCU在需要發(fā)數(shù)據(jù)的時(shí)候,模組/MCU讀取SIM卡注冊狀態(tài),如未注冊,則模組重新發(fā)起SIM卡初始化注冊流程。
(3)整個(gè)密鑰初始化流程中,SIM卡出廠時(shí)與物盾平臺不能在線交互。所以,物盾平臺【后臺管理系統(tǒng)】需要增加導(dǎo)入SIM卡ICCID和K1的功能。
注:初始化流程圖中步驟15,參考《北京電信應(yīng)用規(guī)范v1.0(發(fā)布版).doc》中5.4.3.3章節(jié)。并且模組在此基礎(chǔ)上,增加MEID。步驟17:物盾平臺與物聯(lián)網(wǎng)接入平臺通信,物盾平臺提供HTTPS服務(wù)。
(4)流程圖2中21為物盾平臺返回指令到物聯(lián)網(wǎng)接入平臺(物聯(lián)網(wǎng)接入平臺提供下行指令接口文檔給物盾平臺)。
(5)物盾平臺支持10套公私鑰密鑰,對于單獨(dú)消息加密可以使用圖2流程進(jìn)行注冊使用。對于鏈路VPN加密的可以使用圖3流程進(jìn)行注冊使用。
圖2、圖3為初始化注冊流程圖,分為NB-IoT加密初始化和VPN初始化流程兩部分。
圖2 NB-IoT密鑰初始化流程
圖3 高速長連接VPN服務(wù)器初始化密鑰流程
(1)終端可根據(jù)業(yè)務(wù)需求上傳單條加密數(shù)據(jù)、非加密數(shù)據(jù)、混合數(shù)據(jù)?;蛘呓PN連接后進(jìn)行數(shù)據(jù)上傳。上傳單條加密數(shù)據(jù)調(diào)用模組加密并發(fā)送接口,模組處理完加密后直接發(fā)送。上傳非加密單條數(shù)據(jù)調(diào)用模組直接發(fā)送接口,終端不加密直接發(fā)送。上傳混合數(shù)據(jù)調(diào)用模組加密接口,模組將加密數(shù)據(jù)返回給MCU,MCU再組合數(shù)據(jù)后調(diào)用模組直接發(fā)送接口。
(2)建立VPN連接MCU的調(diào)用SDK接口,獲取證書建立VPN連接。
(3)模組在通過SIM卡獲取加密數(shù)據(jù)的時(shí)候分兩個(gè)步驟:一是調(diào)用SIM卡接口獲取業(yè)務(wù)平臺公鑰P2加密數(shù)據(jù)D’;二是調(diào)用SIM卡獲取D’的MAC和SIM卡簽名。
(4)業(yè)務(wù)平臺在收到終端的加密數(shù)據(jù)后,通過調(diào)用業(yè)務(wù)平臺集成的物盾平臺SDK接口進(jìn)行解密,SDK連接物盾平臺進(jìn)行解密。
圖4和圖5為終端上傳數(shù)據(jù)流程圖,分別代表NB和4G SSLVPN流程:
圖4 單條數(shù)據(jù)加密上傳
圖5 VPN連接上傳數(shù)據(jù)
(1)業(yè)務(wù)平臺可向終端下發(fā)加密指令、非加密指令。下發(fā)加密指令業(yè)務(wù)平臺調(diào)用SDK接口進(jìn)行加密,SDK連接物盾平臺進(jìn)行加密;下發(fā)非加密指令則直接下發(fā)到終端MCU執(zhí)行。
(2)終端MCU收到加密指令后,調(diào)用SDK指令驗(yàn)證接口驗(yàn)證指令合法性。
(3)物盾平臺在進(jìn)行指令加密的時(shí)候需要附加幀號用于防止重放攻擊,在SIM卡和物盾平臺中針對每個(gè)設(shè)備都記錄幀號。SIM卡驗(yàn)證當(dāng)前幀號小于等于記錄幀號則指令非法。
(4)如圖6為業(yè)務(wù)平臺下發(fā)加密指令流程:圖6部分中如果為全秘文消息,則無圖中6、7步驟。
VPN連接下發(fā)數(shù)據(jù)與VPN上行數(shù)據(jù)發(fā)送流程一致可參考圖5,建立連接后進(jìn)行數(shù)據(jù)傳輸。
(1)手機(jī)APP注冊、實(shí)名認(rèn)證后,將賬戶信息導(dǎo)入到手機(jī)盾平臺服務(wù)端。
(2)手機(jī)APP調(diào)用手機(jī)盾SDK,進(jìn)行密鑰協(xié)同運(yùn)算,計(jì)數(shù)出注冊用戶公私鑰對,初始化數(shù)據(jù)對稱密鑰的過程。
(3)圖7為手機(jī)盾密鑰初始化注冊流程。
圖7 手機(jī)APP初始手機(jī)密鑰流程
(1)手機(jī)端數(shù)據(jù)向業(yè)務(wù)平臺提交數(shù)據(jù)時(shí),首先用手機(jī)盾SDK對數(shù)據(jù)進(jìn)行加密。
(2)業(yè)務(wù)平臺獲取數(shù)據(jù)后,調(diào)用服務(wù)端手機(jī)盾API接口,對手機(jī)端提交過來的數(shù)據(jù)進(jìn)行解密。
(3)業(yè)務(wù)平臺獲取到手機(jī)端(熱水寶APP)提交的數(shù)據(jù)原文后,再按照業(yè)務(wù)平臺下發(fā)數(shù)據(jù)指令的流程,對數(shù)據(jù)進(jìn)行加密,直到將數(shù)據(jù)寫到UIM卡為止。(后續(xù)流程詳細(xì)參考上一章節(jié):業(yè)務(wù)平臺下發(fā)加密指令流程)。
(4)圖8為具體流程。
圖8 手機(jī)端解密業(yè)務(wù)平臺流程
(1)業(yè)務(wù)平臺加密,手機(jī)端解密流程。主要是指UIM卡上行數(shù)據(jù)過來后,再使用手機(jī)盾進(jìn)行加密,手機(jī)端大的過程。UIM卡數(shù)據(jù),根據(jù)終端上傳的業(yè)務(wù)流程圖,將數(shù)據(jù)上傳到業(yè)務(wù)平臺端(詳細(xì)流程參考上文:終端上傳數(shù)據(jù)流程)。
(2)業(yè)務(wù)平臺獲取到終端數(shù)據(jù)后,再調(diào)用手機(jī)盾API接口進(jìn)行加密。
(3)手機(jī)端獲取數(shù)據(jù)后,再調(diào)用手機(jī)盾SDK進(jìn)行解密。
(4)詳細(xì)流程圖見圖9。
圖9 業(yè)務(wù)平臺和手機(jī)端解密流程
本方案已經(jīng)在某熱力行業(yè)閥控,生活熱水表等應(yīng)用中使用。詳細(xì)SIM密鑰初始化協(xié)議,移遠(yuǎn)BC95,BC28AT指令范例,終端幀格式等詳細(xì)接口可向作者索要。