劉 艷,王 丹+,汪祖民,段 茹
(1.大連大學(xué) 大連市環(huán)境感知與智能控制重點(diǎn)實(shí)驗(yàn)室,遼寧 大連 116622;2.大連大學(xué) 信息工程學(xué)院,遼寧 大連 116622)
隨著社會(huì)的進(jìn)步和科技的不斷發(fā)展,可穿戴可植入等監(jiān)測小型設(shè)備在給人們帶來高質(zhì)量醫(yī)療服務(wù)的同時(shí),也存在傳輸過程中身份數(shù)據(jù)信息被泄露及非法篡改的危險(xiǎn)。數(shù)字簽名[1]可以有效地解決數(shù)據(jù)在傳輸過程中的完整性問題,以及確定是合法用戶傳輸。傳統(tǒng)的公鑰密碼學(xué)存在著復(fù)雜證書管理問題。身份加密的簽名機(jī)制[2-6]仍存在密鑰托管問題,且無法抵抗惡意的KGC攻擊。無證書簽名方案被提出[7],但沒有進(jìn)行安全性證明。近年來,無證書簽名方案被廣泛研究,但存在著一定的安全漏洞。其中,撤銷機(jī)制的提出是解決簽名安全問題的主要方法。文獻(xiàn)[8]和文獻(xiàn)[9]都采用半可信的安全媒介(security mediator, SEM)實(shí)現(xiàn)簽名的撤銷,但增加了系統(tǒng)的不安全因素。隨后,基于時(shí)間密鑰的可撤銷無證書簽名方案被提出[10-13],在這些方案中,都存在用戶私密信息泄露的危險(xiǎn)。同時(shí),方案采用大量的雙線性對(duì)運(yùn)算,增加系統(tǒng)的計(jì)算代價(jià),不適用于云環(huán)境中資源受限的小型設(shè)備。
為此,本文方案采用橢圓曲線簽名算法代替雙線性對(duì)算法,在保證安全性的基礎(chǔ)上降低了計(jì)算復(fù)雜度。KGC維護(hù)一個(gè)撤銷時(shí)間表,當(dāng)檢測到用戶密鑰泄漏或過期時(shí),KGC立即給所有未被撤銷的用戶更新最新時(shí)刻的時(shí)間密鑰,已撤銷的用戶無法獲取新時(shí)刻下的時(shí)間密鑰,簽名驗(yàn)證不成功,從而實(shí)現(xiàn)簽名的即時(shí)撤銷,并在隨機(jī)語言模型下證明安全性。
橢圓曲線的曲線方程與計(jì)算橢圓周長的方程相似。一般橢圓曲線方程形式即y2=x3+ax3+bx2+cx+d, 它是由方程全部解 (x,y) 加上一個(gè)無窮遠(yuǎn)點(diǎn)O構(gòu)成的一個(gè)集合。橢圓曲線離散對(duì)數(shù)解的困難性(ECDLP)定義請(qǐng)參見文獻(xiàn)[14]。
無證書簽名方案算法構(gòu)成如下:
(1)系統(tǒng)建立:輸入安全參數(shù)k,返回系統(tǒng)公共參數(shù)params及系統(tǒng)主密鑰s,建立一個(gè)無證書系統(tǒng),同時(shí)s由KGC秘密地保存。
(2)秘密值生成:隨機(jī)選取該用戶的秘密值xID。
(3)部分密鑰生成:此算法是KGC利用已知用戶的身份標(biāo)識(shí)ID,系統(tǒng)公共參數(shù)params,系統(tǒng)主密鑰,生成用戶的部分私鑰dID,并通過公共信道發(fā)給相應(yīng)的用戶,由用戶保存。
(4)用戶私鑰生成:輸入系統(tǒng)公共參數(shù)params,用戶的身份標(biāo)識(shí)ID,部分私鑰dID和秘密值xID,輸出該用戶的完整私鑰SKID。
(5)用戶公鑰生成:輸入用戶的身份標(biāo)識(shí)ID,系統(tǒng)公共參數(shù)params、部分私鑰dID和秘密值xID,生成用戶的公鑰PKID。
(6)簽名:輸入用戶身份標(biāo)識(shí)ID、系統(tǒng)參數(shù)params、待簽名消息m、公鑰PKID以及用戶私鑰SKID,執(zhí)行簽名算法生成簽名σ。
(7)驗(yàn)證:驗(yàn)證者輸入系統(tǒng)安全參數(shù)params、身份為ID的簽名者、用戶公鑰PKID以及消息m,對(duì)簽名σ進(jìn)行有效性驗(yàn)證。若通過驗(yàn)證,則返回“1”,否則,返回“0”。
本文以老年居家無線遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)為例闡述方案的具體構(gòu)造,如圖1所示。
圖1 系統(tǒng)模型
用戶代表病人及患者,用戶將數(shù)據(jù)發(fā)送給醫(yī)療客戶端,需要雙方進(jìn)行身份的認(rèn)證,確定用戶身份的合法性以及發(fā)送信息的完整性。KGC分別向用戶與遠(yuǎn)程客戶端發(fā)送部分私鑰進(jìn)行簽名的認(rèn)證,KGC一般是由半可信的盈利組織擔(dān)任,存在KGC系統(tǒng)因?yàn)槟怖麄卧旌戏ㄓ脩羯矸莸谋锥?。遠(yuǎn)程醫(yī)療端一般是由醫(yī)院等醫(yī)療服務(wù)中心擔(dān)任,用戶及醫(yī)療客戶端簽名認(rèn)證成功后,醫(yī)療客戶端提供相關(guān)醫(yī)療服務(wù)。
本文方案在傳統(tǒng)無證書簽名方案的基礎(chǔ)上,采用橢圓曲線加密算法進(jìn)行完整的簽名。由KGC新生成時(shí)間密鑰,并維護(hù)一個(gè)撤銷時(shí)間表,見表1。
表1 即時(shí)撤銷過程
當(dāng)檢測到用戶身份過期或私鑰泄露時(shí),KGC給所有未被撤銷的用戶更新最新時(shí)刻t2的時(shí)間密鑰st2,已撤銷的用戶還停留在t1時(shí)刻的時(shí)間密鑰st1,無法得到最新的時(shí)間密鑰,簽名驗(yàn)證不成功,從而實(shí)現(xiàn)簽名的即時(shí)撤銷性。方案的具體構(gòu)造為:
(1)建立系統(tǒng):KGC選擇安全參數(shù)k,選取有限域?yàn)镕q(q為大于3的素?cái)?shù))的橢圓曲線E∶y2=x3+ax+b, 基點(diǎn)為G,P是G的一個(gè)生成元,s是系統(tǒng)主密鑰,并由KGC秘密保存s。KGC計(jì)算系統(tǒng)公鑰Ppub=s·P, KGC選擇兩個(gè)免碰撞的哈希函數(shù):H1、H2。其中
KGC公布系統(tǒng)參數(shù)如下
params={q,G,P,Ppub,H1,H2,H3}
(2)生成秘密值:由身份為IDi的用戶隨機(jī)選取秘密值xi作為組成簽名私鑰的一部分。
(4)生成用戶公鑰:用戶計(jì)算PKi=xi·P, 并把PKi作為用戶的公鑰。
Ri=ri·P
(1)
h′i=(IDi,Ri,Ppub,t)
(2)
st=ri+h′i·s
(3)
其中,t是系統(tǒng)初始時(shí)間。將時(shí)間密鑰(Ri,st)通過公共信道發(fā)送給用戶。用戶收到時(shí)間密鑰(Ri,st)后驗(yàn)證等式stP=Ri+hi·Ppub是否成立,若成立,則接受其作為時(shí)間密鑰,否則返回上級(jí)。
Ti=ti·P
(4)
σi=ti+ki·xi+di+st
(5)
其中,ki=H2(IDi,m,Ti,PKi,Ri,Ppub), 所以簽名方輸出消息m的簽名為 (Ri,Ti,σi)。
(7)驗(yàn)證簽名:遠(yuǎn)程醫(yī)療客戶端驗(yàn)證簽名以確定消息發(fā)送客戶端為合法客戶端,需做如下操作:驗(yàn)證等式σi·P=Ti+ki·PKi+di+st是否成立,若等式成立,則接受該簽名,否則輸出⊥并返回上級(jí)。
σi·P=ti·P+kixi·P+di·P+st·P=
Ti+ki·PKi+2ri·P+his·P+h′is·P=
Ti+kiPKi+2Ri+hiPpub+h′iPpub
可得出等式左右兩邊相等,則證明本撤銷簽名方案是正確的。
一般的無證書簽名系統(tǒng),通??蓜澐譃閮深悾旱谝活愂菒阂獠徽\實(shí)的用戶,第二類是惡意但誠實(shí)的KGC,具體描述如下:
類型一敵手:A1可以替換任意用戶公鑰,但其不知道系統(tǒng)的主密鑰與用戶的部分私鑰。
類型二敵手:A2不能替換任意用戶的公鑰,但其掌握了系統(tǒng)主密鑰和用戶的私鑰。
考慮到已撤銷的用戶仍可對(duì)密鑰進(jìn)行攻擊,本文增設(shè)類型三敵手,即已撤銷的用戶:A3無法獲得新的時(shí)間密鑰,但可以替換用戶攻擊。
隨機(jī)預(yù)言模型中,攻擊者1、2類型[10-13]中已有許多詳細(xì)的證明,此處不再闡述,本文通過如下證明驗(yàn)證攻擊類型3的安全性。
證明:假定給算法S一個(gè)ECDLP的實(shí)例,給定{P,aP},利用S解決ECDLP問題。設(shè)Ppub=aP, 其中,a是系統(tǒng)主密鑰,A3是攻擊者,即已撤銷的用戶,知道用戶的秘密值和部分私鑰。S維護(hù)列表L1,L2,Ld,Lt,LPK, 初始狀態(tài)下列表為空。A3可以執(zhí)行以下詢問:
H1詢問:收到A對(duì) {IDi,PKi,di,hi} 的列表L1詢問后,B執(zhí)行以下操作:
(1)若表L1中存在 {IDi,PKi,di,hi}, 則返回hi給A3。
H2詢問:收到A3對(duì) {IDi,PKi,Ri,ki} 的H2詢問后,S進(jìn)行以下操作:
(1)若列表L2中存在 {IDi,PKi,Ri,ki}, 則返回ki給A3。
部分私鑰詢問:收到A3對(duì) {IDi,PKi} 的列表Ld詢問之后,S執(zhí)行以下操作:
(1)當(dāng)列表Ld中存在 {IDi,PKi,Ri,di}, 則返回 {di,Ri} 給A3;
時(shí)間密鑰詢問:收到A3對(duì) {IDi,PKi,t} 的列表Lt詢問后,S執(zhí)行以下操作:
用戶公鑰詢問:收到A3對(duì)IDi的公鑰詢問后,S執(zhí)行以下操作:
簽名詢問:收到A3對(duì) {IDi,m} 的列表LS詢問,S執(zhí)行以下操作:
(2)若 (IDi,t)=(ID*,t*) 或公鑰已經(jīng)被替換,S失敗并終止游戲。
σiP=Ti+kiPKi+2Ri+hiPpub+h′iPpub
(6)
σi1P=Ti1+ki1PKi+2Ri+hiPpub+h′iPpub
(7)
(8)
可知上述等式中有3個(gè)未知數(shù)σ,Ti,ki, 聯(lián)立式(6)~式(8),可求解出來這3個(gè)未知數(shù),從而解決橢圓曲線離散對(duì)數(shù)問題。
為方便接下來的評(píng)估,定義S表示一個(gè)標(biāo)量乘運(yùn)算,P表示一個(gè)雙線性對(duì)運(yùn)算,H表示一個(gè)散列運(yùn)算。M代表一個(gè)點(diǎn)乘運(yùn)算。本方案與滿足簽名的可撤銷性,且具有高安全性的文獻(xiàn)[10]與文獻(xiàn)[12]進(jìn)行的效率對(duì)比分析見表2。
表2 效率對(duì)比
雙線性對(duì)運(yùn)算P分別是標(biāo)量乘S、點(diǎn)乘運(yùn)算M與散列函數(shù)運(yùn)算H的21倍[15]。因此,由表2可知,本文方案等同于進(jìn)行了7次標(biāo)量乘運(yùn)算,而文獻(xiàn)[10]相當(dāng)于進(jìn)行70次標(biāo)量乘運(yùn)算,文獻(xiàn)[12]相當(dāng)于進(jìn)行了111次標(biāo)量乘運(yùn)算,本方案簽名效率明顯提高。
設(shè)模乘運(yùn)算的數(shù)據(jù)規(guī)模是n,一次雙線性對(duì)運(yùn)算的運(yùn)算復(fù)雜度是O(21n2),一次標(biāo)量乘及點(diǎn)乘的運(yùn)算復(fù)雜度是O(n2log2n),本文方案計(jì)算復(fù)雜度為7n2log2n,而文獻(xiàn)[10]、文獻(xiàn)[12]則包含了較多運(yùn)算,計(jì)算復(fù)雜度分別為(7log2n+63)n2、(6log2n+105)n2。如圖2為在相同數(shù)據(jù)規(guī)模下3種方案運(yùn)算復(fù)雜度對(duì)比,當(dāng)n為10×105時(shí),文獻(xiàn)[10]和文獻(xiàn)[12]的方案簽名復(fù)雜度分別為2×1014與2.2×1014,本方案復(fù)雜度為1×1014,簽名復(fù)雜度相比文獻(xiàn)[10]、文獻(xiàn)[12]分別提高了50%與45.5%。
圖2 簽名復(fù)雜度對(duì)比
實(shí)驗(yàn)平臺(tái)采用Windows10、i7處理器模擬醫(yī)療云客戶端與云端硬件環(huán)境對(duì)數(shù)據(jù)進(jìn)行簽名與驗(yàn)證操作,客戶端使用JDK1.8對(duì)醫(yī)療數(shù)據(jù)進(jìn)行簽名與驗(yàn)證。對(duì)于橢圓曲線簽名算法,為了達(dá)到其安全級(jí)別,選擇橢圓曲線標(biāo)準(zhǔn)推薦的有限域?yàn)镻,素?cái)?shù)域?yàn)?56 bit的橢圓曲線方程,即:y2=x3+ax+b, 其中P=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFa=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFCb=28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93為了真實(shí)模擬中小型手腕佩戴式數(shù)據(jù)采集設(shè)備與醫(yī)療云之間信息傳輸?shù)暮灻^程,本文對(duì)UCI數(shù)據(jù)庫(University of California Irvine,UCI)真實(shí)數(shù)據(jù)集中小型設(shè)備采集的一段數(shù)據(jù)進(jìn)行簽名。數(shù)據(jù)M為 {"ID":"0005","age":"45",:"gender":"girl","heartBeat":"80","bloodPressure":"140/100","step":"5000","time":"2006-03-24"}。 控制主機(jī)需要對(duì)采集的數(shù)據(jù)進(jìn)行簽名操作,云端對(duì)簽名進(jìn)行驗(yàn)簽操作,簽名生成階段與驗(yàn)證階段的仿真如圖3和圖4所示。
圖3 簽名生成階段結(jié)果
圖4 驗(yàn)證生成階段結(jié)果
用戶對(duì)消息M進(jìn)行簽名,簽名及驗(yàn)證過程所用時(shí)間分別為0.105 s和0.008 s,以方案運(yùn)行50次的平均簽名時(shí)間為基準(zhǔn)進(jìn)行對(duì)比,本文方案平均總簽名耗時(shí)0.11 s,文獻(xiàn)[10]和文獻(xiàn)[12]平均總耗時(shí)分別為0.156 s和0.166 s,本文簽名方案用時(shí)更短,適用于當(dāng)前云環(huán)境下的簽名方案。
本文提出了一種基于橢圓曲線加密算法的無證書簽名方案,即時(shí)更新密鑰技術(shù)的引入有效解決了用戶因撤銷不即時(shí)導(dǎo)致的隱私泄露。KGC維護(hù)一個(gè)時(shí)間撤銷表,密鑰泄露或身份過期的用戶獲取不到最新的時(shí)間密鑰,避免了惡意第三方偽造成合法用戶,并已在隨機(jī)預(yù)言模型下證明其具有抗簽名密鑰泄露的安全性。本方案簽名用時(shí)時(shí)間為113 ms,比現(xiàn)有方案縮短了50 ms左右,更適合于當(dāng)前云環(huán)境下資源受限的小型設(shè)備。