一種基於口令的遠程認證協議方法
2023-08-11 00:08:41
一種基於口令的遠程認證協議方法
【專利摘要】本發明涉及一種基於口令的遠程認證協議方法,其特徵在於:基於橢圓曲線密碼算法實現,包括如下步驟:步驟1:在系統初始化子協議中,用戶同伺服器協商好以後認證需要使用的橢圓曲線密碼系統參數;步驟2:新用戶UA通過用戶註冊子協議進行註冊,選擇身份標識和用戶口令PWA;步驟3:用戶UA希望登陸系統並進行會話密鑰協商時,首先輸入自己的身份標識IDA和用戶口令PWA;然後通過身份認證和密鑰協商子協議,與伺服器進行雙向認證並且協商在以後通信中使用的密鑰SK。
【專利說明】一種基於口令的遠程認證協議方法
【技術領域】
[0001]本發明涉及一種基於口令的遠程認證協議方法。
【背景技術】
[0002]在網絡應用中,身份認證對於保障網絡資源的安全性起著重要作用,因此尋找簡單有效、實用方便、費用低廉的認證協議是當前研究的重點內容。基於口令的身份認證協議由於數據運算簡單、部署成本低廉、安全可靠而成為近年來研究的熱點。然而,基於口令的身份認證協議仍然存在著安全隱患。因為用戶習慣上選擇使用簡單容易自己記憶的字符串作為口令,例如自己姓名字母的縮寫、生日數字的組合,身份證號碼的組合以及郵箱電話號碼等,這將直接導致這種方式的身份認證協議容易遭到典型的字典攻擊,這其中就包括包括離線口令猜測攻擊和在線口令猜測攻擊等。根據調查顯示,在使用英語的國家當中,有25%的用戶使用的口令是英文單詞,Morris Thompson發現窮舉搜索一部字典,可以在短短的5分鐘之內發現超過1/3的口令;1999年,中科院信息安全中心的Samsa進行了一項研究,他根據中國人姓氏和人名中經常出現的漢字,設計了一部專用的字典,用它窮舉搜索,發現了某伺服器中保存的將近1/2的用戶口令。事實表明,口令認證協議很容易遭受口令猜測攻擊(password guessing attack)。[0003]儘管基於口令的認證存在著如上所述的安全隱患,但這並不能阻止人們對它的青睞,由於其相對於生物特徵認證,口令認證機制擁有更小的數據量,更快的響應速度等優點,而且實現起來更容易,多數用戶能夠接受,因而口令認證機制目前仍然是系統網絡等各種需要認證的系統中主要採取的認證方式。
【發明內容】
[0004]本發明目的在於提供一種基於口令的遠程認證協議方法,能夠實現雙向認證,有效提高安全性。
[0005]實現本發明目的技術方案:
[0006]一種基於口令的遠程認證協議方法,其特徵在於:基於橢圓曲線密碼算法實現,包括如下步驟:
[0007]步驟1:在系統初始化子協議中,用戶同伺服器協商好以後認證需要使用的橢圓曲線密碼系統參數;
[0008]步驟2:新用戶Ua通過用戶註冊子協議進行註冊,選擇身份標識和用戶口令PWa ;
[0009]步驟3:用戶Ua希望登陸系統並進行會話密鑰協商時,首先輸入自己的身份標識IDa和用戶口令PWa ;,然後通過身份認證和密鑰協商子協議,與伺服器進行雙向認證並且協商在以後通信中使用的密鑰SK。
[0010]步驟2中,伺服器S收到新用戶Ua註冊提交的身份標識IDa和用戶口令PWa ;後,進行計算^(10」|ds) ? PWa,然後把數據(IDa,Wa)保存在伺服器的認證資料庫中,前述式中,ds表示伺服器的私鑰,h表示單向哈希函數。[0011]步驟3中,具體包括以下步驟,
[0012]步驟3.1:用戶Ua首先輸入自己的身份標識IDa和用戶口令PWa ;用戶自由選擇一個隨機數r1,r1∈Z*n,Z*n表示整數模n的剩餘類,然後進行運算R1=A.P,P表示群G的生成元,把消息<IDa,R1)發送給伺服器S ;
[0013]步驟3.2:伺服器S接收到上一步來自用戶Ua的消息<IDA,R1)後,根據自己的認證資料庫中存儲的數據對用戶IDa進行合法性檢驗;如果在資料庫中未找到該IDa,則伺服器S終止協議的進程;否則,伺服器S進行如下運算,
[0014]選擇隨機數r2, r2 e Z*n,計算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示伺服器的身份標識,最後由伺服器s把消息發送到用戶Ua;
[0015]步驟3.3:當用戶Ua接收到來上一步來自伺服器S的消息<R2,hi〉後,進行運算Ku^1.R2=IT1.r2.P,以及計算 h廣=h (S IDa R1 R2 T1.Ps I Ku),驗證 Ii1* 與收到來自伺服器的h是否保持一致,如果不一致,則用戶Ua終止進行協議進程;否則,用戶Ua計算h2=h(IDaI I S| Ir1.Ps I IKuI IPWa),然後將h2發送給伺服器S,並且用戶Ua計算一個密鑰SK=h(IDaI |s| Ir1I Ir2I Ir1-PsI IkuI |PWA);
[0016]步驟3.4:伺服器S從本地認證資料庫中提取步驟2中計算獲得的WA,並進行計算Wa ? h(IDA |ds)得到伺服器端計算得到的PW/,然後計算h(IDaI |S| R3 Ks |PW/),得到的計算結果與上一步中收到的h2進行對比驗證,看是否保持一致,如果不一致,則用戶Ua對伺服器的認證請求失敗,終止協議;否則,伺服器S認可用戶Ua的合法身份,並且伺服器S計算一個密鑰 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
[0017]用戶Ua可進行口令修改,包括以下步驟,
[0018]步驟4.1:用戶Ua和伺服器S首先執行密鑰SK ;
[0019]步驟4.2:假如上一步成功,則用戶Ua通過客戶端輸入新的口令PWAnew ;
[0020]步驟4.3:用戶Ua通過客戶端計算PWD=h (Ku | | SK) ? Pfftoew和[0021 ] ff=h (Ku I I SKI I PffAnew),並把消息〈PWD,ff> 發送至伺服器 S ;
[0022]步驟4.4:當伺服器S收到來自於用戶Ua的請求修改口令的消息〈PWD,W〉後,首先進行如下式子的計算,
[0023]PWahJ=PWD ? h(Ks |PffAnew),
[0024]然後對比驗證W是否等於h (Ks I I SK I I Pfftoe;),假如不相等,伺服器需要計算h3=h(SK| Ks I 「Refused」)並將消息〈「Refused」,h3>發送給用戶,拒絕更改口令;如果兩者相等,則進行計算h4=h (SKI I Ks I I "Accepted"),並將消息發送給用戶,允許其變更口令;最後伺服器將計算新的W/來替換原來的Wa並保存到認證資料庫,其中 Wa* 的計算式為 ffA*=h (IDa I I ds) ? Pfftoe;;
[0025]步驟4.5:如果用戶Ua收到消息〈「Refused」 , h3>,並且經驗證h3等於h(SK| |Kj I 「Refused」),則可以確定是伺服器S發送的消息拒絕更改口令;而如果收到消息〈「Accepted」, h4>,並且經過驗證h4等於h (SKI KuI 「Accepted」),貝U用戶Ua可以確定是伺服器S發送的消息接收了變更口令請求。
[0026]本發明具有的有益效果:
[0027]本發明可以抵抗重放攻擊。本發明是一種三消息挑戰-響應模式的認證協議,只有合法用戶才能正確的應答挑戰信息R2,同時也只有合法的伺服器才能正確的響應新鮮值R1,所以本發明能夠有效的抵禦重放攻擊。
[0028]本發明可以抵抗離線口令猜測攻擊。本發明能夠有效地抵抗離線口令猜測攻擊,假設以下兩種情形:
[0029]I)假設攻擊者捕獲了 Wa,但是由於其無法或者伺服器的私鑰ds,所以無法進行離線口令猜測攻擊;
[0030]2)攻擊者不能夠從h2發動離線口令猜測攻擊,這是因為假如攻擊者要計算h2,則必須同時計算出Ku或者Ks,而計算Ku或者Ks則需要根據R1, R2來計算,這又歸結為橢圓曲線計算Diffie-Hellman問題。
[0031 ] 本發明能夠抵抗身份冒充攻擊。攻擊者在不知道PW的情況下,是不能構造出正確的第3條回應消息的,所以攻擊者就無法冒充用戶身份。同時,攻擊者也無法正確的通過計算得出ds -R1和回應消息,因為如果要構造該值,則需要知道A或者ds,而假如通過R1來計算得到^或者通過Ps計算得到ds都將面臨橢圓曲線離散對數難題。
[0032]本發明能夠提供雙向認證。從上面的認證和密鑰協商過程可以清楚的看到,本協議提供了雙向認證。第2條響應消息只有擁有合法身份的伺服器才能構造出來;而第3條響應消息只有除了伺服器之外的合法用戶才能構造出來。所以該認證協議提供了雙向認證。
[0033]本發明能夠提供前向安全性。本發明是基於橢圓曲線Diffie-Hellman機制,攻擊者如果強行從R1和R2來計算SK將面臨橢圓曲線離散對數難題,從而提供了前向安全性。
【專利附圖】
【附圖說明】
[0034]圖1為用戶註冊流程圖;
[0035]圖2為認證和密鑰協商流程圖;
[0036]圖3為口令修改流程圖。
【具體實施方式】
[0037]本發明基於橢圓曲線密碼算法實現,在系統初始化子協議中,用戶同伺服器協商好以後認證需要使用的橢圓曲線密碼系統參數;
[0038](一)用戶註冊子協議:
[0039]在註冊初始時,由用戶Ua自己選擇身份標識和用戶口令PWa,然後通過安全方式提交給伺服器S ;
[0040]伺服器S收到新用戶Ua註冊提交的身份標識IDa和用戶口令PWa ;後,進行計算WA=h(IDA |ds) ? PWa,然後把數據(IDa,Wa)保存在伺服器的認證資料庫中,前述式中,屯表示伺服器的私鑰,h表示單向哈希函數。
[0041 ] (二)認證和密鑰協商子協議:
[0042]I)用戶Ua首先輸入自己的身份標識IDa和用戶口令PWa ;用戶自由選擇一個隨機數r1,r1 ∈ Z*n,Z*n表示整數模η的剩餘類,然後進行運算R1=F1* P,P表示群G的生成元,把消息<IDa,R1)發送給伺服器S ;
[0043]2)伺服器S接收到上一步來自用戶Ua的消息<IDa,RA後,根據自己的認證資料庫中存儲的數據對用戶IDa進行合法性檢驗;如果在資料庫中未找到該IDa,則伺服器S終止協議的進程;否則,伺服器S進行如下運算,
[0044]選擇隨機數r2, r2 e Z*n,計算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示伺服器的身份標識,最後由伺服器s把消息發送到用戶Ua;
[0045]3)當用戶Ua接收到來上一步來自伺服器S的消息<R2,hi〉後,進行運算Ku^1.R2=IT1.r2.P,以及計算h廣=h (S IDa R1 R2 T1.Ps Ku),驗證Ii1*與收到來自伺服器的Ii1是否保持一致,如果不一致,則用戶Ua終止進行協議進程;如果一致,那麼伺服器是合法的,通過用戶的認證。在這裡的依據是,只有合法的伺服器才能給出正確的R3,接下來用戶Ua計算h2=h (IDa I I S I I ι -Ps I I Ku I IPWA),然後將h2發送給伺服器S,並且用戶Ua計算一個密鑰 SK=h(iDA| |s| R1IIR2 Ir1-Ps IkuI |pwa);
[0046]4)伺服器S從本地認證資料庫中提取步驟2中計算獲得的Wa,並進行計算Wa ? h(IDA |ds)得到伺服器端計算得到的PW/,然後計算h(IDaI |S| R3 Ks |PW/),得到的計算結果與上一步中收到的h2進行對比驗證,看是否保持一致,如果不一致,則用戶Ua對伺服器的認證請求失敗,終止協議;否則,伺服器S認可用戶Ua的合法身份,並且伺服器S計算一個密鑰 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
[0047]通過以上步驟,用戶和伺服器之間完成了認證,這種認證是雙向的,保證了用戶和伺服器雙方的合法身份,並且協商好共同的密鑰SK。
[0048](三)口令修改子協議:
[0049]用戶Ua可進行口令修改,包括以下步驟,
[0050]I)用戶Ua和伺服器S首先執行會話密鑰SK ;
[0051]2)假如上一步成功,則用戶Ua通過客戶端輸入新的口令PWitew ;
[0052]3 )用戶Ua通過客戶端計算PWD=h (Ku | | SK) ? PffAnew和
[0053]ff=h (Ku I I SKI I PWAnew),並把消息〈PWD,ff> 發送至伺服器 S ;
[0054]4)當伺服器S收到來自於用戶Ua的請求修改口令的消息〈PWD,W〉後,首先進行如下式子的計算,
[0055]PU=PWD ? h(Ks |PffAnew),
[0056]然後對比驗證w是否等於h(Ks| sk| Ipwam;),假如不相等,伺服器需要計算h3=h(SK| Ks I 「Refused」)並將消息〈「Refused」,h3>發送給用戶,拒絕更改口令;如果兩者相等,則進行計算h4=h (SKI I Ks I I "Accepted"),並將消息發送給用戶,允許其變更口令;最後伺服器將計算新的W/來替換原來的Wa並保存到認證資料庫,其中 Wa* 的計算式為 ffA*=h (IDa I I ds) ? Pfftoe;;
[0057]5)如果用戶Ua收到消息〈「Refused」,h3>,並且經驗證h3等於h(SK| |Kj I 「Refused」),則可以確定是伺服器S發送的消息拒絕更改口令;而如果收到消息〈「Accepted」, h4>,並且經過驗證h4等於h (SKI KuI 「Accepted」),貝U用戶Ua可以確定是伺服器S發送的消息接收了變更口令請求。
【權利要求】
1.一種基於口令的遠程認證協議方法,其特徵在於:基於橢圓曲線密碼算法實現,包括如下步驟: 步驟1:在系統初始化子協議中,用戶同伺服器協商好以後認證需要使用的橢圓曲線密碼系統參數; 步驟2:新用戶Ua通過用戶註冊子協議進行註冊,選擇身份標識和用戶口令PWa ; 步驟3:用戶Ua希望登陸系統並進行會話密鑰協商時,首先輸入自己的身份標識IDa和用戶口令PWa ;,然後通過身份認證和密鑰協商子協議,與伺服器進行雙向認證並且協商在以後通信中使用的密鑰SK。
2.根據權利要求1所述的基於口令的遠程認證協議方法,其特徵在於:步驟2中,伺服器S收到新用戶Ua註冊提交的身份標識IDa和用戶口令PWa ;後,進行計算WA=h(IDA |ds) ? PWa,然後把數據(IDa,Wa)保存在伺服器的認證資料庫中,前述式中,屯表示伺服器的私鑰,h表示單向哈希函數。
3.根據權利要求2所述的基於口令的遠程認證協議方法,其特徵在於:步驟3中,具體包括以下步驟, 步驟3.1:用戶Ua首先輸入自己的身份標識IDa和用戶口令PWa ;用戶自由選擇一個隨機數ri,ri e Z\,Z\表示整數模η的剩餘類,然後進行運算R1=F1* P,P表示群G的生成元,把消息<IDa,R1)發送給伺服器S ; 步驟3.2:伺服器S接收 到上一步來自用戶Ua的消息<IDa,R1)後,根據自己的認證資料庫中存儲的數據對用戶IDa進行合法性檢驗;如果在資料庫中未找到該IDa,則伺服器S終止協議的進程;否則,伺服器S進行如下運算, 選擇隨機數 r2, r2 e Z*n,計算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示伺服器的身份標識,最後由伺服器s把消息發送到用戶Ua; 步驟3.3:當用戶Ua接收到來上一步來自伺服器S的消息<R2,hi〉後,進行運算Ku^1.R2=IT1.r2.P,以及計算 h廣=h (S IDa R1 R2 T1.Ps I Ku),驗證 Ii1* 與收到來自伺服器的h是否保持一致,如果不一致,則用戶Ua終止進行協議進程;否則,用戶Ua計算h2=h(IDaI I S| Ir1.Ps I IKuI IPWa),然後將h2發送給伺服器S,並且用戶Ua計算一個密鑰SK=h(IDaI |s| Ir1I Ir2I Ir1-PsI IkuI |PWA); 步驟3.4:伺服器S從本地認證資料庫中提取步驟2中計算獲得的WA,並進行計算Wa ? h(IDA |ds)得到伺服器端計算得到的PW/,然後計算h(IDaI |S| R3 Ks |PW/),得到的計算結果與上一步中收到的h2進行對比驗證,看是否保持一致,如果不一致,則用戶Ua對伺服器的認證請求失敗,終止協議;否則,伺服器S認可用戶Ua的合法身份,並且伺服器S計算一個密鑰 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
4.根據權利要求3所述的基於口令的遠程認證協議方法,其特徵在於:用戶Ua可進行口令修改,包括以下步驟, 步驟4.1:用戶Ua和伺服器S首先執行密鑰SK ; 步驟4.2:假如上一步成功,則用戶Ua通過客戶端輸入新的口令PWamw ; 步驟4.3:用戶Ua通過客戶端計算PWD=h (Ku I I SK) ? Pfftoew和 W=h (Ku I I SKI I Pfftoew),並把消息〈PWD,W〉發送至伺服器S ;步驟4.4:當伺服器S收到來自於用戶Ua的請求修改口令的消息〈PWD,W〉後,首先進行如下式子的計算,
PffAne;=PWD ? h(Ks I PWaiiJ , 然後對比驗證W是否等於h(Ks| SKl Ipwam/),假如不相等,伺服器需要計算h3=h(SK| Ks I 「Refused」)並將消息〈「Refused」,h3>發送給用戶,拒絕更改口令;如果兩者相等,則進行計算h4=h (SKI I Ks I I "Accepted"),並將消息發送給用戶,允許其變更口令;最後伺服器將計算新的W/來替換原來的Wa並保存到認證資料庫,其中 Wa* 的計算式為 ffA*=h (IDa I I ds) ? Pfftoe;; 步驟4.5:如果用戶Ua收到消息〈「Refused」 , h3>,並且經驗證h3等於h(SK| |Kj I 「Refused」),則可以確定是伺服器S發送的消息拒絕更改口令;而如果收到消息〈「Accepted」, h4>,並且經過驗證h4等於h (SKI KuI 「Accepted」),貝U用戶Ua可以確定是伺服器S發送的消 息接收了變更口令請求。
【文檔編號】H04L9/32GK103905437SQ201410108353
【公開日】2014年7月2日 申請日期:2014年3月22日 優先權日:2014年3月22日
【發明者】馬春光, 付韜, 崔振山, 苗俊峰 申請人:哈爾濱工程大學