




摘? 要:通過采用一種基于密碼的匿名驗證系統,探討了在匿名驗證系統中針對第三方攻擊者的用戶匿名性的有效性。首先,在驗證系統方案中展示了第三方攻擊者可以指定哪個用戶實際向服務器發送了訪問請求,第三方攻擊者可以根據此次攻擊來鏈接到同一用戶稍后發送的不同登錄請求。其次,給出了一種有效的對抗這種攻擊的方法,該方法因不需要存儲用戶的密碼保護憑證,能更有效地保證用戶訪問的匿名性。
關鍵詞:用戶匿名;密碼;用戶驗證;密碼憑證
中圖分類號:TP309.7? ? ? ? ? ?文獻標識碼:A文章編號:2096-4706(2022)02-0107-04
Abstract: By adopting an anonymous authentication system based on password, this paper discusses the effectiveness of user anonymity against third-party attackers in the anonymous authentication system. Firstly, the authentication system scheme shows that the third-party attacker can specify which user actually sent an access request to the server. The third-party attacker can link to different login requests sent by the same user later according to this attack. Secondly, an effective method against this attack is given. This method can more effectively ensure the anonymity of user access because it does not need to store the user’s password protection credentials.
Keywords: user anonymity; password; user authentication; password credential
0? 引? 言
匿名身份驗證是確認用戶訪問網頁或其他服務的權限的過程,可以允許用戶登錄到系統而不暴露其實際身份[1]。目前基于密碼的匿名驗證是應用較為廣泛的一種用戶驗證技術,其主要作用是提供基于密碼的匿名性和用戶的匿名性[2]。截至目前已經出現幾種方案[3-5],這些方案的潛在應用包括企業保密人員訪問、對特殊人員進行問卷調查、匿名咨詢等。
在文獻[6]中,作者等人提出了一種基于密碼的匿名認證方案,該方案通過以密碼為保護的憑證為人員的訪問提供匿名性。該方案是基于Camenisch群簽名[7]和Paillier加密算法[8]構造的,前者用于實例化用戶的認證證書,后者用于服務器的同態加密。認證證書的某些元素(即用戶身份上的簽名)是用用戶密碼加密的,而其他元素是用服務器的公鑰(同態)加密的。為了提高效率,作者等人提出了另一個基于密碼的匿名認證方案[9],該方案是基于BBS+SIG-Nature[10]的一種新型方案。為方便論證,以下我們對此方案取名為RT1001。方案中使用新的簽名與加密技術代替了Camenisch群簽名[7]和Paillier加密算法[8],同時通過Knowl-Edge協議的零知識證明來限制簽名對服務器的驗證能力。
在本文中,我們主要討論了RT1001方案對被動/主動第三方攻擊者的用戶匿名性。首先,在第三章中我們展示了在RT1001方案中,第三方攻擊者可以指定哪個用戶實際向服務器發送了登錄請求。此攻擊還包括攻擊者可以將同一用戶稍后發送的不同登錄請求鏈接起來。從攻擊中可以清楚地看出,RT1001方案不提供針對第三方攻擊者的用戶匿名性。在第四章中,我們針對第三方攻擊給出了有效的對策。在第五章中,通過驗證證明對策中由于不需要任何安全措施來存儲用戶受密碼保護的憑據,以此能有效地保證用戶訪問的匿名性。
1? 知識準備
1.1? 符號注釋
a∈RS表示a是從S中隨機選擇的,設G1,G2,GT是素數q的循環群,設g是G1的生成元,h是G2的生成元。雙線性映射e:G1×G2→GT具有以下性質:
(1)雙線性:?u∈G1,v∈G2和x,y∈RZq,e(ux,vy)=e(u,v)xy
(2)非退化性:e(g,h)≠1
1.2? BBS+簽名
BBS+簽名是一種簽名方案,具有在提交值上發布簽名和在提交值上證明簽名零知識的有效協議。BBS+簽名方案的公鑰為(W=hχ,h∈G2,a,b,d∈G1),私鑰是(χ∈Zq)。在消息m上簽名的BBS+簽名定義為(M,k,s),其中k,s∈RZq,M=(am · bs · d)1/(k+χ)∈G1。
BBS+簽名(M,k,s,m)相對于公鑰被驗證為e(M,W · hk)=e(a,h)M · e(b,h)s · e(d,h)。該驗證可以在用于表示擁有簽名的知識協議的零知識證明中進行。
2? RT1001方案
2.1? R-BBS簽名
作為RT1001方案的主要組成部分,R-BBS簽名是BBS+簽名的一個普遍版本。為便于區分,以下R-BBS簽名由ΠR-BBS表示。
證明人代替BBS+簽名的(M,k,s),擁有(M,k,γ,e(B,h)),其中M=(au · bs · d)1/(k+χ),u是用戶恒等式,r∈RZq,γ=r-1,并且B=br · s,如下:
設g0,g1∈G1可以是預定義的參數。首先是校準器選擇α,ru,rk,rγ,rα,r∈RZq,然后計算Cmt(ΠR-BBS)={T1,T2,R1,R2,R3},如下:
校準器發送Cmt(ΠR-BBS)發送給驗證者,驗證人發送質詢c∈RZq。在收到質詢后校準器計算Res(ΠR-BBS)={su,sγ,sk,sα,s}如下:su=ru+c×u,sγ=rγ+c×γ,sk=rk+c×k,sα=rα+c×α,s=r+c ·,其中=α · k。校準器發送Res(ΠR-BBS)提交給驗證者,驗證者接受以下內容保持不變,如下:
根據文獻[9],上述R-BBS簽名是一個數組(M,k,γ,u)服從e(M,W · hk)=e(a,h)u · e(B,h)γ · e(d,h)知識的零知識證明。
2.2? 基本方案部署
這里,我們描述了RT1001方案的一個基本方案。基本方案由系統設置、注冊登記和認證協議組成。
2.2.1? 系統設置
為了設置系統參數,服務器執行以下操作:
(1)將BBS+信號的公鑰設置為(W=hχ,h∈G2,a,b,d∈G1),將私鑰設置為(χ∈Zq);
(2)將g,g0,G1∈G1作為公共參數;
(3)為ElGamal加密選擇公鑰/私鑰對,并對其進行加解密分別用E( · )和D( · )表示;
(4)選擇一個哈希函數H:{0,1}*→{0,1}k0和MAC:{0,1}k1×G12→{0,1}k1,其中k0,k1是適當的數字。
2.2.2? 注冊登記
在基本方案中,所有用戶都需要提前向服務器注冊,每個用戶都獲得一個身份驗證憑證。服務器向每個用戶ui發放一個憑證,這是一個在用戶標識ui上簽名的BBS+簽名(Mi,ki,si)。用戶將密碼保護的憑證Ci放入他/她的首選存儲目錄,例如,硬盤、手機、U盤或公共設施/目錄。
2.2.3? 認證協議流程
假設用戶ui具有受密碼保護的憑據Ci=<ui,[Mi,ki]pwi,E(si)>在登錄時可用。下面是用戶ui和服務器之間的身份驗證協議流程。
Step1:用戶ui執行以下操作
(1)用戶使用他/她的密碼pwi從[Mi,ki]pwi恢復(Mi,ki);
(2)用戶選擇r∈RZq,并通過計算s*=E(r)· E(si)隨機化E(si);
(3)用戶選擇x∈RZq并計算X=gx;
(4)用戶選擇NA∈R{0,1}k1并計算=E(NA);
(5)用戶使用R-BBS信號(Mi,ki,γ=r-1(modq),ui)計算Cmt(ΠR-BBS);最后,用戶向服務器發送s*,X,,Cmt(ΠR-BBS)作為登錄請求。
Step2:在收到登錄請求后,服務器執行以下操作
(1)服務器計算r · si=D(s*),由于ElGamal的乘法同態性質,B=br · si;
(2)服務器選擇y∈RZq并計算Y=gy;
(3)服務器計算NA=D()及V=MAC(NA,Y,X);
(4)服務器選擇NB∈RZq,并將NB、Y、V發送回用戶。
Step3:用戶ui執行以下操作
(1)用戶驗證V,如果無效則中止;
(2)以NB為例進行質詢,用戶計算并發送Res(ΠR-BBS)到服務器;
(3)用戶通過合成共享密鑰sk=H(NA,NB,Y x)來結束協議。
Step4:服務器在驗證Res(ΠR-BBS)后計算sk=H(NA,NB,Xy)。
注意:Step1中的Cmt(ΠR-BBS)可以由用戶ui計算,用戶ui不知道r · si,因為用戶將e(B,h)作為Eq.(1)。在上面,用戶ui通過顯示擁有正確的憑證向服務器授權,而服務器的身份驗證依賴于ElGamal加密。
3? 第三方攻擊者的用戶匿名性驗證
在文獻[9]中,作者等人聲稱,RT1001方案支持針對服務器的不可鏈接性,服務器并不俱怕外部攻擊,因為服務器不能鏈接同一個用戶進行的不同登錄。在本節中,我們將展示第三方攻擊者可以指定是哪個用戶發送了登錄請求。實際上,這足以讓第三方攻擊者鏈接同一用戶發送的不同登錄請求。
3.1? 第三方攻擊者的可鏈接性
為了清楚起見,假設只有兩個用戶u1和u2的密碼保護憑據(C1=<u1,[M1,k1]pw1,E(s1)>對于用戶u1和C2=<u2,[M2,k2] pw2,E(s2)>對于用戶u2)委托給公共目錄。
Step1:用戶u1執行以下操作
(1)用戶u1用他/她的密碼pw1從[M1,k1]pw1恢復(M1,k1);
(2)用戶u1選擇r∈RZq,并通過計算s*=E(r)· E(s1)· E(t)隨機化E(s1)· E(t);
(3)~(4)與第2.2.3節的Step1步驟相同;
(5)用戶u1使用(M1,k1,γ=r-1,u1)上的R-BBS簽名計算Cmt(ΠR-BBS)={T1,T2,R1,R2,R3},最后,用戶u1向服務器發送s*,X,,Cmt(ΠR-BBS)作為登錄請求。
Step2:在收到登錄請求后,服務器執行以下操作:
(1)由于El-Gamal的乘法同態性質,服務器計算r · s1 · t=D(s*)和B′=br · s1 · t;
(2)~(4)這些操作與第2.2.3節的Step2步驟相同。
Step3:用戶u1執行以下操作
(1)這些操作與第2.2.3節的Step3步驟相同;
(2)通過將NB作為挑戰(即c=NB),用戶u1計算Res(ΠR-BBS)={su,sγ,sk,sα,s}如下:su=ru+c · u1,sγ=rγ+c · γ,sk=rk+c · k1,sα=rα+c · α,s=r+c · ,其中=α · k1,然后向服務器發送Res(ΠR-BBS);
(3)用戶通過合成共享密鑰sk=H(NA,NB,Yx)來結束協議。
Step4:這些操作與第2.2.3節的Step4步驟相同。
如果服務器在以上Step4步驟中中止協議(即,Res(ΠR-BBS)無效),攻擊者就會知道剛剛發送登錄請求的用戶是用戶u1。因此,攻擊者就能得出的結論:剛剛發送登錄請求的用戶是用戶u1。以上Step4步驟中Res(ΠR-BBS)的無效性可以從以下不相等性中很容易地檢查出來,如下:
注:假設攻擊者用隨機值t替換[M1,k1]pw1。在用他/她的傳遞字pw1解密t之后,用戶u1得到一對(M1′,k1′)。如果用戶可以檢查M1′?G1或k1′?Zq的格式,用戶u1可以注意到t不是正確的t并中止身份驗證原型。在這種情況下,攻擊者無法破壞用戶匿名性。在上述攻擊中,為了保持各數值格式的一致性,攻擊者僅利用E( · )的同態性將s1的密文隨機化為E(s1)· E(t)。此攻擊有1%的概率可以成功,并且用戶u1不能注意到E(s1)的變化,因為受密碼保護的憑證不需要任何安全的存儲設施,并且E(s1)和E(s1)· E(t)同時具有相同的格式。
3.2? 用戶鏈接性分析
從以上可以看出,第三方攻擊者只需將密碼保護憑證C1替換為C1′后,竊聽用戶與服務器之間的通信,就可以以1%的概率指定用戶u1和u2。此攻擊表示攻擊者可以鏈接用戶u1稍后發送的不同登錄請求。處于第三方攻擊過程中,有可能是用戶無法檢查E(s1)的完整性,同時服務器無法從隨機化的s*中恢復s1。以上攻擊同樣適用于RT1001方案中的多用戶ui(i>2)。例如,如果|ui|=8,并且用戶執行2.2.3的身份驗證協議時,第三方攻擊者連續重復3次攻擊后,可以以1%的概率指定用戶。
從上面可以看出,RT1001方案無法提供針對第三方攻擊者的用戶匿名性。
4? 本文提出的應對方案
第三方攻擊者發起的可鏈接性攻擊,如果使用保持完整性的便攜設備或公共目錄來存儲用戶受密碼保護的憑據,第三方攻擊者可以輕易發起可鏈接性攻擊。在這一節中,我們將給出一個簡單有效的對抗攻擊的對策:不需要任何安全性的用于存儲用戶受密碼保護的憑據。
4.1? 系統設置
為了設置系統參數,服務器執行以下操作:
(1)將BBS+信號的公鑰設置為(W=hχ,h∈G2,a,b,d∈G1),將私鑰設置為(χ∈Zq);
(2)將g,g0,G1∈G1作為公共參數;
(3)為ElGamal加密選擇公鑰/私鑰對,并對其進行加解密分別用E( · )和D( · )表示;
(4)選擇一個哈希函數H:{0,1}*→{0,1}k0和MAC:{0,1}k1×→{0,1}k1,其中k0,k1是適當的數字。
4.2? 注冊登記
所有用戶都需要提前向服務器注冊,每個用戶都獲得一個身份驗證憑證。服務器向每個用戶ui發放一個憑證,這是一個在用戶標識ui上簽名的BBS+簽名(Mi,ki,si)。用戶將密碼保護的憑證Ci放入他/她的首選存儲目錄,例如,硬盤、手機、U盤或公共設施/目錄,服務器在本地存儲所有用戶ui的密碼保護憑據為{Ci}i。
4.3? 認證協議
假設用戶ui在登錄時具有受密碼保護的憑據Ci=<ui,[Mi,ki]pwi,E(si)>。下面是用戶ui和服務器之間的身份驗證協議。
Step1:用戶ui執行以下操作
(1)用戶使用他/她的密碼pwi從[Mi,ki]pwi恢復(Mi,ki);
(2)用戶選擇r∈RZq,并通過計算s*=E(r)· E(si)隨機化E(si);
(3)用戶選擇x∈RZq并計算X=gx;
(4)用戶選擇NA∈R{0,1}k1并計算=E(NA);
(5)用戶使用R-BBS信號(Mi,ki,γ=r-1(modq),ui)計算Cmt(ΠR-BBS);最后,用戶向服務器發送s*,X,,Cmt(ΠR-BBS)作為登錄請求。
Step2:在收到登錄請求后,服務器執行以下操作
(1)服務器計算r · si=D(s*),由于ElGamal的乘法同態性質,B=br · si;
(2)服務器選擇y∈RZq并計算Y=gy;
(3)服務器計算NA=D()及V=MAC(NA,Y,X);
(4)服務器選擇NB∈RZq,并將NB、Y、V發送回用戶;
(5)服務器計算NA=D()和V=MAC(NA,Y,X,{Ci}i)其中{Ci}i是本地存儲的密碼保護憑據(針對所有用戶)。
Step3:用戶ui執行以下操作
(1)用戶驗證V,如果無效則中止;
(2)以NB為例進行質詢,用戶計算并發送Res(ΠR-BBS)到服務器;
(3)用戶通過合成共享密鑰s=H(NA,NB,Yx)來結束協議。
Step4:服務器在驗證Res(ΠR-BBS)后計算s=H(NA,NB,Xy)。
5? 方案驗證
同樣,我們假設兩個用戶u1和u2的密碼保護憑據(C1 =<u1,[M1,k1]pw1,E(s1)>對于用戶u1和C2=<u2,[M2,k2]pw2,E(s2)>對于用戶u2)委托給公共目錄。
首先,攻擊者選擇t∈RZq,計算E(t),然后用C1′=<u1,[M1,k1]pw1,E(s1)· E(t)>替換C1=<u1,[M1,k1]pw1,E(s1)>。下面是服務器和用戶u1之間的身份驗證協議,用戶u1具有C1′=<u1,[M1,k1]pw1,E(s1)· E(t)>。在身份驗證協議中,第三方攻擊者只是在用戶u1和服務器之間竊聽通信。當然,攻擊者不知道哪個用戶即將在此協議中執行。
5.1? 驗證步驟
Step1:用戶u1執行以下操作
(1)用戶u1用他/她的密碼pw1從[M1,k1] pw1恢復(M1,k1);
(2)用戶u1選擇r∈RZq,并通過計算s*=E(r)· E(s1)· E(t)隨機化E(s1)· E(t);
(3)用戶u1選擇x∈RZq,計算X=gx;
(4)用戶u1選擇NA∈R{0,1}k1,計算=E(NA);
(5)用戶u1使用(M1,k1,γ=r-1,u1)上的R-BBS簽名計算Cmt(ΠR-BBS)={T1,T2,R1,R2,R3},如下:
最后,用戶u1向服務器發送s*,X,,Cmt(ΠR-BBS)作為登錄請求。
Step2:在收到登錄請求后,服務器執行以下操作:
(1)由于El-Gamal的乘法同態性質,服務器計算r · s1 · t=D(s*)和B′=br · s1 · t;
(2)服務器選擇y∈RZq并計算Y=gy;
(3)服務器計算NA=D()和V=MAC(NA,Y,X,{Ci}i)其中{Ci}i是本地存儲的密碼保護憑據(針對所有用戶)。
(4)服務器選擇NB∈RZq,并將NB、Y、V發送回用戶。
Step3:用戶u1執行以下操作
(1)用戶驗證V,如果無效則中止;
(2)以NB為例進行質詢,用戶計算并發送Res(ΠR-BBS)到服務器;
(3)用戶通過合成共享密鑰sk=H(NA,NB,Yx)來結束協議。
Step4:服務器在驗證Res(ΠR-BBS)后計算sk=H(NA,NB,Xy)。
5.2? 用戶匿名的安全性分析
在以上Step2通過對MAC地址使用“用于任意長度消息的安全CBC-MAC”或HMAC,可以獲得其大小與消息大小無關的固定長度標記V。用戶ui可以通過驗證V來檢查{Ci}i(包括E(si))的完整性。如果第三方攻擊者對密碼保護憑據{Ci}i添加任何修改,則用戶ui中止協議。由于V的無效性(即V≠MAC(NA,Y,X,{Ci}i′)不向服務器發送Res(ΠR-BBS),因此攻擊者無法在的攻擊中指定用戶ui。
6? 結? 論
雖然上述對策對第三方攻擊者發出的可鏈接性攻擊是有效的,但在用戶數量大時并不實用。這就是為什么每個用戶必須下載所有受密碼保護的憑據{Ci}i(如果它們被委托給一個公共目錄),或者必須在本地存儲所有{Ci}i(如果它們被委托給一個用戶的便攜式設備)以便驗證V。因此,使RT1001方案安全和有效(即獨立于用戶的數量)將是一項具有挑戰性的任務。
參考文獻:
[1] 羅遠哲,劉瑞景,孟小鈺,等.一種匿名認證方法及系統:CN112364331A [P].2021-02-12.
[2] 阮鷗,王子豪,張明武.一種高效的匿名口令認證密鑰交換協議 [J].中南民族大學學報(自然科學版),2018,37(2):109-113+127.
[3] 胡如會,張起榮,賀道德.基于雙線性映射直接匿名認證方案的改進 [J].科學技術與工程,2018,18(3):4.
[4] 王震,范佳,成林,等.可監管匿名認證方案 [J].軟件學報,2019,030(006):1705-1720.
[5] 曹守啟,何鑫,劉婉榮.一種改進的遠程用戶身份認證方案 [J].計算機工程與科學,2021,43(11):7.
[6] LUO S,HU J,CHEN Z. An Identity-Based One-Time Password Scheme with Anonymous Authentication [C]//2009 International Conference on Networks Security,Wireless Communications and Trusted Computing.Wuhan:IEEE,2009:864-867.
[7] CAMENISCH J,LYSYANSKAYA A. A Signature Scheme with Efficient Protocols [C]//SCN 2002:Security in Communication Networks.Springer,2002:268–289.
[8] YANG Y J,ZHOU J Y,WONG J W,et al. Towards practical anonymous password authentication [C]//ACSAC ‘10:Proceedings of the 26th Annual Computer Security Applications Conference.New York:Association for Computing Machinery,2010:59-68.
[9] PAILLIER P.Public-Key Cryptosystems Based on Composite Degree Residuosity Classes [C]//EUROCRYPT’99.Springer-Verlag,1999:223-238.
[10] AU M H,SUSILO W,MU Y. Constant-size dynamic k –TAA [C]// International Conference on Security and Cryptography for Networks.Springer,2006:111-125.
作者簡介:陳金木(1985—),男,漢族,福建廈門人,信息系統項目管理師,實驗師,本科,主要研究方向:計算機科學、軟件技術、信息安全。