本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是涉及一種零知識(shí)身份認(rèn)證方法。
背景技術(shù):
傳統(tǒng)口令認(rèn)證均需要在服務(wù)器存儲(chǔ)用戶的口令或者其哈希值,用于通過(guò)匹配對(duì)比確認(rèn)用戶的輸入是否正確,這種方法簡(jiǎn)單易操作,是目前網(wǎng)絡(luò)中主流的口令認(rèn)證方式,但該方法存在嚴(yán)重的漏洞,一旦服務(wù)器端由于操作不當(dāng)或者遭到攻擊,導(dǎo)致服務(wù)器數(shù)據(jù)泄露,則用戶的口令將會(huì)被完全暴露,黑客便可以偽造用戶身份登錄該網(wǎng)站,同時(shí)由于人們使用習(xí)慣是不同網(wǎng)站的口令選取同一個(gè),由此便導(dǎo)致用戶其他網(wǎng)站的信息也遭到泄露,對(duì)用戶的個(gè)人隱私造成極大的損失。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問(wèn)題,本發(fā)明提供了一種零知識(shí)身份認(rèn)證方法,所述方法應(yīng)用的系統(tǒng)包括服務(wù)器及與服務(wù)器通信連接的客戶端,所述服務(wù)器內(nèi)存儲(chǔ)有已注冊(cè)用戶的相關(guān)信息,所述系統(tǒng)參數(shù)P為一個(gè)256比特大小的素?cái)?shù)。所述方法包括如下步驟:
第一步:用戶在客戶端輸入身份標(biāo)識(shí)。
第二步:服務(wù)器判斷用戶相關(guān)信息是否存在于服務(wù)器內(nèi),不存在則允許注冊(cè),存在提示已經(jīng)注冊(cè),并跳轉(zhuǎn)到第五步,否則從第三步執(zhí)行。
第三步:客戶端隨機(jī)選取口令x,并將其編碼成數(shù)據(jù)格式,計(jì)算z=gx*ID,g為由P確定的有限域Zp中的一個(gè)本原,ID代表用戶身份標(biāo)識(shí)。
第四步:客戶端將(ID,z)發(fā)送給服務(wù)器對(duì)應(yīng)用戶下進(jìn)行存儲(chǔ),提示用戶注冊(cè)成功。
第五步:客戶端產(chǎn)生隨機(jī)數(shù)r,并計(jì)算s1=gr,將s1發(fā)送給服務(wù)器。
第六步:服務(wù)器產(chǎn)生隨機(jī)數(shù)c,發(fā)送給客戶端。
第七步:客戶端計(jì)算s2=x*ID+r*c,計(jì)算s3=gs2,將s3發(fā)送給服務(wù)器;ID代表用戶的身份標(biāo)識(shí);x為用戶輸入的口令。
第八步:服務(wù)器計(jì)算s4=(s1)c*z,判斷s3是否與s4相等,相等則認(rèn)證成功,否則認(rèn)證失敗。
第九步:客戶端接收認(rèn)證結(jié)果。
第一步至第四步屬于用戶用戶注冊(cè)階段。
第五步至第九步屬于用戶登錄認(rèn)證階段
進(jìn)一步的,身份標(biāo)識(shí)為郵箱或者手機(jī)號(hào)或者用戶名。
進(jìn)一步的,用戶在第五步中第七步中再次輸入口令。
本發(fā)明的有益效果為:
(1)認(rèn)證服務(wù)器不存儲(chǔ)用戶的口令或者其哈希值,防止了服務(wù)器數(shù)據(jù)庫(kù)泄露對(duì)用戶口令造成的威脅。
(2)認(rèn)證過(guò)程中沒(méi)有傳遞口令或者口令的某種變換,防止了通信信道竊取獲取用戶口令或者哈希值的可能。
(3)認(rèn)證過(guò)程采用離散對(duì)數(shù)困難問(wèn)題進(jìn)行計(jì)算,相對(duì)于證書(shū)的認(rèn)證效率較高。
附圖說(shuō)明
圖1為用戶注冊(cè)流程圖。
圖2為用戶認(rèn)證流程圖。
具體實(shí)施方式
本發(fā)明的設(shè)計(jì)構(gòu)思為:用戶通過(guò)在服務(wù)器存儲(chǔ)一個(gè)不能直接用于認(rèn)證的信息,繼而通過(guò)協(xié)議交互以及該認(rèn)證信息完成用戶的身份認(rèn)證,而服務(wù)器認(rèn)證信息泄露后,敵手不能直接利用該信息進(jìn)行用戶身份的認(rèn)證,也是用戶不需要向服務(wù)器出示口令或者口令的哈希值便可以完成身份的認(rèn)證。
本申請(qǐng)基于離散對(duì)數(shù)困難問(wèn)題定義如下:
給定一個(gè)素?cái)?shù)p和有限域Zp中的一個(gè)本原g,對(duì)于Zp上的整數(shù)b,尋找唯一的整數(shù)c,使得ac=b(mod p)。目前一般認(rèn)為素?cái)?shù)p取256比特時(shí),該問(wèn)題是難解的。
本發(fā)明所述方法應(yīng)用的系統(tǒng)包括服務(wù)器及與服務(wù)器通信連接的客戶端。所述服務(wù)器內(nèi)存儲(chǔ)有已注冊(cè)用戶的相關(guān)信息。所述相關(guān)信息包括用戶身份標(biāo)識(shí)、經(jīng)過(guò)變形后的口令數(shù)據(jù)。系統(tǒng)參數(shù)P為一個(gè)256比特大小的素?cái)?shù)。
本申請(qǐng)的方法大致可分為注冊(cè)流程及認(rèn)證流程。注冊(cè)流程主要是在服務(wù)器內(nèi)存儲(chǔ)用戶相關(guān)身份標(biāo)識(shí)及編碼后的口令數(shù)據(jù),如圖1所示。認(rèn)證流程則是用戶注冊(cè)后,由服務(wù)器端經(jīng)客戶端對(duì)用戶進(jìn)行認(rèn)證,如圖2所示。
下面對(duì)整體流程描述如下:
第一步:用戶在客戶端輸入身份標(biāo)識(shí)信息。
身份標(biāo)識(shí)信息可以為郵箱或手機(jī)號(hào)或用戶名等。
第二步:服務(wù)器判斷用戶相關(guān)信息是否存在于服務(wù)器內(nèi),不存在則允許注冊(cè),存在提示已經(jīng)注冊(cè),并跳轉(zhuǎn)到第五步,否則從第三步執(zhí)行。
第三步:用戶輸入口令x,客戶段并將其編碼成數(shù)據(jù)格式,計(jì)算z=gx*ID,g為由P確定的有限域Zp中的一個(gè)本原,ID代表用戶輸入的身份標(biāo)識(shí)。
本步驟實(shí)現(xiàn)了服務(wù)端不直接存儲(chǔ)用戶口令,且從Z無(wú)法解出x,有效的避免服務(wù)器口令信息泄露的隱患。
第四步:客戶端將(ID,z)發(fā)送給服務(wù)器對(duì)應(yīng)用戶下進(jìn)行存儲(chǔ),提示用戶注冊(cè)成功。
第五步:客戶端產(chǎn)生隨機(jī)數(shù)r,并計(jì)算s1=gr,將s1發(fā)送給服務(wù)器。
第六步:服務(wù)器產(chǎn)生隨機(jī)數(shù)c,發(fā)送給客戶端。
第七步:客戶端計(jì)算s2=x*ID+r*c,計(jì)算s3=gs2,將s3發(fā)送給服務(wù)器;ID代表用戶輸入的身份標(biāo)識(shí);x為用戶輸入的口令。
第八步:服務(wù)器計(jì)算s4=(s1)c*z,判斷s3是否與s4相等,相等則認(rèn)證成功,否則認(rèn)證失敗。
第九步:客戶端接收認(rèn)證結(jié)果。