《應(yīng)用密碼學(xué)》課件第7章_第1頁(yè)
《應(yīng)用密碼學(xué)》課件第7章_第2頁(yè)
《應(yīng)用密碼學(xué)》課件第7章_第3頁(yè)
《應(yīng)用密碼學(xué)》課件第7章_第4頁(yè)
《應(yīng)用密碼學(xué)》課件第7章_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章認(rèn)證理論與技術(shù)—數(shù)字簽名7.1數(shù)字簽名概述7.2數(shù)字簽名的原理及分類(lèi)7.3數(shù)字簽名算法7.4數(shù)字簽名標(biāo)準(zhǔn)(DSS)7.5其他專(zhuān)用數(shù)字簽名方案7.6盲簽名方案 7.1數(shù)字簽名概述

在經(jīng)濟(jì)生活中,常常會(huì)在打印的合同、協(xié)議等文檔上面進(jìn)行手寫(xiě)簽名,以確認(rèn)簽名者閱讀過(guò)文檔,并愿意承擔(dān)文檔中要求的責(zé)任和義務(wù),享有相應(yīng)的權(quán)利。一旦發(fā)生爭(zhēng)議,可以根據(jù)文檔的相關(guān)款項(xiàng),進(jìn)行責(zé)權(quán)利的仲裁。由于計(jì)算機(jī)和網(wǎng)絡(luò)的快速發(fā)展,電子商務(wù)日漸興起,通過(guò)在文檔上簽字蓋章的方式進(jìn)行商務(wù)活動(dòng)顯得效率很低。例如,一個(gè)在中國(guó)的公司和一個(gè)在美國(guó)的公司進(jìn)行合作,雙方達(dá)成協(xié)議后,要簽訂一個(gè)合同,則需要一方簽名蓋章后,郵寄或派人到另一方去簽名蓋章。于是人們就想,能不能對(duì)已經(jīng)協(xié)商好的電子文檔進(jìn)行和手寫(xiě)簽名一樣的電子簽名呢?并且這個(gè)電子簽名要求和手寫(xiě)簽名具有相同的法律效力,同時(shí)也是安全的,亦即不能被偽造。這樣,一方簽名后,可以通過(guò)電子郵件發(fā)送給另一方,效率高而且花費(fèi)小。我們知道,手寫(xiě)文檔生效后,對(duì)它的任何修改,如果沒(méi)有足夠的證據(jù),如修改者的簽名或者簽章,修改可以看做無(wú)效,而且任何修改都是容易從視覺(jué)上看出來(lái)的??墒菍?duì)于電子文檔,如何使得經(jīng)過(guò)簽名后的文檔不被篡改?如果篡改了如何進(jìn)行判定?如何防范簽名被偽造?以及如何防范簽名被復(fù)制?也就是對(duì)一個(gè)文檔的簽名,如何防范被通過(guò)非法的方式復(fù)制到另外一個(gè)文檔上呢?

對(duì)于以上的這些問(wèn)題,現(xiàn)在都得到了比較好的解決。解決的辦法就是我們即將學(xué)習(xí)的數(shù)字簽名。數(shù)字簽名的概念由Diffie和Hellman于1976年提出,目的是通過(guò)簽名者對(duì)電子文件進(jìn)行電子簽名,使簽名者無(wú)法否認(rèn)自己的簽名,同時(shí)別人也不能偽造,實(shí)現(xiàn)與手寫(xiě)簽名相同的功能,具有與手寫(xiě)簽名相同的法律效力。

數(shù)字簽名是在密碼學(xué)理論的基礎(chǔ)上發(fā)展起來(lái)的,基于公鑰密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名,每種簽名方案都與某一種或多種密碼體制緊密聯(lián)系在一起。目前主要集中在基于公鑰密碼體制的數(shù)字簽名技術(shù)的研究。由于數(shù)字簽名技術(shù)在現(xiàn)在和未來(lái)社會(huì)里對(duì)政府、企事業(yè)、一般團(tuán)體和個(gè)人的重要影響,世界各國(guó)都加強(qiáng)了對(duì)它的研究。美國(guó)前總統(tǒng)克林頓于2000年6月30日正式簽署的《電子簽名法案》,明確承認(rèn)了電子簽名、電子合同和電子記錄的法律效力,被認(rèn)為是網(wǎng)絡(luò)時(shí)代的重大立法。2000年~2001年,愛(ài)爾蘭、德國(guó)、日本、波蘭等國(guó)政府也先后通過(guò)了各自的電子簽名法案。我國(guó)的電子簽名法也于2005年4月開(kāi)始實(shí)施。

7.2數(shù)字簽名的原理及分類(lèi)

7.2.1數(shù)字簽名的原理

基于非對(duì)稱(chēng)密碼體制和對(duì)稱(chēng)密碼體制都可以產(chǎn)生數(shù)字簽名。不過(guò),基于對(duì)稱(chēng)密碼體制的數(shù)字簽名一般都要求有可信任的第三方,在發(fā)生糾紛的時(shí)候作為仲裁者。所以,在研究中多以非對(duì)稱(chēng)密碼體制為基礎(chǔ),提出數(shù)字簽名方案。下面以基于RSA簽名的算法為例子,說(shuō)明數(shù)字簽名的原理及過(guò)程。我們知道,在RSA加密算法中,假如用戶(hù)Bob的參數(shù)選取簡(jiǎn)單寫(xiě)為n=pq,de≡1(modφ(n)),則{e,n}為公開(kāi)密鑰,{d,n}為秘密密鑰。對(duì)于一個(gè)秘密密鑰{d,n},在滿(mǎn)足de≡1

modφ(n)的條件下,只有唯一的{e,n}與之對(duì)應(yīng)。如同在介紹RSA加密算法時(shí)所提及的那樣,一個(gè)用戶(hù)的公鑰會(huì)在較長(zhǎng)時(shí)間內(nèi)保持不變,故我們可以說(shuō),在一定時(shí)間內(nèi),{e,n}表示了秘密密鑰{d,n}的持有者的身份。

如果秘密密鑰{d,n}的持有者Bob聲明某個(gè)信息m并放于公共媒介如網(wǎng)絡(luò)之上,那么其他人如何確定這個(gè)消息就是他發(fā)布的原信息而沒(méi)有被其他人更改過(guò)呢?也就是如何確定消息的完整性呢?7.2.2數(shù)字簽名的分類(lèi)

1.按理論基礎(chǔ)分類(lèi)

按數(shù)字簽名所依賴(lài)的理論基礎(chǔ)分,主要可以分為如下三類(lèi):

(1)基于大數(shù)分解難題的數(shù)字簽名,如7.3節(jié)及7.6節(jié)介紹的例子;

(2)基于離散對(duì)數(shù)的數(shù)字簽名,如7.4節(jié)介紹的DSA;

(3)基于橢圓曲線離散對(duì)數(shù)的數(shù)字簽名,這類(lèi)簽名往往由基于離散對(duì)數(shù)的數(shù)字簽名改進(jìn)而來(lái)。

近年來(lái),隨著密碼理論的發(fā)展,人們又提出了基于雙線性對(duì)的數(shù)字簽名等。

2.按用途分類(lèi)

從數(shù)字簽名的用途分,可以把數(shù)字簽名分為普通的數(shù)字簽名和特殊用途的數(shù)字簽名。普通的數(shù)字簽名往往可以和身份認(rèn)證相互轉(zhuǎn)換,特殊用途的數(shù)字簽名,如盲簽名、代理簽名、群簽名、門(mén)限簽名等,多是在某些特殊的場(chǎng)合下使用。盲簽名通常用于需要匿名的小額電子現(xiàn)金的支付,代理簽名可以用于委托別人在自己無(wú)法簽名的時(shí)候(如外出旅游)代替簽名等。這部分內(nèi)容請(qǐng)參考7.5節(jié)。

隨著研究的深入,數(shù)字簽名用途的增多,分類(lèi)標(biāo)準(zhǔn)的不同可能會(huì)有不同的分類(lèi)。此處只列舉了一些基本的分類(lèi)

7.3數(shù)字簽名算法

7.3.1

RSA數(shù)字簽名

1.RSA數(shù)字簽名描述

1)參數(shù)選擇

①選擇兩個(gè)滿(mǎn)足需要的大素?cái)?shù)p和q,計(jì)算:

n=p×q

φ(n)=(p-1)×(q-1)

其中φ(n)是n的歐拉函數(shù)值。

②選一個(gè)整數(shù)e,滿(mǎn)足1<e<φ(n),且gcd(φ(n),e)=1。通過(guò)d×e≡1(modφ(n)),計(jì)算出d。

③以{e,n}為公開(kāi)密鑰,{d,n}為秘密密鑰。

2)簽名過(guò)程

假設(shè)簽名者為Bob,則只有Bob知道秘密密鑰{d,n}。

設(shè)需要簽名的消息為m,則簽名者Bob通過(guò)如下計(jì)算對(duì)m簽名:s≡md(modn)(m,s)為對(duì)消息m的簽名。Bob在公共媒體上宣稱(chēng)他發(fā)布了消息m,同時(shí)把對(duì)m的簽名s置于消息后用于公眾驗(yàn)證簽名。

3)驗(yàn)證過(guò)程

公眾在看到消息m和其簽名s后,利用Bob的公開(kāi)驗(yàn)證密鑰{e,n}對(duì)消息進(jìn)行驗(yàn)證。公眾計(jì)算m≡se(mod

n)是否成立,若成立,則Bob的簽名有效。公眾認(rèn)為消息m的確是Bob所發(fā)布,且消息內(nèi)容沒(méi)有被篡改。也就是說(shuō),公眾可以容易地鑒別發(fā)布人發(fā)布的消息的完整性。

2.對(duì)上述RSA簽名算法的一個(gè)攻擊

前面所描述的RSA簽名算法是有缺陷的。假設(shè)攻擊者Eve在得到Bob的兩次對(duì)消息的簽名后,很容易實(shí)現(xiàn)偽造。若已知:

(1)Bob對(duì)消息M1的簽名為S1,即S1≡M1dmodn;

(2)Bob對(duì)消息M2的簽名為S2,即S2≡M2dmodn;

則攻擊者Eve可以構(gòu)造消息M3=M1*M2的簽名S3,雖然說(shuō)在已知M1、M2的情況下,M3往往只是一個(gè)數(shù)值,一般來(lái)說(shuō)是沒(méi)有意義的,但不排除有意義的可能性,故導(dǎo)致了算法的不安全性。上面的缺陷可以通過(guò)下面的方式對(duì)算法加以改進(jìn)。

3.對(duì)上述RSA簽名算法的改進(jìn)

假設(shè)公開(kāi)的安全哈希函數(shù)為H(·),參數(shù)選擇如前,其簽名過(guò)程和驗(yàn)證過(guò)程如下所述。

1)簽名過(guò)程

設(shè)需要簽名的消息為m,簽名者Bob通過(guò)如下計(jì)算對(duì)其簽名:s≡H(m)d(modn)(m,s)為對(duì)消息m的簽名。

2)驗(yàn)證過(guò)程

在收到消息m和簽名s后,驗(yàn)證H(m)≡se(modn)是否成立,若成立,則發(fā)送方的簽名有效。

上述過(guò)程用圖形表示(灰色框表示不能篡改及偽造的內(nèi)容),如圖7-1所示。

圖7-1改進(jìn)算法示意圖7.3.2

ElGamal數(shù)字簽名

ElGamal數(shù)字簽名方案于1985年提出,其變形之一成為美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NationalInstituteofStandardsandTechnology,簡(jiǎn)稱(chēng)NIST)提出的DSA(DigitalSignatureAlgorithm)算法的基礎(chǔ)。如ElGamal加密體制一樣,ElGamal簽名算法也是基于離散對(duì)數(shù)難題的。7.3.2ElGamal數(shù)字簽名

2.需注意的問(wèn)題

對(duì)于ElGamal簽名算法的理解,需要注意如下幾個(gè)方面:

(1)這個(gè)方案還是存在一定的不足。比如,由于消息沒(méi)有用哈希函數(shù)進(jìn)行處理,因此簽名容易被偽造。

(2)簽名時(shí)所使用的隨機(jī)值k不能泄露,否則攻擊者可以計(jì)算出簽名的私鑰。通過(guò)變換δ≡(m-xγ)k-1(mod(p-1)),可知x≡(m-kδ)γ-1(mod(p-1))。

(3)對(duì)兩個(gè)不同的消息簽名時(shí),不要使用相同的k,否則容易求得k的值,從而知道簽名者的私鑰。通過(guò)對(duì)上面兩個(gè)算法的學(xué)習(xí),我們可以看到,數(shù)字簽名的一個(gè)重要作用,就是保證了被簽名文檔的完整性。一旦被簽名的文檔內(nèi)容發(fā)生了改變,則無(wú)法通過(guò)驗(yàn)證,從而防止了文檔被篡改和偽造;而且,簽名是與文檔內(nèi)容緊密聯(lián)系的,這樣,對(duì)一個(gè)文檔的簽名,如果復(fù)制到另外一個(gè)文檔上,就通不過(guò)驗(yàn)證,使得簽名對(duì)該文檔無(wú)效。在進(jìn)行數(shù)字簽名時(shí),往往需要對(duì)消息計(jì)算其消息摘要。一般來(lái)說(shuō),計(jì)算消息的消息摘要值有兩個(gè)作用,一是增強(qiáng)了算法的安全性,如前面我們?cè)赗SA簽名算法中所看到的那樣;二是待簽名的消息往往比較長(zhǎng),一般會(huì)超過(guò)其消息摘要值,舉例來(lái)說(shuō),如果采用的消息摘要函數(shù)為SHA-256,則其消息摘要的輸出長(zhǎng)度為256比特。我們知道,一個(gè)英文字母的長(zhǎng)度為8比特,一個(gè)漢字的長(zhǎng)度為16比特,則256比特相當(dāng)于32個(gè)字母或者16個(gè)漢字,而實(shí)際應(yīng)用中的消息如合同、通知等的長(zhǎng)度往往都比這個(gè)數(shù)值大得多,往往是幾十KB甚至幾MB大小,計(jì)算其消息摘要值有利于減少在簽名時(shí)的計(jì)算量;三是消息摘要函數(shù)具有的“雪崩效益”,對(duì)文檔的任何修改,都會(huì)使得其消息摘要值發(fā)生較大的變化,從而不能通過(guò)對(duì)文檔的簽名進(jìn)行驗(yàn)證。 7.4數(shù)字簽名標(biāo)準(zhǔn)(DSS)

7.4.1

DSA的描述

1.算法的參數(shù)

p是L比特長(zhǎng)的素?cái)?shù),L的長(zhǎng)度為512比特到1024比特且是64的倍數(shù)。q是160比特長(zhǎng)且為p-1的素因子。g≡h(p-1)/q(modp),其中h、g是整數(shù),1<h<p-1,且要求g大于1。

x是簽名者的私鑰,由簽名者選取的隨機(jī)數(shù),要求是小于q的正整數(shù);y≡gx(modp)為簽名者的公鑰。選擇安全散列算法H(),標(biāo)準(zhǔn)中指定為SHA。

簽名者公開(kāi)(p,q,g,y)及安全散列算法H(),保密x。

2.簽名過(guò)程

對(duì)于消息m,簽名者選取隨機(jī)數(shù)k,k是小于q的正整數(shù),然后計(jì)算:r≡(gkmodp)(modq)s≡(k-1(H(m)+xr))(modq)(r,s)就是對(duì)消息m的簽名。對(duì)于DSA算法,人們還是有一些批評(píng)意見(jiàn),比如認(rèn)為驗(yàn)證比簽名快,q的長(zhǎng)度160比特太短,不能用于加密和分配密鑰等。

另外,我們也要注意到,由于DSA算法是ElGamal簽名算法的變形,故所有對(duì)ElGamal簽名算法的攻擊,也可以用于對(duì)DSA算法的攻擊。不過(guò)就已有的攻擊來(lái)看,DSA算法還是安全的。

與RSA數(shù)字簽名算法比較,DSA在管理上有一個(gè)優(yōu)點(diǎn)。對(duì)于RSA數(shù)字簽名算法,每個(gè)用戶(hù)都要有不同的公鑰,故針對(duì)每個(gè)用戶(hù),都要去產(chǎn)生大的素?cái)?shù)p和q,去計(jì)算d;而對(duì)于DSA算法,管理機(jī)構(gòu)只需要計(jì)算一次p,g,q(通常又叫全局公開(kāi)鑰),每個(gè)用戶(hù)只需要選擇私鑰x,然后計(jì)算公鑰y(通常又叫用戶(hù)公鑰)。7.4.2

DSA舉例

對(duì)于DSA簽名算法的舉例,如果在例子中采用了對(duì)消息進(jìn)行消息摘要值的計(jì)算H(m),則大數(shù)的運(yùn)算容易讓初學(xué)者望而生畏,我們?cè)谶@里采用小的整數(shù)代替H(m)。如果讀者關(guān)心在算法中使用了消息摘要的例子,可以參看DSA的標(biāo)準(zhǔn)fips-186。標(biāo)準(zhǔn)中提到了用MillerRabin素性檢測(cè)算法產(chǎn)生素?cái)?shù),用ANSIX9.17產(chǎn)生隨機(jī)數(shù),以及其他參數(shù)的選取等。

假設(shè)q=101,p=78×101+1=7879,h=19,則g=1978mod7879≡367取x=69,則y≡gxmodp=36769mod7879≡1292假設(shè)想簽名的消息為m=3456,且選擇的隨機(jī)值為k=27,可以計(jì)算k-1≡15(mod101)。故可以算出簽名為r≡(gk

modp)modq=(36727mod7879)mod101≡6797mod101≡30s≡(k-1(m+xr))modq=(15(3456+69×30))mod101≡70可以得到對(duì)m的簽名為(30,70)。驗(yàn)證簽名:w≡s-1modq=70-1mod101≡13u1≡mwmodq=3456×13mod101≡84u2≡rwmodq=30×13mod101≡87v≡((gu1yu2modp)modq=(36784129287mod7879)mod101≡(2456×1687mod7879)mod101≡6797mod101≡30

v=r,因此簽名是有效的可以看到,簽名和驗(yàn)證過(guò)程中的運(yùn)算量是很大的,其中最主要的運(yùn)算集中在模冪運(yùn)算上,而且上面的舉例中,素?cái)?shù)的取值也是比較小的,這些運(yùn)算可以通過(guò)簡(jiǎn)單編程實(shí)現(xiàn)。如果是按標(biāo)準(zhǔn)中的取值,模冪運(yùn)算及大數(shù)的處理對(duì)初學(xué)者來(lái)說(shuō)還是有挑戰(zhàn)性的。 7.5其他專(zhuān)用數(shù)字簽名方案

1)盲簽名

用戶(hù)需要讓簽名者對(duì)明文消息文件進(jìn)行數(shù)字簽名,而又不希望簽名者知曉明文消息文件的具體內(nèi)容,這就需要盲數(shù)字簽名,簡(jiǎn)稱(chēng)盲簽名(BlindSignature)。盲簽名是一種特殊的數(shù)字簽名方法,相對(duì)于一般的數(shù)字簽名而言還應(yīng)當(dāng)具有下列兩個(gè)特性:

(1)盲性:所簽消息的內(nèi)容對(duì)簽名人是盲的,即簽名人簽名時(shí)不能看見(jiàn)消息的具體內(nèi)容。(2)不可追蹤性:即使在盲簽名公開(kāi)后,簽名者仍然不能跟蹤消息—簽名對(duì),即不能把簽名和其在簽名時(shí)看到的信息聯(lián)系起來(lái)。

盲簽名主要用于基于Internet的匿名金融交易,如匿名電子現(xiàn)金支付系統(tǒng)、匿名電子拍賣(mài)系統(tǒng)等應(yīng)用中。

2)門(mén)限簽名

在有n個(gè)成員的群體中,至少有t個(gè)成員才能代表群體對(duì)文件進(jìn)行有效的數(shù)字簽名。門(mén)限簽名通過(guò)共享密鑰方法實(shí)現(xiàn),它將密鑰分為n份,只有當(dāng)將超過(guò)t份的子密鑰組合在一起時(shí)才能重構(gòu)出密鑰。門(mén)限簽名在密鑰托管技術(shù)中得到了很好的應(yīng)用,某人的私鑰由政府的n個(gè)部門(mén)托管,當(dāng)其中超過(guò)t個(gè)部門(mén)決定對(duì)其實(shí)行監(jiān)聽(tīng)時(shí),便可重構(gòu)密鑰,實(shí)現(xiàn)監(jiān)聽(tīng)。

3)代理簽名

1996年,Mambo、Usuda和Okamoto提出了代理簽名的概念。代理簽名允許密鑰持有者授權(quán)給第三方,獲得授權(quán)的第三方能夠代表簽名持有者進(jìn)行數(shù)字簽名。代理簽名相當(dāng)于一個(gè)人把自己的印章托付給自己信賴(lài)的人,讓他代替自己行使權(quán)力。由于代理簽名在實(shí)際應(yīng)用中起著重要作用,所以代理簽名一提出便受到關(guān)注,被廣泛研究。

4)群簽名

允許一個(gè)群體中的成員以整個(gè)群體的名義進(jìn)行數(shù)字簽名,并且驗(yàn)證者能夠確認(rèn)簽名者的身份。

一個(gè)好的群簽名方案應(yīng)滿(mǎn)足以下安全性要求:

①匿名性:給定一個(gè)群簽名后,對(duì)除了唯一的群管理人之外的任何人來(lái)說(shuō),確定簽名人的身份在計(jì)算上是不可行的。

②不關(guān)聯(lián)性:在不打開(kāi)簽名的情況下,確定兩個(gè)不同的簽名是否為同一個(gè)群成員所做在計(jì)算上是困難的。

③防偽造性:只有群成員才能產(chǎn)生有效的群簽名。

④可跟蹤性:群管理人在必要時(shí)可以打開(kāi)一個(gè)簽名以確定出簽名人的身份,而且簽名人不能阻止一個(gè)合法簽名的打開(kāi)。⑤防陷害攻擊:包括群管理人在內(nèi)的任何人都不能以其他群成員的名義產(chǎn)生合法的群簽名。

⑥抗聯(lián)合攻擊:即使一些群成員串通在一起也不能產(chǎn)生一個(gè)合法的不能被跟蹤的群簽名。

在D.Chaum和E.vanHeyst提出群數(shù)字簽名的定義,并給出了四個(gè)實(shí)現(xiàn)方案后,由于群簽名的實(shí)用性,人們對(duì)群簽名進(jìn)行了更加廣泛的研究,提出了分級(jí)多群簽名、群盲簽名、多群簽名、滿(mǎn)足門(mén)限性質(zhì)的群簽名、前向安全的群簽名等。

5)前向安全的數(shù)字簽名方案

普通數(shù)字簽名具有如下局限性:若簽名者的密鑰被泄漏,那么這個(gè)簽名者所有的簽名(過(guò)去的和將來(lái)的)都有可能泄漏,前向安全的數(shù)字簽名方案的主要思想是當(dāng)前密鑰的泄露并不影響以前時(shí)間段簽名的安全性。

在提出以上這些簽名之后,研究者們根據(jù)不同的需要,又給出了一些綜合以上性質(zhì)的簽名,如前向安全的群簽名、盲代理簽名、代理門(mén)限簽名、代理多重簽名、公平盲簽名等。有研究者對(duì)于數(shù)字簽名分類(lèi)進(jìn)行研究,認(rèn)為組合各種特征的簽名,可以得到2萬(wàn)多種類(lèi)型的數(shù)字簽名方案,現(xiàn)在研究者們進(jìn)行理論研究的種類(lèi)還遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到這個(gè)數(shù)目。當(dāng)然,不排除某些類(lèi)的數(shù)字簽名方案只具有理論意義。 7.6盲簽名方案

1982年,Chaum提出了盲簽名概念,在此基礎(chǔ)上提出了一個(gè)盲簽名方案,并指出盲簽名應(yīng)該滿(mǎn)足如下兩個(gè)性質(zhì):

(1)盲性:所簽消息的內(nèi)容對(duì)簽名人是盲的,即簽名人簽名時(shí)不能看見(jiàn)消息的具體內(nèi)容。

(2)不可追蹤性:即使在盲簽名公開(kāi)后,簽名者仍然不能跟蹤消息-簽名對(duì),即不能把簽名和其在簽名時(shí)看到的信息聯(lián)系起來(lái)。通常的一個(gè)比方是,簽名申請(qǐng)人把需要簽名的消息放入一個(gè)有復(fù)寫(xiě)功能的信封中,密封后發(fā)給簽名人,然后簽名人在信封外面的指定地方寫(xiě)下自己的簽名。這樣,簽名者沒(méi)有看到其簽名的消息的內(nèi)容,事后也不能把消息和自己當(dāng)初的簽名聯(lián)系起來(lái)。

顯然,這里有一個(gè)潛在的前提,那就是簽名人會(huì)對(duì)很多消息進(jìn)行盲簽名。如果只是對(duì)一個(gè)消息進(jìn)行了盲簽名,那不用說(shuō),肯定是能聯(lián)系起來(lái)的。

利用盲簽名技術(shù)可以保護(hù)用戶(hù)的隱私權(quán),因此,盲簽名技術(shù)在匿名電子現(xiàn)金方案以及匿名電子選舉等方面被廣泛使用。7.6.1基于整數(shù)分解難題的盲簽名

RSA是基于整數(shù)分解難題的公鑰密碼算法,也是目前使用最為廣泛的公鑰密碼算法。Chaum在1982年提出盲簽名概念時(shí)就設(shè)計(jì)了基于RSA的盲簽名方案。下面簡(jiǎn)要描述基于RSA的盲簽名方案。

1)參數(shù)選擇

①選擇兩個(gè)滿(mǎn)足需要的大素?cái)?shù)p和q,計(jì)算:n=p×q(n)=(p-1)×(q-1)其中φ(n)是n的歐拉函數(shù)值。②選一個(gè)整數(shù)e,滿(mǎn)足1<e<φ(n),且gcd(φ(n),e)=1。通過(guò)d×e≡1(modφ(n)),計(jì)算出d。

③以{e,n}為公開(kāi)密鑰,{d,n}為秘密密鑰。選擇安全的單向hash函數(shù)h(·)。

仍然把Bob作為簽名者,則Bob知道秘密密鑰{d,n};所有人都知道公開(kāi)密鑰{e,n}和算法中選擇的hash函數(shù)h(·).

2)盲化過(guò)程

設(shè)需要簽名的消息為m,請(qǐng)求簽名者Alice隨機(jī)選擇一個(gè)整數(shù)r作為盲化因子,然后進(jìn)行如下計(jì)算:α≡re·h(m)(mod

n),之后發(fā)送α給簽名者Bob。

3)簽名過(guò)程

Bob在收到α后,計(jì)算t≡αd(modn),然后把t發(fā)送給Alice。

4)脫盲過(guò)程

Alice接收到t后,計(jì)算s≡t·r-1(modn),就得到了消息m的簽名(m,s)。

5)驗(yàn)證過(guò)程

通過(guò)如下計(jì)算,任何人都可以驗(yàn)證簽名的有效性se≡h(m)(modn)是否成立,若成立,則發(fā)送方的簽名有效。

為便于理解,我們可以通過(guò)下面的方式來(lái)展示,其中R(e,n,m)表示R知道的數(shù)據(jù)為(e,n,m)。下面來(lái)體會(huì)一下這個(gè)簽名方案為什么叫做盲簽名方案。

簽名者看到的信息是α,根據(jù)α,e,n,簽名者顯然不能計(jì)算出h(m)來(lái),因?yàn)檫€有一個(gè)變量r(盲化因子),即所簽消息的內(nèi)容對(duì)簽名人是盲的,即簽名人Bob簽名時(shí)不能看見(jiàn)消息的具體內(nèi)容;在Alice得到Bob的簽名后,Bob即使看到了自己的簽名(m,s),仍然不能把它與簽名時(shí)的α聯(lián)系起來(lái),即盲簽名的第二個(gè)性質(zhì)——不可追蹤性。7.6.2基于離散對(duì)數(shù)難題的盲簽名

基于離散對(duì)數(shù)難題的盲簽名出現(xiàn)的時(shí)間相對(duì)比較晚。1994年,J.Camenisch在DSA和Nyberg-Rueppel方案的基礎(chǔ)上,各提出了一個(gè)盲簽名方案。后來(lái),隨著研究的進(jìn)展,出現(xiàn)了強(qiáng)盲簽名和弱盲簽名的分化,再后來(lái)出現(xiàn)了跟其他簽名結(jié)合的簽名方案,如盲代理簽名、盲群簽名等。下面選擇Schnorr盲簽名算法來(lái)學(xué)習(xí)基于離散對(duì)數(shù)難題的盲簽名。

1)參數(shù)選擇

假設(shè)Bob是簽名者,系統(tǒng)參數(shù)包括素?cái)?shù)p,p-1的素因子為q,整數(shù)g∈Z*p且階為q,簽名者的私鑰為x,x∈Zq,y≡gx(modp)是簽名者的公鑰。選擇公開(kāi)的安全哈希函數(shù)為H(·)。

2)簽名過(guò)程

假設(shè)Bob為簽名者,則Bob知道私鑰x的值,所有人都知道y、p、q以及哈希函數(shù)H(·)。設(shè)Alice是簽名請(qǐng)求者,則Schnorr盲簽名可以表示為:如果Alice和Bob都遵守協(xié)議,則Alice獲得消息m的簽名為(m,c,s),因?yàn)間syc≡t(modp),c≡H(m||t)(modq)所以,簽名是有效的??梢钥吹?,在該算法中,同樣滿(mǎn)足了盲簽名的兩個(gè)特征,即簽名者在簽名時(shí)不知道所簽消息的內(nèi)容,事后即使看到了簽名(m,c,s),也不能把它與簽名時(shí)收到的消息v聯(lián)系起來(lái),從而實(shí)現(xiàn)了盲簽名。7.6.3盲簽名的應(yīng)用

著名密碼學(xué)家DavidChaum1982年首次提出了利用盲簽字實(shí)現(xiàn)電子現(xiàn)金的方法。DigiCash是DividChaum發(fā)起的提供電子支付系統(tǒng)的專(zhuān)業(yè)公司,eCashTM是DigiCash開(kāi)發(fā)的用軟件實(shí)現(xiàn)的第一個(gè)完全匿名的在線電子現(xiàn)金系統(tǒng),它的基本算法是RSA盲簽名算法。1995年MarkTwain銀行就開(kāi)始發(fā)行Internet網(wǎng)上電子現(xiàn)金。關(guān)于RSA盲簽名算法,其算法原理詳見(jiàn)7.6.1小節(jié)。一個(gè)電子現(xiàn)金支付系統(tǒng)通常包括三個(gè)參與方:銀行,電子現(xiàn)金支付者,電子現(xiàn)金接收者。在電子貨幣支付時(shí),電子現(xiàn)金支付者從銀行取出他的電子貨幣,然后將電子貨幣支付給接收者,接收者將收到的電子貨幣存入銀行。他們的關(guān)系可以用圖7-2表示,其中箭頭方向表示了電子貨幣的流向。圖7-2電子現(xiàn)金支付系統(tǒng)示意圖

1.eCashTM系統(tǒng)相關(guān)的參數(shù)

設(shè)銀行的簽名公鑰為e,支付公鑰PKbank,秘密鑰為d,模為n,采用安全單向函數(shù)為h(.).h(.)的使用使偽造電子現(xiàn)金的變得不可行。銀行的公開(kāi)信息是{e,n,h(.)},支付公鑰PKbank

;秘密信息是{d,p,q,n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論