邢琦
(西安郵電大學(xué),陜西西安 710061)
移動存儲設(shè)備的安全性比較低,通常采用的是以口令為基礎(chǔ)的用戶身份認(rèn)證,并對數(shù)據(jù)進行簡單的加密,口令和加密密鑰都是由軟件完成的,且口令和加密密鑰與數(shù)據(jù)一同保存在存儲介質(zhì)中,難以保證其安全性。在移動存儲器中嵌入一種安全芯片,并對它進行了安全認(rèn)證,從而增強了它的安全性。
文獻[1]提出了基于區(qū)塊鏈的認(rèn)證方案,利用非線性給出了一個快速批量的聚合簽名算法,區(qū)域信任機制(RTA)是一種基于區(qū)塊鏈的匿名跟蹤和快速撤銷技術(shù)。此外,該算法還可以基于本地密鑰,對短期內(nèi)的匿名身份進行實時更新,使保密芯片具有匿名性和新簽名屬性;文獻[2]提出了單服務(wù)器環(huán)境下認(rèn)證方案,利用狄菲-赫爾曼密鑰交換和模糊驗證技術(shù),設(shè)計高效的身份認(rèn)證協(xié)議。然而,上述兩種方法不能過分依賴于密鑰,使得無法從細(xì)節(jié)上保證芯片安全。
為了確保通信過程中會話密鑰分配的安全性,提出了基于ECC 算法的安全芯片增強雙向匿名認(rèn)證方法。
目前,將專用的安全芯片嵌入到嵌入式系統(tǒng)中,這種方式存在著密鑰管理困難、核心模塊易被跟蹤更換、系統(tǒng)易被復(fù)制等缺陷。為了增強芯片安全,提出了基于ECC 算法的增強雙向匿名簽密方案。設(shè)計的芯片安全增強結(jié)構(gòu)如圖1 所示。

圖1 基于ECC算法的芯片安全增強結(jié)構(gòu)
SPI 接口實現(xiàn)了單片機與上位機的數(shù)據(jù)交換以及數(shù)據(jù)的串行與并行兩種方式的轉(zhuǎn)換[3]。其中,控制引擎主要承擔(dān)著信息傳輸、指令解碼等功能[4]。使用ECC 算法實現(xiàn)了基于隨機“挑戰(zhàn)—應(yīng)答”機制的主從方與安全芯片的雙向驗證,保證了會話密鑰分配的安全性。
使用ECC 算法增強雙向匿名簽密的過程如下所示:
設(shè)定擁有身份IDu用戶u隨機選擇一個秘密值qi,計算用戶密鑰:
式中,o表示一階素數(shù)基點[5]。用戶發(fā)送(IDu,ru)給權(quán)威機構(gòu)A,權(quán)威機構(gòu)在收到信息后,計算哈希值:
式中,h()表示Hash 函數(shù)[6]。確定哈希值后,計算權(quán)威機構(gòu)密鑰:
式中,qA表示權(quán)威機構(gòu)的秘密值[7]。將(HA,rA)發(fā)送給用戶,用戶收到信息后,驗證傳輸信息的可靠性:
式中,r為權(quán)威機構(gòu)公鑰[8]。如果該公式成立,則用戶計算其私鑰:
式中,k表示基點的階[9]。
密文簽名者發(fā)送認(rèn)證消息給密文接收者,密文簽名者選擇隨機數(shù)將基點信息發(fā)送給消息擁有者,并輸出密文[10]。當(dāng)密文接收者接收密文后,驗證以下等式是否成立:
如果成立,則說明密文和公鑰被同時認(rèn)證,密文接收者接收密文;否則驗證失敗,則認(rèn)為芯片不安全,無法進行雙向認(rèn)證。
通過ECC 算法的加密和數(shù)字簽名機制,密文接收者可獲取可靠密文,并提高芯片的安全性。
文中采用了一種雙向的身份驗證機制,以上述得到的安全芯片A 作為數(shù)據(jù)的發(fā)送者,而以芯片B作為數(shù)據(jù)的接收者,設(shè)計了包含證書交換、密鑰協(xié)商以及“挑戰(zhàn)—應(yīng)答”的雙向匿名認(rèn)證機制。
1.2.1 證書交換
證書交換過程的步驟如下:
1)發(fā)送端芯片A 向接收端芯片B 發(fā)送其證書。
2)檢驗接收端芯片B,發(fā)送端芯片A 證明是由認(rèn)證中心出具的,并未被偽造[11];如果有一個撤銷清單,則發(fā)送端芯片A 的識別碼不會出現(xiàn)在撤銷清單中。在驗證通過之后,接收端芯片B 向發(fā)送端芯片A發(fā)送其證書,并獲得發(fā)送端芯片A 的公開密鑰[12]。如果該檢查不合格,則從認(rèn)證流程中退出。
3)發(fā)送端芯片A 在收到接收端芯片B 所發(fā)出之證明后,確認(rèn)接收端芯片B 所發(fā)出之證明確系認(rèn)證中心所發(fā)出,并無任何偽造[13];如果有一個撤銷清單,則接收端芯片B 的識別碼不會出現(xiàn)在撤銷清單中。在驗證完畢后,發(fā)送端芯片A 獲得了接收端芯片B 的公開密鑰,并進行下一步的驗證。如果該檢查不合格,則從認(rèn)證流程中退出。
在證書交換過程中,用戶和權(quán)威機構(gòu)已經(jīng)完成了公鑰和私鑰的交換。
1.2.2 密鑰協(xié)商
使用上述密鑰進行進一步的密鑰協(xié)商,生成會話密鑰用于加密通信數(shù)據(jù)。發(fā)送端芯片A 只能根據(jù)一定概率來推斷接收端芯片B 的身份[14]:
式中,[Gi]n表示經(jīng)過i次記錄猜測n次的選舉記錄[15]。
假設(shè)芯片A 根據(jù)該字符推斷出了芯片B 的身份,該概率可用如下公式表示:
式中,Vi0、Vi1表示字符串。當(dāng)選舉記錄足夠多時,其成功概率可以忽略,由此實現(xiàn)了發(fā)送方芯片的匿名性。
對于芯片A 端的匿名性,在密鑰協(xié)商階段,用戶隨機選擇參數(shù),不同的用戶將以較大的概率選擇不同的參數(shù),并得到不同的密鑰[16]。芯片A 在已知密鑰,而未知芯片A 口令的前提下,無法將密鑰和不同用戶的協(xié)商過程聯(lián)系起來,即用戶的非關(guān)聯(lián)性,服務(wù)器正確猜測用戶身份的概率較小,從而實現(xiàn)了芯片A 的匿名性。
1.2.3 “挑戰(zhàn)—應(yīng)答”
在經(jīng)過一系列的密鑰協(xié)商之后,認(rèn)證協(xié)議就會進入到一個“挑戰(zhàn)—應(yīng)答”過程中。在這一點上,設(shè)備的一方會產(chǎn)生“挑戰(zhàn)”,并期望對方作出適當(dāng)?shù)摹皯?yīng)答”。在設(shè)計上,提出了雙向的“挑戰(zhàn)—應(yīng)答”機制。根據(jù)響應(yīng)協(xié)議,認(rèn)證過程如圖2 所示。

圖2 雙向“挑戰(zhàn)—應(yīng)答”協(xié)議認(rèn)證過程
ECC 加密技術(shù)利用雙向“挑戰(zhàn)—應(yīng)答”協(xié)議的合法性與唯一性,最大限度地保障了芯片的安全性,以及信息的完整傳輸。
為了驗證基于ECC 算法的安全芯片增強雙向匿名認(rèn)證的可靠性,選擇恒流驅(qū)動WD1060L 芯片,將其與Arduino 平臺相連,在實驗平臺上安裝和配置與WD1060L 芯片通信的驅(qū)動程序和庫。使用橢圓曲線secp256r1 生成的一對公鑰和私鑰作為認(rèn)證雙方的密鑰。
挑戰(zhàn)字節(jié)數(shù)為32 字節(jié)(256 位),使用SHA256 作為hash 算法。將芯片應(yīng)用到電力系統(tǒng)中,并確保其正確運行并獲得供電。電力系統(tǒng)應(yīng)用WD1060L 芯片場景如圖3 所示。

圖3 電力系統(tǒng)應(yīng)用WD1060L芯片場景
將該芯片應(yīng)用于多場景中,與主營業(yè)務(wù)相關(guān)電網(wǎng)和用電管理終端聯(lián)合應(yīng)用。在用電管理終端上初始化認(rèn)證請求,并發(fā)送給WD1060L 芯片。WD1060L芯片接收請求并生成證書,然后將其發(fā)送給用電管理終端進行驗證。
2.2.1 重放攻擊
由于新協(xié)議在采用重放攻擊時不能通過,所以在驗證時,將檢測到傳輸時延,從而判斷傳輸時延是否滿足不等式:
式中,t0表示原始傳輸時間;ta表示時間戳;Δta表示傳輸時間遲延。對于不滿足該等式(9)的情況,攻擊者竊取了已有的數(shù)據(jù),攔截了對應(yīng)通信內(nèi)容,然后以重放攻擊的方式偽裝,以獲得資源或者更改密碼。
2.2.2 口令猜測攻擊
口令猜測攻擊指的是一種容易記住的弱密碼,當(dāng)攻擊者采用口令猜測攻擊時,因為需要使用ID,所以如果ID 不是以匿名方式傳輸?shù)模瑒t可以利用弱密碼直接還原ID,從而進行攻擊。
對于重放攻擊、口令猜測攻擊,將信息傳輸完整性作為芯片抵御攻擊的驗證指標(biāo)。其中,通過芯片進行完整傳輸?shù)男畔⑷鐖D4 所示。

圖4 芯片傳輸?shù)耐暾畔?/p>
由圖4 可知,通過芯片能夠完整傳輸用電數(shù)據(jù)、配電數(shù)據(jù)、線損數(shù)據(jù)和調(diào)度數(shù)據(jù),以此為依據(jù)展開詳細(xì)實驗分析。
對于實驗結(jié)果,使用基于區(qū)塊鏈的認(rèn)證方案、單服務(wù)器環(huán)境下認(rèn)證方案和基于ECC 算法認(rèn)證方法,對芯片抵御攻擊能力進行對比分析。
面對重放攻擊,使用三種方法對比分析信息傳輸完整性,對比結(jié)果如圖5 所示。

圖5 重放攻擊下信息傳輸完整性
由圖5 可知,使用基于ECC 算法認(rèn)證方法能完整傳輸信息,沒有出現(xiàn)丟失的情況。這是因為在雙向匿名認(rèn)證過程中,基于ECC 算法認(rèn)證方法通過“挑戰(zhàn)—應(yīng)答”機制來驗證通信雙方的合法性和唯一性,防止重放攻擊。
面對口令猜測攻擊,使用三種方法對比分析信息傳輸完整性,對比結(jié)果如圖6 所示。
由圖6 可知,使用基于區(qū)塊鏈的認(rèn)證方案不能完整傳輸信息;使用基于ECC 算法認(rèn)證方法僅丟失了[2,7]、[4,5]、[5,5]、[6,6]位置的信息,能更好地保護數(shù)據(jù)的完整性。
在一些特殊應(yīng)用場合,有必要研究如何在保密協(xié)議中保證用戶的信息安全,從而保障用戶的隱私。為此,提出了基于ECC 算法的安全芯片增強雙向匿名認(rèn)證方法。根據(jù)實驗結(jié)果和分析,可以得出以下結(jié)論:
1)在面對重放攻擊時,基于ECC 算法認(rèn)證方法能夠完整傳輸信息并提高芯片抵御攻擊的能力。
2)在面對口令猜測攻擊時,基于ECC 算法認(rèn)證方法能夠得到更好的保護效果。
基于ECC 算法認(rèn)證方法在芯片認(rèn)證中表現(xiàn)出相對較好的防御能力,能夠更有效地防止信息丟失或被篡改。