本發(fā)明涉及體域網(wǎng)節(jié)點(diǎn)認(rèn)證技術(shù)領(lǐng)域,具體涉及一種基于橢圓曲線的簽名認(rèn)證方法及系統(tǒng)。
背景技術(shù):
無線體域網(wǎng)是由一些放置在人體表面或者植入人體內(nèi)部的傳感器以及一些可移動終端所組成的以人體為中心的網(wǎng)絡(luò)。隨著對無線體域網(wǎng)的深入研究,無線體域網(wǎng)的安全問題越來越受到人們的重視,身份認(rèn)證在信息安全中具有特殊的作用,大多數(shù)情況下是與密鑰協(xié)商等方法結(jié)合起來作為一個大的整體信息保護(hù)方案被提出。身份認(rèn)證是身份識別(identification)和身份認(rèn)證(authentication)的統(tǒng)稱,是用來驗(yàn)明用戶是否具備所請求資源的使用和存儲權(quán),即驗(yàn)證查核用戶身份的過程。身份認(rèn)證中最為關(guān)鍵的點(diǎn)是可以準(zhǔn)確無誤地將對方辨認(rèn)出來,在體域網(wǎng)系統(tǒng)當(dāng)中,需要對節(jié)點(diǎn)之間的身份進(jìn)行相互的認(rèn)證。節(jié)點(diǎn)間的身份認(rèn)證是體域網(wǎng)生理信息安全傳輸?shù)氖滓U?,一旦?jié)點(diǎn)間的身份認(rèn)證體系被攻破,那么整個傳輸系統(tǒng)的所有安全措施便將形同虛設(shè)。
橢圓曲線密碼機(jī)制作為很重要的一種密碼機(jī)制,近來受到廣大研究者的熱捧,由其衍生出的橢圓曲線簽名算法具有廣闊的應(yīng)用前景,但是傳統(tǒng)的基于橢圓曲線的簽名認(rèn)證算法存在如下缺陷:
(一)在簽名方案中,發(fā)送節(jié)點(diǎn)不能否認(rèn)自己曾經(jīng)發(fā)送過的消息,但是對接收節(jié)點(diǎn)卻沒有任何約束,這樣就可能存在兩種情況:
(1)接收節(jié)點(diǎn)已經(jīng)閱讀了消息,事后卻否認(rèn)自己曾接收過該消息。例如接收節(jié)點(diǎn)接收并閱讀到了一條消息但是卻將其丟失并否認(rèn)自己曾接收過該消息;
(2)接收節(jié)點(diǎn)故意拖延閱讀時間,以作出對自己更有利的決定。例如發(fā)送節(jié)點(diǎn)在上午10點(diǎn)之前將信息發(fā)送給接收節(jié)點(diǎn),而接收節(jié)點(diǎn)此時因?yàn)槟承┰驔]有實(shí)時處理,10點(diǎn)以后才開始處理信息,結(jié)果事后反而指責(zé)發(fā)送節(jié)點(diǎn)并未實(shí)時發(fā)送簽名信息從而完成認(rèn)證。
(二)在傳統(tǒng)的簽名值的計算中,不僅有數(shù)乘運(yùn)算和加法運(yùn)算,同時還有求逆運(yùn)算,對于大整數(shù)求逆是比較耗時的一種運(yùn)算,求逆運(yùn)算大大提高了整個簽名算法的耗時。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供有效減少簽名和驗(yàn)證計算量,提升簽名驗(yàn)證速度的基于橢圓曲線的簽名認(rèn)證方法。
本發(fā)明是這樣實(shí)現(xiàn)的,一種基于橢圓曲線的簽名認(rèn)證方法,所述方法包括下述步驟:
對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化,定義節(jié)點(diǎn)a為簽名節(jié)點(diǎn),節(jié)點(diǎn)b為對所述節(jié)點(diǎn)a進(jìn)行身份認(rèn)證的認(rèn)證節(jié)點(diǎn);
在節(jié)點(diǎn)a,隨機(jī)選擇
在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ';
在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算消息m的在線簽名值r';
根據(jù)計算得到的離線狀態(tài)下的簽名值σ'和消息m的在線簽名值r',生成消息m的完整簽名σm,并將生成的消息m的完整簽名σm發(fā)送給節(jié)點(diǎn)b;
在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證。
作為一種改進(jìn)的方案,所述方法還包括下述步驟:
認(rèn)證通過后,在節(jié)點(diǎn)b,計算r=m+r,并將r反饋給所述節(jié)點(diǎn)a。
作為一種改進(jìn)的方案,所述在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ'的步驟具體包括下述步驟:
計算消息u的數(shù)值,其中,u=qa×m+p×r,并存儲狀態(tài)信息(r,m);
計算離線狀態(tài)下的簽名值σ',σ'=h(u),其中,h為hash函數(shù)。
作為一種改進(jìn)的方案,所述在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算并發(fā)送消息m的在線簽名值r'的步驟具體包括下述步驟:
在節(jié)點(diǎn)a,恢復(fù)出狀態(tài)信息m和r;
利用消息摘要算法,計算消息m的摘要值h(m);
計算消息m的簽名值r',其中,r'={m-h(m)}da+r。
作為一種改進(jìn)的方案,所述在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證的步驟具體包括下述步驟:
根據(jù)接收到的消息m,計算消息m的摘要值h(m);
計算消息u'的數(shù)值,u'=qa×h(m)+p×r';
判斷方程h(u')=σ'是否成立,如果σ'是關(guān)于u'的一個有效簽名,則驗(yàn)證方程成立,那么節(jié)點(diǎn)b完成對節(jié)點(diǎn)a的身份認(rèn)證;否則節(jié)點(diǎn)a未通過節(jié)點(diǎn)b的身份認(rèn)證。
本發(fā)明的另一目的在于提供一種基于橢圓曲線的簽名認(rèn)證系統(tǒng),所述系統(tǒng)包括:
初始化模塊,用于對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化,定義節(jié)點(diǎn)a為簽名節(jié)點(diǎn),節(jié)點(diǎn)b為對所述節(jié)點(diǎn)a進(jìn)行身份認(rèn)證的認(rèn)證節(jié)點(diǎn);
密鑰生成模塊,用于在節(jié)點(diǎn)a,隨機(jī)選擇
離線簽名模塊,用于在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ';
在線簽名模塊,用于在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算消息m的在線簽名值r';
完整簽名生成模塊,用于根據(jù)計算得到的離線狀態(tài)下的簽名值σ'和消息m的在線簽名值r',生成消息m的完整簽名σm;
發(fā)送模塊,用于將生成的消息m的完整簽名σm發(fā)送給節(jié)點(diǎn)b;
認(rèn)證模塊,用于在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證。
作為一種改進(jìn)的方案,所述系統(tǒng)還包括:
反饋模塊,用于認(rèn)證通過后,在節(jié)點(diǎn)b,計算r=m+r,并將r反饋給所述節(jié)點(diǎn)a。
作為一種改進(jìn)的方案,所述離線簽名模塊具體包括:
狀態(tài)信息存儲模塊,用于存儲狀態(tài)信息(r,m);
第一計算數(shù)值模塊,用于計算消息u的數(shù)值,其中,u=qa×m+p×r;
離線簽名值計算模塊,用于計算離線狀態(tài)下的簽名值σ',σ'=h(u),其中,h為hash函數(shù)。
作為一種改進(jìn)的方案,所述在線簽名模塊具體包括:
狀態(tài)信息恢復(fù)模塊,用于在節(jié)點(diǎn)a,恢復(fù)出狀態(tài)信息m和r;
第一摘要值計算模塊,用于利用消息摘要算法,計算消息m的摘要值h(m);
在線簽名值計算模塊,用于計算消息m的簽名值r',其中,r'={m-h(m)}da+r。
作為一種改進(jìn)的方案,所述認(rèn)證模塊具體包括:
第二摘要值計算模塊,用于根據(jù)接收到的消息m,計算消息m的摘要值h(m);
第二計算數(shù)值模塊,用于計算消息u'的數(shù)值,u'=qa×h(m)+p×r';
驗(yàn)證判斷模塊,用于判斷方程h(u')=σ'是否成立,如果σ'是關(guān)于u'的一個有效簽名,則驗(yàn)證方程成立,那么節(jié)點(diǎn)b完成對節(jié)點(diǎn)a的身份認(rèn)證;否則節(jié)點(diǎn)a未通過節(jié)點(diǎn)b的身份認(rèn)證。
在本發(fā)明實(shí)施例中,對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化;在節(jié)點(diǎn)a,隨機(jī)選擇
附圖說明
為了更清楚地說明本發(fā)明具體實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。在所有附圖中,類似的元件或部分一般由類似的附圖標(biāo)記標(biāo)識。附圖中,各元件或部分并不一定按照實(shí)際的比例繪制。
圖1為本發(fā)明提供的基于橢圓曲線的簽名認(rèn)證方法的實(shí)現(xiàn)流程圖;
圖2為本發(fā)明提供的在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ'的實(shí)現(xiàn)流程圖;
圖3為本發(fā)明提供的在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算并發(fā)送消息m的在線簽名值r'的實(shí)現(xiàn)流程圖;
圖4為本發(fā)明提供的在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證的實(shí)現(xiàn)流程圖;
圖5為本發(fā)明提供的基于橢圓曲線的簽名認(rèn)證系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實(shí)施例進(jìn)行詳細(xì)的描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只作為示例,而不能以此來限制本發(fā)明的保護(hù)范圍。
圖1示出了本發(fā)明提供的基于橢圓曲線的簽名認(rèn)證方法的實(shí)現(xiàn)流程圖,其具體包括下述步驟:
在步驟s101中,對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化,定義節(jié)點(diǎn)a為簽名節(jié)點(diǎn),節(jié)點(diǎn)b為對所述節(jié)點(diǎn)a進(jìn)行身份認(rèn)證的認(rèn)證節(jié)點(diǎn)。
在步驟s102中,在節(jié)點(diǎn)a,隨機(jī)選擇
在步驟s103中,在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ'。
在步驟s104中,在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算消息m的在線簽名值r'。
在步驟s105中,根據(jù)計算得到的離線狀態(tài)下的簽名值σ'和消息m的在線簽名值r',生成消息m的完整簽名σm,并將生成的消息m的完整簽名σm發(fā)送給節(jié)點(diǎn)b。
在該步驟中,當(dāng)計算得到離線狀態(tài)下的簽名值σ'和消息m的在線簽名值r'后,加上屬于節(jié)點(diǎn)a的簽名許可憑證mw,最后關(guān)于消息m的完整簽名是σm=(σ',r',mw),同時,使用混合加密算法中的共享密鑰加密傳輸狀態(tài)信息(r,m)給節(jié)點(diǎn)b。
在步驟s106中,在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證。
在該步驟中,認(rèn)證通過后,在節(jié)點(diǎn)b,計算r=m+r,并將r反饋給所述節(jié)點(diǎn)a。
其中,上述步驟s101,對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化的過程為:
初始化主要是完成參數(shù)的初始化以及系統(tǒng)的準(zhǔn)備工作。設(shè)ep(a,b)是定義在有限域fq上的一條安全橢圓曲線,該曲線ep(a,b)上的有理點(diǎn)構(gòu)成的群的階能夠被一個大的素數(shù)n整除。在曲線上隨機(jī)選取一個點(diǎn)作為基點(diǎn)p,以p作為生成元對橢圓曲線上的加法運(yùn)算構(gòu)成了一個循環(huán)子群<p>,其階為n,并且滿足條件np=o,o表示一個無窮遠(yuǎn)點(diǎn)?;c(diǎn)p作為公共信息被公開。設(shè)(1l)→(q,g1,g2,e),其中g(shù)1,g2都是p階乘法循環(huán)群。同時設(shè)單向hash函數(shù)h:{0,1}*→g2。每個參與身份認(rèn)證的節(jié)點(diǎn)都有一個mac地址和一個唯一的身份標(biāo)識符id,這些信息代表了需要認(rèn)證節(jié)點(diǎn)的身份信息。節(jié)點(diǎn)a為簽名者,b是對節(jié)點(diǎn)a進(jìn)行身份認(rèn)證的節(jié)點(diǎn)。m是一個消息空間,表示原生理信息,m={0,1}*,mw表示節(jié)點(diǎn)a的簽名許可憑證,其中包含節(jié)點(diǎn)a的身份信息(mac和id信息)、公鑰信息等內(nèi)容。
圖2示出了本發(fā)明提供的在節(jié)點(diǎn)a,隨機(jī)選取兩個整數(shù)m,r∈zp,計算在離線狀態(tài)下的簽名值σ'的實(shí)現(xiàn)流程圖,其具體包括下述步驟:
在步驟s201中,計算消息u的數(shù)值,其中,u=qa×m+p×r,并存儲狀態(tài)信息(r,m)。
在步驟s202中,計算離線狀態(tài)下的簽名值σ',σ'=h(u),其中,h為hash函數(shù)。
其中,對于簽名的計算過程,大部分計算量是在離線簽名過程實(shí)現(xiàn)。
圖3示出了本發(fā)明提供的在節(jié)點(diǎn)a,恢復(fù)狀態(tài)信息m和r,計算并發(fā)送消息m的在線簽名值r'的實(shí)現(xiàn)流程圖,其具體包括下述步驟:
在步驟s301中,在節(jié)點(diǎn)a,恢復(fù)出狀態(tài)信息m和r。
在步驟s302中,利用消息摘要算法,計算消息m的摘要值h(m)。
在步驟s303中,計算消息m的簽名值r',其中,r'={m-h(m)}da+r。
相對圖2所示的離線簽名計算過程,該在線簽名計算量較小,從而大大提升了簽名認(rèn)證時間。
圖4示出了本發(fā)明提供的在節(jié)點(diǎn)b,對所述節(jié)點(diǎn)a發(fā)送的完整簽名σm,進(jìn)行簽名的有效認(rèn)證的實(shí)現(xiàn)流程圖,其具體包括下述步驟:
在步驟s401中,根據(jù)接收到的消息m,計算消息m的摘要值h(m)。
在步驟s402中,計算消息u'的數(shù)值,u'=qa×h(m)+p×r'。
在步驟s403中,判斷方程h(u')=σ'是否成立,如果σ'是關(guān)于u'的一個有效簽名,則驗(yàn)證方程成立,那么節(jié)點(diǎn)b完成對節(jié)點(diǎn)a的身份認(rèn)證;否則節(jié)點(diǎn)a未通過節(jié)點(diǎn)b的身份認(rèn)證。
在本發(fā)明實(shí)施例中,在未確定簽名消息之前做離線簽名運(yùn)算;在確定要加密的消息和身份私鑰之后做在線簽名計算,該方案使得在線階段消耗較少的資源,而離線階段先進(jìn)行部分計算,因此,該方案更適合計算能力有限的體域網(wǎng)節(jié)點(diǎn)。
圖5示出了本發(fā)明提供的基于橢圓曲線的簽名認(rèn)證系統(tǒng)的結(jié)構(gòu)框圖,為了便于說明,圖中僅給出了與本發(fā)明實(shí)施例相關(guān)的部分。
初始化模塊11對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化,定義節(jié)點(diǎn)a為簽名節(jié)點(diǎn),節(jié)點(diǎn)b為對所述節(jié)點(diǎn)a進(jìn)行身份認(rèn)證的認(rèn)證節(jié)點(diǎn);密鑰生成模塊12在節(jié)點(diǎn)a,隨機(jī)選擇
在該實(shí)施例中,反饋模塊18認(rèn)證通過后,在節(jié)點(diǎn)b,計算r=m+r,并將r反饋給所述節(jié)點(diǎn)a。
在該實(shí)施例中,所述離線簽名模塊13具體包括:
狀態(tài)信息存儲模塊19存儲狀態(tài)信息(r,m);
第一計算數(shù)值模塊20計算消息u的數(shù)值,其中,u=qa×m+p×r;
離線簽名值計算模塊21計算離線狀態(tài)下的簽名值σ',σ'=h(u),其中,h為hash函數(shù)。
在該實(shí)施例中,在線簽名模塊14具體包括:
狀態(tài)信息恢復(fù)模塊22在節(jié)點(diǎn)a,恢復(fù)出狀態(tài)信息m和r;
第一摘要值計算模塊23利用消息摘要算法,計算消息m的摘要值h(m);
在線簽名值計算模塊24計算消息m的簽名值r',其中,r'={m-h(m)}da+r。
在該實(shí)施例中,認(rèn)證模塊17具體包括:
第二摘要值計算模塊25根據(jù)接收到的消息m,計算消息m的摘要值h(m);
第二計算數(shù)值模塊26計算消息u'的數(shù)值,u'=qa×h(m)+p×r';
驗(yàn)證判斷模塊27判斷方程h(u')=σ'是否成立,如果σ'是關(guān)于u'的一個有效簽名,則驗(yàn)證方程成立,那么節(jié)點(diǎn)b完成對節(jié)點(diǎn)a的身份認(rèn)證;否則節(jié)點(diǎn)a未通過節(jié)點(diǎn)b的身份認(rèn)證。
在該實(shí)施例中,上述各個模塊的功能內(nèi)容如上述方法實(shí)施例所記載,在此不再贅述。
在本發(fā)明實(shí)施例中,對基于橢圓曲線的認(rèn)證參數(shù)進(jìn)行初始化;在節(jié)點(diǎn)a,隨機(jī)選擇
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。