盧 陽 劉書勇 李 嘉 田東博 王國棟
1(南瑞集團(tuán)有限公司(國網(wǎng)電力科學(xué)研究院有限公司) 江蘇 南京 211106)2(中國電力科學(xué)研究院有限公司 北京 100000)
近年來國家對新能源產(chǎn)業(yè)的大力推廣促進(jìn)了電動汽車的快速發(fā)展[1],并加快了充電樁等基礎(chǔ)設(shè)施的建設(shè)。由于充電樁的運(yùn)營方式在面向小區(qū)、地下停車、偏遠(yuǎn)地區(qū)等復(fù)雜環(huán)境下推廣存在數(shù)據(jù)通信不兼容、通信設(shè)備成本高、用戶體驗(yàn)不佳等問題,目前充電樁設(shè)備的離線通信大都采用藍(lán)牙方式[2]。藍(lán)牙規(guī)范中包括四種安全模式,分別提供不同方式、不同程度的保護(hù)措施[3]。由于在藍(lán)牙通信過程中,只進(jìn)行了設(shè)備認(rèn)證,沒有進(jìn)行身份認(rèn)證,藍(lán)牙設(shè)備和傳輸通道存在被攻擊的風(fēng)險(xiǎn)。如采用二維碼方式進(jìn)行藍(lán)牙連接時,二維碼掃描無法解決雙向認(rèn)證的問題,也無法實(shí)現(xiàn)動態(tài)密鑰更新,更無法防止偽造(二維碼與設(shè)備無法綁定,任意人都可以拍照打印再貼于別處)。身份認(rèn)證是保障一個雙方通信安全最根本的前提,通信各方必須通過相應(yīng)的身份驗(yàn)證機(jī)制才能將明確自身的訪問權(quán)限[4]。隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,物聯(lián)網(wǎng)的應(yīng)用越來越廣泛,但同時伴隨著一系列安全隱患。在物聯(lián)網(wǎng)環(huán)境下,終端要進(jìn)行正常的數(shù)據(jù)采集,首先要確保信息來源的真實(shí)性[5],這就對物聯(lián)網(wǎng)控制系統(tǒng)的身份認(rèn)證機(jī)制要求更為嚴(yán)格,以確保接入設(shè)備的合法性。身份認(rèn)證其實(shí)就是通信雙方都知道彼此的身份信息,能夠建立起來可信關(guān)系,保證數(shù)據(jù)在起始點(diǎn)的可靠性。身份認(rèn)證技術(shù)可以在提升物聯(lián)網(wǎng)便捷性的同時保證數(shù)據(jù)通信安全。
近幾年已有多種物聯(lián)網(wǎng)相關(guān)的身份認(rèn)證技術(shù)被提出[6-11]。朱煒玲等[6]提出使用對稱加密算法進(jìn)行身份認(rèn)證,雖然其計(jì)算成本低,消耗資源少,但還是容易遭受到中間人攻擊?;跈E圓曲線加密身份認(rèn)證則需要大量的存儲資源、通信資源和計(jì)算資源,對于計(jì)算能力受限的傳感器網(wǎng)絡(luò)來說不適合。朱鵬飛等[7]提出一種輕量化的消息認(rèn)證碼方案,具有開銷小、防重放、可追溯等特性,但是需要適應(yīng)多種類型的消息認(rèn)證碼生成設(shè)備,不易擴(kuò)展。有學(xué)者進(jìn)行物聯(lián)網(wǎng)身份管理的技術(shù)研究[8],提出一種物聯(lián)網(wǎng)身份管理框架,但需要多方的共同參與并針對目前的框架進(jìn)行改造。而國外學(xué)者Gentry[9]在2003年給出了基于證書的認(rèn)證體制,將公鑰加密體制和基于身份的加密體制各自的優(yōu)勢進(jìn)行結(jié)合,但是需要頻繁的證書更新,計(jì)算量大,認(rèn)證效率低下。文獻(xiàn)[10]提出使用基于委托的機(jī)制,這種方式雖然計(jì)算成本低,但是不能輕易實(shí)現(xiàn)私有存儲。文獻(xiàn)[11]提出了一種全新的身份雙向認(rèn)證機(jī)制,通過加入ID身份信息和初始工作狀態(tài)信息進(jìn)行身份的合法性認(rèn)證,但是需要定時更新工作狀態(tài)信息,明顯增加用戶交互次數(shù)?;跇?biāo)識密碼體制IBC技術(shù)能夠?qū)崿F(xiàn)身份認(rèn)證,將用戶唯一標(biāo)識作為公鑰,并計(jì)算生成相應(yīng)的私鑰,簡化與用戶的交互次數(shù),且無需證書管理。SM9算法則是基于標(biāo)識密碼體制IBC技術(shù)的,是我國商用密碼行業(yè)公鑰密碼算法中的一種標(biāo)準(zhǔn)算法。
本文設(shè)計(jì)了一種基于SM9標(biāo)識密碼體制的智慧能源充電樁藍(lán)牙安全防護(hù)方案,實(shí)現(xiàn)藍(lán)牙通信中的身份認(rèn)證。藍(lán)牙安全中的安全是靠藍(lán)牙的AES密鑰保護(hù),SM9可保護(hù)該AES密鑰并且實(shí)現(xiàn)動態(tài)更新,還可以用于雙向認(rèn)證。本文利用藍(lán)牙通信已有的安全機(jī)制,增加移動終端與能源路由器間雙向認(rèn)證,并協(xié)商生成隨機(jī)的會話密鑰,實(shí)現(xiàn)傳輸業(yè)務(wù)數(shù)據(jù)的加密保護(hù)。
在充電樁系統(tǒng)中,用戶主要利用個人移動終端App通過4G/5G等網(wǎng)絡(luò)連接到智慧能源服務(wù)系統(tǒng)獲取有序充電、充電樁分享等業(yè)務(wù)服務(wù)。在網(wǎng)絡(luò)信號較差的情況(離線)下,則通過藍(lán)牙通信方式與能源路由器建立通信連接,將充放電等業(yè)務(wù)需求提交給能源路由器,然后送達(dá)給智慧能源服務(wù)系統(tǒng)。
本文主要分析離線場景下的智慧能源充電樁安全防護(hù),其總體框架如圖1所示。安全防護(hù)系統(tǒng)將以安全標(biāo)識服務(wù)系統(tǒng)為中心,基于SM9標(biāo)識密鑰算法,為終端側(cè)、智慧能源服務(wù)系統(tǒng)提供安全保障。
圖1 智慧能源充電樁藍(lán)牙安全總體框架
基于身份標(biāo)識的密碼系統(tǒng)(IBC)的密碼學(xué)思想是由Shamir[12]在1984年提出的。在該體制中,公鑰就是用戶的身份信息,如主機(jī)的IP地址、用戶的E-mail地址、手機(jī)號碼和姓名等,可根據(jù)用戶的唯一可標(biāo)識的信息獲得。密鑰生成中心(KGC)根據(jù)用戶的身份信息生成用戶私鑰,并通過安全通道將私鑰發(fā)送給相應(yīng)的用戶。由于用戶的公鑰是通過身份信息直接計(jì)算得出,且用戶標(biāo)識具有唯一性,因此不需要第三方機(jī)構(gòu)(CA)來保證用戶公鑰的真實(shí)性,可以解決傳統(tǒng)公鑰密碼體制中CA機(jī)構(gòu)帶來的證書存儲和管理問題,減輕系統(tǒng)的通信開銷和存儲開銷。
2016年,中國標(biāo)識密碼SM9算法正式對外發(fā)布,它是一種基于雙線性對的標(biāo)識密碼體制,采用實(shí)體的有效標(biāo)識作為公鑰進(jìn)行加密[13],是我國商用密碼行業(yè)公鑰密碼算法的一種標(biāo)準(zhǔn)算法,并已成為國際標(biāo)準(zhǔn)算法。由于IBC技術(shù)靈活易用和方便管理的特點(diǎn),SM9算法的應(yīng)用需求十分旺盛[14]。SM9算法不需要向CA機(jī)構(gòu)申請數(shù)字證書,適用于互聯(lián)網(wǎng)應(yīng)用的各種新興應(yīng)用的安全保障。如電子郵件安全[15]、系統(tǒng)安全防護(hù)[16]、智能終端保護(hù)[17]、物聯(lián)網(wǎng)安全[18]、云存儲安全、區(qū)塊鏈隱私保護(hù)[19]等。這些安全應(yīng)用可采用手機(jī)號碼或郵件地址等用戶身份唯一標(biāo)識作為公鑰,實(shí)現(xiàn)數(shù)據(jù)加密、會話加密、通道加密、身份認(rèn)證等安全應(yīng)用,并具有使用方便,易于部署的特點(diǎn),且終端側(cè)不需要存儲證書,減少終端存儲。
安全防護(hù)系統(tǒng)的主要設(shè)計(jì)流程包括充電樁設(shè)備初始化,App用戶注冊以及藍(lán)牙安全交互連接。其中充電樁設(shè)備的初始化是由安全標(biāo)識服務(wù)系統(tǒng)給安全芯片/充電樁設(shè)備分發(fā)標(biāo)識和私鑰,包括配置系統(tǒng)公鑰及參數(shù),設(shè)置出廠配置等初始化的過程;App用戶注冊也是通過安全標(biāo)識服務(wù)系統(tǒng)生成用戶標(biāo)識和用戶私鑰,并將密鑰安全地存儲于手機(jī)端本地;藍(lán)牙安全交互連接則是在前兩個流程的基礎(chǔ)上,建立藍(lán)牙安全連接通信,并使用SM9標(biāo)識密鑰算法進(jìn)行充電樁設(shè)備與手機(jī)App之間的雙向認(rèn)證,最后生成會話密鑰進(jìn)行數(shù)據(jù)通信。
充電樁設(shè)備初始化分為三個部分:初始化安全芯片,充放電設(shè)備注冊,充電樁設(shè)備出廠配置。其中安全芯片可嵌入到充放電設(shè)備中。
3.1.1初始安全芯片
安全芯片在提供給廠家的時候需要在安全芯片內(nèi)部預(yù)置一些數(shù)據(jù),如初始業(yè)務(wù)配置數(shù)據(jù)、IBC系統(tǒng)公鑰、初始標(biāo)識ID及其對應(yīng)的SM9私鑰等,私鑰由標(biāo)識管理系統(tǒng)生成。
安全芯片初始化流程如下:
1) 讀取安全芯片的CID,獲取芯片的唯一標(biāo)識。
2) 調(diào)用標(biāo)識管理平臺,生成安全芯片應(yīng)用初始標(biāo)識ID、系統(tǒng)參數(shù)及SM9私鑰。
3) 將安全芯片應(yīng)用初始標(biāo)識、系統(tǒng)參及私鑰寫入安全芯片。具體過程如圖2所示。
圖2 初始化安全芯片流程
3.1.2充放電設(shè)備注冊
充放電設(shè)備第一次上線工作的注冊過程需要和后臺交互的各個流程,包含安全芯片的注冊過程、數(shù)據(jù)封包/解包、更新等,更新記錄完成以后,充放電設(shè)備即可進(jìn)行業(yè)務(wù)數(shù)據(jù)的交互。其中充放電設(shè)備首先需要與標(biāo)識管理平臺建立可靠穩(wěn)定的網(wǎng)絡(luò)連接。注冊流程如圖3所示。
圖3 充放電設(shè)備注冊流程
1) 充放電設(shè)備端對設(shè)備信息進(jìn)行簽名,如IMEI、IMSI、CID、PointID(具體含義查看表1),并將信息和簽名值S發(fā)送給認(rèn)證平臺進(jìn)行驗(yàn)簽。
表1 充電樁藍(lán)牙安全防護(hù)字符含義
2) 認(rèn)證平臺驗(yàn)簽通過后,機(jī)卡綁定,并通過標(biāo)識管理平臺,生成正式標(biāo)識PointID及私鑰。
3) 將PointID和私鑰,使用系統(tǒng)公鑰進(jìn)行加密(保護(hù)密鑰在傳輸過程中的安全),并發(fā)送給充放電設(shè)備。
4) 充放電設(shè)備解密后寫入標(biāo)識和密鑰。
3.1.3充電樁設(shè)備出廠配置
充電樁設(shè)備出廠時,基于安全標(biāo)識服務(wù)系統(tǒng)給每個設(shè)備分配交互標(biāo)識和唯一標(biāo)識,并生成充電樁設(shè)備的交互私鑰和唯一私鑰,并與設(shè)備中的藍(lán)牙模塊的連接地址、初始配對口令及其他敏感信息存儲于該設(shè)備的安全芯片中;同時,以交互標(biāo)識為公鑰對藍(lán)牙地址和充電樁設(shè)備的其他敏感業(yè)務(wù)信息進(jìn)行加密,與交互標(biāo)識共同存儲于二維碼中,并將二維碼張貼于充電樁設(shè)備上。
手機(jī)App用戶注冊登錄時,經(jīng)過用戶身份合法性校驗(yàn)之后,可將藍(lán)牙默認(rèn)口令及用戶可連接的充電設(shè)備標(biāo)識信息及其對應(yīng)的交互私鑰下發(fā)給手機(jī)App。同時,通過安全機(jī)制生成用戶標(biāo)識和用戶私鑰,并通過安全SDK技術(shù)進(jìn)行手機(jī)端本地存儲。
圖4為App用戶注冊的流程圖,具體過程如下:
1) 下載手機(jī)App,并預(yù)置初始數(shù)據(jù):SM9系統(tǒng)參數(shù),平臺標(biāo)識,生成SM2公私鑰對。
2) 向用戶中心發(fā)送短信驗(yàn)證請求。
3) App端提交短信驗(yàn)證,并將用戶基本信息及系統(tǒng)參數(shù)等發(fā)送到用戶中心。
4) 用戶中心驗(yàn)證短信驗(yàn)證碼,并將用戶基本信息及系統(tǒng)參數(shù)發(fā)送至統(tǒng)一認(rèn)證平臺。
5) 統(tǒng)一認(rèn)證平臺進(jìn)行驗(yàn)簽,通過后根據(jù)手機(jī)號向標(biāo)識管理平臺生成用戶的標(biāo)識及私鑰。
6) 將標(biāo)識申請結(jié)果返回App,更新密鑰狀態(tài)。
7) 設(shè)置App用戶密碼,完成用戶注冊。
圖4 App用戶注冊流程
藍(lán)牙安全交互連接是整個安全防護(hù)系統(tǒng)中的主要部分,主要是在建立起藍(lán)牙安全通信連接后,使用基于SM9標(biāo)識密碼算法進(jìn)行移動終端與能源路由器間雙向認(rèn)證,認(rèn)證過程中通過引入了雙隨機(jī)數(shù)的方法,大幅提升了每次會話內(nèi)容的不可預(yù)見性,且采用時間戳保證數(shù)據(jù)的有效性。認(rèn)證通過后協(xié)商生成隨機(jī)的國密加密算法密鑰,實(shí)現(xiàn)傳輸業(yè)務(wù)數(shù)據(jù)的國密加密保護(hù)。充電業(yè)務(wù)藍(lán)牙安全交互連接流程如圖5所示。
圖5 充電業(yè)務(wù)藍(lán)牙安全交互連接流程圖
1) 手機(jī)App掃描充電設(shè)備上的二維碼,獲取二維碼中的交互標(biāo)識和充電設(shè)備藍(lán)牙地址等敏感信息的密文。
2) 解密二維碼數(shù)據(jù),手機(jī)App基于交互標(biāo)識所對應(yīng)的私鑰解密上述密文,獲取藍(lán)牙地址和初始配對口令;如解密失敗則不予連接。
3) 解密二維碼成功后,則確認(rèn)二維碼合法,進(jìn)行藍(lán)牙連接。若配對口令未更新,則輸入初始配對口令并連接藍(lán)牙;若充電設(shè)備的配對口令已更新且手機(jī)App也已更新,則由App完成配對口令自動填入并連接藍(lán)牙;若充電設(shè)備的配對口令已安全更新但手機(jī)App未更新,則可通過傳統(tǒng)通信方式詢問系統(tǒng)或充電設(shè)備擁有者,再手動填入并連接藍(lán)牙。
4) 藍(lán)牙建立連接后,通過藍(lán)牙通信建立安全通道,充電設(shè)備和手機(jī)App分別通過自身的唯一私鑰進(jìn)行服務(wù)簽名,對方使用接收到的唯一標(biāo)識進(jìn)行驗(yàn)證,以完成雙向認(rèn)證,在此過程中同時完成一次性的傳輸密鑰協(xié)商。認(rèn)證流程:
(1) 手機(jī)SDK將參數(shù)(用戶標(biāo)識、時間戳t1、隨機(jī)數(shù)r1、PointID)使用用戶標(biāo)識進(jìn)行SM9簽名。
(2) 手機(jī)SDK將(用戶標(biāo)識、時間戳t1、隨機(jī)數(shù)r1、PointID)及其SM9簽名值,并攜帶用戶token,發(fā)送給充放電設(shè)備。
(3) 充電樁設(shè)備驗(yàn)證token;再驗(yàn)證時間戳t1;通過后,使用用戶標(biāo)識進(jìn)行SM9驗(yàn)簽;驗(yàn)證通過后,將(用戶標(biāo)識、時間戳t2、隨機(jī)數(shù)r2、PointID)使用充電樁PointID進(jìn)行SM9簽名。
(4) 將(用戶標(biāo)識、時間戳t2、隨機(jī)數(shù)r2、PointID)及其SM9簽名值發(fā)送給手機(jī)SDK。
(5) 手機(jī)SDK使用PointID進(jìn)行SM9驗(yàn)簽;驗(yàn)證通過后,產(chǎn)生隨機(jī)SM4密鑰SeedKey,并使用PointID將密鑰加密,發(fā)送給充放電設(shè)備。
(6) 充放電設(shè)備進(jìn)行SM9解密,得到對稱會話密鑰。
5) 后續(xù)采用對稱會話密鑰進(jìn)行數(shù)據(jù)的通信加密。
系統(tǒng)目前已完成Demo開發(fā),相關(guān)概念已在國網(wǎng)電動車充放電項(xiàng)目中進(jìn)行試驗(yàn)并測試。實(shí)驗(yàn)中,充電樁設(shè)備采用嵌入安全芯片的藍(lán)牙通信開發(fā)板進(jìn)行模擬,基于NB-eSAM體系架構(gòu),支持國密非對稱算法SM2、國密對稱算法SM4、基于身份標(biāo)識的SM9算法;App及所需的SDK采用Android Studio環(huán)境進(jìn)行開發(fā)模擬;而安全標(biāo)識服務(wù)系統(tǒng)基于JAVA環(huán)境開發(fā),采用微服務(wù)架構(gòu),并部署在linux環(huán)境下;智慧能源系統(tǒng)也是基于JAVA環(huán)境開發(fā)的,簡單模擬實(shí)際的業(yè)務(wù)場景。實(shí)驗(yàn)結(jié)果將從響應(yīng)時間和交互次數(shù)上分別進(jìn)行比較。
表2為本交互方案標(biāo)識生成、私鑰下發(fā)、雙向認(rèn)證及業(yè)務(wù)數(shù)據(jù)加密上報(bào)下發(fā)的響應(yīng)時間。可看出本文方案提出的基于SM9的標(biāo)識密碼體制在響應(yīng)時間上要比文獻(xiàn)[7]和文獻(xiàn)[9]都快。
表2 響應(yīng)時間對比 單位:s
在雙向認(rèn)證過程中即可實(shí)現(xiàn)用戶身份鑒別。本文交互方案基于SM9的標(biāo)識密碼體制,在密鑰協(xié)商過程中,與用戶交互總次數(shù)為3,在交互次數(shù)上明顯低于文獻(xiàn)[7]和文獻(xiàn)[9]。文獻(xiàn)[7]提出的基于SM2的PKI體系方式進(jìn)行身份鑒別,至少需要5次用戶交互,其中至少需要2次公鑰驗(yàn)證。而文獻(xiàn)[9]需要定時更新工作狀態(tài)信息,因此交互次數(shù)至少大于3次。
表3 交互次數(shù)對比
本文離線場景下的智慧能源充電樁藍(lán)牙交互存在的安全風(fēng)險(xiǎn),提出了基于SM9標(biāo)識密碼算法的藍(lán)牙安全交互體系,使用用戶唯一標(biāo)識作為公鑰,并計(jì)算生成相應(yīng)的私鑰,簡化與用戶的交互次數(shù)。在藍(lán)牙已有的安全機(jī)制下,增加移動終端與能源路由器間雙向認(rèn)證,并協(xié)商生成隨機(jī)的國密加密算法密鑰,實(shí)現(xiàn)傳輸業(yè)務(wù)數(shù)據(jù)的國密加密保護(hù),促進(jìn)和提升藍(lán)牙在智慧能源充電樁中的安全應(yīng)用。