本發明屬于網絡安全,涉及一種身份認證方法、系統及產品,具體涉及一種基于區塊鏈和零知識證明的匿名身份認證方法、系統及產品。
背景技術:
1、身份認證在現代在線活動中是建立信任的關鍵基礎。傳統上,身份認證由可信第三方(如銀行、政府機構)進行,這些機構驗證用戶的身份和屬性,并頒發相應的憑證。用戶在訪問在線服務時,需向服務提供者出示這些憑證,服務提供者則根據其可信程度和憑證內容決定是否提供服務。這項技術在電子身份證、電子醫療和電子投票等領域得到了廣泛應用。
2、然而,這些憑證通常包含大量的個人身份信息,存在隱私泄露的風險。驗證者在驗證過程中能直接接觸到用戶的敏感數據,并且在傳輸和存儲的過程中容易收到攻擊。此外,由于中心化的存儲系統容易成為攻擊目標,一旦被攻破或者發生故障,所保存的驗證記錄等數據容易被篡改或是無法訪問,這將導致管理員對用戶驗證的監管追蹤受阻。
3、為解決用戶的隱私保護問題,可以采用加密算法和安全傳輸協議(如tls/ssl等),使用戶的隱私不容易泄露。但是安全傳輸協議的引入同樣會增加用戶驗證的通信開銷,且傳統的加密算法并未專門設計用于簽名者的匿名性,在一些需要身份匿名的應用場景中可能存在局限性。
4、為解決驗證信息存儲的安全性問題,可以采用分布式數據庫存儲驗證信息,這樣能很大程度上提高數據存儲的安全性,很好地預防針對單點的攻擊。但是一般的分布式數據庫通常由一個中心化的管理節點進行管理,一旦攻擊者獲得足夠的權限,仍有可能篡改數據而不被察覺。
技術實現思路
1、為了解決現有技術身份認證技術中的用戶隱私保護問題和數據存儲的安全性問題,本發明提出了一種基于區塊鏈和零知識證明的匿名身份認證方法和系統。
2、本發明的方法所采用的技術方案是:一種基于區塊鏈和零知識證明的匿名身份認證方法,包括以下步驟:
3、步驟1:管理員設置系統公共參數以及認證信息列表,生成群公鑰、管理員私鑰以及群成員私鑰;
4、步驟2:判斷證明者是否注冊;
5、若證明者未注冊,則證明者向管理節點驗證,申請注冊成為群成員;
6、若證明者已注冊,則執行下述步驟4;
7、步驟3:管理節點根據認證信息列表對證明者進行驗證,為群成員頒發私鑰;
8、步驟4:證明者根據群成員公鑰以及獲得的群成員私鑰生成驗證請求,并將驗證請求發送給驗證者;
9、步驟5:驗證者記錄請求內容,并發送挑戰值c給證明者;
10、步驟6:證明者根據挑戰值c計算相應的知識簽名σ,并將知識簽名σ發送給驗證者;
11、步驟7:驗證者根據驗證請求和知識簽名σ進行驗證;
12、步驟8:驗證者將驗證信息包括時間、驗證者信息、知識簽名σ提交至區塊鏈上鏈;
13、步驟9:區塊鏈在對驗證信息共識后將記錄該驗證信息的交易編號、區塊號信息發送給驗證者;
14、步驟10:驗證者將交易編號發送給管理節點供管理節點對證明者的驗證進行監管追蹤。
15、作為優選,步驟1的具體實現包括以下子步驟:
16、步驟1.1:管理員設定系統公共參數g1、g2、ψ、g1、g2、e;其中,g1、g2是素數階p的乘法循環群;ψ是g2到g1的可計算同構,且ψ(g2)=g1;g1、g2分別是g1、g2生成元;e是可計算映射,e:g1×g2→gt,且滿足雙線性和非退化性,→表示函數將左邊定義域的輸入映射到右邊值域輸出;
17、其中,所述雙線性,滿足對于所有u∈g1,v∈g2和a,b∈z,e(ua,vb)=e(u,v)ab,z為整數;所述非退化性,滿足e(g1,g2)≠1;
18、步驟1.2:輸入群成員數量n,根據系統公共參數生成密鑰;
19、隨機選擇h、ξ1、ξ2、u和v,滿足u,v∈g1,且滿足其中表示1~p范圍整數構成的集合,表示群g1的單位元1,←表示賦值;隨機選擇并設置得到群公鑰gpk=(g1,g2,h,u,v,w),群管理員私鑰gmsk=(ξ1,ξ2);
20、步驟1.3:根據系統公共參數生成群成員私鑰對;
21、通過γ,為1≤i≤n的群組成員生成私鑰對gsk[i]=(ai,xi),其中xi隨機選擇,且滿足
22、步驟1.4:管理員設置認證信息列表。
23、作為優選,步驟3的具體實現包括以下子步驟:
24、步驟3.1:管理節點將證明者遞交的認證信息與管理員提供的認證信息列表進行比對;
25、步驟3.2:管理節點進行比對后,若比對結果符合,則為證明者頒布群成員i的私鑰gsk[i]=(ai,xi),并在數據庫中為編號i和證明者建立起關聯。
26、作為優選,步驟4的具體實現包括以下子步驟:
27、步驟4.1:隨機選擇計算得到t1←uα、t2←vβ、t3←ahα+β;其中,表示0~p范圍整數構成的集合;
28、步驟4.2:計算兩個輔助值δ1←xα、δ2←xβ;其中,x表示證明者所獲得的群成員i的私鑰gsk[i]=(ai,xi)中的xi;
29、步驟4.3:選取盲值并計算得到
30、
31、步驟4.4:證明者生成m∈{0,1}*;其中,{0,1}*表示二進制序列;
32、步驟4.5:證明者將(m,t1,t2,t3,r1,r2,r3,r4,r5)作為驗證請求發送給驗證者。
33、作為優選,步驟5中,驗證者記錄收到的驗證請求,并生成挑戰值將挑戰值c與驗證請求關聯,并將挑戰值c返回給證明者;其中,表示0~p范圍整數構成的集合,表示從中隨機選擇并賦值給c。
34、作為優選,步驟6中,證明者計算sα=rα+cα,sβ=rβ+cβ,sx=rx+cx,證明者由此得到知識簽名
35、作為優選,步驟7的具體實現包括以下子步驟:
36、步驟7.1:根據知識簽名σ以及驗證請求以及系統公共參數,計算
37、步驟7.2:驗證若計算得到值與c相等,則表示驗證通過,否則不通過。
38、本發明的系統所采用的技術方案是:一種基于區塊鏈和零知識證明的匿名身份認證系統,包括:
39、一個或多個處理器;
40、存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理器執行時,使得所述一個或多個處理器實現所述的基于區塊鏈和零知識證明的匿名身份認證方法。
41、本發明的產品所采用的技術方案是:一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時實現所述的基于區塊鏈和零知識證明的匿名身份認證方法。
42、相對于現有技術,本發明的有益效果包括:
43、(1)本發明的用戶在證明自身身份和屬性時并不會泄露相關信息,驗證者只知道屬性值滿足一定條件。這種設計有助于減少個人敏感信息的泄露風險,提升用戶的隱私保護。
44、(2)本發明的管理員在監管追蹤用戶驗證信息只需向區塊鏈系統查詢,這避免了驗證者故障導致數據不安全、不可訪問的情況,提升了數據存儲的安全性。
45、(3)本發明的用戶在向驗證者證明的過程中僅需計算知識簽名而無需管理員的協助。通過這種設計,系統能夠在保證安全性和用戶體驗的同時,實現管理節點工作負荷的減少和驗證效率的提升。