




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數字簽名主要內容概述數字簽名的執行方式直接數字簽名、仲裁數字簽名基于公鑰密碼體制的典型數字簽名方案RSA數字簽名方案、EIGamal數字簽名方案、數字簽名標準DSS、基于橢圓曲線密碼的數字簽名特殊的數字簽名方案不可否認簽名、盲數字簽名、群簽名概述數字簽名用于消息鑒別數字簽名用于消息鑒別,能夠提供真實性和抗抵賴。例:用戶A通過網絡發送一條消息,要求銀行從用戶A的賬戶上給用戶B支付5000元。銀行如何確認消息確是A發送的(真實性)?事后,如果A否認發送過該消息,如何認證(抗抵賴)?A否認要求銀行支付的是5000元,而說是1000元,銀行如何確認(抗抵賴,完整性)?銀行如何向公證機關提供證據(電子證
2、據)?以上問題可通過基于數字簽名的消息鑒別實現。手寫簽名和數字簽名的對比手寫簽名和數字簽名的主要差別所簽文件方面的不同。手寫簽名是文件的物理部分,而數字簽名不是,還要設法把簽名“捆綁”到文件上。驗證方面的不同。手寫簽名是通過與真實的手寫簽名比較進行驗證,手寫簽名容易偽造,不易鑒別。數字簽名通過密碼技術實現,難以偽造,并通過一個公開的算法進行驗證,這樣“任何人”都能驗證數字簽名。“復制”方面的不同。手寫簽名不易復制,復制后的簽名容易與原文件區別。相對而言,數字簽名容易復制,復制后與原文件一樣。數字簽名應滿足的要求簽名不可偽造。除了合法的簽名者,其他人偽造數字簽名在計算上不可行。簽名不可抵賴。簽名
3、者事后不能否認自己的簽名。因此簽名要求簽名者使用唯一的秘密信息。簽名是可信的。簽名的識別和驗證相對容易,任何人都可以驗證。簽名不可復制。對一個消息的簽名不能通過復制變為另一個消息的簽名。簽名和消息是不可分割的整體。簽名的消息是不可篡改的。如消息被篡改,則將與簽名不一致,從而拒收次簽名的消息。數字簽名方案的構成由兩部分組成:簽名算法和驗證算法。設M是消息的集合,S是簽名的集合,K是密鑰的集合:數字簽名算法是一個映射sig:MKS,s=sigk(m)驗證算法也是一個映射ver:MSTrue,False五元組M,S,K,sig,ver稱為一個簽名方案(算法)。實例,一種常用的基于公鑰密碼算法的數字簽
4、名完成數字簽名方案的三個過程一個數字簽名方案一般包括三個過程:系統初始化過程:產生各種參數,有的公開,有的保密。簽名產生過程:利用簽名算法和參數進行計算,產生消息的簽名。簽名過程可以公開,可以不公開,但一定包含僅簽名者才有的私密信息(簽名密鑰)。簽名驗證過程:驗證者利用公開的驗證方法和參數對給定簽名進行驗證,得出簽名的有效性。數字簽名的執行方式數字簽名的執行方式數字簽名的執行方式有兩類:直接進行數字簽名利用仲裁的參與進行數字簽名直接進行數字簽名直接數字簽名過程只有通信雙方參與,并假定雙方有共享的秘密密鑰,或者接收一方知道發送方的公開密鑰。例如,接受者可以獲得消息發送者的公鑰,發送者用自己的私鑰
5、對整個消息或者消息散列碼進行加密來形成數字簽名。特點:僅涉及通信雙方有效性依賴發方簽名密鑰的安全性直接進行數字簽名直接數字簽名的幾種形式(1) AB:EPRaM發方直接用私鑰對明文M進行加密。提供真實性,抗抵賴。(2) AB:M|EPRaH(M)發方用私鑰對M的散列值加密。提供真實性、抗抵賴、完整。(3) AB:EPUbEPRa(M)發方用私鑰對明文M簽名,對簽名的結果再用公鑰加密,有兩次加解密運算。提供真實性、抗抵賴、保密性。(4) AB:EKM|EPRaH(M)發方用私鑰對明文M的散列值簽名,再與明文一起加密,有兩次加解密運算。提供真實性、抗抵賴、保密性、完整性。直接進行數字簽名直接數字簽
6、名的缺點該方法的有效性依賴于發送方私鑰的安全性:發送方要抵賴發送某一消息時,可能會聲稱其私鑰丟失或被竊。通常需要采用與私鑰安全性相關的行政管理控制手段來制止或至少是削弱這種情況,但威脅在某種程度上依然存在。例如:可以要求被簽名的信息包含一個時間戳(日期與時間),以及要求將已泄密的密鑰立即報告給管理中心。但是攻擊依然存在:因為時間戳也可以偽造,例如X的私有密鑰在時間T被竊取,攻擊者可以偽造X的簽名并附上時間T之前的時間戳。仲裁數字簽名針對直接數字簽名的缺點,可在通信雙方的基礎上引入第三方仲裁者的參與,過程如下:從發送方S到接收方R的所有簽名消息先送到仲裁者A仲裁者A對消息M及其簽名進行測試,檢查
7、其內容和來源仲裁者A將消息加上時間戳T仲裁者A將已被驗證通過的數字簽名一起發送給接收方R。下面介紹幾個具體的仲裁數字簽名方案。仲裁數字簽名方案一方案一:對稱加密,仲裁者可以看到消息內容S與A、R與A都有共享的秘密密鑰。具體過程如下:(1)SA:M|EKSAIDs|H(M)其中,IDs是S的身份標識。S以EKSAIDs|H(M)作為對M的簽名,將M及簽名發往A。(2)AR:EKARIDs|M|EKSAIDs|H(M)|TA對EKSAIDs|H(M)解密后驗證S的簽名,驗證完后加上IDs、T一起加密后發往R。T用于向R表示不是舊消息的重放。其中,E是對稱加密算法;KSA和KAR分別是A,S和A,R
8、的共享密鑰。H(M)是M的散列值。R將消息解密后,結果保存以備后用。仲裁數字簽名方案一方案一的仲裁如果出現爭議,R可聲稱自己收到的M的確來自S,并將EKARIDs|M|EKSAIDs|H(M)|T發給A,由A仲裁。A用KAR對整個EKARIDs|M|EKSAIDs|H(M)|T解密后,再用KSA對EKSAIDs|H(M)進行解密,并通過H(M)和IDs來判斷是不是S的簽名。仲裁數字簽名方案一方案一的仲裁仲裁者A起著關鍵作用,要求:S必須確信A不會泄露KSA ,也不會產生虛假的數字簽名。R必須確信A只有在散列碼正確且S的數字簽名被證實的情況下才發送。通信雙方必須確信A能公平地解決爭端。只有遵循上
9、述要求,簽名才不能偽造和否認。方案中消息以明文方式發送,未提供機密性保護。仲裁數字簽名方案二方案二:對稱加密,仲裁者不能看到消息內容S與A、R與A有共享密鑰,S與R之間也有共享密鑰。過程如下(1)SA:IDs| EKSRM |EKSAIDs|H(EKSRM)S把EKSAIDs|H(EKSRM)作為簽名和M的加密一起發送給A。(2)AR:EKARIDs|EKSRM|EKSAIDs|H(EKSRM)|TA對EKSAIDs|H(EKSRM)解密后驗證S的簽名(A始終不見明文M)。A驗證完后,加上時間戳T,再用KAR加密后發往R。如果發生爭議,解決方法與方案一相同。仲裁數字簽名方案二方案二對消息M提供
10、了保密性,但是與方案一仍存在相同的問題如下:(1)A和S可以合謀來否認曾經發送過某個消息。(2)A和R也可以合謀來偽造S的簽名。采用基于公鑰密碼體制的簽名方案可解決這一問題。仲裁數字簽名方案三方案三:公鑰加密,仲裁者不能看到消息內容S和R能獲得A的公鑰, S和R也能獲得對方公鑰。過程如下:(1)SA:IDs|ES的私鑰IDs|ER的公鑰ES的私鑰MS用私鑰KRS對M加密實現簽名,用R的公鑰加密實現機密性,任何第三方,包括A都不知消息的內容。(2)AR:EA的私鑰IDs|ER的公鑰ES的私鑰M|TA收到S的消息,用S的公鑰對ES的私鑰IDs|ER的公鑰ES的私鑰M進行解密,將得到的IDs與事先收
11、到的IDs進行比較確認來自S。之后, A將S的身份IDs和S對消息M的簽名加上T,再用自己的私鑰KRA進行簽名后發往R。其中,KRS和KRA分別是S和A的私鑰,KUR是R的公鑰。仲裁數字簽名方案三方案三的優點:在方案執行以前,各方都不必有共享的信息,避免合謀行為只要仲裁者A的私鑰不被泄露,任何人包括發送方就不能重放消息對任何第三方(包括A),S發往R的消息都是保密的。基于公鑰密碼體制的典型數字簽名方案RSA數字簽名方案RSA數字簽名方案在許多安全標準中得到廣泛應用。ISO/IEC9796和ANSI X9.30-199x以及美國聯邦信息處理標準FIPS 186-2將RSA作為推薦的數字簽名標準算
12、法之一。RSA數字簽名方案基本算法如下:1.系統初始化過程產生兩個大素數p,q,計算n=pq;隨機選取一個與(n)互素的整數e作為公鑰,私鑰d滿足ed=1 mod (n)。用戶A公開公鑰e,n,保密d,p和q。2.簽名產生過程用戶A對消息MZn用d進行簽名,計算SA=Sig(M)=Md mod n并將SA附在消息M后。RSA數字簽名方案基本算法如下:3.簽名驗證過程假設用戶B要驗證用戶A對消息M的簽名,用戶計算M=SAe mod n其中e為公鑰,通過判斷M與M是否相等來確認簽名是否確是A所產生,如果不是,拒絕該簽名消息。RSA數字簽名方案RSA數字簽名方案幾點說明方案對整個消息簽名,因RSA速
13、度比較慢,當消息比較長時,簽名與驗證過程也比較慢。可先對消息進行散列計算(H(M)),再對散列值進行簽名以提高速度。安全性基于RSA算法自身的安全性,因d是私鑰,公鑰e驗證,而e是由簽名方發布,私鑰d自己保管,簽名的生成難以偽造。RSA數字簽名方案幾個安全問題利用簽名對密文進行破譯設公鑰為(e,n),私鑰為d。用公鑰e對明文m加密得到密文c,c=me mod n,攻擊者試圖找出該明文m,方法如下:(1)攻擊者隨機選取rn,gcd(r,n)=1,計算:u=re mod n,y=uc mod n,t=r-1 mod n(2)攻擊者請求用私鑰d對y的簽名,得到s=yd mod n(3)攻擊者計算ts
14、 mod n,結果即為明文m。證明如下:因u=re mod n,得r=ud mod n,故t=r-1 mod n=u-d mod n。ts mod n=u-dyd mod n=u-dudcd mod n=cd mod n=med mod n=mRSA數字簽名方案幾個安全問題騙取仲裁的簽名設仲裁的公鑰為(e,n),私鑰為d。攻擊者要簽名的消息為m。因仲裁懷疑m中有不真實的成分而拒絕直接簽名。攻擊者欺騙方法如下:(1)攻擊者隨機選取一個數x,計算y=xe mod n和t=x-1 mod n(2)攻擊者在計算M=my mod n,將m的信息隱藏在M中。再將M發送給仲裁簽名(3)仲裁不能拒絕對M簽名,
15、將簽名s=Md mod n返回(4)攻擊者計算st即可得到對m的簽名md mod nst=(Md mod n)(x-1 mod n)=mdydx-1 mod n=mdxedx-1 mod n =mdxx-1 mod n=md mod nRSA數字簽名方案幾個安全問題偽造用戶簽名如果攻擊者能夠獲得用戶對消息m1、m2的簽名m1d mod n和m2d mod n,那么攻擊者就可偽造對新消息m=m1m2的簽名:md mod n=m1d m2d mod n。因此攻擊者可將m分解成兩個(或多個)更能迷惑合法用戶的消息m1和m2以獲得用戶的簽名。此攻擊方法為選擇密文攻擊。以上情況表明:對陌生人提交的消息進
16、行直接簽名存在一定風險,通常的解決方法是對消息m進行散列運算后,再對結果進行簽名來避免。作業:設用戶A的公鑰為(NA=33,eA=17),用戶B的公鑰為(NB=55,eB=23),用戶A應用RSA算法向用戶B傳送消息M=10時,求A發送的帶簽名的信息以及用戶B對簽名的驗證。EIGamal數字簽名方案EIGamal數字簽名方案是T. EIGamal在1985年發表關于EIGamal公開密鑰密碼時給出的兩個方案之一(另外一個用于加密)。EIGamal數字簽名方案有很多變體,其中最重要的有美國NIST在1991年公布的數字簽名標準(DSS)中使用的數字簽名算法DSA。EIGamal數字簽名方案算法描
17、述1.系統初始化:對系統公共參數和用戶的密鑰進行設置。(1)系統公共參數選擇大素數p,使得Zp中的離散對數問題為困難問題;選擇Zp*上的一個本原根a(2)用戶選擇密鑰用戶選擇一個隨機數x,且1xp-1,計算y=ax mod p。x作為私鑰用于簽名,y作為公鑰用于驗證。公開p,a以及公鑰y,私鑰x保密。EIGamal數字簽名方案算法描述2.簽名過程(1)選擇與p-1互素的隨機數k,kZp*;(2)簽名方對消息M計算:r=ak mod ps=(M-xr)k-1 mod (p-1)其中x為私鑰。(3)用戶A將(r,s)作為對消息M的數字簽名,與消息M一起發送給接收方。因此簽名空間為ZpZp-1。EI
18、Gamal數字簽名方案算法描述3.驗證簽名過程接收方B在收到消息M與簽名(r,s)后進行驗證。(1)計算yrrs mod p和aM mod p,其中y為A的公鑰。(2)若yrrs=aM mod p,則確認簽名有效,否則無效。EIGamal數字簽名方案算法描述EIGamal數字簽名方案對EIGamal數字簽名算法的正確性進行驗證驗證:若(r,s)為采用EIGamal簽名算法對消息M的簽名,則有yrrs=aM mod p。證明 由于yrrs=(ax)r(ak)s=axraks=axr+ks mod p;又由s=(M-xr)k-1 mod (p-1);所以有 sk+xr=M mod (p-1);由模
19、運算的性質(xy=x(y mod (p) mod p,其中(p)=p-1)有:axr+ks=aM mod p所以有 yrrs=aM mod p。驗證算法表述如下:Ver(M,(r,s)=(yrrs mod p=aM mod p)? True: false。EIGamal數字簽名方案例,設素數p=11,a=2是Z11*上的本原根,用戶A選擇私鑰x=8,消息M=5,用戶A選擇的簽名隨機數k=9,計算A用EIGamal數字簽名算法對消息M的簽名以及用戶B對簽名的驗證。(1)用戶A計算公鑰y。y=ax mod p=28 mod 11=3,并把公鑰y=3公開。(2)用戶A計算消息M的簽名。因k=9,(1
20、1)=10,gcd(9,10)=1,所以9模10的逆存在,利用歐幾里得算法計算:k-1 mod (p-1)=9-1 mod 10=9。用戶A計算: r=ak mod p=29 mod 11=6;s=(M-xr)k-1 mod (p-1)=(5-86)9 mod 10=3EIGamal數字簽名方案(r,s)=(6,3),用戶A將(6,3)作為對消息的簽名,并與消息一起發送給接收方B。(3)接收方對消息進行驗證。計算yrrs mod p=3663 mod 11=10以及aM mod p=25 mod 11=10兩者相等,則認為(6,3)為有效簽名。EIGamal數字簽名方案EIGamal數字簽名算
21、法的安全性分析:安全性基于求解有限域上的離散對數難題,說明如下:若攻擊者想直接獲得簽名密鑰x,則要求解有限域上的離散對數x=logay難題。若攻擊者偽造簽名(r,s),以使得驗證yrrs mod p=aM mod p通過,有兩種方法:一是選定r值,構造滿足等式的s,此時需要求解離散對數 ;二是選定s,構造滿足等式的r,此時需要求解關于r的同余方程yrrs aM mod p,而目前對這類方程還沒有可行的解法。EIGamal數字簽名方案EIGamal數字簽名算法的安全性分析:EIGamal數字簽名算法是一個非確定性數字簽名算法,隨機數k不同,對同一個消息M所產生的簽名不同。在簽名時使用的隨機數k不
22、能被泄露,若泄露,則由s=(H(M)-xr)k-1 mod (p-1)計算可得 x=(H(M)-ks)r-1 mod (p-1)即得私鑰x,簽名算法被攻破。EIGamal數字簽名方案EIGamal數字簽名算法的安全性分析:隨機數k不能重復使用。已證明若能取得兩個相同的k的簽名,則可計算得到私鑰x,如下。設(r,s1)和(r,s2)是消息m1和m2的簽名,m1m2 mod (p-1) ,有m1xr+ks1 mod (p-1),m2xr+ks2 mod (p-1),兩式相減得:m1-m2k(s1-s2) mod (p-1)。上式是關于k的一元一次同余方程,求解該方程可得k值。方法如下:EIGama
23、l數字簽名方案設d=gcd(s1-s2, p-1),那么d|(p-1)且d|(s1-s2),所以d|(m1-m2)。記m=(m1-m2)/d,s=(s1-s2)/d,p=(p-1)/d,則等式化簡為:mks mod p此化簡后的一元一次同余方程只有一個解,為k m(s)-1 mod p進一步,因d=gcd(s1-s2, p-1),根據一元一次同余方程求解的定理,方程m1-m2k(s1-s2) mod (p-1)有d個解,這d個解可表示為k= m(s)-1 +ip mod (p-1),i=0,1,d-1。針對這d個k值,結合等式r=ak mod p逐一驗證排除,即可找到唯一正確的k值,有了k值后
24、即可求得私鑰x。數字簽名標準DSSDSS是美國國家標準技術研究所NIST在1994年12月正式頒布的標準FIPS PUB 186標準中采用的數字簽名算法稱為DSA(Digital Signature Algorithm),而散列算法采用SHA-1。DSA是EIGamal數字簽名方案的改進,安全性仍然基于有限域上計算離散對數的困難性。已在許多數字簽名標準中推薦使用。DSA數字簽名算法描述1. DSA的參數p是素數,要求2N-1p2N,512N1024,即p的長度在512到1024bit之間,且N為64的倍數。q|(p-1),且q是素數,2159q2160,即q的長度為160位。g=h(p-1)/
25、q mod p,其中h是整數,滿足1h1。隨機選取整數x作為私鑰,要求0 xq。計算用戶的公鑰y=gx mod p。參數中,p、q以及g是公開的系統參數,x是私鑰,y是公鑰。在第步中,給定x計算y容易,但是給定y求x困難。DSA數字簽名算法描述2. 簽名過程(1)發送方A選取隨機數整數k,0kq,并對k保密;(2)并計算r=(gk mod p) mod qs=k-1(H(M)+xr) mod q其中x為私鑰,H(M)為用SHA-1生成散列碼,k-1是k模q的乘法逆,(r,s)即為簽名。DSA數字簽名算法描述3. 簽名驗證過程B收到消息M,r,s后,首先驗證0r,sq,如果通過則計算w=s-1
26、mod q;u1=H(M)w mod q;u2=rw mod q;v=(gu1yu2) mod p mod q。其中y是公鑰。若v=r,則確認簽名合法。DSA數字簽名算法描述簽名驗證過程正確性的證明定理2 設p和q是素數且滿足q|(p-1),h是小于p的正整數, g=h(p-1)/q mod p,則gq mod p=1,并且假如m=n mod q,則gm=gn mod p。證明:p是素數且h小于p,故h,p互素。根據費爾馬小定理有 gq=(h(p-1)/q)qh(p-1)1 mod p;由于m=n mod q,有m=n+kq,其中k為整數,則gm=gn+kq=gngkq=gn(gq)k=gn
27、mod pDSA數字簽名算法描述簽名驗證過程正確性的證明定理3 如果(r,s)是合法用戶A采用DSA數字簽名算法對消息M的簽名,則一定有v=r成立。證明:考慮v=(gu1yu2 mod p) mod q,而y=gx mod p,有DSA數字簽名算法描述簽名驗證過程正確性的證明而s=k-1(H(M)+xr) mod q,因此s-1=k(H(M)+xr)-1 mod q,也就是 s-1(H(M)+xr)=k mod q由定理2有所以有DSA數字簽名算法描述例,假設q=23,p=47,并取h=17,用戶A選擇了x=10作為自己的簽名私鑰,取k=19,H(M)=15,試計算消息M的簽名并對簽名驗證。計
28、算g=h(p-1)/q mod p=17(47-1)/23 mod 47=7計算用戶A的公鑰y=gx mod p=710 mod 47=32由于k=19與q=23互素,所以19在模23下的乘法逆存在,利用歐幾里得算法計算:k-1 mod q=19-1 mod 23=17用戶A計算消息M的數字簽名r=(gk mod p) mod q=(717 mod 47) mod 23=12s=k-1(H(M)+xr) mod q=17(15+1012) mod 23=18消息M的簽名(r,s)=(12,18)DSA數字簽名算法描述例,假設q=23,p=47,并取h=17,用戶A選擇了x=10作為自己的簽名私
29、鑰,取k=19,H(M)=15,試計算消息M的簽名并對簽名驗證。用戶B對簽名進行驗證,計算如下:w=s-1 mod q=18-1 mod 23=9;u1=H(M)w mod q=159 mod 23=20;u2=rw mod q=129 mod 23=16;v=(gu1yu2 mod p) mod q=(7203216 mod 47) mod 23=12由于v=r,故用戶B認為是用戶A的合法簽名。DSA數字簽名算法的安全性分析安全性基于計算有限域上的離散對數的困難性。目前認為,素數p的長度在1024位是相對比較安全的。512位無法保證較長時間的安全。簽名與隨機數k有關,相同的消息可以產生不同的
30、簽名,故DSA算法是非確定性的簽名算法。隨機數k不能重復使用。已證明若能取得兩個k相同的簽名,則可計算得到私鑰x。基于橢圓曲線密碼的數字簽名基于橢圓曲線密碼的數字簽名算法ECDSA,是標準IEEE1363中的數字簽名算法。是數字簽名算法DSA在橢圓曲線上的模擬,安全性基于橢圓曲線上的離散對數問題。基于橢圓曲線密碼的數字簽名算法描述如下設E是定義在有限域Zp上的橢圓曲線,E上的點構成有限群,記為Ep(a,b)。在Ep(a,b)中選擇一個基點G,設其階為n。基于橢圓曲線密碼的數字簽名算法描述如下1. 參數選取用戶選取大整數d(1d3時,由y2x3+ax+b mod p,4a3+27b20 mod
31、p定義的曲線。基點G及其階n;每個用戶的公鑰Q=dG。基于橢圓曲線密碼的數字簽名算法描述如下2. 簽名過程選擇隨機數k,1kn-1;計算:kG=(x1,y1),取r=x1 mod n。若r=0,重新選擇k,并再次計算kG和r;計算:s=k-1(H(M)+dr) mod n,其中d為簽名方A的私鑰。若s=0,回到第步。否則用戶A把(r,s)作為消息M的簽名,與消息M一起發送給接收方。基于橢圓曲線密碼的數字簽名算法描述如下2. 簽名過程基于橢圓曲線密碼的數字簽名算法描述如下3. 簽名驗證(1)驗證r和s是否滿足:1r,sn-1,若不是則拒絕簽名(2)計算u1=H(M)s-1 mod n和u2=rs
32、-1 mod n(3)利用公鑰Q計算:X(x2,y2)=u1G+u2Q,取v=x2 mod n(4)若v=r,接受簽名,否則拒絕簽名。基于橢圓曲線密碼的數字簽名算法描述如下3. 簽名驗證基于橢圓曲線密碼的數字簽名簽名驗證正確性的證明證明如下: X(x2,y2)=u1G+u2Q =H(M)s-1G+rs-1Q mod n =H(M)s-1G+rs-1dGmod n = s-1G(H(M)+dr) mod n而s=k-1(H(M)+dr) mod n,有 s-1=k(H(M)+dr)-1 mod n代入有X(x2,y2)=s-1G(H(M)+dr) mod n=k(H(M)+dr)-1G(H(M)
33、+dr) mod n =kG=(x1,y1),故x1=x2,也就是v=r。基于橢圓曲線密碼的數字簽名例,設p=11,E:y2x3+x+6 mod 11,有限域Z11。由于E11(1,6)上定義的加法運算構成循環群, E11(1,6)中任意元素都可作為基點,任取G=(2,7),G的階為n=13。用戶A選擇私鑰d=7,消息M的散列碼H(M)=5,計算用戶A對消息M的簽名并驗證簽名。g=(2,7), 2g=(5,2), 3g=(8,3), 4g=(10,2), 5g=(3,6), 6g=(7,9), 7g=(7,2), 8g=(3,5), 9g=(10,9), 10g=(8,8), 11g=(5,9
34、), 12g=(2,4), 13g=O14g=g,基于橢圓曲線密碼的數字簽名例,(1)計算公鑰Q=dG=7(2,7)=(7,2)(2)計算簽名:用戶A選取隨機數k=2,計算kG=2(2,7)=(5,2),取r=5 mod 13;計算k-1 mod n=2-1 mod 13=7;計算s=k-1(H(M)+dr) mod n=7(5+75) mod 13=7.簽名(r,s)=(5,7),一起與消息M發給接收方B。基于橢圓曲線密碼的數字簽名例,(3)接收方B對簽名驗證:計算:u1=H(M)s-1 mod n=57-1 mod 13=10; u2=rs-1 mod n=57-1 mod 13=10;用
35、公鑰Q計算:X(x2,y2)=u1G+u2Q=10(2,7)+10(7,2)=10(2,7)+10(7(2,7)=80(2,7) =(136+2)(2,7) =2(2,7)=(5,2)v=x2 mod 13=5 mod 13=5。v=r,故用戶B認為簽名是用戶A的有效簽名。特殊的數字簽名方案特殊的數字簽名方案不同的應用需求情況下需要特殊的數字簽名方案。盲數字簽名群簽名不可否認簽名盲數字簽名例,在無記名的電子選舉投票系統中,文件規定需要管理中心對選票簽名而令選票有效,但又必須保證選票的內容不為人所知。在電子現金系統中,需要銀行為電子現金簽名,而又保證消費者消費內容的匿名性。盲數字簽名在常規的數字
36、簽名方案中,簽名者總是先知道數據的內容后才實施簽名,這是通常的辦公事務所需要的。但有時卻需要某人對數據進行簽名,但不能讓他知道數據的內容。這種簽名方式稱為盲數字簽名(blind signature)。盲數字簽名簽名過程的一個形象比如 簽名過程比如成在信封上簽名:明文就是書信的內容,將明文寫在信紙上,簽名者不直接在信紙上簽名。將信紙放在合法的信封內,且信封具有復寫功能。簽名者對信封的合法性進行判斷,并使用硬筆在信封上簽名,簽名筆跡將復寫到信紙上。由于簽名者不能拆開信封,既實現了簽名,又沒有獲知書信的具體內容。以上過程中的給信紙增加具有復寫能力的信封,這一過程稱為盲化處理。盲簽名的實現應用兩個算法
37、實現:第一個是加密算法,對消息進行隱藏,實現盲化處理;第二個算法為簽名算法,對消息進行簽名。例,設機密消息M的擁有者為用戶A,簽名者為B。盲化算法E及密鑰Ka為A擁有,簽名算法Sig及密鑰Kb為B擁有,所有算法及其驗證密鑰公開,其他密鑰保密,則盲簽名過程為:盲簽名的實現用戶A將消息加密Ca=Eka(M),實現盲化處理,然后將盲化后的消息Ca發送給簽名者B;簽名者B用其簽名算法及密鑰對盲化消息Ca進行簽名,Cab=Sigkb(Ca),然后將Cab發送給A;用戶A對Cab解盲,得到Cb=DkaCab=DkaSigkb(Eka(M)=SigkbDka(Eka(M)=Sigkb(M)用戶A得到簽名者B
38、對消息M的盲簽名。從以上運算過程可知,實現盲化處理的加密算法必須與簽名算法在運算上可交換。利用RSA算法實現盲簽名簽名者B的公鑰為(e,n),私鑰為d。用戶A有消息M需要B進行盲簽名。用戶A隨機選取一個整數1kM,進行盲化處理:t=Mke mod n將t發送B簽名,k保密;B對t進行簽名s=td=(Mke)d mod n=Mdk mod n然后將s發送給A;A收到s后,通過解盲計算得到B對消息M的簽名信息SigSig=sk-1 mod n=Mdkk-1 mod n=Md mod n群簽名以上介紹的數字簽名方案中,簽名與簽名者對應。在某些場合需要某個群組中的任何一個成員都可以以群組的名義進行匿名
39、簽名,驗證者可以確認數字簽名來自該群組,但不能確認具體到人。只要群組合法,認為該簽名合法。但當爭議出現時,采用一種機制就能識別出那個簽名者。滿足這一要求的數字簽名就是群簽名。群簽名例如:網上匿名投標場合等需要這樣一種簽名群組是由所有提交投標報告的公司組成的集合,群成員是每個投標公司。各投標公司可匿名使用群簽名算法對投標報告進行簽名,招標機構很容易驗證這是一個有效的簽名標書。當某個投標被選中后,通過可信機構能夠識別出具體的簽名者,而其他投標的簽名者仍然是匿名的。如果簽名者反悔投標,則無需簽名者的合作,就能識別出他的身份。群簽名群簽名方案涉及的實體包括群組、群組成員、簽名驗證者以及一個可信機構。特
40、點如下:只有群組的成員能代表群組進行簽名,并產生群簽名,群組之外的成員不能簽名;簽名驗證能驗證是該群組的一個有效簽名,但不能辨認是群組中的哪個成員產生的簽名;在后來發生爭端的情況下,通過可信機構能識別出那個簽名者。群簽名群簽名方案包括簽名算法、驗證算法和識別算法:假定有n個用戶構成一個群組G,T是一個可信機構。可信機構T選擇大素數p,使得在Zp上的離散對數是難解問題,g是p的本原根。設G中的第i個成員有私鑰si,對應公鑰是gsi mod p(1in),該公鑰稱為基本公鑰。T為成員i選取一個隨機數riZp*,計算y=(gsi)ri mod p(1in),則y可作為對成員i公鑰的盲化處理,ri為盲
41、化因子。成員i使用risi mod (p-1)作為簽名的私鑰。同時,可信機構保存一個信息表,包括所有群組成員的姓名、基本公鑰gsi mod p和盲化公鑰y。群簽名在簽名產生階段,成員可使用EIGamal數字簽名方案對消息M進行簽名。當簽名接收者收到消息及簽名時,使用盲化公鑰進行驗證,只要有一個公鑰能夠通過驗證,就表明該簽名是群組G的一個合法簽名。如果發生爭執,簽名接收者可將通過驗證的公鑰和簽名一起提交給可信機構T,T找出對應的簽名者。群簽名例,使用EIGamal數字簽名方案實現群簽名參數:大素數p, g是p的本原根,成員i的私鑰是si,基本公鑰是 gsi mod p,盲化公鑰是y=(gsi)r
42、i mod p,因此用于簽名的私鑰是x=risi mod (p-1)。p,g,y公開,si,x保密。簽名:某用戶選隨機數k,計算(r,s):r=gk mod p,s=(H(M)-xr)k-1 mod (p-1)。將(r,s)作為對消息M的簽名。驗證過程:利用公布的所有成員的盲化公鑰y計算yrrs mod p與gH(M) mod p若存在一個y使得上兩式相等,則認為該簽名是某個成員的簽名,簽名有效。群簽名驗證證明如下:設y=(gsi)ri mod p是成員i的盲化公鑰,計算yrrs=(gsi)ri)r(gk)s=gsirir+ks=gxr+ks mod p;又由s=(H(M)-xr)k-1 mo
43、d (p-1);所以有 sk+xr=H(M) mod (p-1);由模運算的指數性質(xy=x(y mod (p) mod p,其中(p)=p-1)有:gxr+ks=gH(M) mod p所以有 yrrs=gH(M) mod p。群簽名一個安全的群簽名有以下性質:匿名性。給定某個消息的一個有效群簽名后,除了可信機構外,任何人識別出簽名者的身份在計算上不可行。不關聯性。除了可信機構,確定兩個不同的有效群簽名是否源自同一個群成員所簽,在計算上不可行。防偽造性。只有群成員才能代表這個群組產生有效的群簽名。可跟蹤性。可信機構在必要時可以識別出群簽名者的身份。群簽名一個安全的群簽名有以下性質:可開脫性。
44、可信機構及任何群成員都不能以其他群成員的名義產生有效的群簽名,這樣群成員不必為他人產生的群簽名負責。抗合謀攻擊。即使一些群成員合謀也不能產生一個有效的群簽名,使得可信機構不能將群簽名與其中一個群成員的身份聯系起來。不可否認簽名例1:用戶A向用戶B借了一筆錢,用戶A必須在借據上簽名。但用戶A不希望別人了解他借錢這個事實,更擔心用戶B復制有用戶A簽名的借據到處散布,并驗證給人看,從而影響用戶A的信譽,進而損害A的商業活動。因此,用戶A希望簽名借據在驗證時必須有他的親自參與才能完成。如果A不參與,則無法進行驗證,從而無法知道借據的真假,也就無法證明“A向B借錢”這一事實。不可否認簽名例2:某軟件公司
45、A開發一款軟件產品。公司A將軟件產品和對產品的簽名賣給用戶B。B如果要驗證產品的真實性只有在A的參與配合下才能完成,通過后才能得到公司A的售后技術支持。假如用戶B想把該軟件產品復制后私自賣給第三方,買賣過程中,B要向第三方驗證產品的真實性,由于沒有公司A的參與,無法完成驗證,第三方不能接受,從而保護公司A的利益。以上兩種簽名是一種被稱為“不可否認”的簽名。不可否認簽名不可否認簽名的概念首先由D.Chaum和Van Antwerpen在1989年提出,兼顧簽名者和接收者的利益,既保證簽名不能被接收者濫用,又能夠在以后使簽名被人相信。不可否認簽名不可否認性包括兩層含義:(1)簽名的證實和否定必須有
46、簽名者合作才能完成以防止未經簽名者的授權,簽名文件被復制和分發的可能。如果簽名是偽造的,在簽名者和驗證者的配合下能證明該簽名事實是偽造的。(2)簽名者不能否認他曾簽過的名如果簽名通過驗證,因有簽名者的參與,簽名者不能否認這個簽名事實。滿足這種需求的簽名稱為不可否認簽名(undeniable signature scheme)。不可否認簽名不可否認簽名借用法律的原理來防止簽名者的抵賴行為:如果簽名者拒絕參與簽名驗證,則在法理上就存在否認簽名的嫌疑,可認定簽名者的簽名事實;如果在驗證過程中,簽名者使用虛假的方法或數據,驗證算法能夠發現,也可認定簽名者的簽名事實;如果驗證者提供的簽名是偽造的,則簽名者也可以發現并證明,從而否認這個簽名。不可否認簽名不可否認簽名方案由三個部分組成:(1)簽名生成算法簽名者生成簽名,其他人無法偽造。(2)簽名的驗證協議簽名者和驗證者執行交互式協議:只要簽名者和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB61-T 1733.4-2023 清明公祭軒轅黃帝典禮活動規范 第4部分:安全與應急
- 病理學高級職稱題-強化練習題(一)
- 北師大版八年級數學下冊舉一反三 專題54 分式方程的應用-重難點題型(舉一反三)(原卷版+解析)
- 保潔周工作計劃表
- 休克識別與治療
- 數字貨幣交易介紹
- 全過程機械化施工的設計方案
- 小度端午活動方案
- 小班肉孜節活動方案
- 少先隊學校期末活動方案
- 【上市公司內部控制問題及對策的案例探析:以小米集團為例11000字(論文)】
- 鋼板折邊機完整版本
- 《水泵房系統培訓》課件
- 味精(雞精)批發合同書
- 2014科學調查體驗活動培訓
- 水環境綜合治理服務方案(技術標)
- 《大數據平臺部署與運維》 -教案全套 單元1-10 大數據簡介-Flink流式計算框架部署與操作
- 中國高鐵發展史
- 職業倦怠量表MBIGS (MBIGeneral Survey)
- GB/T 43295-2023教育與學習服務遠程學習服務要求
- 校園網絡文化建設課件
評論
0/150
提交評論