專利名稱:移動p2p用戶身份認(rèn)證方法
技術(shù)領(lǐng)域:
本發(fā)明屬于互聯(lián)網(wǎng)身份認(rèn)證領(lǐng)域,涉及一種在移動P2P網(wǎng)絡(luò)中用戶身份認(rèn)證方法。
背景技術(shù):
在P2P (Peer-to-Peer)網(wǎng)絡(luò)中,每個(gè)用戶的地位都是對等的,同時(shí)具有客戶端 (Client)和服務(wù)器(Server)的功能,因此P2P網(wǎng)絡(luò)也稱為對等網(wǎng)絡(luò)。在P2P網(wǎng)絡(luò)中,每個(gè) 用戶都可以自由地加入和退出網(wǎng)絡(luò),用戶之間可以更好地共享資源。P2P技術(shù)在文件共享、 即時(shí)通信、分布式計(jì)算和流媒體播放等眾多領(lǐng)域都得到了廣泛的應(yīng)用。P2P技術(shù)在帶來突破性優(yōu)勢的同時(shí),也不可避免的產(chǎn)生一些問題,其中網(wǎng)絡(luò)安全問 題尤為突出。P2P網(wǎng)絡(luò)的對等性和匿名性會使得惡意用戶不易被發(fā)現(xiàn),惡意用戶會發(fā)布虛假 資源、傳播病毒、惡意攻擊正常用戶等等,不僅影響到部分正常用戶的使用,甚至?xí)?dǎo)致整 個(gè)P2P系統(tǒng)的崩潰。保證P2P網(wǎng)絡(luò)安全最直接的方法是采用身份認(rèn)證技術(shù),來驗(yàn)證用戶身份的真實(shí)性 和合法性,并阻止非法用戶進(jìn)入網(wǎng)絡(luò)。身份認(rèn)證技術(shù)是P2P系統(tǒng)安全的第一道防線。當(dāng)前的P2P網(wǎng)絡(luò)中常用的身份認(rèn)證技術(shù)有以下幾種(1)基于PKI (Public Key Infrastructure,公鑰基礎(chǔ)設(shè)施)機(jī)制的身份認(rèn)證技術(shù)傳統(tǒng)的PKI技術(shù)通常由可信的第三方為合法用戶頒發(fā)數(shù)字證書,用戶之間可以通 過對方的數(shù)字證書進(jìn)行相互認(rèn)證而不需要認(rèn)證服務(wù)器的參與。傳統(tǒng)的PKI技術(shù)安全性強(qiáng), 可靠性高,但存在著證書獲取、撤銷和跨域認(rèn)證等困難,在用戶加入和退出頻繁的P2P網(wǎng)絡(luò) 中問題尤為突出。(2)基于 ID-PKC(Identity based-Public Key Cryptograph,基于身份的公鑰加 密體系)機(jī)制的身份認(rèn)證技術(shù)在ID-PKC中,用戶的公鑰直接由其身份信息ID導(dǎo)出,而相應(yīng)的私鑰則由 PKG(Private Key Generator,私鑰生成器)生成。ID-PKC解決了 PKI中證書管理的問題, 但其仍需要一個(gè)可信的PKG來生成所有用戶的私鑰,因此PKG知道所有用戶的私鑰并可以 冒充任意一個(gè)用戶,所以基于ID-PKC的認(rèn)證技術(shù)存在密鑰托管的問題。(3)基于零知識證明的身份認(rèn)證技術(shù)在零知識證明中,證明者試圖向驗(yàn)證者證明某個(gè)論斷是正確的,或者證明者擁有 某個(gè)知識,卻不向驗(yàn)證者透露任何有用的消息。零知識證明簡單有效,同樣不需要認(rèn)證服務(wù) 器的參與,但零知識證明通常需要多輪的交互來降低證明者欺騙驗(yàn)證者的概率,在連接容 易斷開的P2P網(wǎng)絡(luò)中,認(rèn)證過程交互次數(shù)越多,認(rèn)證失敗的可能性就越大。因此零知識證明 不適合用戶會頻繁退出和加入,或者連接容易斷開的P2P應(yīng)用場景。移動P2P采用無線通信技術(shù)來實(shí)現(xiàn)可移動終端之間數(shù)據(jù)資源的共享。除了具有傳 統(tǒng)的P2P技術(shù)一些特點(diǎn)外,由于移動性和無線性,移動P2P技術(shù)有以下突出的特點(diǎn)(1)網(wǎng)絡(luò)的高度動態(tài)性。用戶的移動性和頻繁的加入和退出,使移動P2P網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)變化頻繁。(2)用戶自身資源受限。移動終端的處理能力、存儲能力和能量供應(yīng)等都受一定的 限制。(3)有限的帶寬。移動P2P采用無線通信技術(shù),鏈路帶寬與固定網(wǎng)絡(luò)相比較低。由于移動P2P技術(shù)有其自身的特點(diǎn),因此移動P2P網(wǎng)絡(luò)中的用戶身份認(rèn)證機(jī)制必 須適合移動P2P網(wǎng)絡(luò)中高度動態(tài),用戶資源受限,帶寬有限,連接容易斷開等特點(diǎn)。主要從 以下3個(gè)方面來考慮(1)認(rèn)證方法要盡量簡單,交互次數(shù)少,計(jì)算量小。(2)認(rèn)證過程不需要認(rèn)證服務(wù)器的參與。由于用戶可以自由地和其它用戶進(jìn)行通 信,因此用戶之間需要頻繁地進(jìn)行認(rèn)證。所以認(rèn)證過程盡量不要認(rèn)證服務(wù)器的參與。(3)用戶之間的移動性和無線連接的不穩(wěn)定性導(dǎo)致用戶和用戶容易斷開,這時(shí)已 經(jīng)建立連接的用戶之間需要進(jìn)行再次認(rèn)證。因此需要有快速的重認(rèn)證方法,降低認(rèn)證的復(fù) 雜度。
發(fā)明內(nèi)容
由于現(xiàn)有P2P網(wǎng)絡(luò)中身份認(rèn)證技術(shù)不能很好地適用于移動P2P網(wǎng)絡(luò)的應(yīng)用場景, 因此本發(fā)明提出一種適合移動P2P網(wǎng)絡(luò)架構(gòu)特點(diǎn)的身份認(rèn)證方法。本發(fā)明所提出的移動P2P身份認(rèn)證方法適用于具有基礎(chǔ)設(shè)施的3G移動網(wǎng)絡(luò)的應(yīng) 用場景,本發(fā)明所提出的移動P2P網(wǎng)絡(luò)結(jié)構(gòu)由注冊服務(wù)器、認(rèn)證服務(wù)器和移動用戶組成,其 架構(gòu)見附圖1。本發(fā)明所提出的身份認(rèn)證方法包括用戶注冊和用戶身份認(rèn)證,其中用戶身份認(rèn)證 包括登錄認(rèn)證、服務(wù)請求認(rèn)證和短暫斷線之后的快速重認(rèn)證。本發(fā)明方法具體包括如下步驟步驟(1)系統(tǒng)初始化和用戶注冊。在系統(tǒng)初始化階段,移動P2P網(wǎng)絡(luò)設(shè)置系統(tǒng)參數(shù),并將其中一部分系統(tǒng)參數(shù)公開, 公開的系統(tǒng)參數(shù)包括大素?cái)?shù)P及其本原根g,認(rèn)證服務(wù)器的公鑰PUas,注冊服務(wù)器的公鑰
PTI
r uREG0用戶注冊是指第一次使用移動P2P網(wǎng)絡(luò)的用戶,向注冊服務(wù)器提交自身賬號(ID) 和密碼(PW)進(jìn)行注冊。通過賬號和密碼,用戶可以登錄到移動P2P網(wǎng)絡(luò)并獲取服務(wù)。用戶注冊的具體步驟是a)用戶發(fā)送注冊請求消息至注冊服務(wù)器。注冊請求消息是用戶使用注冊服務(wù)器的 公鑰PUkk對自身賬號(ID)和密碼(Pff)進(jìn)行加密后的消息,具體為E(PUKEe,[ID |PW]),其 中EO是公鑰加密算法,“ I I ”為比特連接符,用于將一個(gè)比特串連接到另一個(gè)比特串上;b)注冊服務(wù)器對注冊請求消息用自身私鑰進(jìn)行解密,得到該用戶的賬號ID和密 碼Pff,具體為D (PReeg, E (PUeeg, [ID I IPW])),其中D ()為對應(yīng)于E ()的公鑰解密算法;注冊服務(wù)器再從整數(shù)域中隨機(jī)選擇參數(shù)β,作為用戶密鑰,并計(jì)算秘密參數(shù) N: h(ID\ \Pl^ h(K\ I/勸,其中K為注冊服務(wù)器的主密鑰,h(.)為單向哈希函數(shù),^為 異或運(yùn)算;注冊服務(wù)器將包含參數(shù)<h(. ),ID, N, h (Pff),β >的虛擬智能卡發(fā)放給提交注冊請求的用戶,h (PW)為用戶密碼的哈希值;c)注冊服務(wù)器將該用戶的身份信息用認(rèn)證服務(wù)器的公鑰加密后發(fā)送給認(rèn)證服務(wù) 器,所述的用戶的身份信息包括用戶的賬號ID和密鑰β,具體為E(PUAS,[β ι ι ID]),認(rèn)證服 務(wù)器用自身私鑰解密后即可獲得注冊用戶的身份信息;d)用戶獲得注冊服務(wù)器返回的虛擬智能卡,將其保存到移動終端。注冊成功后,用 戶可以通過虛擬智能卡、賬號和密碼登錄到移動P2P網(wǎng)絡(luò)中。步驟⑵登錄認(rèn)證。登錄認(rèn)證是指用戶在存有虛擬智能卡的移動終端上通過輸入正確的賬號和密碼 登錄到認(rèn)證服務(wù)器并進(jìn)行身份認(rèn)證。登錄認(rèn)證包括本地登錄和服務(wù)器驗(yàn)證。本地登錄是指 移動終端在本地驗(yàn)證用戶輸入的賬號和密碼的正確性。本地登錄的具體方法是e)用戶輸入自己的賬號ID和密碼PW進(jìn)行登錄,移動終端利用本地存儲的虛擬智 能卡對密碼PW進(jìn)行哈希運(yùn)算,得到h (Pff),,并將用戶輸入的ID和計(jì)算得到的h (Pff),,與保 存在虛擬智能卡中的ID和h (PW)進(jìn)行比較。若兩者一致,則本地登錄成功;若兩者不一致, 說明用戶輸入的ID或PW有誤,本地登錄失敗;本地登錄成功后,移動終端發(fā)送登錄認(rèn)證信息到認(rèn)證服務(wù)器進(jìn)行驗(yàn)證,服務(wù)器驗(yàn) 證的具體方法是f)移動終端隨機(jī)選擇整數(shù)U,使得u < p,并計(jì)算公開參數(shù)a = gu mod ρ ;mod表示 取模運(yùn)算;g)移動終端計(jì)算登錄的動態(tài)ID(DID)、驗(yàn)證參數(shù)C和用戶標(biāo)示符UID,具體為 DID: h、、N h、ID\ \Pf)) I I 7;) , C = h (DID//β//VVT1),UID = ID a;其中 T1 為用 戶的本地時(shí)間戳,由于DID的生成依賴于本地時(shí)間戳,因此用戶每次登錄都會生成不同的 DID, C為用于驗(yàn)證自身身份的驗(yàn)證參數(shù),用戶將UID、C和T1發(fā)送到認(rèn)證服務(wù)器;h)認(rèn)證服務(wù)器在T’時(shí)間收到用戶的認(rèn)證請求、UID、C* T1,認(rèn)證服務(wù)器對T1進(jìn)行 驗(yàn)證,若T’-T1S Δ T,繼續(xù)驗(yàn)證;若T’-T1 > Δ Τ,則認(rèn)證失敗;所述的Δ T為時(shí)間參數(shù),由 Ρ2Ρ系統(tǒng)根據(jù)用戶和認(rèn)證服務(wù)器的時(shí)延進(jìn)行確定;i)認(rèn)證服務(wù)器從UID中得到ID和a,并查找與該用戶ID對應(yīng)的β,然后計(jì)算DID’ = h(h(K| |ID) ι IT1),C' =h(DiD,| β |a||i\),驗(yàn)證 C,和收到的 c 是否一致,若 C,= c, 表明該用戶為合法用戶,用戶通過認(rèn)證,若C’ φ c,則認(rèn)證失??;j)用戶通過身份認(rèn)證后,認(rèn)證服務(wù)器用私鑰PRas為用戶生成票據(jù),具體為Ticket =E (PRas, [ID I a |h(DID,) | T2 | Lifetime]),并將票據(jù) Ticket 發(fā)送給用戶。其中 T2 為 認(rèn)證服務(wù)器生成票據(jù)Ticket的時(shí)間,Lifetime為票據(jù)的生存時(shí)間,T2與Lifetime用于確 定票據(jù)的有效期,防止用戶使用過期的票據(jù);k)認(rèn)證服務(wù)器向P2P系統(tǒng)發(fā)布用戶的身份標(biāo)識符UID,其它用戶可通過移動P2P 網(wǎng)絡(luò)提供的搜索和查詢協(xié)議發(fā)現(xiàn)該用戶并進(jìn)行服務(wù)請求。步驟(3)服務(wù)請求認(rèn)證。服務(wù)請求認(rèn)證是指通過登錄認(rèn)證的合法用戶,需要向移動P2P網(wǎng)絡(luò)中的其它用戶 請求服務(wù)時(shí),用戶之間進(jìn)行的相互身份認(rèn)證。服務(wù)請求認(rèn)證的具體步驟是1)若用戶A需要獲取B提供的服務(wù),則其向移動P2P網(wǎng)絡(luò)發(fā)起查詢,找到符合要求 的用戶B及其UIDb,用戶A從返回的UIDb中得到用戶B的公開參數(shù)b,= g"B modp ;
m)用戶A向用戶B提出服務(wù)請求,并發(fā)送認(rèn)證信息<TicketA,UIDA>給用戶B, TicketA為認(rèn)證服務(wù)器為用戶A發(fā)放的票據(jù),UIDa為用戶A此次登錄的用戶標(biāo)識符,UIDa = IDa I IaA ;η)用戶 B 棚認(rèn)證服務(wù)器的公鑰 PUas 解密 TicketA,得到 IDa | | aA | |h(DID/) | | T21 | Lifetime, 根據(jù)T2和Lifetime檢查TicketA是否過期,若TicketA未過期則將解密后的IDA、aA和用戶 A發(fā)送的UIDa進(jìn)行比較,若相同,則繼續(xù)認(rèn)證;若不同,則認(rèn)為A的身份被假冒,直接退出認(rèn) 證過程;ο)用戶B從整數(shù)域中隨機(jī)選擇一個(gè)整數(shù)r,計(jì)算中間值Temp = aUs mod ρ,對稱密鑰 Kab = h (Temp | | r)和參數(shù) M = h (KAB | | r | | IDb),并將 <M, r> 發(fā)送給用戶 A ;P)用戶A收到用戶B發(fā)送的<M,r>后,計(jì)算火‘ =h[{bu^ mod—1| r),M,=
h(V I |r| |IDB),并與M進(jìn)行比較,若Μ’ = M,則認(rèn)證了用戶B和Kab的真實(shí)性,繼續(xù)下一步 驟;否則退出認(rèn)證;Kab為用戶A和用戶B之間共享的對稱密鑰;q)用戶A用對稱密鑰Kab對DIDa和N0nCeAB進(jìn)行加密,并發(fā)送Nonc^給用戶B, E (Kab, DIDa| NonceJ,其中Nonce^為用戶A隨機(jī)選擇的整數(shù);r)用戶B使用對稱密鑰Kab對用戶A發(fā)送的消息進(jìn)行解密并計(jì)算h(DIDa),與 TicketA中的h(DIDA’)進(jìn)行比較。若兩者一致,則認(rèn)為用戶A擁有正確的DIDA,且用戶A經(jīng) 過了認(rèn)證服務(wù)器的認(rèn)證,同時(shí)用戶B保存Nonc^,在B與A斷開連接后根據(jù)NonceAB可以進(jìn) 行步驟(4)中的快速重認(rèn)證;若兩者不一致,則退出認(rèn)證;至此,用戶A和用戶B之間通過認(rèn)證,用戶B與用戶A建立連接,并為用戶A提供 所需的服務(wù)。步驟(4)連接短暫斷開后的快速重認(rèn)證。若用戶A和用戶B已經(jīng)通過認(rèn)證,但由于某種原因用戶A與用戶B暫時(shí)失去連接, 在一定時(shí)間T。ff后向用戶B重新發(fā)起連接,用戶B對用戶A需重新認(rèn)證,本發(fā)明所提出的快 速重認(rèn)證方法具體步驟是s)用戶A向用戶B提出重服務(wù)認(rèn)證請求,并發(fā)送認(rèn)證信息<UIDa>給用戶B ;t)用戶B在本地查找是否存在與UIDa對應(yīng)的Kab和N0nCeAB,若不存在Kab和 N0nceAB,則說明用戶B之前并未對用戶A進(jìn)行認(rèn)證,快速重認(rèn)證失敗;若存在,則用戶B產(chǎn)生 一個(gè)新的隨機(jī)數(shù)Nonce’ 并用Kab加密N0nCeAB后發(fā)送給用戶Α,Ε , Nonce' ;u)用戶A用Kab對消息進(jìn)行解密,得到NonceJ,計(jì)算并發(fā)送h (NonceJ Nonce'AB) 給用戶B ;ν)用戶B根據(jù)本地保存的NonceAB,計(jì)算h (Nonce^ | | Nonce' AB) ’,并與A發(fā)送的消 息進(jìn)行比較。若兩者一致,則用戶A通過認(rèn)證,用戶A和用戶B將NonCeAB更新為NonCe’AB ; 若兩者不一致,則認(rèn)證失敗。本發(fā)明在認(rèn)證服務(wù)器對用戶身份認(rèn)證時(shí)采用虛擬智能卡和靜態(tài)密碼的雙因素認(rèn) 證,有較高的安全性;用戶之間的認(rèn)證不需要服務(wù)器的參與,降低了認(rèn)證服務(wù)器的負(fù)擔(dān),也 降低了移動終端的運(yùn)算量;用戶之間短暫斷開連接后采用快速重認(rèn)證方法,避免了再次進(jìn) 行相同的認(rèn)證,提高了效率。
圖1為本發(fā)明所采用的移動P2P網(wǎng)絡(luò)結(jié)構(gòu)示意圖;圖2為本發(fā)明方法中移動用戶注冊過程流程圖;圖3為本發(fā)明方法中移動用戶登錄認(rèn)證過程流程圖;圖4為本發(fā)明方法中移動用戶之間服務(wù)請求認(rèn)證過程流程圖;圖5為本發(fā)明方法中移動用戶間快速重認(rèn)證過程流程圖。
具體實(shí)施例方式下面結(jié)合附圖進(jìn)一步說明本發(fā)明提出的移動P2P網(wǎng)絡(luò)中用戶身份認(rèn)證方法的具 體實(shí)施過程。本發(fā)明采用具有基礎(chǔ)設(shè)施的3G移動網(wǎng)絡(luò)作為移動P2P網(wǎng)絡(luò)的應(yīng)用場景,其架構(gòu)如 圖1所示。該移動P2P網(wǎng)絡(luò)結(jié)構(gòu)由注冊服務(wù)器1、認(rèn)證服務(wù)器2、基站控制器3、基站4和移 動用戶5組成。注冊服務(wù)器處理新用戶的注冊,為用戶生成虛擬智能卡;認(rèn)證服務(wù)器負(fù)責(zé)認(rèn) 證登錄所述移動P2P網(wǎng)絡(luò)的的用戶,并發(fā)放票據(jù)。移動用戶采用手機(jī)、PDA、筆記本等移動設(shè) 備,通過基站接入到3G核心網(wǎng)絡(luò)。經(jīng)過注冊的合法移動用戶登錄時(shí),由認(rèn)證服務(wù)器對其進(jìn)行認(rèn)證。移動用戶通過身 份認(rèn)證后,可以從該移動P2P網(wǎng)絡(luò)獲取服務(wù),也可以為該網(wǎng)絡(luò)中的其他用戶提供服務(wù)。請求 服務(wù)的用戶與提供服務(wù)的用戶若是首次進(jìn)行通信,提供服務(wù)的用戶需要確認(rèn)服務(wù)請求者的 身份是否合法。此外,由于移動網(wǎng)絡(luò)的高度動態(tài)性,用戶之間原先建立的連接容易斷開,需 要進(jìn)行快速的重認(rèn)證。用戶注冊過程圖2為移動用戶第一次使用該移動P2P網(wǎng)絡(luò),向注冊服務(wù)器進(jìn)行注 冊的過程。假設(shè)用戶A向注冊服務(wù)器請求注冊,包括以下步驟a)用戶A發(fā)送注冊請求消息至注冊服務(wù)器,具體為E (PUeeg, [IDa | | PWa] ),IDa和PWa 分別為用戶向服務(wù)器提交的賬號和密碼;b)注冊服務(wù)器對注冊請求消息用自身私鑰進(jìn)行解密,得到該用戶的賬號IDa和密 碼PWA,具體為D(PRKEe,E(PUeeg, [IDaI |PffA]));注冊服務(wù)器再從整數(shù)域隨機(jī)選擇參數(shù)β A,作 為用戶密鑰,并計(jì)算秘密參數(shù)恿=h(ia \ \PWh) h{K\ I IDk);c)注冊服務(wù)器將包含參數(shù)<h (.),IDa, Na, h (PWa),β Α>的虛擬智能卡發(fā)放給用戶A ;d)注冊服務(wù)器將用戶A的身份信息,用認(rèn)證服務(wù)器的公鑰加密后發(fā)送給認(rèn)證服務(wù) 器,所述的用戶A的身份信息具體為E (PUAS,[βΑ| |IDA]),認(rèn)證服務(wù)器用自身私鑰解密后即 可獲得用戶A的身份信息;用戶A獲得注冊服務(wù)器返回的虛擬智能卡,將其保存到本地。注冊成功后,用戶A 可以通過所述的虛擬智能卡和所述的賬號和密碼登錄到移動P2P網(wǎng)絡(luò)中。用戶登錄認(rèn)證過程完成注冊后,用戶A需要登錄并通過認(rèn)證服務(wù)器的認(rèn)證才能 加入到所述的移動P2P網(wǎng)絡(luò)。用戶登錄認(rèn)證過程如圖3所示,包括如下步驟a)用戶輸入自己的賬號IDa和密碼PWa進(jìn)行登錄,移動終端利用本地存儲的虛擬 智能卡對密碼PWa進(jìn)行哈希運(yùn)算,得到h (PWa),;b)將用戶輸入的ID和計(jì)算得到的h(PWA)’,與保存在虛擬智能卡中的對應(yīng)參數(shù)進(jìn) 行比較。若兩者一致,則本地登錄成功;若兩者不一致,說明用戶輸入的104或?14有誤,本地登錄失??;c)用戶A隨機(jī)選擇整數(shù)uA < p,并計(jì)算公開參數(shù)α = g“A modp ;并計(jì)算登錄的動 態(tài)IDa(DIDa)、參數(shù)C和用戶標(biāo)示符UIDA,具體為/?/漢=M (II I戶船)I I T1),C
=h (DIDa// β ,/ZaJZT1),UIDa = IDa | | aA ;d)用戶將所述的UIDa、C和T1發(fā)送到服務(wù)器進(jìn)行認(rèn)證;e)認(rèn)證服務(wù)器在T’時(shí)間收到用戶的認(rèn)證請求和參數(shù)UIDa、C和T1,認(rèn)證服務(wù)器對 T1進(jìn)行驗(yàn)證,若Τ’ -T1S Δ T,繼續(xù)驗(yàn)證;若T’ -T1 > ΔΤ,則認(rèn)證失敗;所述的ΔΤ為時(shí)間 參數(shù),由Ρ2Ρ系統(tǒng)根據(jù)用戶和認(rèn)證服務(wù)器的時(shí)延進(jìn)行確定;f)認(rèn)證服務(wù)器從UID中得到ID和a,并查找與該用戶ID對應(yīng)的β,然后計(jì)算DID/ = h(h(K| |ida) | T1),C' =_da,11 βΑ a T1);g)認(rèn)證服務(wù)器驗(yàn)證C’和收到的C是否一致,若C’ = C,表明該用戶為合法用戶, 用戶通過認(rèn)證,若C’興C,則認(rèn)證失??;h)用戶通過身份認(rèn)證后,認(rèn)證服務(wù)器用私鑰PRas為用戶生成票據(jù),具體為TicketA =E (PRas, [IDa| a| |h(DIDA,) | T2 !Lifetime]),。其中 h (DID/ )為認(rèn)證服務(wù)器計(jì)算得到 的用戶DIDa的哈希值,T2為認(rèn)證服務(wù)器生成票據(jù)TicketA的時(shí)間,Lifetime為票據(jù)的生存 時(shí)間,T2與Lifetime用于確定票據(jù)的有效期,防止用戶使用過期的票據(jù);i)認(rèn)證服務(wù)器將票據(jù)TicketA發(fā)送給用戶。j)認(rèn)證服務(wù)器向系統(tǒng)發(fā)布用戶的身份標(biāo)識UIDa,其它用戶通過移動P2P網(wǎng)絡(luò)提供 的搜索和查詢協(xié)議發(fā)現(xiàn)該用戶并進(jìn)行服務(wù)請求。服務(wù)請求認(rèn)證過程假設(shè)用戶A向用戶B請求某一項(xiàng)服務(wù),需要進(jìn)行服務(wù)請求認(rèn) 證。用戶之間服務(wù)請求認(rèn)證的過程如圖4所示,包括如下步驟a)若用戶A需要獲取B提供的服務(wù),則其向移動P2P網(wǎng)絡(luò)發(fā)起查詢;b)用戶A找到符合要求的用戶B及其UIDb,用戶A從返回的UIDb中得到用戶B的 公開參數(shù)6 = mod^ ;c)用戶A向用戶B提出服務(wù)請求,并發(fā)送認(rèn)證信息<TicketA,UIDA>給用戶B,TicketA 為認(rèn)證服務(wù)器為用戶A發(fā)放的票據(jù),UIDa為用戶A此次登錄的用戶標(biāo)識,UIDa = IDa| |aA;d)用戶B使用認(rèn)證服務(wù)器的公鑰PUas解密TicketA,可得到 IDa| aA |h (DID/ ) | T2 !Lifetime,根據(jù) T2 和 Lifetime 檢查 TicketA 是否過期,若過期則 退出認(rèn)證過程,否則繼續(xù)認(rèn)證;e)用戶將解密后的IDa、aA和用戶A發(fā)送的UIDa進(jìn)行比較,若相同,則繼續(xù)認(rèn)證; 若不同,則認(rèn)為A的身份被假冒,退出認(rèn)證過程;f)用戶B從整數(shù)域中隨機(jī)選擇一個(gè)整數(shù)r,計(jì)算中間值re— = mod ρ,密鑰Kab =h(Temp r)和參數(shù) M = h(KAB r IDb);g)用戶B將<M,r>發(fā)送給用戶A ;h)用戶A收到用戶B的消息后,計(jì)算、,“((^ mod^)||r),M’ = h(v ι Irl |idb);i)用戶A比較M’和M,若Μ’ = M,則認(rèn)證了用戶B和Kab的真實(shí)性,繼續(xù)下一步驟; 否則退出認(rèn)證;Kab為用戶A和用戶B之間共享的對稱密鑰;
10
j)用戶A用對稱密鑰Kab對DIDa和N0nCeAB進(jìn)行加密,并發(fā)送Nonc^給用戶B, E (Kab, DIDa| NonceJ,其中Nonce^為用戶A隨機(jī)選擇的整數(shù);k)用戶B使用對稱密鑰Kab對用戶A發(fā)送的消息進(jìn)行解密并計(jì)算h(DIDa),與 TicketA中的h(DIDA’)進(jìn)行比較。若兩者一致,則認(rèn)為用戶A擁有正確的DIDA,且用戶A經(jīng) 過了認(rèn)證服務(wù)器的認(rèn)證,同時(shí)用戶B保存Nonc^,在B與A斷開連接后根據(jù)NonceAB可以進(jìn) 行步驟(4)中的快速重認(rèn)證若兩者不一致,則退出認(rèn)證;至此,用戶A和用戶B之間通過認(rèn)證,用戶B與用戶A建立連接,并為用戶A提供 所需的服務(wù)??焖僦卣J(rèn)證過程假設(shè)用戶A和用戶B已經(jīng)通過認(rèn)證,但由于某種原因用戶A與用 戶B暫時(shí)失去連接,在一定時(shí)間T。ff后向用戶B重新發(fā)起連接,用戶B對用戶A需重新認(rèn)證。 快速重認(rèn)證過程如圖5所示,包括以下步驟a)用戶A發(fā)送包含UIDa的重認(rèn)證請求給用戶B ;b)用戶B在本地查找是否存在與UIDa對應(yīng)的Kab和Nonc^ ;c)若用戶B未查找到與UIDa對應(yīng)的Kab和N0nCeAB,則說明用戶B之前并未對用戶 A進(jìn)行認(rèn)證,快速重認(rèn)證失??;若存在,則用戶B產(chǎn)生一個(gè)新的隨機(jī)數(shù)Nonce’ AB ;d)用戶 B 用 Kab 加密 Nonce' 發(fā)送給用戶 A,E(KAB,Nonce' AB);e)用戶A對消息進(jìn)行解密,得到Nonce'AB,計(jì)算并發(fā)送N = h (Nonce^ | | Nonce、) 給用戶B ;f)用戶B計(jì)算N’ = h(NonceAB | Nonce’ J ’,將N’與用戶A發(fā)送過來的N進(jìn)行比 較,若兩者不一致,則認(rèn)證失??;g)若兩者一致,則用戶A通過認(rèn)證,用戶A和用戶B將N0nCeAB更新為NonceJ ;。下面對本發(fā)明方法進(jìn)行簡單的安全分析。1)竊聽攻擊。登錄認(rèn)證中,用戶的DID沒有在信道中傳輸,因此不會被竊聽。服務(wù) 器可以驗(yàn)證DID來自與其對應(yīng)的合法用戶。服務(wù)請求認(rèn)證過程中,發(fā)送的消息用Kab加密, 而KAB = h(Temp| |r),惡意用戶只能竊聽到r,但是得不到Kffl。同樣,快速重認(rèn)證中,用戶之 間交互的消息都是用會話密鑰加密的,因此惡意用戶也無法竊聽。2)偽裝攻擊。在登錄認(rèn)證中,根據(jù)DID的計(jì)算公式二I/ ), 惡意用戶需要知道用戶的PW和N,才能偽裝成其它用戶。但是由于hash函數(shù)的單向性,惡 意用戶無法從用戶發(fā)送的DID中計(jì)算出原來的PW和N,因此也無法偽裝成合法用戶。在服 務(wù)請求認(rèn)證中,惡意用戶無法獲取正確的uA和DIDa,因此無法偽裝。在快速重認(rèn)證中,惡意 用戶無法獲取正確的Kab和NonceAB進(jìn)行應(yīng)答,因而不能偽裝成合法用戶。3)重放攻擊。本發(fā)明在登錄認(rèn)證過程中加入了時(shí)間戳,用于防止惡意用戶的重放 攻擊。假設(shè)惡意用戶重放合法用戶A的登錄認(rèn)證消息,UIDA、C和1\。認(rèn)證服務(wù)器在驗(yàn)證T1 時(shí)發(fā)現(xiàn)Τ’- \> Δ Τ,從而退出認(rèn)證過程,惡意用戶重放攻擊失敗。對于服務(wù)請求認(rèn)證過程, 用戶B隨機(jī)選擇參數(shù)r來計(jì)算密鑰Kab,每次Kab的值都不同,因此惡意用戶無法通過重放服 務(wù)請求認(rèn)證消息來通過認(rèn)證。4)中間人攻擊。本發(fā)明的服務(wù)請求認(rèn)證中Kab的計(jì)算類似于D-H密鑰交換,而D-H 密鑰交換協(xié)議容易受到中間人攻擊。但是本發(fā)明中用戶的公開參數(shù)a經(jīng)過認(rèn)證服務(wù)器的簽 名,惡意用戶無法改變a進(jìn)行中間人攻擊。
權(quán)利要求
移動P2P用戶身份認(rèn)證方法,其特征在于該方法包括以下步驟步驟(1)系統(tǒng)初始化和用戶注冊;在系統(tǒng)初始化階段,移動P2P網(wǎng)絡(luò)設(shè)置系統(tǒng)參數(shù),并將其中一部分系統(tǒng)參數(shù)公開,公開的系統(tǒng)參數(shù)包括大素?cái)?shù)p、大素?cái)?shù)p的本原根g,認(rèn)證服務(wù)器的公鑰PUAS和注冊服務(wù)器的公鑰PUREG;用戶注冊是指第一次使用移動P2P網(wǎng)絡(luò)的用戶,向注冊服務(wù)器提交自身賬號ID和密碼PW進(jìn)行注冊,通過賬號和密碼,用戶可以登錄到移動P2P網(wǎng)絡(luò)并獲取服務(wù);用戶注冊的具體步驟是a)用戶發(fā)送注冊請求消息至注冊服務(wù)器;注冊請求消息是用戶使用注冊服務(wù)器的公鑰PUREG對自身賬號ID和密碼PW進(jìn)行加密后的消息,加密算法為E(PUREG,[ID||PW]),其中E()是公鑰加密算法,“||”為比特連接符,用于將一個(gè)比特串連接到另一個(gè)比特串上;b)注冊服務(wù)器對注冊請求消息用自身私鑰進(jìn)行解密,得到該用戶的賬號ID和密碼PW,解密算法為D(PRREG,E(PUREG,[ID||PW])),其中D()為對應(yīng)于E()的公鑰解密算法;注冊服務(wù)器再從整數(shù)域中隨機(jī)選擇參數(shù)β作為用戶密鑰,并計(jì)算秘密參數(shù)其中K為注冊服務(wù)器的主密鑰,h(.)為單向哈希函數(shù),為異或運(yùn)算;注冊服務(wù)器將包含參數(shù)h(.)、ID、N、h(PW)和β的虛擬智能卡發(fā)放給提交注冊請求的用戶;c)注冊服務(wù)器將該用戶的身份信息用認(rèn)證服務(wù)器的公鑰加密后發(fā)送給認(rèn)證服務(wù)器,用戶的身份信息包括用戶的賬號ID和密鑰β,加密算法為E(PUAS,[β||ID]),認(rèn)證服務(wù)器用自身私鑰解密后即可獲得注冊用戶的身份信息;d)用戶獲得注冊服務(wù)器返回的虛擬智能卡,將其保存到移動終端;注冊成功后,用戶可以通過虛擬智能卡、賬號和密碼登錄到移動P2P網(wǎng)絡(luò)中;步驟(2)登錄認(rèn)證;登錄認(rèn)證是指用戶在存有虛擬智能卡的移動終端上通過輸入正確的賬號和密碼登錄到認(rèn)證服務(wù)器并進(jìn)行身份認(rèn)證;登錄認(rèn)證包括本地登錄和服務(wù)器驗(yàn)證;本地登錄是指移動終端在本地驗(yàn)證用戶輸入的賬號和密碼的正確性,本地登錄的具體方法是e)用戶輸入自己的賬號ID和密碼PW進(jìn)行登錄,移動終端利用本地存儲的虛擬智能卡對密碼PW進(jìn)行哈希運(yùn)算,得到h(PW)’;將用戶輸入的ID和計(jì)算得到的h(PW)’與保存在虛擬智能卡中的ID和h(PW)進(jìn)行比較;若用戶輸入的ID與保存在虛擬智能卡中的ID一致且計(jì)算得到的h(PW)’與保存在虛擬智能卡中的h(PW)一致,則本地登錄成功;若用戶輸入的ID與保存在虛擬智能卡中的ID不一致或計(jì)算得到的h(PW)’與保存在虛擬智能卡中的h(PW)不一致,說明用戶輸入的ID或PW有誤,本地登錄失??;本地登錄成功后,移動終端發(fā)送登錄認(rèn)證信息到認(rèn)證服務(wù)器進(jìn)行驗(yàn)證,服務(wù)器驗(yàn)證的具體方法是f)移動終端隨機(jī)選擇整數(shù)u,使得u<p;計(jì)算公開參數(shù)a,a=gu mod p;mod表示取模運(yùn)算;g)移動終端計(jì)算登錄的動態(tài)ID(DID)、驗(yàn)證參數(shù)C和用戶標(biāo)示符UID,具體為C=h(DID//β//a//T1),UID=ID||a;其中T1為用戶的本地時(shí)間戳,由于DID的生成依賴于本地時(shí)間戳,因此用戶每次登錄都會生成不同的DID,C為用于驗(yàn)證自身身份的驗(yàn)證參數(shù),用戶將UID、C和T1發(fā)送到認(rèn)證服務(wù)器;h)認(rèn)證服務(wù)器在T’時(shí)間收到用戶的認(rèn)證請求、UID、C和T1,認(rèn)證服務(wù)器對T1進(jìn)行驗(yàn)證,若T’ T1≤ΔT,繼續(xù)驗(yàn)證;若T’ T1>ΔT,則認(rèn)證失??;其中ΔT為時(shí)間參數(shù),由P2P系統(tǒng)根據(jù)用戶和認(rèn)證服務(wù)器的時(shí)延進(jìn)行確定;i)認(rèn)證服務(wù)器從UID中得到ID和a,并查找與該用戶ID對應(yīng)的β,然后計(jì)算DID’=h(h(K||ID)||T1),C’=h(DID’||β||a||T1),驗(yàn)證C’和收到的C是否一致,若C’=C,表明該用戶為合法用戶,用戶通過認(rèn)證,若C’≠C,則認(rèn)證失敗;j)用戶通過身份認(rèn)證后,認(rèn)證服務(wù)器用私鑰PRAS為用戶生成票據(jù)Ticket,具體為Ticket=E(PRAS,[ID||a||h(DID’)||T2||Lifetime]),并將票據(jù)Ticket發(fā)送給用戶;其中T2為認(rèn)證服務(wù)器生成票據(jù)Ticket的時(shí)間,Lifetime為票據(jù)的生存時(shí)間,T2與Lifetime用于確定票據(jù)的有效期,防止用戶使用過期的票據(jù);k)認(rèn)證服務(wù)器向P2P系統(tǒng)發(fā)布用戶的身份標(biāo)識符UID,其它用戶可通過移動P2P網(wǎng)絡(luò)提供的搜索和查詢協(xié)議發(fā)現(xiàn)該用戶并進(jìn)行服務(wù)請求;步驟(3)服務(wù)請求認(rèn)證;服務(wù)請求認(rèn)證是指通過登錄認(rèn)證的合法用戶,需要向移動P2P網(wǎng)絡(luò)中的其它用戶請求服務(wù)時(shí),用戶之間進(jìn)行的相互身份認(rèn)證;服務(wù)請求認(rèn)證的具體步驟是l)用戶A需要獲取B提供的服務(wù),則用戶A向移動P2P網(wǎng)絡(luò)發(fā)起查詢,找到符合要求的用戶B及其UIDB,用戶A從返回的UIDB中得到用戶B的公開參數(shù)b,m)用戶A向用戶B提出服務(wù)請求,并發(fā)送認(rèn)證信息TicketA和UIDA給用戶B,TicketA為認(rèn)證服務(wù)器為用戶A發(fā)放的票據(jù),UIDA為用戶A此次登錄的用戶標(biāo)識符,UIDA=IDA||aA;n)用戶B使用認(rèn)證服務(wù)器的公鑰PUAS解密TicketA,得到IDA||aA||h(DIDA’)||T2||Lifetime,根據(jù)T2和Lifetime檢查TicketA是否過期,若TicketA未過期,則將解密后的IDA、aA和用戶A發(fā)送的UIDA進(jìn)行比較,若解密后的IDA、aA與用戶A發(fā)送的UIDA中的IDA、aA相同,則繼續(xù)認(rèn)證;若解密后的IDA、aA與用戶A發(fā)送的UIDA中的IDA、aA不同,則認(rèn)為A的身份被假冒,直接退出認(rèn)證過程;o)用戶B從整數(shù)域中隨機(jī)選擇一個(gè)整數(shù)r,計(jì)算中間值對稱密鑰KAB=h(Temp||r)和參數(shù)M=h(KAB||r||IDB),并將M和r發(fā)送給用戶A;p)用戶A收到用戶B發(fā)送的M和r后,計(jì)算M’=h(KAB’||r||IDB),并與M進(jìn)行比較,若M’=M,則認(rèn)證了用戶B和KAB的真實(shí)性,繼續(xù)下一步驟;否則退出認(rèn)證;KAB為用戶A和用戶B之間共享的對稱密鑰;q)用戶A用對稱密鑰KAB對DIDA和NonceAB進(jìn)行加密,并發(fā)送NonceAB給用戶B,加密算法為E(KAB,DIDA||NonceAB),其中NonceAB為用戶A隨機(jī)選擇的整數(shù);r)用戶B使用對稱密鑰KAB對用戶A發(fā)送的消息進(jìn)行解密并計(jì)算h(DIDA),將計(jì)算得到的h(DIDA)與TicketA中的h(DIDA’)進(jìn)行比較,若計(jì)算得到的h(DIDA)與TicketA中的h(DIDA’)一致,則認(rèn)為用戶A擁有正確的DIDA,且用戶A經(jīng)過了認(rèn)證服務(wù)器的認(rèn)證,同時(shí)用戶B保存NonceAB,在B與A斷開連接后根據(jù)NonceAB進(jìn)行快速重認(rèn)證;若計(jì)算得到的h(DIDA)與TicketA中的h(DIDA’)不一致,則退出認(rèn)證;至此,用戶A和用戶B之間通過認(rèn)證;用戶B與用戶A建立連接,并為用戶A提供所需的服務(wù)。FSA00000207040200011.tif,FSA00000207040200012.tif,FSA00000207040200021.tif,FSA00000207040200031.tif,FSA00000207040200032.tif,FSA00000207040200033.tif
2.根據(jù)權(quán)利要求1所述的移動P2P用戶身份認(rèn)證方法,其特征在于所述的快速重認(rèn)證 的具體步驟是s)用戶A向用戶B提出重服務(wù)認(rèn)證請求,并發(fā)送認(rèn)證信息UIDa給用戶B ; t)用戶B在本地查找是否存在與UIDa對應(yīng)的Kab和Nonce^若不存在Kab和NonCeAB, 則說明用戶B之前并未對用戶A進(jìn)行認(rèn)證,快速重認(rèn)證失??;若存在Kab和NonCeAB,則用戶 B產(chǎn)生一個(gè)新的隨機(jī)數(shù)Nonce’ AB并用Kab加密NonceAB后發(fā)送給用戶A,加密算法為E (KAB, Nonce,AB);u)用戶A用Kab對消息進(jìn)行解密,得到Nonce ’ AB計(jì)算h (Nonce^ | | Nonce ’ AB)并將 h(NonceAB Nonce' AB)發(fā)送給用戶 B ;ν)用戶B根據(jù)本地保存的Nonc^,計(jì)算h(N0nCeAB| |Nonce' J ’,并與A發(fā)送的消息 進(jìn)行比較;若A發(fā)送的h(N0nCeAB| Nonce' 與!!(NonceJ Nonce' AB),一致,則用戶A通 過認(rèn)證,用戶A和用戶B將NonceAB更新為Nonce' AB ;若A發(fā)送的h (Nonce^ | | Nonce' 與 h(NonceJ |Nonce,AB),不一致,則認(rèn)證失敗。
全文摘要
本發(fā)明涉及一種移動P2P用戶身份認(rèn)證方法?,F(xiàn)有的方法計(jì)算量大、認(rèn)證復(fù)雜度高。本發(fā)明方法首先系統(tǒng)初始化和用戶注冊,包括設(shè)置系統(tǒng)參數(shù)、公開一部分系統(tǒng)參數(shù)和用戶向注冊服務(wù)器提交自身賬號和密碼進(jìn)行注冊。然后進(jìn)行登錄認(rèn)證,包括用戶輸入自己的賬號和密碼進(jìn)行登錄。最后是服務(wù)請求認(rèn)證,包括用戶向移動P2P網(wǎng)絡(luò)發(fā)起查詢,向另一用戶提出服務(wù)請求,另一用戶進(jìn)行驗(yàn)證,直至連接成功。本發(fā)明在認(rèn)證服務(wù)器對用戶身份認(rèn)證時(shí)采用虛擬智能卡和靜態(tài)密碼的雙因素認(rèn)證,有較高的安全性;用戶之間的認(rèn)證不需要服務(wù)器的參與,降低了認(rèn)證服務(wù)器的負(fù)擔(dān),也降低了移動終端的運(yùn)算量。
文檔編號H04L29/06GK101902476SQ20101023806
公開日2010年12月1日 申請日期2010年7月27日 優(yōu)先權(quán)日2010年7月27日
發(fā)明者謝磊, 譚云棧, 陳惠芳, 陳高翔 申請人:浙江大學(xué)