湯鵬志,張夢麗,2,丁仕晗,左黎明,2
(華東交通大學(xué)1.理學(xué)院;2.系統(tǒng)工程與密碼學(xué)研究所,江西 南昌330013)
本世紀(jì)初,為解決分布式電源接入大電網(wǎng)成本高、控制困難等諸多問題,協(xié)調(diào)大電網(wǎng)與分布式電源間的矛盾,學(xué)者們提出了微電網(wǎng)的概念[1-2]。微電網(wǎng)將發(fā)電機(jī)、負(fù)荷、儲能裝置及控制裝置等結(jié)合,對可再生能源和分布式發(fā)電技術(shù)的整合提供了靈活、高效的平臺,對電力系統(tǒng)產(chǎn)生了重大意義[3-4]。隨著計算機(jī)信息技術(shù)的發(fā)展,微電網(wǎng)也進(jìn)入信息時代。 微電網(wǎng)中發(fā)配電系統(tǒng)、能量管理系統(tǒng)、監(jiān)視控制與數(shù)據(jù)采集系統(tǒng)等的應(yīng)用使得微電網(wǎng)更加智能化、高效化[5-6]。 但在開放式互聯(lián)網(wǎng)下,智能微電網(wǎng)本身存在數(shù)據(jù)被篡改、非法用戶入侵等諸多安全問題,嚴(yán)重影響了微電網(wǎng)的正常運(yùn)行。 其中系統(tǒng)登錄窗口都是系統(tǒng)的首要入口,也是黑客攻擊的主要目標(biāo),因此建立一個安全可靠的登錄認(rèn)證機(jī)制至關(guān)重要。 早在1996 年,Gritzalis 等人[7]通過概率協(xié)議或零知識模型對傳統(tǒng)的基于口令認(rèn)證機(jī)制提出零知識概率組合協(xié)議,具有較高的安全性和適用性。 近年來,人們從不同方面對身份認(rèn)證技術(shù)展開了一系列研究。 2017 年,Hezil 等人[8]基于兩種生物特征模式的融合提出了使用人耳和掌紋進(jìn)行身份識別認(rèn)證, 但是基于生物特征的身份認(rèn)證技術(shù)應(yīng)用代價較昂貴, 且存在重放攻擊。2018 年,Wu 等人[9]開發(fā)了一個基于擊鍵動力學(xué)的安全系統(tǒng),能夠通過其獨(dú)特的打字行為來驗(yàn)證甚至識別用戶, 但擊鍵身份識別技術(shù)需要專門設(shè)計的擊鍵裝置和大量用戶擊鍵特征數(shù)據(jù), 具有一定局限性。 2019 年,Zawadzki 等人[10]提出了一種基于經(jīng)典共享秘密的量子身份認(rèn)證的有趣協(xié)議,但其應(yīng)用范圍具有一定局限性。
為提高微電網(wǎng)系統(tǒng)安全性,設(shè)計了一種適用于微電網(wǎng)系統(tǒng)的基于SM2 智能卡安全登錄系統(tǒng),以SM2 智能卡為核心,配套讀卡器和身份認(rèn)證服務(wù)系統(tǒng)為輔,實(shí)現(xiàn)了用戶登錄時的身份認(rèn)證過程,保證了微電網(wǎng)系統(tǒng)的穩(wěn)定安全運(yùn)行。
1) 系統(tǒng)參數(shù)。 給定安全參數(shù)λ,選取q 階有限域Fq,橢圓曲線E(Fq),E(Fq)的方程的兩個元素a 和b(a,b∈Fq);E(Fq)上的無窮遠(yuǎn)點(diǎn)或零點(diǎn)O;E(Fq)上階為n 的基點(diǎn)G=(xG,yG)(G! =O 且xG,yG∈Fq)。
2) 用戶密鑰生成。用戶A 隨機(jī)選取整數(shù)dA(1≤dA≤n-1),并計算公鑰pA=dAG=(xA,yA)。其中dA作為用戶私鑰秘密保存,pA作為用戶公鑰對外公開。
設(shè)待簽名的消息為比特串M,為了獲取消息M 的數(shù)字簽名(h,S),作為簽名用戶A 的具體簽名生成操作如圖1 所示。
為了檢驗(yàn)收到的消息M 及其數(shù)字簽名(r,s),作為驗(yàn)證者的用戶B 具體驗(yàn)證簽名操作如圖2 操作。
圖1 SM2 數(shù)字簽名算法Fig.1 The SM2 signature algorithm
圖2 SM2 數(shù)字簽名驗(yàn)證算法Fig.2 The SM2 signature verification algorithm
一種基于SM2 智能卡安全登錄系統(tǒng),包括SM2 智能卡、配套讀卡器和身份認(rèn)證服務(wù)系統(tǒng)三部分組成。其中SM2 智能卡是擁有SM2 簽名功能的可進(jìn)行讀寫的智能卡;配套讀卡器為帶有NFC 功能或者藍(lán)牙功能的移動端和藍(lán)牙讀卡器;身份認(rèn)證服務(wù)系統(tǒng)由服務(wù)器端和數(shù)據(jù)庫構(gòu)成,如圖3 所示。
圖3 系統(tǒng)整體架構(gòu)設(shè)計Fig.3 System overall architecture design
身份認(rèn)證服務(wù)系統(tǒng)主要包括服務(wù)器端和數(shù)據(jù)庫。如圖4 所示,服務(wù)器端分為前端和后端。前端主要是用于界面展示,這里還用于展示根據(jù)隨機(jī)數(shù)生成的二維碼。 后端主要由初始化模塊、信息處理模塊、 身份認(rèn)證模塊和通信模塊組成,其中初始化模塊用于將智能卡的用戶信息和公鑰存入到數(shù)據(jù)庫中, 實(shí)現(xiàn)用戶和智能卡的綁定;信息處理模塊用于生成隨機(jī)消息的二維碼和解析收到的數(shù)據(jù); 身份認(rèn)證模塊主要用于對收到的SM2 簽名進(jìn)行簽名驗(yàn)證;通信模塊用于服務(wù)器端和移動端的數(shù)據(jù)交互。 數(shù)據(jù)庫主要存放用戶的關(guān)鍵信息,如用戶名、用戶公鑰和智能卡ID。
圖4 身份認(rèn)證服務(wù)系統(tǒng)Fig.4 Identity authentication service system
登錄認(rèn)證流程主要分為兩個階段,一個是用于綁定智能卡和用戶的初始化階段;另一個是用戶登錄系統(tǒng)時的身份認(rèn)證階段。
在初始化階段主要為每個用戶綁定其所屬的SM2 智能卡, 將SM2 智能卡生成的相應(yīng)用戶公鑰存到數(shù)據(jù)庫中,實(shí)現(xiàn)一卡一用戶綁定,主要步驟如圖5 所示。
圖5 初始化階段Fig.5 Initialization stage
步驟1:移動端通過其通信模塊連接身份認(rèn)證服務(wù)系統(tǒng)并獲取用戶名UserName,然后通過指令模塊產(chǎn)生使智能卡生成密鑰對和存用戶名UserName 的相關(guān)指令碼CommandCode,通過移動端的通信模塊將用戶名UserName 和指令CommandCode 一同發(fā)給智能卡。
步驟2:智能卡收到的指令,初始化模塊執(zhí)行指令生成密鑰對(公鑰Pubkey 和私鑰Privatekey)并將用戶名UserName 存入智能卡中。
步驟3:移動端的指令模塊產(chǎn)生讀取智能卡公鑰的指令,通過其通信模塊操作智能卡獲取智能卡的公鑰Pubkey,然后將公鑰Pubkey 回發(fā)給身份認(rèn)證服務(wù)系統(tǒng)。
步驟4:身份認(rèn)證服務(wù)系統(tǒng)將收到的公鑰Pubkey 和用戶名UserName 一同存入到數(shù)據(jù)庫中,存入成功后,則該用戶的智能卡初始化完成,重復(fù)步驟1 到步驟4 直至所有的用戶都被初始化或者所有的智能卡被初始化,即達(dá)到一用戶一卡的目的,初始化工作完成。
身份認(rèn)證階段為系統(tǒng)核心階段,主要為用戶在登錄系統(tǒng)時進(jìn)行的身份認(rèn)證過程,若身份認(rèn)證成功,則可成功登錄系統(tǒng),反之,登錄系統(tǒng)失敗。 具體步驟圖6 所示。
圖6 登錄認(rèn)證階段Fig.6 Login authentication stage
步驟1:身份認(rèn)證服務(wù)系統(tǒng)的信息處理模塊定時生成帶有隨機(jī)碼信息RandomCode 的二維碼。
步驟2:移動端通過掃描二維碼獲取隨機(jī)碼信息,移動端的信息處理模塊對獲取的隨機(jī)碼進(jìn)行哈希處理Hash(RandomCode);同時指令模塊產(chǎn)生操作智能卡進(jìn)行SM2 簽名和讀取智能卡內(nèi)用戶名的指令Command-Code;最后通信模塊連接智能卡傳送哈希處理后的消息Hash(RandomCode)和指令CommandCode 發(fā)送到智能卡中。
步驟3:智能卡執(zhí)行指令,智能卡的簽名模塊對收到的消息Hash(RandomCode)進(jìn)行SM2 簽名算法:Sig=SM2Sign(Hash(RandomCode),PrivateKey);同時讀取智能卡內(nèi)的用戶名UserName,然后把簽名結(jié)果Sig和用戶名UserName 返回給移動端。
步驟4:移動端將接收的簽名結(jié)果Sig 和用戶名UserName 轉(zhuǎn)發(fā)回身份認(rèn)證服務(wù)系統(tǒng)。
步驟5:身份認(rèn)證服務(wù)系統(tǒng)根據(jù)收到的用戶名UserName 從數(shù)據(jù)庫中檢索出該用戶對應(yīng)的公鑰Pubkey,身份認(rèn)證服務(wù)系統(tǒng)的身份認(rèn)證模塊用公鑰Pubkey 對收到的簽名結(jié)果Sig 進(jìn)行如下SM2 簽名驗(yàn)證算法:Result=SM2Verify(Sig, Pubkey),若簽名結(jié)果Result 為TRUE,則簽名驗(yàn)證成功,即登錄成功,進(jìn)入系統(tǒng)主頁;反之,則登錄失敗;同時將簽名結(jié)果返回給移動端。
步驟6: 移動端將收到的簽名驗(yàn)證結(jié)果顯示到移動端屏幕上, 用戶可根據(jù)簽名驗(yàn)證結(jié)果進(jìn)行進(jìn)一步操作,簽名驗(yàn)證成功,則結(jié)束操作;簽名驗(yàn)證失敗,則可重復(fù)步驟1 到步驟5。
SM2 數(shù)字簽名算法已在隨機(jī)預(yù)言機(jī)模型[13]下證明SM2 數(shù)字簽名方案可以有效抵抗存在性偽造攻擊,并且在文獻(xiàn)[14]證明SM2 數(shù)字簽名方案可抗密鑰替換攻擊,這里由于篇幅所限,不再詳細(xì)進(jìn)行證明,因此基于SM2 智能卡的安全登錄系統(tǒng)也具有抗偽造攻擊。
在開放式互聯(lián)網(wǎng)下,重放攻擊是攻擊者常用的攻擊手段。 攻擊者通過攔截通信雙方之前有效的通過簽名驗(yàn)證的報文,然后將舊報文發(fā)送到認(rèn)證服務(wù)系統(tǒng),以破壞身份認(rèn)證機(jī)制。 重放攻擊究其緣由是因?yàn)閭魉蛨笪南]有新鮮性,具有重復(fù)利用特性,本文提出的基于SM2 智能卡的身份認(rèn)證是對隨機(jī)數(shù)進(jìn)行簽名,且每隔一分鐘更新隨機(jī)數(shù),從而使得簽名具有新鮮性,抵御重放攻擊。
在身份認(rèn)證階段,首先對身份信息進(jìn)行哈希運(yùn)算,然后利用SM2 數(shù)字簽名算法對傳輸?shù)纳矸菪畔⑦M(jìn)行簽名,若攻擊者對當(dāng)前通信的報文進(jìn)行抗篡改攻擊,將原報文信息(UserName,Sig)篡改為(UserName,Cuangai_Sig) 并傳送到身份認(rèn)證服務(wù)系統(tǒng)進(jìn)行簽名驗(yàn)證, 但是因?yàn)榇鄹暮蟮暮灻鸆uangai_Sig 已不是對原有的RandomCode 運(yùn)行簽名算法得到的真實(shí)簽名,身份認(rèn)證服務(wù)系統(tǒng)在驗(yàn)證簽名SM2Verify(Cuangai_Sig, Pubkey)時就會驗(yàn)證失敗,篡改攻擊失敗。
在實(shí)驗(yàn)環(huán)境(電腦中央處理器:Intel i5-8500 U,內(nèi)存:金士頓DDR4 16GB,操作系統(tǒng):Windows7 64 位操作系統(tǒng))下,藍(lán)牙讀卡器為射頻山東卡爾KT8003 讀卡器;移動端采用Android studio 平臺開發(fā),并調(diào)用java版本的BouncyCastle 庫進(jìn)行相關(guān)密碼函數(shù)的調(diào)用;身份認(rèn)證服務(wù)系統(tǒng)通過微軟提供的Visual Studio 2012 開發(fā)平臺利用C#版本的BouncyCastle 實(shí)現(xiàn)了登錄認(rèn)證過程,并模擬了通信雙方傳輸數(shù)據(jù)的過程,關(guān)鍵實(shí)現(xiàn)代碼如下。
身份認(rèn)證服務(wù)系統(tǒng)首先生成隨機(jī)數(shù),然后根據(jù)隨機(jī)數(shù)生成二維碼,并每5 s 更新下二維碼,防止重放攻擊,實(shí)現(xiàn)的關(guān)鍵代碼如下。
下面為在Android studio 平臺下讀取SM2 智能卡,調(diào)用SM2 智能卡相關(guān)密碼協(xié)處理器對掃到的二維碼隨機(jī)數(shù)RandomCode 進(jìn)行簽名,并將簽名結(jié)果Sig 發(fā)送給身份認(rèn)證服務(wù)系統(tǒng)的關(guān)鍵代碼。
下面為運(yùn)行在Visual Studio 2012 開發(fā)平臺的身份認(rèn)證服務(wù)系統(tǒng)接收到簽名Sig 進(jìn)行簽名驗(yàn)證的關(guān)鍵代碼,首先接收移動端傳來的用戶名和簽名,然后根據(jù)用戶名檢索數(shù)據(jù)庫,找到該用戶所對應(yīng)的公鑰,然后用該用戶公鑰驗(yàn)證簽名,最后將簽名驗(yàn)證結(jié)果返回給移動端,如果驗(yàn)證成功,則該用戶可以正常進(jìn)入系統(tǒng),反之,該用戶被拒絕進(jìn)入系統(tǒng)。
本文設(shè)計了一種適用于微電網(wǎng)系統(tǒng)的基于SM2 智能卡的安全登錄系統(tǒng)以保證微電網(wǎng)系統(tǒng)高安全的身份認(rèn)證。 該系統(tǒng)由智能卡、配套讀卡器和身份認(rèn)證服務(wù)系統(tǒng)組成;并詳細(xì)描述了用戶身份認(rèn)證過程;且該方案抗偽造攻擊、抗篡改攻擊和抗重放攻擊;最后在嵌入式平臺進(jìn)行了實(shí)驗(yàn)?zāi)M和仿真,通過長時間運(yùn)行測試,證實(shí)了系統(tǒng)在高安全性的前提下也保證了高效性,對維持微電網(wǎng)系統(tǒng)的安全穩(wěn)定運(yùn)行具有一定意義。 但是本文設(shè)計的基于SM2 智能卡登錄系統(tǒng)對SM2 智能卡依賴性較強(qiáng),若SM2 智能卡丟失或被盜會對系統(tǒng)造成一定危害,考慮到雙因子甚至多因子身份認(rèn)證[15-16]的特性,后續(xù)將研究“基于生物特征+密碼學(xué)技術(shù)”的雙因子身份認(rèn)證。