專利名稱:一種基于辮群共軛問(wèn)題的數(shù)字簽名方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于辮群的CSP(共軛搜索)問(wèn)題和CDP(共軛判定)問(wèn)題間差異的數(shù)字簽名方法ECSS。本發(fā)明涉及到信息安全領(lǐng)域具體說(shuō)就是簽名者如何發(fā)布一個(gè)帶有自己私鑰簽名文件以便驗(yàn)證者使用簽名者的公鑰來(lái)驗(yàn)證該文件是否為簽名者發(fā)布的簽名文件。
背景技術(shù):
現(xiàn)目前廣泛使用的數(shù)字簽名技術(shù)是RSA簽名體制,它的安全性是建立在大數(shù)分解的困難性上的,然而隨著計(jì)算機(jī)處理能力的不斷提高和相關(guān)的研究逐漸深入,RSA不得不不斷的加大模數(shù)n位數(shù)以確保安全性,從512比特到1024比特到2048比特。由于密鑰的位數(shù)過(guò)長(zhǎng),導(dǎo)致產(chǎn)生大素?cái)?shù)和指數(shù)計(jì)算的計(jì)算量都很大,因此RSA的效率不是很高;而如果為了提高效率采用硬件實(shí)現(xiàn),則位數(shù)過(guò)長(zhǎng)導(dǎo)致設(shè)備更復(fù)雜、成本更高,而且由于硬件實(shí)現(xiàn)方式的不可改性,硬件的使用壽命縮短,導(dǎo)致成本的進(jìn)一步提高。
自從2000年韓國(guó)學(xué)者Ki Hyoung KO、Sang Jin Lee在CRYPTO 2000提出了一種基于辮群共軛問(wèn)題的困難性的密鑰交換協(xié)議和公鑰加密體制以來(lái)(K.H.Ko,S.J.Lee,J.H.Cheon,J.W.Han,J.S.Kangand C.S.Park,New Public-KeyCrytosystem Using Braid Groups,Proc.of Crypto 2000,LNCS 1880,Springer-Verlag(2000)166 183.),辮群公鑰密碼體制得到了廣泛的研究。然而它的數(shù)字簽名體制一直沒(méi)有一個(gè)很好的解決方案。直到2003年,韓國(guó)學(xué)者KiHyoung KO、DooHo Cho提出并實(shí)現(xiàn)了兩種基于辮群共軛問(wèn)題的簽名體制(KiHyoung Ko and Doo HoChoi and Mi Sung Cho and Jang Won Lee New Signature Scheme Using ConjugacyProblem Cryptology ePrint ArchiveComplete Contents 2003/168)SCSS以及CSS。我們簡(jiǎn)要介紹一下3中的兩種簽名體制,SCSS以及CSS。
簡(jiǎn)單共軛簽名體制SCSS公共參數(shù)辮群Bn散列函數(shù)h密鑰生成公鑰一個(gè)CSP問(wèn)題為困難問(wèn)題的共軛對(duì)(x,log2n!x′)∈Bn×Bn,私鑰a∈Bn,滿足x′=a-1xa;簽名對(duì)于一個(gè)給定的比特串消息m,m的簽名sign(m)=a-1ya,其中y=h(m)。
驗(yàn)證一個(gè)簽名sign(m)是合法的當(dāng)且僅當(dāng)sign(m)~y,x′sign(m)~xy然而由于攻擊者可以獲得很多對(duì)的(yi,a-1yia),從而可能造成私鑰a的秘密信息泄漏,即k-CSP問(wèn)題。為了克服以上問(wèn)題,他們提出了CSS簽名體制。
共軛簽名體制CSS公共參數(shù)辮群Bn散列函數(shù)h密鑰生成公鑰一個(gè)CSP問(wèn)題為困難問(wèn)題的共軛對(duì)(xx′)∈Bn×Bn,私鑰a∈Bn,滿足x′=a-1xa;簽名對(duì)于一個(gè)給定的消息m,隨機(jī)選擇一個(gè)隨機(jī)化因子b∈Bn,計(jì)算α=b-1xb,y=h(m‖α),β=b-1yb,γ=b-1aya-1b,消息m的簽名sign(m)=(α,β,γ)。
驗(yàn)證消息m的簽名sign(m)=(α,β,γ)為合法簽名當(dāng)且僅當(dāng)滿足α~x,β~γ~y,αβ~xy,αγ~x’yCSS簽名體制由于引入了隨機(jī)化因子b,因此很好的克服了k-CSP問(wèn)題。但是可以發(fā)現(xiàn),由于增加了更多的計(jì)算和數(shù)據(jù),因此整個(gè)效率明顯下降。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是為了克服了現(xiàn)有技術(shù)中的容易受到針對(duì)大數(shù)分解攻擊以及產(chǎn)生大素?cái)?shù)消耗計(jì)算資源過(guò)大的缺點(diǎn),解決現(xiàn)有技術(shù)中存在的產(chǎn)生密鑰和簽名驗(yàn)證時(shí)間過(guò)長(zhǎng)的問(wèn)題,提供一種基于辮群共軛問(wèn)題的高效數(shù)字簽名方法,不但可以克服存在SCSS中的k-CSP問(wèn)題,而且相對(duì)CSS,計(jì)算量和數(shù)據(jù)都將大大的減少,提高了整個(gè)簽名體制的效率。
本發(fā)明所述的基于辮群共軛問(wèn)題的數(shù)字簽名方法,包含以下步驟假設(shè)簽名方為S,簽名驗(yàn)證方為V,需要簽名的消息為m,系統(tǒng)參數(shù)辮群Bn(l),Bn(l)的左子群LBm(l),Bn(l)的右子群RBn-1-m(l),辮群公鑰對(duì)間的距離d,從比特串{0,1}*到辮群Bn(l)的單向散列函數(shù)h,用于CDP判定算法BCDA的素?cái)?shù)p和判定的點(diǎn)的個(gè)數(shù)r。
首先簽名方對(duì)需要簽名的消息進(jìn)行如下操作1)簽名方S隨機(jī)生成一個(gè)辮元x∈LBm(l);2)簽名方S使用RSSBG(x,d)生成(x′,x,a)∈Bn(l)×LBm(l)×Bn(l),使得x’=a-1xa;將共軛對(duì)(x’,x)作為S的公鑰,共軛元a作為S的私鑰;RSSBG(x,d)算法簡(jiǎn)單描述如下(2-1)選定系統(tǒng)參數(shù)n,m,l,d.
(2-2)隨機(jī)生成一個(gè)辮元x屬于集合LBm(l).
(2-3)隨機(jī)選擇一個(gè)辮元b屬于集合Bn(5l).
(2-4)計(jì)算y=b-1xb(2-5)隨機(jī)產(chǎn)生一個(gè)比特,如為0,則計(jì)算y=cycling(y)=a-1xa,否則計(jì)算y=decycling(y)=a-1xa(2-6)判斷y是否屬于集合SSS(x)以及l(fā)(y)≤d是否都成立,若都成立則輸出(x,y)為公鑰,a為私鑰;若有一個(gè)不成立,則轉(zhuǎn)入(2-5)進(jìn)一步生成。
3)簽名方S對(duì)需要簽名的消息m首先使用散列函數(shù)h得到y(tǒng)=h(m)∈Bn(l),然后隨機(jī)生成一個(gè)辮元b∈RBn-1-m(l),然后使用自己的私鑰a和產(chǎn)生的隨機(jī)辮元b對(duì)消息m簽名得到Sign(m)=a-1byb-1a;有m散列得到h(m)的成立流程簡(jiǎn)單描述如下(3-1)選擇一個(gè)普通散列函數(shù)H,其輸出H(m)長(zhǎng)度為l[log2n!](可以截取),然后將H(m)一次等分為l段R1‖R2‖…‖Rl。
(3-2)一次將Ri對(duì)應(yīng)為置換辮元Ai,然后計(jì)算h(m)=A1*A2…A1即為所求的h(m).
4)簽名者將消息m、公鑰(x’,x)、m的簽名Sign(m)發(fā)送給簽名驗(yàn)證方V;簽名驗(yàn)證方V收到簽名者發(fā)送的信息后進(jìn)行如下操作5)首先利用系統(tǒng)參數(shù)散列函數(shù)h對(duì)消息m作用計(jì)算得到y(tǒng)=h(m);6)判定sign(m)~y是否成立,若不成立,則sign(m)不是一個(gè)合法簽名;若成立,則轉(zhuǎn)步驟7);7)判定sign(m)x’~xy是否成立,若不成立,則sign(m)不是一個(gè)合法簽名;若成立,則sign(m)為消息m的合法簽名。
判定兩個(gè)辮元a,b是否共軛的判定算法BCDA簡(jiǎn)單敘述如下(6-1)輸入辮元a,b,選擇好系統(tǒng)參數(shù)p、r并計(jì)算其特征Pa(t)以及Pb(t)。
(6-2)隨機(jī)選擇r個(gè)不同的隨機(jī)數(shù)ti(I=1,2…r),并計(jì)算Pa(ti)=Pb(ti)都成立。若有一個(gè)不成立,則a~b不成立;若都成立,則轉(zhuǎn)(6-3)。
(6-3)計(jì)算Maxinf(a)=Maxinf(b)是否成立,若不成立,則a~b不成立;若成立,則轉(zhuǎn)(6-4)。
(6-4)計(jì)算Minsup(a)=Minsup(b)是否成立,若不成立,則a~b不成立;若成立,則轉(zhuǎn)則a~b不成立。
由于本發(fā)明的數(shù)字簽名方法,有如下優(yōu)點(diǎn)1由于加入了隨機(jī)化因子b,使得針對(duì)每個(gè)消息m,共軛對(duì)(sign(m),h(m))的共軛元為b-1a,因此每次的共軛元都不相同,從而掩蓋了是要a的信息泄漏,避免了在現(xiàn)有技術(shù)中SCSS(簡(jiǎn)單共軛簽名體制)簽名體制中單一使用私鑰a作為共軛對(duì)(sign(m),h(m))的共軛元的k-CSP問(wèn)題。可參看表1。
2本方法相對(duì)于現(xiàn)有技術(shù)中的CSS(共軛簽名體制)數(shù)字簽名方法在不降低安全性的前提下,大大節(jié)省了計(jì)算時(shí)間,提高了效率,可參看表1。
表13種簽名方法比較3本發(fā)明相對(duì)于傳統(tǒng)的RSA簽名方法使用完全不同體系的數(shù)學(xué)基礎(chǔ),不需要產(chǎn)生大素?cái)?shù),大大節(jié)省了密鑰的位數(shù)和簽字的位數(shù),節(jié)約了計(jì)算資源,提高了簽名驗(yàn)證小效率。在現(xiàn)有技術(shù)中給出的CSS簽名方法在Pentium III 866MHz處理器上得到的數(shù)據(jù)為表2所示(默認(rèn)設(shè)置的參數(shù)l=3,d=4,231<p<232,r=3)
表2 CSS簽名方法的試驗(yàn)數(shù)據(jù)表而本方法相對(duì)于CSS簽名方法簽名時(shí)間和驗(yàn)證時(shí)間都將大大減少,因此相對(duì)RSA有效率更高的優(yōu)點(diǎn)。
圖1本發(fā)明基于辮群共軛問(wèn)題的數(shù)字簽名方法的步驟主流程圖。
圖2基于辮群共軛問(wèn)題的數(shù)字簽名方法的密鑰生成的子流程圖。
圖3單向散列函數(shù)h的處理流程圖。
圖4CDP問(wèn)題判定算法BCDA處理流程圖。
圖5簽名方對(duì)消息m簽名的流程圖。
圖6驗(yàn)證方對(duì)消息簽名的驗(yàn)證流程圖。
具體實(shí)施例方式
由于本發(fā)明涉及到一系的數(shù)學(xué)原理,首先將本發(fā)明的數(shù)學(xué)背景闡述如下辮群Bn(n為群參數(shù))是由Artin生成元σ1,σ2,……,σn-1生成的有限表示的無(wú)限群,并且它的生成元σ1,σ2……σn-1滿足以下關(guān)系σiσj=σjσi(|i-j|>1,1<i,j<n) (1)σiσjσi=σjσiσj(|i-j|>1,1<i,j<n) (2)由左邊m個(gè)生成員σ1,σ2……σm-1生成的群叫Bn的左子群,記做LBm;而由右邊的n-1-m個(gè)生成元σm+1,σm+2……σn-1生成的子群叫Bn的右子群,記做RBn-1-m。由生成元關(guān)系(1)顯然可知任取(x,y)∈LBm×RBn-1-m,有xy=y(tǒng)x。對(duì)于一個(gè)辮元b,若他只包含σ1,σ2……σn-1而不含σ1,σ2……σn-1的逆元,則稱b為一個(gè)正元。若對(duì)于正元b、a,有一個(gè)正元或單位元c使得b=ac,則稱a為b的子元。辮元Δ=(σ1σ2…σn-1)(σ1σ2…σn-2)…(σ1σ2)(σ1)稱為辮群Bn的本元。Δ滿足Δb=τ(b)Δ,τ(σi)=σn-i。其中Δ的子元稱作置換元,他們組成的集合和對(duì)稱群∑n的n!個(gè)元素一一對(duì)應(yīng)。因此Δ的子元可用一個(gè)置換π{0,1,...,n-1}→{0,1,...,n-1}來(lái)表示。任何一個(gè)辮元b都存在唯一的一個(gè)標(biāo)準(zhǔn)表示形式;b=Δuπ1π2…πi,其中πi為一個(gè)置換元。b的幾個(gè)長(zhǎng)度定義如下inf(b)=u,sup(b)=u+l,l(b)=1。
在一個(gè)辮群Bn中,如果對(duì)于兩個(gè)辨元x,y∈Bn,存在一個(gè)辨元a∈Bn使得y=a-1xa,則稱辨元x,y共軛,記做x~y,而辨元a稱作共軛對(duì)(x,y)的共軛元,顯然“~”是一種等價(jià)關(guān)系。辮群的基本共軛問(wèn)題包括共軛判定問(wèn)題CDP問(wèn)題和共軛元搜索問(wèn)題CSP問(wèn)題。所謂CDP問(wèn)題就是指任意給出辨元對(duì)(x,y)∈Bn×Bn,判斷x~y是否成立。根據(jù)群表示理論,對(duì)于任何群G,總存在一個(gè)從G到某一個(gè)環(huán)的同態(tài),該同態(tài)對(duì)共軛關(guān)系保持不變,因此CDP問(wèn)題對(duì)于任何群在計(jì)算上總是可解決的。在現(xiàn)有的基于辮群共軛問(wèn)題的簽名體制中給出了一個(gè)算法可以在多項(xiàng)式時(shí)間內(nèi)以任意高的概率解決CDP問(wèn)題。所謂CSP問(wèn)題就是指對(duì)于一個(gè)給定的共軛辨元對(duì)(x,y)∈Bn×Bn(x~y),找到一個(gè)辨元a∈Bn,使得y=a-1xa。對(duì)于辮群的來(lái)說(shuō),目前不存在一個(gè)有效的算法可以在多項(xiàng)式時(shí)間內(nèi)解決CSP問(wèn)題,因此對(duì)隨機(jī)選取的一共軛對(duì)(x,y)∈Bn×Bn,他們的CSP問(wèn)題將以很高的概率為一個(gè)困難問(wèn)題。而本文提出的數(shù)字簽名方法的安全性是建立在MCSP問(wèn)題的困難性上的,在現(xiàn)有的基于辮群共軛問(wèn)題的簽名體制中證明了MCSP問(wèn)題與CSP問(wèn)題的困難等價(jià)性。所謂MCSP問(wèn)題對(duì)他的描述如下已知辮群Bn的一個(gè)共軛對(duì)(x,x’)∈Bn×Bn,和一個(gè)辨元y∈Bn問(wèn)題找到一個(gè)y’∈Bn滿足y~y’xy~x’y’下面對(duì)本發(fā)明的數(shù)字簽名的方法的數(shù)學(xué)模型做一個(gè)簡(jiǎn)介公共參數(shù)辮群Bn、左辮群LBm、右辮群RBn-1-m、散列函數(shù)h、其中Bn的生成元為σ1σ2……σn-1,左辮群LBm為生成元σ1,σ2……σm-1生成的Bn的子群,右辮群RBn-1-m為生成元σm+1,σm+2……σn-1生成的Bn的子群。
密鑰生成公鑰一對(duì)CSP問(wèn)題為困難問(wèn)題的共軛對(duì)(x,x‘)∈LBm×Bn私鑰a∈Bn滿足x‘=a-1xa;簽名對(duì)于一個(gè)給定的消息m,首先計(jì)算y=h(m),然后隨機(jī)選取一個(gè)秘密隨機(jī)化因子b∈RBn-1-m,消息m的簽名sign(m)=a-1byb-1a(見(jiàn)圖5)驗(yàn)證對(duì)于消息m簽名sign(m)為合法簽名當(dāng)且僅當(dāng)sign(m)~y,x’sign(m)~xy(見(jiàn)圖6)對(duì)于一個(gè)合法的簽名sign(m),由于sign(m)=a-1byb-1a=(b-1a)-1yb-1a,故sign(m)~y成立;而x‘sign(m)=a-1xa a-1byb-1a=a-1xbyb-1a,由于x∈LBm,b∈RBn-1-m,因此xb=bx,從而有x’sign(m)=a-1xa a-1byb-1a=a-1xbyb-1a=a-1bx yb-1a=(b-1a)-1(xy)(b-1a),從而x’sign(m)~xy。因此一個(gè)合法的簽名總是可以通過(guò)驗(yàn)證的。
而對(duì)于一個(gè)攻擊者來(lái)說(shuō),他要想偽造一個(gè)消息m的簽名,所能知道的只包括公鑰(x,x’),和y=h(m),要想偽造的簽名sign(m)滿足sign(m)~y、x’sign(m)~xy,顯然等價(jià)于解決MCSP問(wèn)題,因此是不能做到的。
而對(duì)于可以截獲分析的消息簽名對(duì)(yi,b-1ayia-1b),由于加入了隨機(jī)化因子b,可以很好的避免k-CSP問(wèn)題。所謂k-CSP問(wèn)題描述如下已知k對(duì)共軛對(duì)(x1,x1’),……,(xk,xk’)∈Bn×Bn且xi’=a-1xia(i=1…k)問(wèn)題找到b∈Bn,使得xi’=b-1xib(i=1,2……k)。
以上是對(duì)本發(fā)明簽名方法的數(shù)學(xué)描述,然而由于辮群是無(wú)限群,為了用計(jì)算機(jī)實(shí)現(xiàn),需要設(shè)置系統(tǒng)參數(shù)。首先設(shè)定系統(tǒng)參數(shù)n,l,d(推薦l=3,d=4)。令Bn(l)={b∈Bn|0≤inf(b),sup(b)≤l},則|Bn(l)|<(n!)1為有限的。同理LBm(l)={b∈LBm|0≤inf(b),sup(b)≤l},RBn-1-m(l)={b∈RBn-1-m|0≤inf(b),sup(b)≤l}。對(duì)于一個(gè)辮元采用目前已知在計(jì)算機(jī)上計(jì)算速度最快的Burau表示,即用一個(gè)Laurent多項(xiàng)式環(huán)Z[t,t-1]上的(n-1)×(n-1)階矩陣來(lái)表示,具體替換原則如下做如下的替換 一個(gè)屬于Bn(l)辮元轉(zhuǎn)化為一個(gè)Burau表示的計(jì)算復(fù)雜度為O(ln),有了以上表示,與辮群內(nèi)的群運(yùn)算和求逆運(yùn)算就轉(zhuǎn)化為矩陣的乘法和求逆運(yùn)算,他們都有著很有效的數(shù)學(xué)工具可以解決,它們的計(jì)算復(fù)雜度都為O(ln)。
現(xiàn)在介紹一下CDP問(wèn)題的判定算法BCDA(見(jiàn)圖4)。任何一個(gè)非交換群,都存在一個(gè)從群到一個(gè)環(huán)的函數(shù),該函數(shù)對(duì)于共軛對(duì)的函數(shù)值相等,把該函數(shù)叫做特征。定義一個(gè)從Bn(l)到Laurent多項(xiàng)式環(huán)Z[t,t-t]的一個(gè)函數(shù)g→det(φ(g)-I),其中g(shù)∈Bn(l),Φ(g)為g的Burau表示,I為單位矩陣,det()為求行列式的符號(hào),顯然該函數(shù)為Bn(l)的特征。把det(Φ(g)-I)叫做辮元g的亞歷山大多項(xiàng)式,記做Pg(t),顯然對(duì)于一個(gè)g∈Bn(l),它的亞歷山大多項(xiàng)式Pg(t)的秩(Pg(t))≤l(n-1)n/2。判斷兩個(gè)辮元a,b∈Bn(l)是否共軛,做如下的亞歷山大測(cè)試選定系統(tǒng)參數(shù)素?cái)?shù)p和正整數(shù)r,在有限域Z/pZ上任意選取r個(gè)不相等的值t1,t2…tr,若對(duì)于所有的ti(i=1,2…r)都有Pa(ti)=Pb(ti),則輸出1,否則輸出0。由于(Pa(t)-Pb(t))≤l(n-1)n/2,所以方程Pa(t)-Pb(t)=0最多只有l(wèi)(n-1)n/2個(gè)根。所以概率 顯然隨著p和r的增加,這個(gè)概率可以任意的小。亞歷山大測(cè)試的計(jì)算復(fù)雜度為O(rn3)。
Maxinf-Minsup測(cè)試。對(duì)于辮元的x∈Bn(l),定義Maxinf(x)=Max{inf(y)|y~x,y∈Bn(l)},Minsup(x)=Min{sup(y)|y~x,y∈Bn(l)}。所謂Maxinf-Minsup測(cè)試,即對(duì)辮元a,b∈Bn(l),判斷Maxinf(a)=Maxinf(b),Minsup(a)=Minsup(b)是否都成立,若都成立,則輸出1,否則輸出0。下面給出計(jì)算Maxinf(x)和Minsup(x)的算法描述。首先定義兩個(gè)操作,若x=Δuπ1π2…π1,cycling(x)=(τu(π1))-1xτu(π1),decycling(x)=π1-1xπ1。對(duì)x循環(huán)做cycling(分別decycling)操作,直到inf值增加(分別sup值減少),然后以當(dāng)前得到的元素為新元素,重復(fù)該循環(huán)操作,且循環(huán)次數(shù)計(jì)數(shù)重新設(shè)置為1;若循環(huán)次數(shù)計(jì)數(shù)直到m=n(n-1)/2都inf值不再增加(分別sup值不再減少),則當(dāng)前的元素的inf值即為Maxinf(x)(分別Minsup(x)。該算法的理論分析請(qǐng)參看引文J.S.Birman,K.H.Ko and S.J.Lee,The in.mum,supremum and geodesic length of a braid conjugacy class,to appear inAdvances in Mathematics.。該算法的算法復(fù)雜度為O(l2nlog n)。
如果辮元a,b通過(guò)了亞歷山大測(cè)試和Maxinf-Minsup測(cè)試,則可以判定a~b成立,只有一種例外情況,即a~b-1。然而這對(duì)于隨機(jī)選擇的a、b來(lái)說(shuō),是幾乎不可能出現(xiàn)的,而對(duì)于攻擊者同樣不能利用這種例外情況,分析見(jiàn)引文K.H.Ko,S.J.Lee,J.H.Cheon,J.W.Han,J.S.Kang and C.S.Park,New Public-Key Crytosystem Using Braid Groups,Proc.of Crypto 2000,LNCS 1880,Springer-Verlag(2000)166 183。
對(duì)于一個(gè)從比特串{0,1}*到辮群Bn(l)的散列函數(shù)h,可構(gòu)造如下(見(jiàn)圖3),首先我們使用一個(gè)普通散列函數(shù)將{0,1}*壓縮得到固定長(zhǎng)度的比特串{0,1}N,其中N=[llog2n!]。然后將{0,1}N分為l段r1‖r2‖…‖r1,每一段的長(zhǎng)度都為[log2n!]。由于Bn(l)的置換元有n!個(gè),故可在置換元和整數(shù)集
間建立一個(gè)一一映射。因此再依次將rk轉(zhuǎn)化為
間某一個(gè)整數(shù),再將這個(gè)整數(shù)和一個(gè)置換元Pk,最后得到h(m)=Πk=11Pk.]]>為了產(chǎn)生一個(gè)偽隨機(jī)辮元,首先產(chǎn)生一個(gè)偽隨機(jī)序列{0,1}N,然后將{0,1}N分為1段r1‖r2‖…‖r1,每一段的長(zhǎng)度都為[log2n!]。由于Bn(l)的置換元有n!個(gè),故可在置換元和整數(shù)集
間建立一個(gè)一一映射。因此再依次將rk轉(zhuǎn)化為
間某一個(gè)整數(shù),再將這個(gè)整數(shù)和一個(gè)置換元Pk,最后得到所需要的 為了安全的產(chǎn)生密鑰,先定義一些概念,對(duì)于一個(gè)辮元x∈Bn(l),定義他的super summit集SSS(x)={y∈Bn(l)|y~x,inf(y)=Maxinf(x),sup(y)=Minsup(x)}。整個(gè)簽名算法的安全強(qiáng)度為|SSS(x)|,約為 若y~x,定義x、y間的距d(x,y)=min{l(b)|y=b-1ab},然后再定義s(x,d)={y∈SSS(x)|d(x,y)≤d}。選取x’∈s(x,d),則共軛對(duì)(x’,x)的CSP問(wèn)題為困難問(wèn)題,可以作為密鑰,下面介紹算法RSSBG(x,d)=(x’,a)用以隨機(jī)產(chǎn)生x’∈s(x,d)且x’=a-1xa,從而得到安全公鑰(x’,x)和私鑰a(見(jiàn)圖2)1隨機(jī)產(chǎn)生一個(gè)辮元b∈Bn(5l),計(jì)算b-1xb。
2隨機(jī)選擇對(duì)b-1xb一系列的cycling或者decycling操作得到x’,直到x’屬于SSS(x)為止(不會(huì)超過(guò)n2次操作),x’=a-1xa。
3判斷l(xiāng)(a)≤d成立,若成立,則x’和a即為所求,若不成立,則轉(zhuǎn)1。
有了以上的數(shù)學(xué)基礎(chǔ)和算法描述,再結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述,本發(fā)明用軟件實(shí)現(xiàn)如下(為了提高速度,算法BCDA也可用硬件實(shí)現(xiàn))選定系統(tǒng)參數(shù)公開(kāi)辮群參數(shù)n,l,d,p(推薦n為20~30間,l=3,d=4,p為231~232間),以及左辮群大小m(推薦n-m為4左右)。
選定用于散列消息的散列函數(shù)h;參考圖1所示的流程,簽名方S密鑰產(chǎn)生1使用算法PBG隨機(jī)產(chǎn)生一個(gè)辮元x∈LBm;2使用算法RSSBG(x,d)得到公鑰(x’,x)和私鑰a。
簽名1對(duì)需要簽名的消息m應(yīng)用散列函數(shù)h得到y(tǒng)=h(m);2隨機(jī)產(chǎn)生一個(gè)辮元b x∈a-1byb-1a,然后計(jì)算byb-1;3使用私鑰,計(jì)算簽名sign(m)=a-1byb-1a。
驗(yàn)證方Va)對(duì)需要驗(yàn)證簽名的消息m應(yīng)用散列函數(shù)h得到y(tǒng)=h(m);b)使用算法BCDA判定sign(m)~y是否成立,若不成立,則驗(yàn)證失敗,結(jié)束。若成立,轉(zhuǎn)3;c)計(jì)算x’sign(m)和xy;使用算法BCDA判定x’sign(m)~xy是否成立,若成立,則驗(yàn)證通過(guò),結(jié)束,否則驗(yàn)證失敗,結(jié)束。
權(quán)利要求
1.一種基于辮群共軛問(wèn)題的數(shù)字簽名方法,其特征在于,所述方法包括以下處理過(guò)程簽名方為S,簽名驗(yàn)證方為V,需要簽名的消息為m,系統(tǒng)參數(shù)辮群Bn(l),Bn(l)的左子群LBm(l),Bn(l)的右子群RBn-1-m(l),辮群公鑰對(duì)間的距離d,從比特串{0,1}*到辮群Bn(l)的單向散列函數(shù)h,用于CDP判定算法BCDA的素?cái)?shù)p和判定的點(diǎn)的個(gè)數(shù)r;簽名方對(duì)需要簽名的消息進(jìn)行如下操作1)簽名方S隨機(jī)生成一個(gè)辮元x∈LBm(l);2)簽名方S使用RSSBG(x,d)生成(x’,a)∈Bn(l)×Bn(l),使得x’=a-1xa;將共軛對(duì)(x’,x)作為S的公鑰,共軛元a作為S的私鑰;3)簽名方S對(duì)需要簽名的消息m首先使用散列函數(shù)h得到y(tǒng)=h(m)∈Bn(l),然后隨機(jī)生成一個(gè)辮元b∈RBn-1-m(l),然后使用自己的私鑰a和產(chǎn)生的隨機(jī)辮元b對(duì)消息m簽名得到Sign(m)=a-1byb-1a;4)簽名者將消息m、公鑰(x’,x)、m的簽名Sign(m)發(fā)送給簽名驗(yàn)證方V;簽名驗(yàn)證方V收到簽名者發(fā)送的信息后進(jìn)行如下操作5)首先利用系統(tǒng)參數(shù)散列函數(shù)h對(duì)消息m作用計(jì)算得到y(tǒng)=h(m);6)判定sign(m)~y是否成立,若不成立,則sign(m)不是一個(gè)合法簽名;若成立,則轉(zhuǎn)步驟7);7)判定sign(m)x’~xy是否成立,若不成立,則sign(m)不是一個(gè)合法簽名;若成立,則sign(m)為消息m的合法簽名。
2.根據(jù)權(quán)利要求1所述的基于辮群共軛問(wèn)題的數(shù)字簽名方法,其特征在于,所述步驟2)生成公鑰和私鑰具體包括以下處理過(guò)程(2-1)選定系統(tǒng)參數(shù)n,m,l,d;(2-2)隨機(jī)生成一個(gè)辮元x屬于集合LBm(l);(2-3)隨機(jī)選擇一個(gè)辮元b屬于集合Bn(5l);(2-4)計(jì)算y=b-1xb;(2-5)隨機(jī)產(chǎn)生一個(gè)比特,如為0,則計(jì)算y=cycling(y)=a-1xa,否則計(jì)算y=decycling(y)=a-1xa;(2-6)判斷y是否屬于集合SSS(x)以及l(fā)(y)≤d是否都成立,若都成立則輸出(x,y)為公鑰,a為私鑰;若有一個(gè)不成立,則轉(zhuǎn)入(2-5)進(jìn)一步生成。
3.根據(jù)權(quán)利要求1所述的基于辮群共軛問(wèn)題的數(shù)字簽名方法,其特征在于,所述散列矩陣的處理過(guò)程是(3-1)選擇一個(gè)普通散列函數(shù)H,其輸出H(m)長(zhǎng)度為l[log(2,n!)](可以截取),然后將H(m)一次等分為1段R1‖R2‖…‖R1;(3-2)一次將Ri對(duì)應(yīng)為置換辮元Ai,然后計(jì)算h(m)=A1*A2…A1即為所求的h(m)。
4.根據(jù)權(quán)利要求1所述的基于辮群共軛問(wèn)題的數(shù)字簽名方法,其特征在于,所述的步驟6)、7)中利用算法BCDA判定共軛的處理過(guò)程是(4-1)輸入辮元a,b,選擇好系統(tǒng)參數(shù)p、r并計(jì)算其特征Pa(t)以及Pb(t);(4-2)隨機(jī)選擇r個(gè)不同的隨機(jī)數(shù)ti(I=1,2…r),并計(jì)算Pa(ti)=Pb(ti)都成立;若有一個(gè)不成立,則a~b不成立;若都成立,則轉(zhuǎn)(4-3);(4-3)計(jì)算Maxinf(a)=Maxinf(b)是否成立,若不成立,則a~b不成立;若成立,則轉(zhuǎn)(4-4);(4-4)計(jì)算Minsup(a)=Minsup(b)是否成立,若不成立,則a~b不成立;若成立,則轉(zhuǎn)則a~b不成立。
5.根據(jù)權(quán)利要求1所述的基于辮群共軛問(wèn)題的數(shù)字簽名方法,其特征在于,所述n取20~30間,l=3,d=4,p為231~232間,以及左辮群大小m比n小4。
全文摘要
本發(fā)明公開(kāi)了一種基于辮群共軛問(wèn)題的數(shù)字簽名方法,通過(guò)加入隨機(jī)化因子b,使得針對(duì)每個(gè)消息m,共軛對(duì)(sign(m),h(m))的共軛元為b
文檔編號(hào)H04L9/32GK1545242SQ20031011360
公開(kāi)日2004年11月10日 申請(qǐng)日期2003年11月13日 優(yōu)先權(quán)日2003年11月13日
發(fā)明者勇 丁, 丁勇, 陳劍勇, 李亞暉 申請(qǐng)人:中興通訊股份有限公司