一種標準模型下格上基於身份的盲籤名方法與流程
2023-08-01 08:21:26 1
本發明涉及信息安全技術領域,具體為提出一種標準模型下格上基於身份的盲籤名方法。
背景技術:
盲籤名的概念首先由Chaum在1982年提出,盲籤名是一種具有特殊性質的數字籤名。消息擁有者在不公布消息真實內容的情況下,獲得消息籤名者對真實消息的合法籤名,由於盲籤名具有保護用戶隱私的性質,使得盲籤名在電子現金,電子選舉,不經意傳輸等領域存在廣泛的應用。在傳統的公鑰密碼系統中,主要採用PKI(Public Key Infrastructure,公鑰基礎設施)來驗證公鑰和用戶身份的相關性,這種方式的證書管理過程需要很高的計算開銷和存儲開銷。
1985年Shamir提出了基於身份密碼學概念,並提出了第一個基於身份的籤名方案(Identity-Based Signature Scheme,IBS)。在IBS方案中使用用戶的身份信息作為公鑰,私鑰則由可信的密鑰生成中心PKG(Private Key Generator)進行計算得到,無需使用公鑰證書,不僅降低了密碼算法的計算開銷和實現成本,而且去除了PKI體制中的公鑰證書管理負擔。
結合盲籤名和基於身份密碼學,Zhang和Kim在2003年利用雙線性對提出了基於身份的盲籤名方案。目前,很多研究者仍在繼續對基於身份的盲籤名方案進行研究,但是大多方案的安全性是基於數論難題的,然而在量子計算機得到應用的前提下,基於數論假設的困難問題都可以在多項式時間內得到解決。因此,設計能抵抗量子攻擊的籤名方案成為該領域需解決的問題。
基于格的公鑰密碼體制是量子計算機不能攻破的少數經典公鑰密碼體制之一,且基于格的公鑰密碼體制還有其他優良特性,如平均情況與最差情況一樣安全以及簡單高效等,因而近幾年引起了國內外密碼學家的密切關注。1996年Ajtai開創性地證明了小整數解(SIS)問題在平均情況下的困難性與一類格困難問題在最差情況下的困難性等價。該工作為基于格的公鑰密碼體制奠定了發展的基礎。
2008年Gentry和Peikert等基於SIS問題提出了一個帶原像採樣的單向陷門函數,並據此構造了一個在隨機預言模型下可證明安全的基於身份的加密方案和一個在隨機預言模型下可證明安全的籤名方案。2010年Markus Ruckert利用原像採樣函數設計了第一個基于格的3輪盲籤名方案,但是該方案中存在籤名失敗的問題。Agrawal和Boneh等人在2010年美密會上提出了一個新的短格基派生算法並且不增加格的維度,並用該算法構造了第一個標準模型下分層的格上基於身份的加密方案。Wang等人在2012年提出了一個在隨機預言模型下格上基於身份的盲籤名方案,目前還沒有一個在標準模型下可證明安全的格上基於身份的盲籤名方案。
技術實現要素:
針對上述問題,本發明的目的是提供一種標準模型下可證明安全的格上基於身份盲籤名方法,該方法建立的盲籤名方案直接使用用戶身份作為公鑰,具有標準模型下的可證明安全性,並可抵抗量子計算機的攻擊。
為實現上述目的,本發明採取以下技術方案:方案主要包括:私鑰生成中心,消息擁有者,消息籤名者,消息驗證者,具體實施步驟為:
參數生成算法Setup(1n):私有密鑰生成器PKG(private key generator)以安全參數n為輸入,運行陷門生成算法TrapGen(1n),生成系統主密鑰MK,系統公共參數PP。公布公共參數PP,保存MK。
密鑰生成算法Extract(PP,id,MK):系統根據收到的籤名者的身份信息id,通過自己的主密鑰MK和公共參數PP,用短格基派生算法BasisDel輸出籤名者的私鑰Sid。
籤名算法Sign(PP,SKid,μ):消息盲化:消息擁有者C使用採樣算法SampleD盲化消息M,μ為盲化後的消息,把μ發給籤名者S。對盲化消息籤名:籤名者收到μ之後,用SKid並使用單向陷門求逆算法SamplePre對μ進行籤名,輸出盲化消息的籤名e′並驗證e′是否滿足要求,如果不滿足則重新選取,並在本地存儲(μ,e′),然後將(μ,e′)發送給消息擁有者C。消息去盲:消息擁有者C收到籤名之後,做去盲操作得到M的籤名e。
驗證算法Verify(PP,id,M,e):輸入公共參數PP,和用戶身份id,任意驗證者都可通過一定計算能夠驗證(M,e)的正確性。
本發明具有以下優點和積極效果:
(1)安全性高
本發明是一種安全性很高的盲籤名方案。不僅安全性可規約到求小整數解(SIS)困難問題,而且具有標準模型下的可證明安全性。
(2)執行效率高
本方法主要直接使用用戶身份作為公鑰,去除了PKI體制中的公鑰證書的運算與管理負擔,而且僅使用簡單地線性運算(模乘,模加),與所有數論上的基於身份的盲籤名方案相比,計算效率顯然更高。本方法使用新的格基派生算法,保證維度不變所以效率有所提升。
附圖說明
圖1是一種標準模型下格上基於身份盲籤名方法的流程圖
具體實施方式
令n為安全參數且n是大於零的整數,q為素數且q≥2,m≥5n lg q,是一個抗碰撞的哈希函數。方案具體實施步驟如下:
參數生成算法Setup(1n):私有密鑰生成器PKG(private key generator)以安全參數n為輸入,運行陷門生成算法TrapGen(1n),生成矩陣和對應的短基為系統主密鑰,A0為系統公鑰。假設消息M是由任意d比特長的比特串{0,1}d組成,那麼隨機選擇d個不相關的向量公布系統的公共參數PP=,主密鑰MK=S0。
密鑰生成算法Extract(PP,id,MK):系統根據收到的籤名者的身份信息id,通過自己的主密鑰S0和公共參數PP,使用格基派生算法BasisDel(A0,H(id),S0,s)輸出籤名者的私鑰Sid,其中Sid為格Λ⊥(A0H(id)-1)的一個基,s為高斯採樣參數。
籤名算法Sign(PP,SKid,μ):消息盲化,消息擁有者C隨機均勻選取t∈D={t∈R|||t||≥1/s}使用採樣算法SampleD(A0H(id)-1,s)輸出一個向量u,計算:μ為盲化後的消息,把μ發給籤名者S。籤名者S在接收到消息擁有者C發來的盲化消息μ之後使用單向陷門求逆算法SamplePre(A0H(id)-1,Sid,μ,s)對μ進行籤名,輸出盲化消息的籤名籤名者S驗證且e′≠0,如果不滿足則重新籤名,並在本地存儲(μ,e′),然後將(μ,e′)發送給消息擁有者C。消息去盲,消息擁有者C收到籤名之後,做如下去盲操作:e=t-1(e′-u),e即為消息M的籤名。
驗證算法Verify(PP,id,M,e):任意驗證者都能驗證(M,e)的正確性,通過下面的計算:
(1)驗證e≠0且如果滿足進行(2)驗證,不滿足則拒絕。
(2)驗證如果滿足則介紹,不滿足則拒絕。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的人員都可以理解其原理,在不脫離本發明的原理的情況下可以對實施例進行多種變化、修改或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以所述權利要求的保護範圍為準。