房保綱, 鐘伯成, 張家磊, 丁佳蓉
( 上海工程技術大學 電子電氣工程學院, 上海 201620)
隨著無線傳感器技術的發展,無線醫療傳感器網絡技術也取得了長足的進步[1]。無線醫療傳感器網絡集合了移動密集型傳感器和遠程醫療兩者的優點[2]。一方面,用戶可以實時地通過傳感器設備上傳生理數據到云服務器,享受健康醫療機構提供的服務。另一方面,通過分析個人的生理數據,遠程醫療健康系統也能夠精確地提供健康信息和醫療服務。
無線醫療傳感器的網絡模型如圖1所示。無線醫療傳感器網絡主要包含5個部分,分別是:醫療傳感器節點(medical sensor node,MSN),醫療服務器(medical server,MS),簽名聚合者(signature aggregator,SA),聚合簽名驗證者(aggregate signature verifier,ASV),專業醫療人員(medical)。

圖1 無線醫療傳感器網絡模型
數字簽名是無線醫療傳感器網絡中用于保護用戶隱私、進行身份認證所采用的重要技術,然而現有的各類簽名技術,比如傳統的數字簽名、基于ID的數字簽名及聚合簽名等,計算復雜度相對較高,幾乎不能滿足低存儲、低運算能力等資源受限的環境需求。無證書聚合簽名(CLAS)將無證書密碼體制和聚合簽名這兩種技術的優點有效地結合起來,不僅避免了PKC和IBC中的證書管理與密鑰托管兩個棘手的問題,并且有效降低了簽名驗證的計算與存儲開銷等,特別適用于資源受限的網絡環境中,所以現在有許多方案都采用了無證書聚合簽名方案。
本文基于Wu等人[3]的方案進行適當地改進,當該方案中執行聚合簽名驗證時,雙線性對運算的次數會隨著簽名用戶數量的增加而呈線性增長,極大增加了計算開銷,并且該方案在簽名生成過程中會泄露簽名者的秘密值信息,具有不可忽略的安全隱患。在改進的方案中,研究修改了單個簽名生成算法和聚合簽名算法,最終能夠保證簽名用戶的秘密值信息不會被泄露,并且雙線性運算的次數也不會隨著簽名數量的增加而呈線性增長。
設G1為一個階為素數q的加法循環群,P為其生成元;G2為同階的乘法循環群,這里設映射為:e:G1×G2→G2且該映射滿足以下3條性質:

(2)非退化性。存在X,Y∈G1,e(X,Y)≠1。
(3)可計算性。存在X,Y∈G1,e(X,Y)能夠通過一個算法在多項式時間內計算出來。

設G是階為素數q的加法循環群,隨機選取a,b∈Zq*,對于給定的P,aP,bP∈G,求解a,b,P是多項式時間內不能解決的困難問題。在CLAS的安全模型中通常情況下會包含2類攻擊者,分別是A1和A2。在循環群G1中給定一個隨機的計算Diffie-Hellman(CDH)問題實例(P,aP,bP),挑戰者C與A1或A2進行詢問,最終挑戰者C可以利用A1或者A2解決CDH問題,計算出a,b,P。
本節根據Wu等人的方案,改進設計了一個新的CLAS方案,該方案主要包含7個階段,分別是:系統參數生成(Setup)、部分私鑰生成(Partial-Private-Key-Generate)、密鑰生成(Private-Key-Generate)、單個簽名生成(Individual-Sign)、單個簽名驗證(Individual-Verify)、聚合簽名生成(Aggregate-Sign)、聚合簽名驗證(Aggregate-Verify)等階段。算法運行過程可闡釋表述如下。
通過執行如下運算,MS通過k產生系統參數,其中k為一個安全參數:
(1)用同樣的質數q產生2個循環群G1、G2,P是群G1的生成元。雙線性映射e:G1×G2→G2;
(2)隨機選擇一個數s∈Zq*作為MS的主密鑰,計算MSpub=sP作為MS的公鑰;
(3)選取4個哈希函數H1: {0, 1}→G1:H2: {0, 1}→G2,h1: {0,1}→Zq*,h2: {0,1}→Zq*;
(4)公開系統參數params=(G1,G2,P,e,q,MSpub,H1,H2,h1,h2)。
通過執行如下運算,MS產生MSN的部分私鑰:
(1)IDi作為MSN的身份,MS首先計算Qi=H1(IDi),然后計算MSN的私鑰ppki=s·Qi;
(2)秘密發送ppki到MSN。
通過執行如下運算,身份為IDi的MSN產生了自己的公鑰和私鑰:
(1)選擇一個隨機數xi作為秘密值;
(2)設置ski={ppki,xi}作為私鑰;
(3)計算pki=xip作為公鑰。
通過執行如下運算,身份為IDi的簽名者在mi消息上產生了σi的簽名:
(1)輸入系統參數params,狀態信息Δ和公私鑰對(ski,pki);
(2)隨機選擇ri∈Zq*,然后計算Ri=riP;
(3)計算αi=h1(IDi,pki,Ri),βi=h2(mi,IDi,pki,Ri)及U=H2(Δ);
(4)計算Vi=αippki+MSpub+βixiU;
(5)輸出σi=(Ri,Vi)作為消息的簽名。
通過執行如下運算,驗證者驗證消息的簽名:
(1)輸入狀態信息Δ;
(2)計算αi=h1(IDi,pki,Ri),βi=h2(mi,IDi,pki,Ri),Qi=H1(IDi)及U=H2(Δ);
(3)驗證:
e(Vi,P)=e(αiQi+Ri,MSpub)e(βipki,U).
(1)
(4)如果式(1)成立則接受簽名δi; 如果不成立,則拒絕。
通過執行如下運算,一個聚合者能產生聚合簽名δ:
(1)輸入n個元組(IDi,mi,pki,δi),其中,1≤i≤n;

(3)輸出σ=(R,V)作為聚合簽名,其中R={R1,R2,…,Rn}。
通過執行以下運算,聚合簽名驗證者認證聚合簽名的σ=(R,V)合法性:
(1)輸入狀態信息Δ,元組(IDi,mi,pki,Ri)1≤i≤n,和聚合簽名σ=(R,V);
(2)計算U=H2(Δ), 1≤i≤n,計算Qi=H1(IDi),αi=h1(IDi,pki,Ri)及βi=h2(mi,IDi,pki,Ri);
(3)驗證:
(2)
(4)如果式(2)成立,驗證者接受聚合簽名δ,否則拒絕。
通過以下詳細的步驟推導,會很容易驗證本方案的正確性。推導過程見如下。
定理1如果在循環群G1中的CDH困難問題無法解決,那么改進的CLAS能夠抵御敵手A1的偽造攻擊。
Setup:C隨機選取IDts作為非法傳感器節點目標身份,令MSpub=Q1=aP, 產生系統參數params={G1,G2,P,e,q,MSpub,H1,H2,h1,h2}。
H1-query:C維護一個列表LH1,LH1的結構為(IDi,δi,εi,Qi),LH1中元素初始值為空。當A1發起詢問時,C檢查LHi中是否存在元組(IDi,δi,εi,Qi),如果存在,返回Qi給A1,否則C隨機選擇εi∈{0,1}和δi∈Zq*,如果ε=0, 令Qi=δiP,如果εi=1, 則Qi=δiQ2=δibP。將Q返還給A1,(IDi,δi,εi,Qi)存儲到LHi中。
H2-query:C維護列表LH2,LH2由(MSpub, ?,U)構成。LH2中元素初始值為空。當A1執行詢問時,C檢查LH2中是否存在元組(MSpub, ?,U);如果存在,返回U至A1;否則,C隨機選擇?∈Zq*,計算U=?P。返回U至A1,存儲(MSpub, ?,U)至LH2。
h1-query:C維護列表Lh1,Lh1由(IDi,pki,Ri,αi)構成。Lh1中元素初始值為空。當A1執行詢問時,C檢查Lh1中是否存在元組(IDi,pki,Ri,αi);如果存在,返回αi至A1;否則,C隨機選擇αi。返回U至A1,存儲(IDi,pki,Ri,αi)至Lh1。
h2-query:C維護列表Lh2,Lh2由(mi,IDi,pki,Ri,βi)構成。Lh2中元素初始值為空。當A1執行詢問時,C檢查Lh2中是否存在元組(mi,IDi,pki,Ri,βi);如果存在,返回βi至A1; 否則,C隨機選擇βi。返回至A1,存儲(mi,IDi,pki,Ri,βi)至Lh2。
Reveal-Partial-Private-Keyqueries:C維護列表Lppk,Lppk由(IDi,ppki)構成,Lppk中元素初始值為空。當A1執行詢問,C首先檢查是否IDi=IDts;如果成立,輸出 ┴(表示該值未知);否則,C檢查Lppk中是否存在元組(IDi,ppki);如果存在,返回ppki至A1;否則,C重新從Lppk中選擇元組(IDi,δi,εi,Qi) 并計算ppki=δiMSpub=αδiP。返回ppki至A1,存儲(IDi,ppki)至Lppk。
Reveal-Secret-Key-queries:C維護列表Lx,Lx由(IDi,xi)構成,Lx中元素初始值為空。當A1以身份為IDi進行詢問時,C首先檢查是否IDi=IDts;如果成立,輸出;否則,C檢查一個元組是否存在于(IDi,xi)中;如果存在,返回xi至A1;否則,C隨機選擇xi。返回xi至A1, 存儲xi至(IDi,xi)。
Reveal-Public-Keyqueries:C維護列表Lpk,Lpk由(IDipki)構成,Lpk中元素初始值為空。當A1以身份為IDi進行詢問時,C首先需要檢查一個元組(IDi,pki)是否存在于Lpk中;如果存在pki,返回pki至A1;否則,通過Lx獲取xi并計算pki=xiP。返回pki至A1,存儲(IDi,pki)至Lpk。
Replace-Public-Keyqueries:當A1以身份為(IDi,pki*)進行詢問時,C從列表Lpk中選取pki*替代真實公鑰pki。
Sign-queries:當A1以身份為IDi,公鑰為pki,消息為mi進行詢問時,C分別通過LH1,LH2,Lh1及Lh2得到εi,Qi,U,αi和βi。C隨機選擇ri,并且計算Ri=riP;若εi=0,C計算Vi=δiαiMSpub+riMSpub+βi?pki。返回δi=(Ri,Vi)至A1,作為消息mi的簽名。
Forgery:最后,A1利用消息身份公鑰對(mi*,IDi*,pki*)輸出一個偽造的聚合簽名δ*=(R*,V*)。如果所有εi=0成立,A1中止;否則,不失一般性,令IDts=ID1,也就是ε1=1,εi=0(2≤i≤n)。偽造簽名應當滿足以下等式:

(3)

具體推導過程如下:

但是,這與CDH困難問題相矛盾,因此由改進方案產生的單個簽名和聚合簽名都能夠防止A1偽造攻擊。
定理2如果在循環群G1中的CDH困難問題無法解決,那么改進的CLAS能夠抵御敵手A2的偽造攻擊。
證明過程與定理1相同,不再贅述。
針對地列舉了幾個現有的在隨機預言機模型下的無證書聚合簽名方案(CLAS)的安全級別和運算開銷,并與改進的方案進行了對比分析。下面用于軟件仿真的硬件環境為Ubuntu 18.10內存1 024 MB。硬件配置為Inter(R) Core(TM) i5-7500U,主頻為3.4 GHz,內存為8 192 MB,軟件環境為MIRACL。經過研究[6],發現這些方案主要的運算時間開銷是由某些比較耗時的密碼學算法所產生的,所以,本方案在實驗進行的開始階段優先考慮的各種運算見表1。

表1 符號表示
各密碼運算執行時間見表2,多個用戶(n=5)在無證書聚合簽名驗證過程中運算時間開銷的對比見表3。很顯然,本文改進的CLAS方案運算開銷小于其它方案[7-10]。

表2 各密碼運算執行時間
表3 CLAS方案運算時間對比
Tab. 3 Comparison of calculation time of CLAS schemems

方案單個簽名生成單個簽名驗證聚合簽名驗證CWZ[7]22.94534.62280.515LYX[8]22.61428.72779.331DHW[9]22.94434.62880.516MZW[10]22.85629.05775.661本文方案22.55628.67471.473
攻擊者分別為A1和A2兩種類型,其中Bi1表示普通攻擊,Bi2表示強攻擊,SP表示方案的安全性。CLAS方案安全性對比見表4。通過表4可以看出,對比其它幾個方案,本文所改進的方案具有相對較高安全性。

表4 CLAS方案安全性對比
無證書公鑰密碼體制解決了公鑰密碼體制中證書管理和密鑰托管兩個困難問題。聚合簽名技術則將不同用戶的消息簽名聚合成一個簽名,只對聚合后的簽名進行驗證,極大提高了簽名驗證的效率。本文提出了安全高效的適用于無線醫療傳感器網絡的無證書聚合簽名方案,該方案具有無證書密碼體制和聚合簽名技術的雙重優點,并且該方案在隨機預言機模型下證明是安全的。通過實驗數據可知,本文方案具有較高的安全性,較低的運算開銷等優點,更適用于無線醫療傳感器網絡。