《應(yīng)用密碼學(xué)》課件第7章認(rèn)證理論與技術(shù)-數(shù)字簽名1_第1頁
《應(yīng)用密碼學(xué)》課件第7章認(rèn)證理論與技術(shù)-數(shù)字簽名1_第2頁
《應(yīng)用密碼學(xué)》課件第7章認(rèn)證理論與技術(shù)-數(shù)字簽名1_第3頁
《應(yīng)用密碼學(xué)》課件第7章認(rèn)證理論與技術(shù)-數(shù)字簽名1_第4頁
《應(yīng)用密碼學(xué)》課件第7章認(rèn)證理論與技術(shù)-數(shù)字簽名1_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

7.1數(shù)字簽名概述

由于計(jì)算機(jī)和網(wǎng)絡(luò)的快速發(fā)展,電子商務(wù)日漸興起,通過在文檔上簽字蓋章的方式進(jìn)行商務(wù)活動(dòng),達(dá)成顯得效率很低。例如,一個(gè)在中國的公司和一個(gè)在美國的公司進(jìn)行合作,雙方協(xié)議后,要簽訂一個(gè)合同,則需要一方簽名蓋章后,郵寄或派人到另一方去簽名蓋章。

于是人們就想,能不能對(duì)已經(jīng)協(xié)商好的電子文檔進(jìn)行和手寫簽名一樣的電子簽名呢?并且這個(gè)電子簽名和要求手寫簽名具有相同的法律效力,同時(shí)也是安全的,也即不能被偽造。這樣,一方簽名后,可以通過電子郵件發(fā)送給另一方,效率高而且花費(fèi)小。2025/8/122數(shù)字簽名的概念由Diffie和Hellman于1976年提出,目的是通過簽名者對(duì)電子文件進(jìn)行電子簽名,使簽名者無法否認(rèn)自己的簽名,同時(shí)別人也不能偽造,實(shí)現(xiàn)與手寫簽名相同的功能,具有與手寫簽名相同的法律效力。由于數(shù)字簽名技術(shù)在現(xiàn)在和未來社會(huì)里對(duì)政府、企事業(yè)、一般團(tuán)體和個(gè)人的重要影響,世界各國都加強(qiáng)了對(duì)它的研究。1994年美國政府正式頒發(fā)了美國數(shù)字簽名標(biāo)準(zhǔn)DSS(DigitalSignatureStandard),美國于2000年6月30日正式簽署的《電子簽名法案》,明確承認(rèn)了電子簽名、電子合同和電子記錄的法律效力,被認(rèn)為是網(wǎng)絡(luò)時(shí)代的重大立法。2000年-2001年,愛爾蘭、德國、日本、波蘭等國政府也先后通過各自的電子簽名法案。1995年我國也制定了自己的數(shù)字簽名標(biāo)準(zhǔn)(GB15851-1995),2004年8月28日我國頒發(fā)《中華人民共和國電子簽名法》,2005年4月1日生效。數(shù)字簽名與手工簽名的區(qū)別數(shù)字簽名——數(shù)字的,因消息而異手工簽名——模擬的,因人而異數(shù)字簽名與消息認(rèn)證的區(qū)別數(shù)字簽名——第三者可以確認(rèn)收發(fā)雙方的消息傳送消息認(rèn)證——只有收發(fā)雙方才能確認(rèn)消息的傳送認(rèn)證數(shù)據(jù)完整性不可抵賴性大型網(wǎng)絡(luò)的公鑰證書中數(shù)字簽名的應(yīng)用2025/8/124現(xiàn)在,數(shù)字簽名一個(gè)非常廣泛的用途就是用于數(shù)字證書。銀行,比如中國銀行和工商銀行等,他們的網(wǎng)上銀行使用了數(shù)字證書。電子商務(wù)的網(wǎng)站,比如亞馬遜(Amazon)和淘寶也在用數(shù)字證書。投資理財(cái)類的基金直銷網(wǎng)站如華夏基金和嘉實(shí)基金等也使用了數(shù)字證書。通過數(shù)字證書,人們可以判斷當(dāng)前瀏覽的網(wǎng)站地址不是釣魚網(wǎng)站,同時(shí),利用數(shù)字證書和相關(guān)的密碼協(xié)議,對(duì)用戶瀏覽的信息進(jìn)行了加密,從而防止用戶信息的泄漏。小結(jié):數(shù)字簽名是在密碼學(xué)理論的基礎(chǔ)上發(fā)展起來的,基于公鑰密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名,每種簽名方案都與某一種或多種密碼體制緊密聯(lián)系在一起。目前主要集中在基于公鑰密碼體制的數(shù)字簽名技術(shù)的研究。2025/8/1267.2數(shù)字簽名的原理及分類7.2.1數(shù)字簽名的原理基于非對(duì)稱密碼體制和對(duì)稱密碼體制都可以產(chǎn)生數(shù)字簽名。不過,基于對(duì)稱密碼體制的數(shù)字簽名一般都要求有可信任的第三方,在發(fā)生糾紛的時(shí)候作為仲裁者。所以,在研究中多以非對(duì)稱密碼體制為基礎(chǔ)提出數(shù)字簽名方案。下面以基于RSA簽名算法為例子,說明數(shù)字簽名的原理及過程。在RSA加密算法中,假如用戶Bob的參數(shù)選取簡單寫為n=pq,其中p和q是大素?cái)?shù)。(d,modφ(n))=1且de≡1modφ(n),則{e,n}為公開密鑰,{d,n}為秘密密鑰。對(duì)于一個(gè)秘密密鑰{d,n},在滿足de≡1modφ(n)的條件下,只有唯一的{e,n}與之對(duì)應(yīng)。如同在介紹RSA加密算法時(shí)所提及的那樣,一個(gè)用戶的公鑰會(huì)在較長時(shí)間內(nèi)保持不變,故我們可以說,在一定時(shí)間內(nèi),{e,n}表示了秘密密鑰,{d,n}的持有者的身份。如果秘密密鑰{d,n}的持有者Bob聲明某個(gè)信息m并放于公共媒介如網(wǎng)絡(luò)之上,那么其他人如何確定這個(gè)消息就是他發(fā)布的原信息而沒有被其他人更改過呢?也就是如何確定消息的完整性呢?可以通過下面這種方式達(dá)到目的。讓消息發(fā)布者Bob先計(jì)算s≡mdmodn,然后把s附于消息m之后即{m,s}一起放到公共媒介上。因?yàn)榇蠹叶贾纚e,n}唯一代表了消息發(fā)布者Bob的身份,故可以通過計(jì)算m≡semodn成立與否,來判定消息是不是Bob發(fā)布的消息,以及消息是否被篡改。因?yàn)锽ob是秘密密鑰{d,n}的唯一持有者,只有他才能通過s≡mdmodn計(jì)算出s的值來。其他人如果想算出s的值,從目前的研究結(jié)果看,他必須要獲得d的值,或者說要能破解大數(shù)分解問題才行。一個(gè)簽名方案至少應(yīng)滿足以下3個(gè)條件:(1)簽名者事后不能否認(rèn)自己的簽名;(2)接收者能驗(yàn)證簽名,而任何其他人都不能偽造簽名;(3)當(dāng)雙方關(guān)于簽名的真?zhèn)伟l(fā)生爭執(zhí)時(shí),一個(gè)第三方能解決雙方之間發(fā)生的爭執(zhí)?;诠€密碼體制的數(shù)字簽名方案一般都選擇私鑰簽名、公鑰驗(yàn)證模式。由于消息的長度是變化的,同時(shí)為了提高簽名方案的安全性,數(shù)字簽名方案里面都會(huì)使用消息摘要算法.2025/8/1211小結(jié):數(shù)字簽名應(yīng)具有的性質(zhì):(1)收方能確認(rèn)或證實(shí)發(fā)方的簽字,但不能偽造;(2)發(fā)方發(fā)出簽名后的消息,就不能否認(rèn)所簽消息;(3)收方對(duì)已收到的消息不能否認(rèn);(4)第三者可以確認(rèn)收發(fā)雙方之間的消息傳送,但不能偽造這一過程;(5)必須能夠驗(yàn)證簽名者及其簽名的日期時(shí)間;(6)必須能夠認(rèn)證被簽名消息的內(nèi)容;(7)簽名必須能夠由第三方驗(yàn)證,以解決爭議。注:數(shù)字簽名功能包含了認(rèn)證的功能。按數(shù)字簽名的所依賴的理論基礎(chǔ)分,主要可以分為:(1)基于大數(shù)分解難題的數(shù)字簽名,如RSA數(shù)字簽名方案;(2)基于離散對(duì)數(shù)難題的數(shù)字簽名,如ElGamal數(shù)字簽名方案、美國的數(shù)字簽名方案;(3)基于橢圓曲線離散對(duì)數(shù)的數(shù)字簽名,這類簽名往往由基于離散對(duì)數(shù)的數(shù)字簽名改進(jìn)而來。近年來,隨著密碼理論的發(fā)展,人們也提出了基于雙線性對(duì)的數(shù)字簽名、量子數(shù)字簽名方案、基于網(wǎng)格的數(shù)字簽名方案等等。7.2.2數(shù)字簽名的分類從數(shù)字簽名的用途分,可以把數(shù)字簽名分為普通的數(shù)字簽名和特殊用途的數(shù)字簽名。-普通的數(shù)字簽名往往可以和身份認(rèn)證相互轉(zhuǎn)換-特殊用途的數(shù)字簽名,如盲簽名、代理簽名、群簽名、門限簽名和前向安全的數(shù)字簽名等,多是在某些特殊的場合下使用。盲簽名通常用于需要匿名的小額電子現(xiàn)金的支付和匿名選舉,代理簽名可以用于委托別人在自己無法簽名的時(shí)候(如外出開會(huì)不方便使用網(wǎng)絡(luò)等)代替簽名等。2025/8/12147.3數(shù)字簽名算法在本節(jié)中,我們介紹比較經(jīng)典的數(shù)字簽名算法:一個(gè)是RSA簽名算法一個(gè)是ElGamal簽名算法RSA簽名算法提出的時(shí)間比較早,并且一直到現(xiàn)在,以其為基礎(chǔ)的應(yīng)用都還在使用。而ElGamal簽名算法的變型算法之一,就是后來的數(shù)字簽名算法(DSA)。一個(gè)普通的數(shù)字簽名方案通常包括2個(gè)算法,即簽名算法和驗(yàn)證算法。-在簽名階段,簽名者用自己的私鑰對(duì)消息進(jìn)行簽名;-在驗(yàn)證階段,驗(yàn)證者則通過簽名者對(duì)應(yīng)的公開鑰進(jìn)行驗(yàn)證。2025/8/12157.3.1RSA數(shù)字簽名(1)參數(shù)選擇①選擇兩個(gè)滿足需要的大素?cái)?shù)p和q,計(jì)算n=p×q,φ(n)=(p-1)×(q-1),其中φ(n)是n的歐拉函數(shù)值。②選一個(gè)整數(shù)e,滿足1<e<φ(n),且gcd(φ(n),e)=1。通過d×e≡1modφ(n),計(jì)算出d。③以{e,n}為公開密鑰,{d,n}為秘密密鑰。1.RSA數(shù)字簽名描述2025/8/1216(2)簽名過程假設(shè)簽名者為Bob,則只有Bob知道秘密密鑰{d,n}。設(shè)需要簽名的消息為m,則簽名者Bob通過如下計(jì)算對(duì)m簽名:s≡mdmodn

(m,s)為對(duì)消息m的簽名。Bob在公共媒體上宣稱他發(fā)布了消息m,同時(shí)把對(duì)m的簽名s置于消息后用于公眾驗(yàn)證簽名。2025/8/1217(3)驗(yàn)證過程。公眾在看到消息m和對(duì)其簽名s后,利用Bob的公開驗(yàn)證密鑰{e,n}對(duì)消息進(jìn)行驗(yàn)證。公眾計(jì)算:m≡semodn是否成立,若成立,則Bob的簽名有效。公眾認(rèn)為消息m的確是Bob所發(fā)布,且消息內(nèi)容沒有被篡改。也就是說,公眾可以容易鑒別發(fā)布人發(fā)布的消息的完整性??梢钥吹?,RSA簽名算法和加密算法參數(shù)產(chǎn)生過程相同。差別在于:(1)在RSA加密算法中,消息發(fā)送方是用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,然后消息接收方用私鑰對(duì)密文進(jìn)行解密獲得消息,也即“公鑰加密,私鑰解密”;(2)在RSA簽名算法中,則是消息發(fā)布者用私鑰對(duì)消息進(jìn)行簽名,消息接收者(往往是公眾)用簽名者的公鑰進(jìn)行驗(yàn)證,以鑒別消息在傳送過程中是否被修改,也即“私鑰簽名,公鑰驗(yàn)證”。2025/8/12192.對(duì)上述RSA簽名算法的一個(gè)攻擊前面所描述的RSA簽名算法是有缺陷的。假設(shè)攻擊者Eve想得到簽名者對(duì)消息M的簽名,則攻擊者Eve可以構(gòu)造消息M1和M2,使M=M1*M2;然后把消息M1和M2分別發(fā)送給簽名者Bob進(jìn)行簽名。(1)設(shè)Bob對(duì)消息M1的簽名為S1,即S1≡M1dmodn;(2)設(shè)Bob對(duì)消息M2的簽名為S2,即S2≡M2dmodn;在得到Bob的兩次對(duì)消息的簽名后,則攻擊者Eve很容易構(gòu)造消息M的簽名S,S=Md=(M1*M2)dmodn≡S2*S1。2025/8/12203.對(duì)上述RSA簽名算法的改進(jìn)假設(shè)公開的安全哈希函數(shù)為H(·),參數(shù)選擇如前,其簽名過程和驗(yàn)證過程如下:(1)簽名過程設(shè)需要簽名的消息為m,簽名者Bob通過如下計(jì)算對(duì)其簽名:s≡H(m)dmodn(m,s)為對(duì)消息m的簽名。(2)驗(yàn)證過程在收到消息m和簽名s后,驗(yàn)證H(m)≡semodn是否成立,若成立,則發(fā)送方的簽名有效。2025/8/1221

可以看到,通過使用哈希函數(shù),有效防止了對(duì)簽名的偽造,增強(qiáng)了簽名算法的安全性,這也是在很多簽名算法中使用哈希函數(shù)的原因之一。

2025/8/1222數(shù)字簽名的步驟(數(shù)字簽名與驗(yàn)證過程)第一步:將消息按散列算法計(jì)算得到一個(gè)固定位數(shù)的消息摘要值。在數(shù)學(xué)上保證:只要改動(dòng)消息的任何一位,重新計(jì)算出的消息摘要就會(huì)與原先值不符。這樣就保證了消息的不可更改。2025/8/1223第二步:對(duì)消息摘要值用發(fā)送者的私有密鑰加密,所產(chǎn)生的密文即稱數(shù)字簽名。然后該數(shù)字簽名同原消息一起發(fā)送給接收者。第三步:接收方收到消息和數(shù)字簽名后,用同樣的散列算法對(duì)消息計(jì)算摘要值,然后與用發(fā)送者的公開密鑰對(duì)數(shù)字簽名進(jìn)行解密,將解密后的結(jié)果與計(jì)算的摘要值相比較。如相等則說明報(bào)文確實(shí)來自發(fā)送者。2025/8/1224數(shù)字簽名與驗(yàn)證過程圖示消息摘要數(shù)字簽名消息數(shù)字簽名消息摘要數(shù)字簽名摘要發(fā)送方接收方2025/8/12257.3.2ElGamal數(shù)字簽名ElGamal簽名算法也是基于離散對(duì)數(shù)難題的,于1985年提出,其變型之一成為美國國家標(biāo)準(zhǔn)技術(shù)研究所(NationalInstituteofStandardsandTechnology,簡稱NIST)提出的DSA(digitalsignatureAlgorithm)算法的基礎(chǔ)。2025/8/12262.對(duì)于ElGamal簽名算法的理解,需注意:(1)這個(gè)方案還是存在一定的不足。比如,對(duì)于消息沒有用哈希函數(shù)進(jìn)行處理,簽名容易被偽造。(2)簽名時(shí)所使用的隨機(jī)值k不能泄露,否則攻擊者可以計(jì)算出簽名的私鑰。通過變換δ≡(m-xγ)k-1mod(p-1),可知x≡(m-kδ)γ-1mod(p-1)。(3)對(duì)于兩個(gè)不同的消息簽名時(shí),不要使用相同的k,否則容易求得k的值,從而知道簽名者的私鑰。2025/8/1227

通過對(duì)上面兩個(gè)算法的學(xué)習(xí),我們可以看到,數(shù)字簽名的一個(gè)重要作用,就是保證了被簽名文檔的完整性。一旦被簽名的文檔內(nèi)容發(fā)生了改變,則通不過驗(yàn)證,從而防止了文檔被篡改和偽造;而且,簽名是與文檔內(nèi)容緊密聯(lián)系的,這樣,對(duì)一個(gè)文檔的簽名,如果復(fù)制到另外一個(gè)文檔上,就通不過驗(yàn)證,使得簽名對(duì)該文檔無效。2025/8/12287.4數(shù)字簽名標(biāo)準(zhǔn)DSS(略)1991年8月,NIST提出將數(shù)字簽名算法(DSA,DigitalSignatureAlgorithm)用于數(shù)字簽名標(biāo)準(zhǔn)(DSS,DigitalSignatureStandard)中。由于RSA算法及簽名的廣泛使用等各種原因,使得DSS的出現(xiàn)引起了很多的爭議。1994年,在考慮了公眾的建議后,該標(biāo)準(zhǔn)最終頒布。7.4.1基于離散對(duì)數(shù)的美國數(shù)字簽名標(biāo)準(zhǔn)2025/8/1229-DSA描述1.算法的參數(shù)p是L比特長的素?cái)?shù),L的長度為512到1024且是64的倍數(shù)。

q是160比特長且為p-1的素因子。g≡h(p-1)/qmodp,其中h,g是整數(shù),1<h<p-1,且要求g大于1。

x是簽名者的私鑰,由簽名者選取的隨機(jī)數(shù),要求是小于q的正整數(shù);

y≡gxmodp為簽名者的公鑰。選擇安全散列算法H(),標(biāo)準(zhǔn)中指定為SHA。簽名者公開(p,q,g,y)及安全散列算法H(),保密x。DSA的安全性是基于求解離散對(duì)數(shù)困難性的基礎(chǔ)之上的,并使用了安全散列算法。它也是Schnorr和ElGamal簽名算法的變型。

2025/8/12302025/8/1231對(duì)于DSA算法,人們有一些批評(píng)意見,比如認(rèn)為驗(yàn)證比簽名快,q的長度160比特太短,不能用于加密和分配密鑰等。另外,由于DSA算法是ElGamal簽名算法的變型,故所有對(duì)ElGamal簽名算法的攻擊,也可以用于對(duì)DSA算法的攻擊。不過就已有的攻擊來看,DSA算法還是安全的。與RSA數(shù)字簽名算法比較,DSA在管理上有一個(gè)優(yōu)點(diǎn):對(duì)于RSA數(shù)字簽名算法,每個(gè)用戶都要有不同的公鑰,故針對(duì)每個(gè)用戶,都要去產(chǎn)生大的素?cái)?shù)p和q,去計(jì)算d;而對(duì)于DSA算法,管理機(jī)構(gòu)只需要計(jì)算一次p,g,q(通常又叫全局公開鑰),每個(gè)用戶只需要選擇私鑰x,然后計(jì)算公鑰y(通常又叫用戶公鑰)。2025/8/1232-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素性檢測算法產(chǎn)生素?cái)?shù),用ANSIX9.17產(chǎn)生隨機(jī)數(shù),以及其他參數(shù)的選取等。2025/8/1233假設(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≡15mod101。

故可以算出簽名為r≡(gkmodp)modq=(36727mod7879)mod101≡6797mod101≡30s≡(k-1(m+xr))modq=(15(3456+69×30))mod101≡70可以得到對(duì)m的簽名為(30,70)。2025/8/1234驗(yàn)證簽名:w≡s-1modq=70-1mod101≡13

u1≡mwmodq=3456×13mod101≡84u2≡rwmodq=30×13mod101≡87v≡((gu1yu2modp)modq=(36784129287mod7879)mod101≡(2456×1687mod7879)mod101≡6797mod101≡30v=r,因此簽名是有效的注:可以看到,簽名和驗(yàn)證過程中的運(yùn)算量是很大的,其中最主要的運(yùn)算集中在模冪運(yùn)算上,而且上面的舉例中,素?cái)?shù)的取值也是比較小的,這些運(yùn)算可以通過簡單編程實(shí)現(xiàn)。如果是按標(biāo)準(zhǔn)中的取值,模冪運(yùn)算及大數(shù)的處理對(duì)初學(xué)者來說還是有挑戰(zhàn)性的。

7.4.2基于橢圓曲線的美國數(shù)字簽名標(biāo)準(zhǔn)橢圓曲線數(shù)字簽名算法(ECDSA)是使用橢圓曲線對(duì)數(shù)字簽名算法(DSA)的模擬。ECDSA首先由Scott和Vanstone在1992年為了響應(yīng)NIST對(duì)數(shù)字簽名標(biāo)準(zhǔn)(DSS)的要求而提出,1998年作為ISO標(biāo)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論