易傳佳 左黎明 陳藝琳
(華東交通大學(xué)理學(xué)院 江西 南昌 330013) (華東交通大學(xué)系統(tǒng)工程與密碼學(xué)研究所 江西 南昌 330013)
隨著現(xiàn)代物流業(yè)迅猛發(fā)展,鐵路物流憑借運(yùn)量大、輻射廣、安全可靠等特點(diǎn)成為了現(xiàn)代物流業(yè)中的主要方式之一[1]。近年來(lái),鐵路交通事故頻發(fā),僅2020年,我國(guó)已經(jīng)發(fā)生了三起鐵路交通事故[2],造成了重大的人員和財(cái)產(chǎn)損失?!?·13”溫嶺槽罐車爆炸事故造成20人死亡,172人受傷[3]。鐵路物流要防范上述事故的發(fā)生,必須建立有效的智能監(jiān)控平臺(tái),實(shí)時(shí)保證鐵路運(yùn)輸?shù)陌踩浴R劳行屡d的大數(shù)據(jù)、云計(jì)算、人工智能等互聯(lián)網(wǎng)技術(shù),鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)已經(jīng)成為當(dāng)前的研究熱點(diǎn)[4-6]。在復(fù)雜的互聯(lián)網(wǎng)環(huán)境下,物流實(shí)時(shí)監(jiān)控系統(tǒng)的數(shù)據(jù)交互過(guò)程存在信息泄露和信息篡改的網(wǎng)絡(luò)安全隱患,這會(huì)嚴(yán)重威脅到整個(gè)監(jiān)控系統(tǒng)的穩(wěn)定運(yùn)行。物流監(jiān)控系統(tǒng)存在風(fēng)險(xiǎn)的根本主要在于數(shù)據(jù)來(lái)源缺乏安全性認(rèn)證,數(shù)據(jù)傳輸缺乏完整性保護(hù)。針對(duì)鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)存在的信息安全問(wèn)題,需要一種高效安全的簽名方案來(lái)解決。在網(wǎng)絡(luò)傳輸帶寬受限環(huán)境中,具有短的消息簽名長(zhǎng)度的簽名方案很適用。目前縮短簽名長(zhǎng)度有兩種方式:(1) 設(shè)計(jì)短簽名方案,短簽名的概念由Boneh等[7]首次提出,在同等安全條件下,其簽名長(zhǎng)度與DSA簽名相比縮短一半;(2) 直接壓縮傳輸?shù)南?該方法源于Nyberg等[8]首次提出的具有消息恢復(fù)功能的簽名方案,該方案不需要將消息同簽名一起傳送給驗(yàn)證者,而是將原始消息嵌入到簽名,驗(yàn)證者可以自行從簽名中恢復(fù)原始消息。本文主要研究第二種具有消息恢復(fù)功能的簽名方案并應(yīng)用到鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)中。
Shamir[9]在1984年提出了基于身份的密碼體制,用戶私鑰通過(guò)一個(gè)可信的私鑰生成器(Private Key Generator,PKG)利用系統(tǒng)主密鑰和用戶身份信息生成。Ma[10]構(gòu)造了一種高效的基于身份的群簽名方案。Li[11]提出了一種具有消息恢復(fù)的基于身份的強(qiáng)指定驗(yàn)證者簽名方案。Rao等[12]針對(duì)表達(dá)型線性秘密共享方案的可實(shí)現(xiàn)訪問(wèn)結(jié)構(gòu),設(shè)計(jì)了兩個(gè)基于密鑰策略及屬性的具有消息恢復(fù)的密鑰隔離簽名方案。Chande等[13]應(yīng)用自認(rèn)證密鑰和消息恢復(fù)的概念提出了一個(gè)有效的多代理簽名方案,該方案可以同時(shí)執(zhí)行公鑰驗(yàn)證、多代理簽名驗(yàn)證和消息恢復(fù)。Verma等[14]給出了一種可證明安全的、高效的基于身份的消息恢復(fù)盲簽名方案。James等[15]利用盲簽名和消息恢復(fù)特性,提出了一種基于身份的具有消息恢復(fù)的無(wú)配對(duì)盲簽名方案。闞元平[16]在格密碼基礎(chǔ)上提出了一種具有消息恢復(fù)功能的身份簽名方案,該方案能夠抵抗偽造攻擊。針對(duì)鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)存在的信息安全問(wèn)題,本文提出一種高效的基于身份的帶消息恢復(fù)功能的簽名方案,并以該簽名方案為核心設(shè)計(jì)一種身份認(rèn)證方案,整個(gè)方案交互過(guò)程計(jì)算量小、數(shù)據(jù)傳輸少,可以有效保障物流監(jiān)控系統(tǒng)數(shù)據(jù)來(lái)源的可靠性和安全性。
物流實(shí)時(shí)監(jiān)控系統(tǒng)整體架構(gòu)如圖1所示,主要由電子標(biāo)簽、數(shù)據(jù)采集裝置和云服務(wù)平臺(tái)三部分組成。
圖1 整體架構(gòu)
電子標(biāo)簽內(nèi)嵌有密碼芯片,數(shù)據(jù)采集裝置以樹(shù)莓派為控制中心,通過(guò)傳感器實(shí)時(shí)采集當(dāng)前的數(shù)據(jù),并通過(guò)網(wǎng)絡(luò)通信模塊實(shí)現(xiàn)與云服務(wù)平臺(tái)的通信。數(shù)據(jù)采集裝置中傳感器包括定位模塊、溫度傳感器、濕度傳感器、振動(dòng)傳感器、壓力傳感器。
在該物流實(shí)時(shí)監(jiān)控系統(tǒng)中,貨物封箱完畢后,電子標(biāo)簽粘貼于貨物的啟封處,當(dāng)電子標(biāo)簽激活后,如果沒(méi)有收到云服務(wù)平臺(tái)的授權(quán),電子標(biāo)簽的損壞將會(huì)導(dǎo)致數(shù)據(jù)采集裝置向云服務(wù)平臺(tái)發(fā)送警告信息。在物流過(guò)程中,數(shù)據(jù)采集裝置通過(guò)傳感器實(shí)時(shí)采集貨物當(dāng)前的狀態(tài)數(shù)據(jù)并傳輸?shù)诫娮訕?biāo)簽中,然后電子標(biāo)簽對(duì)狀態(tài)數(shù)據(jù)進(jìn)行數(shù)字簽名,再由數(shù)據(jù)采集裝置將簽名信息發(fā)送給云服務(wù)平臺(tái),云服務(wù)平臺(tái)接收簽名信息并驗(yàn)證簽名,簽證成功后恢復(fù)數(shù)據(jù)信息,然后將數(shù)據(jù)保存在云服務(wù)器中。
基于身份的具有消息恢復(fù)功能的簽名方案[17]由系統(tǒng)初始化、私鑰解析、簽名和驗(yàn)證簽名四個(gè)算法組成,具體描述如下:
1) 系統(tǒng)初始化:給定安全參數(shù),輸出系統(tǒng)參數(shù)和主密鑰,PKG秘密保存主密鑰,公開(kāi)系統(tǒng)參數(shù)。
2) 私鑰解析:輸入用戶身份ID,計(jì)算用戶私鑰,并通過(guò)一個(gè)安全的通道發(fā)送給用戶。
3) 簽名:輸入系統(tǒng)參數(shù)、身份ID和用戶私鑰,輸出簽名,并發(fā)給驗(yàn)證者。
4) 驗(yàn)證簽名:輸入系統(tǒng)參數(shù)、簽名,輸出驗(yàn)證結(jié)果:“TRUE”或者“FALSE”,輸出恢復(fù)的完整消息。
在物流實(shí)時(shí)監(jiān)控系統(tǒng)中,云服務(wù)平臺(tái)中有私鑰生成器(PKG),每個(gè)電子標(biāo)簽有唯一的ID,PKG通過(guò)電子標(biāo)簽ID生成簽名私鑰,在電子標(biāo)簽初始化時(shí),向電子標(biāo)簽內(nèi)注入系統(tǒng)參數(shù)以及PKG生成的私鑰。當(dāng)云服務(wù)器對(duì)簽名信息進(jìn)行驗(yàn)證時(shí),驗(yàn)證成功則輸出恢復(fù)的完整消息,驗(yàn)證失敗則發(fā)出警告信息。
基于橢圓曲線上離散對(duì)數(shù)問(wèn)題的難解性,提出一種基于身份的具有消息恢復(fù)功能的簽名方案。
H3:{0,1}*×G×G→{0,1}l1+l2,
F1:{0,1}l1→{0,1}l2,
F2:{0,1}l2→{0,1}l1。
最后PKG掌握并保密系統(tǒng)主密鑰s,公開(kāi)系統(tǒng)參數(shù)params={q,P,e,Ppub,H1,H2,H3,F1,F2,l1,l2}。
3) 簽名:對(duì)任意給定的消息m∈{0,1}l1進(jìn)行簽名,過(guò)程如下:
T=tP
(1)
h2=H2(ID,R,T)
(2)
u=t+xIDh2
(3)
(2) 計(jì)算:
h3=H3(ID,R,uP)∈{0,1}l1+l2
(4)
h4=F1(m)‖(F2(F1(m))⊕m)∈{0,1}l1+l2
(5)
h=h3⊕h4
(6)
則σ=(h,T)為電子標(biāo)簽對(duì)消息m的簽名。
4) 簽名驗(yàn)證:對(duì)給定消息m的簽名σ=(h,T),云服務(wù)端可以驗(yàn)證簽名合法性并恢復(fù)出原始消息,驗(yàn)證過(guò)程如下:
(1) 依次計(jì)算:
h1=H1(ID)
(7)
h2=H2(ID,R,T)
(8)
h3=H3(ID,R,T+h2R+h1h2Ppub)
(9)
(2) 計(jì)算h4=h3⊕h,從h4的二進(jìn)制串表示中分離出長(zhǎng)度為l2的串f1和長(zhǎng)度為l1的串f2,恢復(fù)消息m′=F2(f1)⊕f2。
(3) 驗(yàn)證等式f1=F1(m′)是否成立,若成立則接受簽名σ=(h,T)為合法簽名,并輸出1,否則輸出0。正確情況下f1=F1(m)和f2=(F2(F1(m))⊕m),因此我們不難看出消息恢復(fù)過(guò)程的正確性。
整個(gè)簽名驗(yàn)證和消息恢復(fù)過(guò)程正確性證明如下:
h3=H3(ID,R,uP)=
H3(ID,R,(t+(r+sh1)h2)P)=
H3(ID,R,(t+xIDh2)P)=
H3(ID,R,T+h2R+h1h2Ppub)
(10)
h4=h3⊕h
(11)
由于:
h4=F1(m)‖(F2(F1(m))⊕m)
(12)
f1=F1(m)
(13)
f2=(F2(F1(m))⊕m)
(14)
可得:
m′=F2(f1)⊕f2=
(F2(F1(m)))⊕(F2(F1(m))⊕m=m
(15)
圖2為具有消息恢復(fù)的身份認(rèn)證方案數(shù)據(jù)交互原理圖,其中:Sign表示簽名;Verify表示驗(yàn)證簽名。方案具體的交互流程如下:
(1) 數(shù)據(jù)采集端采集數(shù)據(jù)。數(shù)據(jù)采集端通過(guò)傳感器采集實(shí)時(shí)數(shù)據(jù)data,然后將實(shí)時(shí)數(shù)據(jù)data傳輸?shù)诫娮訕?biāo)簽。
(2) 電子標(biāo)簽生成簽名。電子標(biāo)簽接收數(shù)據(jù)采集端傳輸?shù)臄?shù)據(jù)data后,然后調(diào)用簽名算法對(duì)data進(jìn)行簽名處理,最后電子標(biāo)簽將簽名結(jié)果和電子標(biāo)簽ID以ID#Sig的封包格式傳輸?shù)綌?shù)據(jù)采集端。
(3) 數(shù)據(jù)采集端將簽名結(jié)果傳輸?shù)椒?wù)端。數(shù)據(jù)采集端將ID與簽名結(jié)果以ID#Sig的封包格式通過(guò)網(wǎng)絡(luò)通信模塊傳輸?shù)椒?wù)端。
(4) 服務(wù)端身份驗(yàn)證。服務(wù)端接收數(shù)據(jù)采集端傳輸?shù)南⒎獍?對(duì)消息封包解析,得到ID和Sig,通過(guò)ID檢索對(duì)應(yīng)的主公鑰Ppub對(duì)簽名進(jìn)行驗(yàn)證,如果驗(yàn)證成功,恢復(fù)出消息得到data并保存到云服務(wù)器中,如果驗(yàn)證失敗則提示異常警告。
圖2 數(shù)據(jù)交互
在Windows 7 64位操作系統(tǒng)Microsoft Visual Studio 2012微軟平臺(tái)下,采用C#輕量級(jí)密碼術(shù)包(bouncy castle)實(shí)現(xiàn)了本文方案,實(shí)驗(yàn)結(jié)果顯示本方案簽名所消耗時(shí)間為0.057 s,驗(yàn)證所消耗時(shí)間為0.054 s,表明該簽名方案效率較高。實(shí)現(xiàn)結(jié)果如圖3所示,核心代碼如下:
//簽名算法
BigInteger t=new BigInteger("8");
//計(jì)算T=tP
ECPoint T=myecc.ecc_point_g.Multiply(t);
string RR=R.X.ToBigInteger().ToString()+
R.Y.ToBigInteger().ToString();
string TT=T.X.ToBigInteger().ToString()+
T.Y.ToBigInteger().ToString();
string IDRT=ID+RR+TT;
BigInteger uu=new BigInteger(
myhash.TanGetDigestByteArray(IDRT));
//計(jì)算u=H2(ID,R,T)
BigInteger u=uu.Mod(myecc.ecc_n);
//計(jì)算U=t+xID*u
BigInteger U=
t.Add(xID.Multiply(u)).Mod(myecc.ecc_n);
ECPoint UP=myecc.ecc_point_g.Multiply(U);
string strUP=UP.X.ToBigInteger().ToString()+
UP.Y.ToBigInteger().ToString();
string IDRUP=ID+RR+strUP;
//計(jì)算h1=H3(ID,R,UP)
byte[]h_1=
myhash.TanGetDigestByteArray(IDRUP);
byte[]h1=new byte[64];
Array.Copy(h_1,0,h1,0,32);
Array.Copy(h_1,0,h1,32,32);
//計(jì)算h2
byte[]F1=myhash.TanGetDigestByteArray(m);
byte[]F2=myhash.TanGetDigestByteArray(F1);
byte[]F2Xorm=HexXorByte(F2,m);
byte[]h2=new byte[64];
Array.Copy(F1,0,h2,0,32);
Array.Copy(F2Xorm,0,h2,32,32);
//計(jì)算h等于h1與h2的“異或”
byte[]h=HexXorByte(h1,h2);
//(4)簽名驗(yàn)證
//計(jì)算R+l*Pub
ECPoint TRu=T.Add(xID_rignt.Multiply(u));
string TRu_xy=TRu.X.ToBigInteger().ToString()+
TRu.Y.ToBigInteger().ToString();
string IDRTRu=ID+RR+TRu_xy;
//計(jì)算h1=H3(ID,R,T+(R+l*Pub)u)
byte[]h1_1=
myhash.TanGetDigestByteArray(IDRTRu);
byte[]h11=new byte[64];
Array.Copy(h1_1,0,h11,0,32);
Array.Copy(h1_1,0,h11,32,32);
//計(jì)算h2=h與h1的“異或”
byte[]h21=HexXorByte(h,h11);
byte[]h21l2=new byte[32];
byte[]h21l1=new byte[32];
//截取h2的前l(fā)1長(zhǎng)度的字節(jié)
Array.Copy(h21,0,h21l2,0,32);
//截取h2的后l2長(zhǎng)度的字節(jié)
Array.Copy(h21,32,h21l1,0,32);
byte[]F21=myhash.TanGetDigestByteArray(h21l2);
//恢復(fù)消息m
byte[]m1=HexXorByte(h21l1,F21);
//消息恢復(fù)比較
byte[]left=myhash.TanGetDigestByteArray(m1);
byte[]right=h21l2;
if (ByteEquals(left,right)){
Console.WriteLine("消息恢復(fù)成功,簽名驗(yàn)證通過(guò)!");
}
else{
Console.WriteLine("消息恢復(fù)失敗,簽名驗(yàn)證失敗!");
}
Console.WriteLine("原消息:{0}",msg);
Console.WriteLine("恢復(fù)的消息:{0}",
Encoding.UTF8.GetString(m1));
圖3 方案實(shí)現(xiàn)結(jié)果
表1為本文方案與其他基于身份的簽名方案的性能比較,其中:M表示標(biāo)量乘運(yùn)算;P表示雙線性對(duì)運(yùn)算;E表示指數(shù)運(yùn)算;|G1|是G1中的元素長(zhǎng)度;|q|是Zq中元素的長(zhǎng)度;n是一個(gè)常數(shù);“√”表示具有可恢復(fù)消息功能;“×”表示不具有可恢復(fù)消息功能。
表1 本文方案與現(xiàn)有方案性能比較
由表1可得,與其他方案相比,本文方案簽名長(zhǎng)度是最短的,與文獻(xiàn)[14]方案接近。在計(jì)算量方面,文獻(xiàn)[14]使用了3次雙線性運(yùn)算,文獻(xiàn)[18]使用了2次雙線性運(yùn)算,文獻(xiàn)[19]使用了3次雙線性運(yùn)算,文獻(xiàn)[20]使用了1次雙線性運(yùn)算,本文方案沒(méi)有使用雙線性運(yùn)算,由于雙線性對(duì)的計(jì)算消耗是最大的,因此本文方案相比其他簽名方案計(jì)算量較小,所需的傳輸帶寬更低、性能更優(yōu)、運(yùn)算效率更高。
針對(duì)鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)存在的信息安全問(wèn)題,本文結(jié)合基于身份密碼體制和消息恢復(fù)功能,提出基于身份具有消息恢復(fù)功能的簽名方案。并以此方案為基礎(chǔ),設(shè)計(jì)一種鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)中具有消息恢復(fù)的身份認(rèn)證方案。使用C#語(yǔ)言版輕量級(jí)密碼包對(duì)方案進(jìn)行實(shí)驗(yàn)仿真,與幾種基于身份的簽名方案進(jìn)行了效率比較。該方案可以減少通信量、降低通信代價(jià),能很好地用于鐵路物流實(shí)時(shí)監(jiān)控系統(tǒng)中。