一種基于sd卡的密鑰協(xié)商方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于SD卡的密鑰協(xié)商方法,屬于身份認(rèn)證技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]移動(dòng)支付,也稱(chēng)為手機(jī)支付,是指交易雙方為了某種貨物或者服務(wù),使用移動(dòng)終端設(shè)備為載體,通過(guò)移動(dòng)通信網(wǎng)絡(luò)實(shí)現(xiàn)的商業(yè)交易。近年來(lái),在電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)的興起與快速發(fā)展等因素的推動(dòng)下,移動(dòng)支付呈現(xiàn)出強(qiáng)勁的增長(zhǎng)勢(shì)頭。然而,隨著智能手機(jī)上的惡意軟件日漸泛濫,移動(dòng)支付的安全性受到了巨大的考驗(yàn)。惡意軟件往往會(huì)偽裝成正常的移動(dòng)軟件,誘騙用戶(hù)輸入賬號(hào)、密碼等秘密信息,并通過(guò)短信等途徑暗中發(fā)送至攻擊者的手機(jī)或服務(wù)器,進(jìn)一步還會(huì)誘導(dǎo)用戶(hù)安裝木馬子包,劫持用戶(hù)收到的包含驗(yàn)證碼在內(nèi)的所有短信,發(fā)送至攻擊者的手機(jī)或服務(wù)器。而攻擊者一旦收到這些信息,就會(huì)將用戶(hù)賬戶(hù)內(nèi)財(cái)產(chǎn)洗劫。這類(lèi)盜號(hào)事件發(fā)生的一個(gè)根本原因在于支付系統(tǒng)無(wú)法識(shí)別當(dāng)前登錄用戶(hù)是否為賬號(hào)擁有者,即支付系統(tǒng)的認(rèn)證機(jī)制不完善。
[0003]在移動(dòng)支付領(lǐng)域,特別是很多第三方支付系統(tǒng)為了擴(kuò)大市場(chǎng)份額、降低用戶(hù)操作復(fù)雜性,一般都采用靜態(tài)口令與短信驗(yàn)證碼相結(jié)合的方式來(lái)進(jìn)行認(rèn)證。用戶(hù)先通過(guò)預(yù)先注冊(cè)的靜態(tài)口令密碼登錄支付系統(tǒng),服務(wù)器端再向用戶(hù)注冊(cè)的手機(jī)號(hào)發(fā)送短信驗(yàn)證碼,當(dāng)用戶(hù)輸入短信驗(yàn)證碼后,即完成登錄認(rèn)證過(guò)程。這一過(guò)程的目標(biāo)是通過(guò)“知道什么”(即靜態(tài)口令)和“W擁有什么”(即手機(jī)號(hào)碼)兩個(gè)因素來(lái)完成對(duì)用戶(hù)的認(rèn)證。然而,在現(xiàn)有的移動(dòng)支付過(guò)程中,由于有惡意軟件存在的風(fēng)險(xiǎn),通過(guò)短信并不能真正實(shí)現(xiàn)對(duì)“擁有手機(jī)號(hào)碼”這一要素的認(rèn)證。而網(wǎng)上銀行所使用的刮刮卡、電子令牌以及USBKey設(shè)備,都是外置設(shè)備。在移動(dòng)支付領(lǐng)域里要求用戶(hù)隨身攜帶這些設(shè)備以備滿足隨時(shí)隨地的支付需求,會(huì)大大降低用戶(hù)的使用體驗(yàn)。因此,選擇內(nèi)置于移動(dòng)設(shè)備中的硬件來(lái)滿足安全需求是移動(dòng)支付領(lǐng)域的首選方案。
[0004]在移動(dòng)設(shè)備上,尤其是智能手機(jī),能夠提供加解密、身份認(rèn)證的硬件設(shè)備有SIM卡與SD卡兩種選擇。但是S頂卡的發(fā)行、管理以及應(yīng)用受電信運(yùn)營(yíng)商的嚴(yán)格管控,因此S頂卡不適于開(kāi)放的網(wǎng)絡(luò)安全應(yīng)用。目前在移動(dòng)終端,綜合考慮性能、應(yīng)用的通用性、發(fā)卡管理的靈活性,一般選擇安全SD卡來(lái)實(shí)現(xiàn)硬件安全功能。安全SD卡通過(guò)高性能的安全芯片,可以支持各類(lèi)安全運(yùn)算,如常見(jiàn)的加解密、數(shù)字簽名生成與驗(yàn)證、隨機(jī)數(shù)發(fā)生等操作。
[0005]用戶(hù)與支付系統(tǒng)之間的認(rèn)證屬于兩方口令認(rèn)證密鑰協(xié)商(PAKE,password-basedauthenticated key exchange)過(guò)程。兩方PAKE所解決的基本問(wèn)題是,通信雙方通過(guò)提前預(yù)享口令進(jìn)行身份認(rèn)證并交互建立一個(gè)新的會(huì)話密鑰。
[0006]對(duì)于PAKE方案而言,敵手的攻擊根據(jù)目標(biāo)的不同主要分為兩種。一種是破壞協(xié)議的認(rèn)證性以及會(huì)話密鑰的安全性。另一種是針對(duì)口令的窮舉攻擊,因?yàn)橐话憧诹畹拈L(zhǎng)度有限,且字符空間較小,所以比起一般的基于對(duì)稱(chēng)密鑰的認(rèn)證密鑰協(xié)商方案而言,PAKE方案容易遭受口令字典攻擊。口令字典攻擊主要分為在線口令字典攻擊與離線口令字典攻擊,其中離線字典攻擊的危害要遠(yuǎn)大于在線字典攻擊,對(duì)于PAKE協(xié)議而言,這種攻擊必須是完全避免的,而對(duì)于在線口令字典攻擊,一般應(yīng)保證協(xié)議參與方可以檢測(cè)是否存在這種攻擊。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提出了一種基于SD卡的密鑰協(xié)商方法,一方面通過(guò)靜態(tài)口令與SD卡內(nèi)置的秘密信息實(shí)現(xiàn)用戶(hù)的雙因素認(rèn)證以及用戶(hù)與服務(wù)器的雙向認(rèn)證,另一方面將認(rèn)證過(guò)程與密鑰協(xié)商過(guò)程結(jié)合,為認(rèn)證后的安全消息傳輸提供了保證。
[0008]本發(fā)明的技術(shù)方案為一種基于SD卡的密鑰協(xié)商方法,由用戶(hù)與服務(wù)器兩個(gè)通信方參與,服務(wù)器預(yù)先確定工作參數(shù),用戶(hù)通過(guò)注冊(cè)協(xié)議在服務(wù)器上注冊(cè)用戶(hù)身份CID與用戶(hù)口令PW,并將用戶(hù)身份CID與用戶(hù)持有的SD卡內(nèi)的秘密信息sw綁定。用戶(hù)與服務(wù)器間的認(rèn)證密鑰協(xié)商過(guò)程包括以下步驟:
[0009]A-1.用戶(hù)輸入用戶(hù)標(biāo)識(shí)CID與口令pw,SD卡選擇隨機(jī)數(shù)x e RZq,Zq為模q的剩余類(lèi),計(jì)算并輸出密鑰協(xié)商信息X = gx與用戶(hù)認(rèn)證信息Auth c= H ! (CID, pw, sw, X),用戶(hù)向服務(wù)器發(fā)送消息Mc=〈CID, X,Auth c> ;
[0010]A-2.服務(wù)器根據(jù)與用戶(hù)共享的口令pw與秘密信息sw驗(yàn)證Authe,如果通過(guò),隨機(jī)選擇y e RZq,計(jì)算密鑰協(xié)商信息Y = gy,會(huì)話密鑰SK = V,認(rèn)證信息Auths =H1 (CID, pw, sw, Y, SK),向用戶(hù)發(fā)送消息Ms=〈Y, Auth s>,否則終止認(rèn)證過(guò)程;
[0011]A-3.SD 卡計(jì)算會(huì)話密鑰 SK’ = Yx與 Auth s,= H1 (CID, pw, sw, Y, SK’),如果 Auths’與Auths—致,則接受SK’為后續(xù)通信的會(huì)話密鑰,通知用戶(hù)認(rèn)證通過(guò),否則終止認(rèn)證過(guò)程。
[0012]更進(jìn)一步,所述工作參數(shù)為集合{q,g, E, D, K, H0, H1, LK, L},其中g(shù)是階為素?cái)?shù)q的有限循環(huán)群的生成元,(E,D, K)為對(duì)稱(chēng)加密方案,E為加密函數(shù),D為解密函數(shù),K為對(duì)稱(chēng)密鑰,長(zhǎng)度為L(zhǎng)K,H。用于生成注冊(cè)和口令更新時(shí)使用的加密密鑰的函數(shù)。H1用于生成通信過(guò)程中的認(rèn)證消息的函數(shù)。H0: {O, 1}*^ {0,IP與H1: {0,I}* — {0,If是隨機(jī)哈希函數(shù),L為安全參數(shù)。
[0013]更進(jìn)一步,所述用戶(hù)持有的SD卡有唯一標(biāo)識(shí)SID,服務(wù)器預(yù)先存儲(chǔ)每個(gè)SD卡的SID與秘密信息sw的對(duì)應(yīng)關(guān)系。
[0014]更進(jìn)一步,所述用戶(hù)持有的SD卡有PIN碼保護(hù)。
[0015]更進(jìn)一步,所述秘密信息sw為長(zhǎng)度足夠安全的隨機(jī)字符串,窮舉攻擊是計(jì)算上不可行的。sw保存在用戶(hù)持有的SD卡中且不可被導(dǎo)出。
[0016]更進(jìn)一步,所述注冊(cè)協(xié)議包括以下步驟:
[0017]R-1.用戶(hù)輸入用戶(hù)標(biāo)識(shí)CID與口令pw,SD卡選擇隨機(jī)字符串R1,長(zhǎng)度為L(zhǎng),計(jì)算加密密鑰K = H。(R1, sw),對(duì)pw進(jìn)行加密生成消息M = Ek (pw),計(jì)算用戶(hù)注冊(cè)認(rèn)證信息R-Authi=H1 (CID, SID, R1, sw),向服務(wù)器發(fā)送注冊(cè)消息 RMc=〈CID, SID, M, R 1; R-Auth1);
[0018]R-2.服務(wù)器驗(yàn)證R-Auth1正確后,計(jì)算解密密鑰K’ = HjR1, sw),解密獲得用戶(hù)口令pw = DK, (M),存儲(chǔ)CID、SID與pw的對(duì)應(yīng)關(guān)系,然后選擇隨機(jī)字符串R2,長(zhǎng)度為L(zhǎng),計(jì)算注冊(cè)認(rèn)證信息R-Auth2= H ! (CID, SID, R1, R2, sw, pw),向用戶(hù)發(fā)送注冊(cè)驗(yàn)證消息RMs =<R2, R-Auth2);
[0019]R-3.SD卡驗(yàn)證R-Auth2正確,通知用戶(hù)注冊(cè)成功,否則通知用戶(hù)注冊(cè)失敗。
[0020]更進(jìn)一步,當(dāng)用戶(hù)需要更新口令時(shí),通過(guò)以下步驟完成口令更新:
[0021]P-1.用戶(hù)輸入用戶(hù)標(biāo)識(shí)CID、舊口令PwcilA新口令pw _,SD卡選擇隨機(jī)字符串R1,長(zhǎng)度為L(zhǎng),計(jì)算加密密鑰K = H。(R1, pwold, sw),對(duì)新口令進(jìn)行加密得到密文消息M =Ek (PWnew),同時(shí)生成用戶(hù)驗(yàn)證消息UP-Auth1= H ! (CID, R1, sw, pwold),向服務(wù)器發(fā)送口令更新消息 PMc =〈CID, M, R1, UP-Auth1);
[0022]P-2.服務(wù)器驗(yàn)證UP-Auth1,如果驗(yàn)證通過(guò),計(jì)算解密密鑰K’ = H0 (R1, pwold,,sw),解密獲得用戶(hù)新口令pw_= Dk(M),選擇隨機(jī)字符串R2,長(zhǎng)度為L(zhǎng),計(jì)算服務(wù)器驗(yàn)證消息UP-Auth2= H ! (CID, R1, R2, sw, pwnew),向用戶(hù)發(fā)送口令更新驗(yàn)證消息 PMs=〈R 2,UP-Auth2);
[0023]P-3.SD卡驗(yàn)證UP-Auth2,如果驗(yàn)證通過(guò),通知用戶(hù)口令修改成功,否則通知用戶(hù)口令修改失敗。
[0024]更進(jìn)一步,當(dāng)用戶(hù)需要更換SD卡時(shí),新SD卡的標(biāo)識(shí)為SIDnew,對(duì)應(yīng)的秘密消息為swnew,通過(guò)以下步驟完成SD卡更換:
[0025]S-1.用戶(hù)輸入用戶(hù)標(biāo)識(shí)CID與口令pw,新SD卡選擇隨機(jī)字符串R1,長(zhǎng)度為L(zhǎng),計(jì)算用戶(hù)認(rèn)證消息US-Auth1= H ? (CID, SIDnew, R1, swnew, pw),向服務(wù)器發(fā)送SD卡更新消息SMc=〈CID, SIDnew, R1, US-Auth1);
[0026]S-2.服務(wù)器驗(yàn)證US-Auth1,如果驗(yàn)證通過(guò),根據(jù)CID查找用戶(hù)原先的SD卡標(biāo)識(shí)SIDcild,并標(biāo)記該SD卡作廢,然后存儲(chǔ)SIDnew與