版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 當(dāng)今世界信息技術(shù)獲得了前所未有的大發(fā)展,因而信息的安全性必將變得越來(lái)越受到人們的重視。而數(shù)字簽名技術(shù)是目前網(wǎng)絡(luò)安全領(lǐng)域的研究熱門(mén)方向。</p><p> RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,易于應(yīng)用和理解。RSA從提出一直到現(xiàn)在,它經(jīng)歷了各種考驗(yàn)。它通過(guò)認(rèn)證技術(shù)來(lái)分辨真與假。RSA數(shù)字簽
2、名體制使用地是RSA公開(kāi)密鑰算法進(jìn)行得數(shù)字簽名。</p><p> 本文主要是對(duì)RSA公開(kāi)密鑰密碼體制的研究,并在此基礎(chǔ)上實(shí)現(xiàn)了RSA的數(shù)字簽名的體制。本文的主要內(nèi)容包括:</p><p> 第一:在查閱大量文獻(xiàn)資料的基礎(chǔ)上,分析了密碼學(xué)領(lǐng)域里,公鑰加密體制的優(yōu)點(diǎn)所在及其RSA數(shù)字簽名的安全性(攻擊性);第二:簡(jiǎn)述了DSA以及橢圓曲線數(shù)字簽名,深入分析RSA算法的理論基礎(chǔ)及算法原理,包
3、括RSA大素?cái)?shù)的產(chǎn)生,密鑰對(duì)的產(chǎn)生,以及對(duì)明文的加密和解密:第三:對(duì)MD5算法基本原理的詳細(xì)介紹。第四:闡述了RSA數(shù)字簽名的設(shè)計(jì)與實(shí)現(xiàn),其中包括RSA公鑰和私鑰的產(chǎn)生,RSA加密與解密算法的實(shí)現(xiàn),消息摘要的生成,還有就是利用RSA加密算法實(shí)現(xiàn)數(shù)字簽名以及簽名的驗(yàn)證。第五,簡(jiǎn)要陳述數(shù)字簽名的用途。</p><p> 關(guān)鍵詞: 加密 解密 RSA算法 RSA數(shù)字簽名 </p><p>
4、;<b> Abstract</b></p><p> Now the information of the world is developing fastly.So the security of the information is becoming more and more importantly. Digital signature filed will become hot
5、 spots in future.</p><p> It is the first algorithm for both data encryption and digital signature.It can be understood easily by people.RSA has undergone various tests when it is put out.RSA as the public
6、key cryptosystem representative approved data integrity is a kind of information technology. It is through the authentication techniques to distinguish true and false. RSA digital signature system using a RSA public key
7、algorithm for digital signature.</p><p> The text is about the study of RSA public key encryption,based on this generating RSA digital signature.including:</p><p> ,Firstly on the basis of pre
8、vious research, a system based on elliptical curve proxy signature, The advantage of public key encryption and the security of RSA digital signature(attack )Secondly,it analyzes the principle of RSA,including how to gene
9、rat a prime number,how to generat the secret keys and how to encryption as well as decrypt, Thirdly,it states the principle of MD5 in detail.Fourthly, it states design and realization of RSA digital signature in detail.
10、The main modules includes produc</p><p> Key words: RSA algorithm; encryption; decryption; RSA digital signature</p><p><b> 目錄</b></p><p><b> 摘 要I</b><
11、;/p><p> AbstractII</p><p><b> 1緒論1</b></p><p> 1.1 研究背景2</p><p> 1.2 研究現(xiàn)狀3</p><p> 2密碼學(xué)基本概念4</p><p> 2.1 公鑰密碼基本概念4</p
12、><p> 2.1.1 公鑰密碼原理4</p><p> 2.1.2公鑰密碼的理論基礎(chǔ)5</p><p> 2.2 對(duì)稱(chēng)加密體制5</p><p> 3數(shù)字簽名的基本概念和理論7</p><p> 3.1數(shù)字簽名概念7</p><p> 3.2 數(shù)字簽名理論7</p&g
13、t;<p> 3.3數(shù)字簽名過(guò)程7</p><p> 3.3.1.發(fā)送方簽名過(guò)程8</p><p> 3.3.2.接收方驗(yàn)證過(guò)程9</p><p> 4數(shù)字簽名常見(jiàn)的算法及其數(shù)字簽名11</p><p> 4.1 DSA數(shù)字簽名算法11</p><p> 4.1.1 DSA數(shù)字簽名實(shí)
14、現(xiàn)的三個(gè)步驟11</p><p> 4.1.2 DSA的安全性12</p><p> 4.2 橢圓曲線代理簽名體制12</p><p> 4.2.1橢圓曲線數(shù)字簽名ECDSA12</p><p> 4.2.2橢圓曲線數(shù)字簽名的安全性13</p><p> 5 RSA算法及其數(shù)字簽名14</p
15、><p> 5.1 RSA簡(jiǎn)述14</p><p> 5.2 RSA加密的可行性15</p><p> 5.3 RSA算法的介紹15</p><p> 5.3.1 RSA中素?cái)?shù)的選取16</p><p> 5.3.2 RSA用到的公式和定理16</p><p> 5.3.3 R
16、SA安全性的分析16</p><p> 5.3.4 RSA的攻擊17</p><p> 5.3.5 RSA的缺點(diǎn)18</p><p> 5.3.6 RSA的優(yōu)點(diǎn)19</p><p> 5.4 RSA數(shù)字簽名19</p><p> 5.4.1 RSA數(shù)字簽名的過(guò)程19</p><
17、p> 5.4.2 RSA數(shù)字簽名算法實(shí)現(xiàn)步驟19</p><p> 5.4.3 散列函數(shù)的原理20</p><p> 5.4.4 MD5算法的簡(jiǎn)介21</p><p> 6 RSA數(shù)字簽名設(shè)計(jì)與實(shí)現(xiàn)23</p><p> 6.1 開(kāi)發(fā)環(huán)境的介紹23</p><p> 6.1.1 C#語(yǔ)言概述
18、23</p><p> 6.1.2 C#語(yǔ)言特點(diǎn)23</p><p> 6.2.NET類(lèi)的介紹24</p><p> 6.3 RSA數(shù)字簽名所需實(shí)現(xiàn)的功能25</p><p> 6.4 本軟件的總體要求和設(shè)計(jì)25</p><p> 6.5主要實(shí)現(xiàn)代碼及軟件運(yùn)行結(jié)果26</p><
19、;p><b> 結(jié)論30</b></p><p><b> 致謝32</b></p><p><b> 參考文獻(xiàn)33</b></p><p><b> 附錄134</b></p><p><b> 1緒論</b>
20、;</p><p><b> 1.1 研究背景</b></p><p> 當(dāng)今社會(huì)是信息化社會(huì),電子計(jì)算機(jī)和通信網(wǎng)絡(luò)己經(jīng)廣泛的應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,以此為基礎(chǔ)建立起來(lái)的各種信息系統(tǒng),給人們的生活、工作帶來(lái)了巨大變革。大型信息系統(tǒng)將眾多的計(jì)算機(jī)和只能化設(shè)備連在一個(gè)四通八達(dá)的通信網(wǎng)絡(luò)中,共享豐富的數(shù)據(jù)庫(kù)信息和計(jì)算機(jī)資源,儲(chǔ)存大量的數(shù)據(jù)文件,完成異地之間的數(shù)據(jù)交換與通信
21、。信息系統(tǒng)的應(yīng)用,加速了社會(huì)自動(dòng)化的進(jìn)程,減輕了日常繁雜的重復(fù)勞動(dòng),同時(shí)也提高了生產(chǎn)率,創(chuàng)造了經(jīng)濟(jì)效益。</p><p> 信息時(shí)代雖然給我們帶來(lái)了無(wú)限商機(jī)與方便,但同時(shí)也充斥著隱患與危險(xiǎn)。由于網(wǎng)絡(luò)很容易受到攻擊,導(dǎo)致機(jī)密信息的泄漏,引起重大損失。由于信息技術(shù)已經(jīng)成為綜合國(guó)力的一個(gè)重要組成部分,因此信息安全己成為保證國(guó)民經(jīng)濟(jì)信息化建設(shè)健康有序發(fā)展的保障。</p><p> 當(dāng)今網(wǎng)絡(luò)社會(huì)
22、技術(shù)眾多,目前在電子商務(wù)、電子政務(wù)、電子郵件系統(tǒng)、電子銀行等方面必備的關(guān)鍵技術(shù)就是數(shù)字簽名。數(shù)字簽名又稱(chēng)為數(shù)字簽字,電子簽章等?!皵?shù)字簽名”用來(lái)保證信息傳輸過(guò)程中信息的完整和提供信息發(fā)送者的身份認(rèn)證和不可抵賴(lài)性,數(shù)字簽名技術(shù)的實(shí)現(xiàn)基礎(chǔ)是公開(kāi)密鑰加密技術(shù),是用某人的私鑰加密的消息摘要用于確認(rèn)消息的來(lái)源和內(nèi)容。</p><p> 為保證數(shù)據(jù)在網(wǎng)絡(luò)傳遞中的安全性和完整性從技術(shù)上,主要考慮一下情況:</p>
23、<p> ?。?)如果需要使用一種方法驗(yàn)證數(shù)據(jù)在傳輸過(guò)程中是否被修改,可以使用哈希值?</p><p> ?。?)如果需要證明實(shí)體知道機(jī)密但不來(lái)回發(fā)送機(jī)密,或者想使用簡(jiǎn)單的哈希值以防止在傳輸過(guò)程中被截獲,可以使用加密的哈希值?</p><p> ?。?)如果要隱藏通過(guò)不安全的媒介發(fā)送的數(shù)據(jù)或者永久保留數(shù)據(jù),可以使用加密</p><p> ?。?)如果要
24、驗(yàn)證聲稱(chēng)是公鑰所有者的人員的身份,可以使用證書(shū)?</p><p> ?。?)如果雙方事先共享密鑰,可以使用對(duì)稱(chēng)加密以提高速度?</p><p> ?。?)如果想通過(guò)不安全的媒介安全的交換數(shù)據(jù)可以使用非對(duì)稱(chēng)加密</p><p> ?。?)如果要進(jìn)行身份驗(yàn)證和實(shí)現(xiàn)不可否認(rèn)性,可以使用數(shù)字簽名</p><p> ?。?)如果為了防范窮舉搜素而進(jìn)行的
25、攻擊,可以使用加密技術(shù)產(chǎn)生的隨機(jī)數(shù)[1]</p><p> RSA公鑰加密算法是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也十分流行。隨著越來(lái)越多的商業(yè)應(yīng)用和標(biāo)準(zhǔn)化工作,RSA已經(jīng)成為最具代表性的公鑰加密技術(shù)。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標(biāo)準(zhǔn)(Secure Electronic Transactions,SET)就采用了標(biāo)準(zhǔn)RSA算
26、法,這使得RSA在我們的生活中幾乎無(wú)處不在。網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗(yàn)證、各種信用卡使用的數(shù)字證書(shū)、智能移動(dòng)電話和存儲(chǔ)卡的驗(yàn)證功能芯片等,大多數(shù)使用RSA技術(shù)。</p><p><b> 1.2 研究現(xiàn)狀</b></p><p> 實(shí)現(xiàn)數(shù)字簽名的算法有很多,目前數(shù)字簽名采用較多的是公鑰加密技術(shù),如DSA (Digital Signature Algorith
27、m), x.509, POP (Pretty Good Privacy)。1994年美國(guó)標(biāo)準(zhǔn)與技術(shù)協(xié)會(huì)公布了數(shù)字簽名標(biāo)準(zhǔn)(DSS)而使公鑰加密技術(shù)廣泛應(yīng)用。</p><p> RSA已經(jīng)成為最具代表性的公鑰加密技術(shù)。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標(biāo)準(zhǔn)(Secure Electronic Transactions,SET)就采用了標(biāo)準(zhǔn)RSA算法,這使得RSA
28、在我們的生活中幾乎無(wú)處不在。網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗(yàn)證、各種信用卡使用的數(shù)字證書(shū)、智能移動(dòng)電話和存儲(chǔ)卡的驗(yàn)證功能芯片等,大多數(shù)使用RSA技術(shù)。</p><p><b> ?。?)研究主要成果</b></p><p> RSA作為最重要的公開(kāi)密鑰算法,在各領(lǐng)域的應(yīng)用數(shù)不勝數(shù)。RSA在硬件方面,以技術(shù)成熟的IC應(yīng)用于各種消費(fèi)類(lèi)電子產(chǎn)品。</p>&
29、lt;p> RSA在軟件方面的應(yīng)用,主要集中在Internet上。加密連接、數(shù)字簽名和數(shù)字證書(shū)的核心算法廣泛使用RSA。</p><p> RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。 RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA目前是最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的
30、所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。</p><p> RSA的缺點(diǎn)主要有:</p><p> (1)產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。</p><p> ?。?)分組長(zhǎng)度太大,為保證安全性,n 至少也要 600 bits以上,使運(yùn)算代價(jià)很高,尤其是速度較慢,較對(duì)稱(chēng)密碼算法慢幾個(gè)數(shù)量級(jí)。</p><p&
31、gt;<b> ?。?)發(fā)展趨勢(shì)</b></p><p> 當(dāng)今社會(huì)是信息化社會(huì),電子計(jì)算機(jī)和通信網(wǎng)絡(luò)己經(jīng)廣泛的應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,以此為基礎(chǔ)建立起來(lái)的各種信息系統(tǒng),給人們的生活、工作帶來(lái)了巨大變革。信息系統(tǒng)的應(yīng)用,加速了社會(huì)自動(dòng)化的進(jìn)程,減輕了日常繁雜的重復(fù)勞動(dòng),同時(shí)也提高了生產(chǎn)率,創(chuàng)造了經(jīng)濟(jì)效益。</p><p> 信息安全技術(shù)在信息化迅速發(fā)展的今天己進(jìn)入了
32、高速發(fā)展的新時(shí)期,形成了密碼技術(shù)、可信計(jì)算技術(shù)、電磁輻射泄露防護(hù)技術(shù)、系統(tǒng)入侵檢測(cè)技術(shù)和計(jì)算機(jī)病毒檢測(cè)消除技術(shù)等多個(gè)安全防護(hù)技術(shù)門(mén)類(lèi)。</p><p><b> ?。?)存在問(wèn)題</b></p><p> 目前普遍采用的數(shù)字簽名算法,都是基于下面三個(gè)數(shù)學(xué)難題的基礎(chǔ)之上:(1)整數(shù)的因式分解(Integer Factorization)問(wèn)題,如RSA算法。(2)離散對(duì)
33、數(shù)(Discrete Logarithm)問(wèn)題,如 ElGamal,DSA,Schnorr等算法;(3)橢圓曲線(Elliptic Curve)問(wèn)題,如ECDSA算法。[2]</p><p><b> 2密碼學(xué)基本概念</b></p><p> 密碼學(xué)包括兩個(gè)方面:密碼編碼學(xué)和密碼分析學(xué)。密碼編碼學(xué)就是研究對(duì)數(shù)據(jù)進(jìn)行變換的原理、手段和方法的技術(shù)和科學(xué)。密碼分析學(xué)是
34、為了取得秘密的消息,而對(duì)密碼系統(tǒng)及其流動(dòng)數(shù)據(jù)進(jìn)行分析,是對(duì)密碼原理、手段和方法進(jìn)行分析、攻擊的技術(shù)和科學(xué)。</p><p> 密碼學(xué)的理論基礎(chǔ)是數(shù)學(xué),其基本思想是隱藏、偽裝信息,使未經(jīng)授權(quán)者不能得到消息的真正含義。偽裝(變換)之前的信息是原始信息,成為明文;偽裝之后的消息,看起來(lái)是一串無(wú)意義的亂碼,稱(chēng)為密文。把明文偽裝成密文的過(guò)程稱(chēng)為(encryption),該過(guò)程使用的數(shù)學(xué)變換就是加密算法。把密文還原成明文的
35、過(guò)程稱(chēng)為解密(decryption),該過(guò)程使用的數(shù)學(xué)變換,通常是加密時(shí)數(shù)學(xué)變換的逆變換,就是解密算法。加密與解密通常需要參數(shù)控制,我們把該參數(shù)稱(chēng)為密鑰,有時(shí)也稱(chēng)為密碼。加密時(shí)使用的為加密密碼(加密密鑰),解密時(shí)使用的為解密密碼(解密密鑰)。[3]加密密鑰與解密密鑰可能相同也可能不同。相同時(shí)稱(chēng)為對(duì)稱(chēng)型或單鑰的,不相同時(shí)稱(chēng)為非對(duì)成型或雙鑰的。那么一個(gè)密碼系統(tǒng)或稱(chēng)其為密碼體制,是由明文空間、密文空間、密鑰空間、加密算法與解密算法五個(gè)部分組成
36、。明文、密文、密鑰空間分別表示全體明文、全體密文、全體密鑰的集合;加密與解密算法通常是一些公式、法則或程序,規(guī)定了明文與密文之間的數(shù)學(xué)變換規(guī)則。</p><p> 下面用字母分別表示這個(gè)概念,密鑰K=<Ke,Kd>,Ke表示加密密鑰,Kd表示解密密鑰,設(shè)明文M,密文C,加密算法E,解密算法D。</p><p> 把明文加密為密文: C=E(M,Ke) 密文解密為明文:M=D
37、(C,Kd)=D(E(M,Ke),Kd)。</p><p><b> 上述的講解可用下圖</b></p><p> 圖2-1加密過(guò)程與密碼分析</p><p> 2.1 公鑰密碼基本概念</p><p> 公鑰密碼與以前所有的密碼方法都大相徑庭:一是以前的密碼算法都基于代換與置換操作,而公鑰密碼使用數(shù)學(xué) 數(shù)進(jìn)行變
38、換;二是公鑰密碼體制使用非對(duì)稱(chēng)的方式,使用兩個(gè)密鑰(加密密鑰與解密密鑰),而傳統(tǒng)密碼算法僅僅使用一個(gè)密鑰。公鑰密碼體制的提出首先是為了解決利用傳統(tǒng)密碼體制進(jìn)行密鑰分發(fā)時(shí)遇到的問(wèn)題,數(shù)字簽名也是其重要應(yīng)用之一。[3]</p><p> 從1976年起,學(xué)者們提出了許多種公鑰加密方法,它們的安全性都是基于復(fù)雜的數(shù)學(xué)難題。根據(jù)所基于的數(shù)學(xué)難題來(lái)分類(lèi),有以下三類(lèi)系統(tǒng)目前被認(rèn)為是安全和有效的:</p>&l
39、t;p> (1) 基于大整數(shù)因子分解的:RSA和Rabin-Williams。</p><p> (2) 基于離散對(duì)數(shù)問(wèn)題的:DSA和EIGamal。</p><p> (3) 基于橢圓曲線離散對(duì)數(shù)問(wèn)題的:橢圓曲線密碼系統(tǒng)。</p><p> 公開(kāi)密鑰加密算法與對(duì)稱(chēng)密鑰加密算法相比來(lái)說(shuō),安全性能更好,密鑰管理、分配都容易實(shí)現(xiàn),其中有些加密算法還能應(yīng)用在
40、數(shù)字簽名上,但是它們相對(duì)于對(duì)稱(chēng)密鑰加密算法運(yùn)行速度要慢得多,所以不能加密大量的數(shù)據(jù)。</p><p> 2.1.1 公鑰密碼原理</p><p> 公開(kāi)密鑰密碼常用的、成熟的公鑰算法是RSA。它與傳統(tǒng)的對(duì)稱(chēng)密鑰算法有本質(zhì)的區(qū)別,對(duì)稱(chēng)密鑰算法常用的是DES算法,加/解密時(shí)用的是同一個(gè)密鑰。而公鑰算法利用的是非對(duì)稱(chēng)的密鑰,即利用兩個(gè)足夠大的質(zhì)數(shù)與被加密原文相乘生產(chǎn)的積來(lái)加/解密。這兩個(gè)質(zhì)數(shù)
41、無(wú)論是用哪一個(gè)與被加密的原文相乘(模乘),即對(duì)原文件加密,均可由另一個(gè)質(zhì)數(shù)再相乘來(lái)進(jìn)行解密。但是,若想用這個(gè)乘積來(lái)求出另一個(gè)質(zhì)數(shù),就要進(jìn)行對(duì)大數(shù)分解質(zhì)因子,分解一個(gè)大數(shù)的質(zhì)因子是十分困難的,若選用的質(zhì)數(shù)足夠大,這種求解幾乎是不可能的。</p><p> 公、密鑰對(duì)的用法是,當(dāng)發(fā)方向收方通信時(shí)發(fā)方用收方的公鑰對(duì)原文進(jìn)行加密,收方收到發(fā)方的密文后,用自己的私鑰進(jìn)行解密,其中他人是無(wú)法解密的,因?yàn)樗瞬粨碛凶约旱乃借€
42、,這就是用公鑰加密,私鑰解密用于通信;而用私鑰加密文件公鑰解密則是用于簽名,即發(fā)方向收方簽發(fā)文件時(shí),發(fā)方用自己的私鑰加密文件傳送給收方,收方用發(fā)方的公鑰進(jìn)行解密。</p><p> 但是,在實(shí)際應(yīng)用操作中發(fā)出的文件簽名并非是對(duì)原文本身進(jìn)行加密,而是要對(duì)原文進(jìn)行所謂的“哈希”(Hash)運(yùn)算,即對(duì)原文作數(shù)字摘要。該密碼算法也稱(chēng)單向散列運(yùn)算,其運(yùn)算結(jié)果稱(chēng)為哈希值,或稱(chēng)數(shù)字摘要,也有人將其稱(chēng)為“數(shù)字指紋”。哈希值有固
43、定的長(zhǎng)度,運(yùn)算是不可逆的,不同的明文其哈希值是不同的,而同樣的明文其哈希值是相同并且是唯一的,原文的任何改動(dòng),其哈希值就要發(fā)生變化。數(shù)字簽名是用私鑰對(duì)數(shù)字摘要進(jìn)行加密,用公鑰進(jìn)行解密和驗(yàn)證[4]</p><p> 公鑰密碼算法使用兩個(gè)密鑰,其中一個(gè)用于加密(加密密鑰),另外一個(gè)用于解密(解密密鑰)。公鑰密碼算法具有如下特征:加密密鑰與解密密鑰時(shí)本質(zhì)上不通的,也就是說(shuō)如果僅僅知道密碼算法和加密密鑰,而要確定解密密
44、鑰,在計(jì)算上是不可行的;大多數(shù)公鑰密碼算法的加密密鑰與解密密鑰具有互換的性質(zhì)。如RSA算法,密鑰對(duì)中的一個(gè)用于加密,另一個(gè)用于解密。</p><p> 2.1.2公鑰密碼的理論基礎(chǔ)</p><p> 公鑰密碼體制的安全性主要取決于構(gòu)造公鑰算法所依賴(lài)的數(shù)學(xué)問(wèn)題,通常要求加密函數(shù)具有單向性,即求逆很困難。因此,公鑰密碼的理論基礎(chǔ)是陷門(mén)單向函數(shù)。</p><p>&l
45、t;b> 1 單向函數(shù)</b></p><p> ?。?)對(duì)于所有屬于f定義域的任一x,可以很容易算出f(x)=y.</p><p> ?。?)對(duì)于幾乎所有屬于f值域的任一y,則在計(jì)算上不可能求出x,使得y=f(x).</p><p><b> 2 單向陷門(mén)函數(shù)</b></p><p> 設(shè)f是一
46、個(gè)函數(shù),t是與f有關(guān)的一個(gè)參數(shù),對(duì)于任一給定的x。計(jì)算y,使得y=f(x)是容易的。如果當(dāng)不知道參數(shù)t是,計(jì)算的f逆函數(shù)是難解的,但但知道參數(shù)t時(shí),計(jì)算f的逆函數(shù)是容易的,則稱(chēng)f是一個(gè)單向陷門(mén)函數(shù),參數(shù)稱(chēng)為陷門(mén)。[5]</p><p> 2.2 對(duì)稱(chēng)加密體制 </p><p> 對(duì)稱(chēng)加密算法,又稱(chēng)私鑰加密算法,就是加密密鑰能夠從解密密鑰中推出來(lái),反過(guò)來(lái)也成立,在大多數(shù)對(duì)稱(chēng)算法中,加密解
47、密密鑰是相同的。對(duì)稱(chēng)算法的加密和解密表示為: </p><p><b> ?。?-1)</b></p><p> 對(duì)稱(chēng)加密算法的典型代表有:DES,AES,3DES,RC2,RC4,RCS,RC6,IDEA等。以DES為代表的對(duì)稱(chēng)密鑰加密算法的設(shè)計(jì)原則主要基于信息論的混亂和擴(kuò)散?;靵y指的是密鑰和明文及密文之間的依賴(lài)關(guān)系應(yīng)該盡量復(fù)雜,以破壞分組間的統(tǒng)計(jì)規(guī)律,通常依靠多
48、輪迭代來(lái)實(shí)現(xiàn);擴(kuò)散則應(yīng)使密鑰和明文的每一位影響密文中盡可能多的位數(shù),這樣可以防止逐段破譯,并通過(guò)S盒的非線性變換來(lái)實(shí)現(xiàn)。實(shí)際上,所有的對(duì)稱(chēng)密鑰加密算法都采用Feistel網(wǎng)、S盒及多次迭代等思想。</p><p> 對(duì)稱(chēng)加密有速度上的優(yōu)點(diǎn),用軟件實(shí)現(xiàn),對(duì)稱(chēng)密鑰比非對(duì)稱(chēng)密鑰快100-1000倍。然而,如果一個(gè)消息想以密文的形式傳到接收者,我們應(yīng)該找到一個(gè)方法安全傳輸密鑰。對(duì)稱(chēng)加密系統(tǒng)用鍵長(zhǎng)來(lái)衡量加密強(qiáng)度,40比特
49、的鍵長(zhǎng)被認(rèn)為比較脆弱,128比特比較健壯。</p><p> 對(duì)稱(chēng)加密算法的缺點(diǎn)則是密鑰分發(fā)困難,密鑰管理難,無(wú)法實(shí)現(xiàn)數(shù)字簽名。</p><p> 對(duì)稱(chēng)加密算法的優(yōu)點(diǎn)是保密強(qiáng)度高,加解密速度快,適合加密大量數(shù)據(jù)。攻擊 者如果對(duì)加密后的數(shù)據(jù)進(jìn)行破譯,唯一的辦法就是對(duì)每個(gè)可能的密鑰執(zhí)行窮搜索。而采用這種加密技術(shù),即使使用最快的計(jì)算機(jī)執(zhí)行這種搜索,耗費(fèi)的時(shí)間也是相當(dāng)?shù)拈L(zhǎng)。如果使用較大的密鑰,
50、破譯將會(huì)更加的困難。[6]</p><p> 3 數(shù)字簽名的基本概念和理論</p><p><b> 3.1數(shù)字簽名概念</b></p><p> 數(shù)字簽名是一種類(lèi)似寫(xiě)在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn),用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。數(shù)字簽字由公鑰密碼發(fā)展而
51、來(lái),它在網(wǎng)絡(luò)安全,包括身份認(rèn)證、數(shù)據(jù)完整性、不可否認(rèn)性以及匿名性等方面有著重要應(yīng)用。特別是在大型網(wǎng)絡(luò)安全通信中的密鑰分配、認(rèn)證以及電子商務(wù)系統(tǒng)中都有重要的作用,數(shù)字簽名的安全性日益受到高度重視。</p><p> 數(shù)字簽名是指用戶(hù)用自己的私鑰對(duì)原始數(shù)據(jù)的哈希摘要進(jìn)行加密所得的數(shù)據(jù)。信息接收方使用信息發(fā)送方的公鑰對(duì)附在原始信息后的數(shù)字簽名進(jìn)行解密后獲得哈希摘要,并通過(guò)與自己用收到的原始數(shù)據(jù)產(chǎn)生的哈希摘要對(duì)照,便可
52、確信原始數(shù)據(jù)信息是否被篡改。這樣就保證了消息來(lái)源的真實(shí)性和數(shù)據(jù)傳輸?shù)耐暾?。[7]</p><p> 3.2 數(shù)字簽名理論</p><p> 數(shù)字簽名的實(shí)現(xiàn)通常采用非對(duì)稱(chēng)密碼與對(duì)稱(chēng)密碼體系。不同的是,非對(duì)稱(chēng)密碼體系的加密和解密過(guò)程分別通過(guò)兩個(gè)不同的密鑰來(lái)實(shí)現(xiàn),其中一個(gè)密鑰以公開(kāi),稱(chēng)為公開(kāi)密鑰,簡(jiǎn)稱(chēng)公鑰,另一個(gè)有用戶(hù)自己秘密保管,稱(chēng)為保密密鑰,簡(jiǎn)稱(chēng)私鑰。只有相應(yīng)的公鑰能夠?qū)τ盟借€加密的信
53、息進(jìn)行解密,反之亦然。以現(xiàn)在的計(jì)算機(jī)運(yùn)算能力,從一把密鑰推算出另一把密鑰是不大可能的。所以,數(shù)字簽名具有很大的安全性,這是它的一個(gè)優(yōu)點(diǎn)。</p><p> 數(shù)字簽名的基本方式主要是:信息發(fā)送方首先通過(guò)運(yùn)行散列函數(shù)生成一個(gè)欲發(fā)送報(bào)文的信息摘要,然后用其私鑰對(duì)這個(gè)信息摘要進(jìn)行加密以形成發(fā)送方的數(shù)列簽名,這個(gè)數(shù)字簽名將作為報(bào)文的附件和報(bào)文一起發(fā)送給報(bào)文的接收方。接收方在收到信息后首先運(yùn)行和發(fā)送相同的散列函數(shù)生成接收?qǐng)?bào)
54、文的信息摘要,然后再用發(fā)送方的公鑰進(jìn)行解密,產(chǎn)生原始報(bào)文的信息摘要,通過(guò)比較兩個(gè)信息摘要是否相同就可以確認(rèn)發(fā)送方和報(bào)文的準(zhǔn)確性。當(dāng)然,上述過(guò)程只是對(duì)報(bào)文進(jìn)行了簽名,對(duì)其傳送的報(bào)文本身并未保密。為了同時(shí)實(shí)現(xiàn)數(shù)字簽名和秘密通信,發(fā)送者可以用接收方的公鑰對(duì)發(fā)送的信息進(jìn)行加密,這樣,只有接收方才能通過(guò)自己的私鑰對(duì)報(bào)文進(jìn)行接么,其它人即使獲得報(bào)文并知道發(fā)送者的身份,由于沒(méi)有接收方的密鑰也無(wú)法理解報(bào)文。</p><p>&l
55、t;b> 3.3數(shù)字簽名過(guò)程</b></p><p> 為了實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下的身份鑒別、數(shù)據(jù)完整性認(rèn)證和抗否認(rèn)的功能,數(shù)字簽名應(yīng)滿(mǎn)足以下要求:</p><p> ?。?)簽名者發(fā)出簽名的消息后,就不能再否認(rèn)自己所簽發(fā)的消息;</p><p> ?。?)接收者能夠確認(rèn)或證實(shí)簽名者的簽名,但不能否認(rèn);</p><p> (3
56、)任何人都不能偽造簽名;</p><p> (4)第三方可以確認(rèn)收發(fā)雙方之間的消息傳送,但不能偽造這一過(guò)程,這樣,當(dāng)通信的雙方關(guān)于簽名的真?zhèn)伟l(fā)生爭(zhēng)執(zhí)時(shí),可由第三方來(lái)解決雙方的爭(zhēng)執(zhí)。[8]</p><p> 對(duì)于一個(gè)典型的數(shù)字簽名體系而言,它必須包含2個(gè)重要的組成部分:即簽名算法(Signature Algorithm)和驗(yàn)證算法(Verification Algorithm)。為了滿(mǎn)足
57、上述4點(diǎn)要求,數(shù)字簽名體系必須滿(mǎn)足2條基本假設(shè):</p><p> (1)簽名密鑰是安全的,只有其擁有者才能使用。</p><p> ?。?)使用簽名密鑰是產(chǎn)生數(shù)字簽名的唯一途徑。</p><p> 3.3.1.發(fā)送方簽名過(guò)程</p><p> (1)為保證簽名的速度,A先將原文進(jìn)行單向HASH運(yùn)算生成定長(zhǎng)的消息摘要A </p&
58、gt;<p><b> 圖3-1 生產(chǎn)摘要</b></p><p> ?。?)利用自己的私鑰加密消息摘要得到數(shù)字簽名A,并將數(shù)字簽名附在原消息后面 </p><p><b> 圖3-2 加密摘要</b></p><p> ?。?)通訊時(shí)用戶(hù)A將自己的名文一起通過(guò)網(wǎng)絡(luò)送給通訊對(duì)方即用戶(hù)B</p>
59、<p> 圖3-3發(fā)送原文和摘要</p><p> 3.3.2.接收方驗(yàn)證過(guò)程</p><p> 接收方B接收到發(fā)送方A的簽名消息后,對(duì)A的簽名消息進(jìn)行驗(yàn)證的過(guò)程如下:</p><p> (1)將消息中的原消息與數(shù)字簽名分離出來(lái) </p><p> 圖3-4分離明文和數(shù)字簽名</p><p>
60、 (2)使用A的公鑰解密數(shù)字簽名得到摘要</p><p><b> 圖3-5得到摘要</b></p><p> ?。?)利用與發(fā)送方A相同的散列函數(shù)重新計(jì)算原消息的摘要 </p><p> 圖3-6 接受方計(jì)算摘要</p><p> (4)比較解密后獲得的消息摘要A與重新計(jì)算產(chǎn)生的消息摘要B,若相等則說(shuō)明消息在傳輸
61、過(guò)程中沒(méi)有被篡改,否則消息不可靠。</p><p> 圖3-7驗(yàn)證數(shù)字簽名</p><p> 3.3.3數(shù)字簽名過(guò)程</p><p> 圖3-8數(shù)字簽名流程圖</p><p> 4 數(shù)字簽名常見(jiàn)的算法及其數(shù)字簽名</p><p> 數(shù)字簽名的方法有很多,現(xiàn)在主要應(yīng)用的數(shù)字簽名主要有:RSA,DSA以及橢圓曲線
62、數(shù)字簽名。</p><p> 4.1 DSA數(shù)字簽名算法</p><p> .DSA是SChnorr和ELGAmal簽名算法的變種,被美NIST作為DSS是一種公開(kāi)密鑰算法,它不能用作加密,只能用作數(shù)字簽名。DSA使用公開(kāi)公鑰,為接受者驗(yàn)證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份。它也用作于由第三方去確定簽名和所簽收數(shù)據(jù)的真實(shí)性。信息交流中,接受方希望收到的信息未被篡改,還希望收到的信息確實(shí)是自
63、己認(rèn)定的發(fā)送方所發(fā),那么接受方和發(fā)送方就可以約定,共同使用DSA來(lái)實(shí)現(xiàn)。</p><p> 4.1.1 DSA數(shù)字簽名實(shí)現(xiàn)的三個(gè)步驟</p><p> ?。?)參數(shù)與密鑰生成 (2)簽名的算法 (3)簽名的驗(yàn)證算法</p><p><b> 1.初始過(guò)程</b></p><p> ?。?) 系統(tǒng)參數(shù):大素?cái)?shù)p, q且
64、q為p-1的因子, 并滿(mǎn)足2^511<p<2^1024, 2^159<q<2^160 ,以確保在 Zp中求解離散對(duì)數(shù)的困難性;</p><p> g ∈ Zp , 且滿(mǎn)足 g =h ^(p-1)/q mod p,其中h是一整數(shù), 1< h < p-1且h^(p-1)/q modp>1 。p,q,g 作為系統(tǒng)參數(shù),供所有用戶(hù)使用,在系統(tǒng)內(nèi)公開(kāi)?</p>&l
65、t;p> ?。?)用戶(hù)私鑰:用戶(hù)選取一個(gè)私鑰x,1<x< q,保密? </p><p> ?。?)用戶(hù)公鑰:用戶(hù)的公鑰y,y = g^x mod p,公開(kāi)?</p><p><b> 2.簽名過(guò)程</b></p><p> 對(duì)待簽消息m,設(shè) 0<m<p?簽名過(guò)程如下:</p><p>
66、 ?。?)生成一隨機(jī)整數(shù) k, k ∈ Zp* ;</p><p> ?。?)計(jì)算 r = (g^k mod p) mod q; </p><p> ?。?)計(jì)算 s = k^-1*(h(m)+x*r) mod q?則(r,s)為簽名人對(duì)m的簽名?</p><p><b> 3. 驗(yàn)證過(guò)程<
67、;/b></p><p> ?。?)首先檢查r和s是否屬于[0,q],若不是,則 (r,s)不是簽名;</p><p> (2)計(jì)算t= s^-1mod q , r’=(g^h(m) t mod q (y^r*t mod q )mod p) mod q ;</p><p> ?。?)比較r’= r 是否成立?若成立,則(r,s) 為合法簽名,則(r,s) 為
68、簽名人對(duì)m的簽名</p><p> 4.1.2 DSA的安全性</p><p> DSA的安全性主要依賴(lài)于整數(shù)有限域離散對(duì)數(shù)難題。其安全性與RSA相比差不多,DSA的一個(gè)重要特點(diǎn)是兩個(gè)素?cái)?shù)公開(kāi),這樣,當(dāng)使用別人的P和Q是,即使不知道私鑰,你也能確認(rèn)他們是否是隨機(jī)產(chǎn)生的,還是做了手腳的。RSA算法是做不到的。素?cái)?shù)P必須足夠大,且p-1至少包含一個(gè)大素?cái)?shù)因子以抵抗Pohlig&he
69、llman算法的攻擊。M一般都應(yīng)采用信息HASH的值。DSA安全性主要依賴(lài)于p和g,若選取不當(dāng)則簽名容易偽造,應(yīng)保證g對(duì)于p-1的大素?cái)?shù)因子不可約。DSA的一個(gè)主要特點(diǎn)是兩個(gè)素?cái)?shù)公開(kāi),這樣,當(dāng)使用別人的p和g,即使不知道私鑰,你也能確認(rèn)他們是隨機(jī)產(chǎn)生的。[9]</p><p> 4.2 橢圓曲線代理簽名體制</p><p> 4.2.1橢圓曲線數(shù)字簽名ECDSA</p>
70、<p> 橢圓曲線簽名算法ECDSA是基于橢圓曲線密碼體制(ECC)的數(shù)字簽名算法。DSA是美國(guó)國(guó)家標(biāo)準(zhǔn)局制定的數(shù)字簽名算法,他是建立在有限域乘法群上的。對(duì)于有限域上的橢圓曲線密碼系統(tǒng),數(shù)字簽名標(biāo)準(zhǔn)建議采用橢圓曲線數(shù)字簽名算法ECDSA,下面給出該算法的過(guò)程。</p><p> 假設(shè)一組橢圓曲線的參數(shù)組為(q,F(xiàn)R,a,b,G,n,h)。其中q是域的階,F(xiàn)R指示域中元素的表示方法,a,b是兩個(gè)系數(shù),
71、G是基點(diǎn),G的階為n,余因子h=#E(Fq)/n,他是一個(gè)小的素?cái)?shù)。</p><p> 1 ECDSA密鑰對(duì)生成過(guò)程</p><p> ?。?)選擇一個(gè)隨機(jī)數(shù)d,d∈(1,n-1)?</p><p> ?。?)計(jì)算Q,Q=d*G?</p><p> ?。?)那么公鑰為Q,私鑰為整數(shù)d?</p><p> 2 ECD
72、SA簽名過(guò)程</p><p> 假設(shè)待簽名的消息為,m;</p><p> (1)選擇一個(gè)隨機(jī)數(shù)k,k∈(1,n-1)。</p><p> ?。?)計(jì)算k*G=(x1,y1)。</p><p> (3)計(jì)算r=x1 mod n;如果r=O,則返回到步驟(1)。</p><p> ?。?)計(jì)算s=k^-1(e+d*
73、r) mod n,如果s=O,則返回到步驟(1)。</p><p> ?。?)對(duì)消息的簽名為(r,s),最后簽名者把消息m和簽名(r,s)發(fā)送給接收者。</p><p> 3 ECDSA密鑰對(duì)驗(yàn)證過(guò)程</p><p> 獲得發(fā)送者的公鑰Q開(kāi)始驗(yàn)證: </p><p> (1)檢查r,s,要求r,s∈(1,n-1)。</p>
74、<p> (2)計(jì)算e=SHA1(m)。</p><p> ?。?)計(jì)算w=s-1mod n。</p><p> ?。?)計(jì)算u1=e*w mod n;u2=r*w mod n。</p><p> ?。?)計(jì)算X=u1G+u2Q。</p><p> ?。?)如果X=O,表示簽名無(wú)效;否則,X=(x1,y1),計(jì)算v=x1 mod
75、 n。</p><p> ?。?)如果v=r,表示簽名無(wú)效;否則表示簽名有效。[10]</p><p> 4.2.2橢圓曲線數(shù)字簽名的安全性</p><p> ECDSA在安全性方面的目標(biāo)是能抵抗選擇明文(密文)攻擊。而攻擊A的攻擊者的目標(biāo)是在截獲A的簽名后,可以生成對(duì)任何消息的合法簽名。盡管ECDSA的理論模型很堅(jiān)固,但是人們?nèi)匝芯亢芏啻胧┮蕴岣逧CDSA的安
76、全性。在ECDLP不可破解及哈希函數(shù)足夠強(qiáng)的前提下,DSA和ECDSA的一些變形已被證明可以抵抗現(xiàn)有的任何選擇明文(密文)攻擊。在橢圓曲線所在群是一般群并且哈希函數(shù)能夠抗碰撞攻擊的前提下,ECDSA本身的安全性已經(jīng)得到證明。</p><p> ECDSA可能面臨的攻擊:</p><p> 1.對(duì)ECDLP的攻擊。2.對(duì)哈希函數(shù)的攻擊。3.其他攻擊。</p><p&g
77、t;<b> ECDMA的優(yōu)點(diǎn)</b></p><p> ?。?)安全性能高(2)計(jì)算機(jī)量小和計(jì)算機(jī)速度快(3)存儲(chǔ)空間占有量?。?)帶寬要求低。</p><p> 5 RSA算法及其數(shù)字簽名</p><p><b> 5.1 RSA簡(jiǎn)述</b></p><p> RSA加密體制是一種公開(kāi)的
78、密碼體制。RSA公匙密碼體制是又R.L.Rivest,A.Shamir和L.Adelman于1978年提出的。由于RSA算法很完善,即可用于數(shù)據(jù)加密,又可用于數(shù)字簽名,安全性良好,易于實(shí)現(xiàn)和理解,所以已經(jīng)成為一種應(yīng)用極廣的公匙密碼算法,目前,RSA在許多場(chǎng)合有廣泛的應(yīng)用。</p><p> RSA 公鑰密碼算法是迄今為止在理論上最為成熟、完善的公鑰密碼體制。 從提出到現(xiàn)在已經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,
79、普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。它是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名和密鑰分配與管理的算法。它易于理解和操作,也很流行。因?yàn)樗瓤捎糜诩用?又可用于簽名,并為用戶(hù)的公開(kāi)密鑰簽發(fā)公鑰證書(shū)、發(fā)放證書(shū)、管理證書(shū)等,提高了服務(wù)質(zhì)量,所以, RSA 公開(kāi)密鑰密碼在當(dāng)今的信息交換過(guò)程中已得到廣泛的應(yīng)用和實(shí)踐,RSA 公鑰密碼體制在世界許多地方已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)。</p><p> 該算法的加密密鑰和加密算法分開(kāi)
80、,使得密鑰分配更為方便。而且它特別符合計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境。對(duì)于網(wǎng)上的大量用戶(hù),可以將加密密鑰用電話簿的方式印出。如果某用戶(hù)想與另一用戶(hù)進(jìn)行保密通信,只需從公鑰簿上查出對(duì)方的加密密鑰,用它對(duì)所傳送的信息加密發(fā)出即可。對(duì)方收到信息后,用僅為自己所知的解密密鑰將信息解密,了解明文的內(nèi)容。[11]由此可看出,RSA 算法解決了大量網(wǎng)絡(luò)用戶(hù)密鑰管理的難題,這是公鑰密碼系統(tǒng)相對(duì)于對(duì)稱(chēng)密碼系統(tǒng)最突出的優(yōu)點(diǎn)。</p><p> R
81、SA 是一個(gè)基于數(shù)論的非對(duì)稱(chēng)密碼體制,是一種分組密碼體制,是一種基于因子分解的指數(shù)函數(shù)作為單向陷門(mén)函數(shù)的公鑰體制算法。它基礎(chǔ)是數(shù)論的歐拉定理,素?cái)?shù)檢測(cè),它的安全性是基于大數(shù)分解,后者在數(shù)學(xué)上是一個(gè)困難問(wèn)題。 </p><p> RSA 的安全性基于復(fù)雜性理論中的計(jì)算安全性, 依賴(lài)于大整數(shù)分解這一NP 難題??煽啃耘c所用密鑰的長(zhǎng)度有很大關(guān)系, 假如有人找到一種很快的分解因子的算法, 即從一個(gè)公鑰中通過(guò)因數(shù)分解得到
82、私鑰, 那么用RSA 加密的信息的可靠性肯定會(huì)極度下降。但由于其工作量巨大,按目前計(jì)算機(jī)的處理能力是不可能實(shí)現(xiàn)的。實(shí)踐證明,在當(dāng)前的技術(shù)和方法下,密鑰不小于1 024 bit的RSA算法仍然是安全的。這充分說(shuō)明RSA 系統(tǒng)具有良好的保密性能。</p><p> 因此,盡管先后出現(xiàn)了很多新的公鑰體制算法,但RSA仍然在不同應(yīng)用領(lǐng)域占據(jù)了重要的位置。隨著計(jì)算機(jī)運(yùn)算速度的提高以及因子分解算法的突破, RSA 的密鑰長(zhǎng)
83、度將越來(lái)越大, 其軟硬件實(shí)現(xiàn)速度將成為制約其使用的重要因素。</p><p> 5.2 RSA加密的可行性</p><p> 雖然RSA加密運(yùn)算的速度十分慢,但是在PC性能越來(lái)越好的今天,對(duì)于幾千字節(jié)的數(shù)據(jù)進(jìn)行一次幾百位密鑰的RSA加密,所消耗的時(shí)間應(yīng)該是可以接受的?下面結(jié)合大數(shù)運(yùn)算程序的調(diào)試,從理論上簡(jiǎn)單的分析消耗時(shí)間?在一臺(tái)普通配置的PC機(jī)上對(duì)一個(gè)整數(shù)進(jìn)行冪模運(yùn)算,因?yàn)楣_(kāi)密鑰的e
84、通常取的較小,所以指數(shù)取一個(gè)小整數(shù),比如C353,模一個(gè)70字節(jié)長(zhǎng)的整數(shù)(140位十六進(jìn)制,大數(shù)單元以線性組方式實(shí)現(xiàn),對(duì)應(yīng)到RSA算法中,這相當(dāng)于約560bit的n),調(diào)試一個(gè)函數(shù)測(cè)試,按初等數(shù)論中的知識(shí)對(duì)程序進(jìn)行算法優(yōu)化,最終在一臺(tái)配置為AMD Athron2800+,外頻333MHZ,物理內(nèi)存512MB的PC上測(cè)試需要約45毫秒時(shí)間?如果按這種速度,逐字節(jié)對(duì)1KB的數(shù)據(jù)進(jìn)行同樣的運(yùn)算,所消耗的時(shí)間理論上為45毫秒的1024倍即約45
85、秒?這個(gè)時(shí)間并不是非常長(zhǎng)[12]?</p><p> 其實(shí)從一個(gè)簡(jiǎn)單的角度來(lái)說(shuō),既然RSA用于數(shù)字簽名可行,那就完全可以用于同樣大小的普通文件?對(duì)于較大的文件,如果分成與數(shù)字簽名同樣大小的段(這里假設(shè)數(shù)字簽名較短,不分段一次計(jì)算加密完成),分開(kāi)的各段逐一進(jìn)行加密運(yùn)算,那所需要的時(shí)間也只是按文件大小線性的增長(zhǎng)?通常數(shù)字簽名為幾十字節(jié),加密運(yùn)算并不需要很長(zhǎng)的等待,這就說(shuō)明對(duì)于幾百字節(jié)或一兩K字節(jié)大小的文件來(lái)說(shuō),如果
86、進(jìn)行RSA加密,并不會(huì)是非常漫長(zhǎng)的工作?當(dāng)然,如果文件更大,加密就顯得十分漫長(zhǎng)了?比如按前面敘述的45毫秒大數(shù)運(yùn)算程序推理,加密1M字節(jié)大小的文件需要約1天的時(shí)間?所以,要在普通PC用幾百位以上的長(zhǎng)密鑰RSA加密文件,文件不能過(guò)大,一般可以接受的上限是幾KB?如果要在較短時(shí)間內(nèi)加密大文件,需要縮短密鑰長(zhǎng)度以減小運(yùn)算量,這將帶來(lái)安全性隱患?[13]</p><p> 5.3 RSA算法的介紹</p>
87、<p> RSA系統(tǒng)由以下幾部分組成:</p><p> ?。?)隨機(jī)選取的在素?cái)?shù)P和Q,還有N ,其中N=P*Q ,P和Q保密,N公開(kāi)。</p><p> (2)任取Φ(n)=(P-1)*(Q-1),其中 (n)表示比n小的素?cái)?shù)的個(gè)數(shù),任取2<=e<= (n),且(e, (n))=1,e為加密密鑰,公開(kāi)。</p><p> ?。?)計(jì)算
88、d,使e*d=1(mod (n)),稱(chēng)d為e對(duì)模 (n)的逆,其中d為解密秘鑰,保密。在RSA系統(tǒng)中,設(shè)m為明文,且明文塊的數(shù)值大于n,c為密文,則其加密和解密算法如為:加密算法 C=E(m)=m^e(mod n) 解密算法 m=D(c)=c^d(mod n)</p><p> 在RSA系統(tǒng)中(e,n)構(gòu)成加密秘鑰,即公鑰,(d,n) 構(gòu)成解密秘鑰,即私鑰。</p><p> 5.3.
89、1 RSA中素?cái)?shù)的選取</p><p> 在RSA中,因N=P*Q, 若P,Q被知道,即能將N因子分解,則由 Φ(n)=(P-1)*(Q-1)可以算出。由于e是公開(kāi)密鑰,且解密秘鑰D關(guān)于E滿(mǎn)足 D*E=1 (mod Φ(n))則D也不難求得,這樣RSA系統(tǒng)便被完全攻破。</p><p> RSA中的素?cái)?shù)都是上面位的十進(jìn)制數(shù),怎樣才能選擇好的P和Q,怎樣才能生成這樣的數(shù),并且判斷它是否為
90、素?cái)?shù),這是一個(gè)RSA系統(tǒng)關(guān)鍵的問(wèn)題。針對(duì)素?cái)?shù)P和Q的選擇,1978年Rivest等人在正式發(fā)表的RSA公開(kāi)密鑰的論文中,就建議對(duì)素?cái)?shù)P和Q的選擇應(yīng)當(dāng)滿(mǎn)足:</p><p> ?。?)P、Q要足夠在,在長(zhǎng)度上應(yīng)相差幾位,且二者之差與P、Q位數(shù)相近;</p><p> ?。?)P-1與Q-1的最大公約數(shù)GCD(P-1,Q-1)就盡量?。?lt;/p><p> ?。?)P-1
91、與Q-1均應(yīng)至少含有一個(gè)大的素?cái)?shù)因子。</p><p> 并把滿(mǎn)足這些條件的素?cái)?shù)稱(chēng)為安全素?cái)?shù)。</p><p> 5.3.2 RSA用到的公式和定理</p><p> (1)數(shù)和互為素?cái)?shù) </p><p> 任何大于1的整數(shù)a能被因式分解為如下唯一形式: a=p1p2…pl(p1,p2,…,pl為素?cái)?shù)) </p><
92、;p><b> (2)模運(yùn)算 </b></p><p> ?、賩[a(modn)]×[b(mod n)]}modn≡(a×b)(mod n) </p><p> ?、谌绻╝×b)=(a×c)(mod n),a與n互素,則 b=c(mod n) </p><p><b> (3)費(fèi)馬定
93、理 </b></p><p> 若p是素?cái)?shù),a與p互素,則a ^(p-1)=1 mod p </p><p><b> ?。?)歐拉定理 </b></p><p> 歐拉函數(shù)φ(n)表示不大于n且與n互素的正整數(shù)的個(gè)數(shù)。當(dāng)n是素?cái)?shù), φ(n)=n-1。n=p*q,p,q均為素?cái)?shù)時(shí),則φ(n)=φ(n)φ(n)=(p-1)(q-1
94、)。 對(duì)于互素的a和n,有a^φ(n)=1(mod n)</p><p> 5.3.3 RSA安全性的分析</p><p> 在公布RSA算法之后,在使用RSA密碼體制和分析RSA算法發(fā)現(xiàn)了一系列的算法本身脆弱性及其存在的問(wèn)題。 </p><p> ?。?)RSA公鑰密碼體制在加密或解密中涉及大量的數(shù)值計(jì)算,其加密和解密的運(yùn)算時(shí)間比較長(zhǎng),以致于實(shí)際使用RS
95、A密碼體制無(wú)法應(yīng)用到軟件產(chǎn)品,必須用超大規(guī)模集成電路的硬件產(chǎn)品。 </p><p> ?。?)雖然提高N位數(shù)會(huì)大大提高RSA密碼體制的安全性,但其計(jì)算量呈指數(shù)增長(zhǎng),以致使其實(shí)現(xiàn)的難度增大,實(shí)用性降低。 </p><p> ?。?)RSA公鑰密碼體制的算法完整性(指密鑰控制加密或解密變換的唯一性)和安全性(指密碼算法除密鑰本身外,不應(yīng)該存在其它可破譯密碼體制的可能性)沿有等進(jìn)一步完善。
96、</p><p> ?。?)RSA算法面臨著數(shù)學(xué)方法的進(jìn)步和計(jì)算機(jī)技術(shù)飛躍發(fā)展帶來(lái)的破譯密碼能力日趨增強(qiáng)的嚴(yán)重挑戰(zhàn)。RSA公開(kāi)密鑰密碼算法在信息交換過(guò)程中使用比較廣泛,安全性比較高。以當(dāng)前的計(jì)算機(jī)水平,如選擇1024位長(zhǎng)的密鑰(相當(dāng)于300位十進(jìn)制數(shù)字)就認(rèn)為是無(wú)法攻破的。</p><p> 5.3.4 RSA的攻擊</p><p> RSA算法的安全性就是基于
97、大整數(shù)的因子分解困難之上的,到目前其還是安全的,要分析RSA算法的安全性,我們從攻擊RSA的角度來(lái)審視??偟膩?lái)分,RSA算法攻擊可以區(qū)分為三類(lèi):</p><p> (1)蠻力攻擊:它通過(guò)實(shí)驗(yàn)所用的可能私鑰,來(lái)達(dá)到目的。</p><p> ?。?)數(shù)字攻擊:使用數(shù)學(xué)技巧,類(lèi)似于分解N來(lái)達(dá)到目的。</p><p> (3)時(shí)間攻擊:通過(guò)觀察解密算法運(yùn)行的時(shí)間來(lái)達(dá)到目
98、的。</p><p> 其中抵抗蠻力攻擊的方法,與其它加密系統(tǒng)是一致的,使用大的密鑰空間,是窮舉無(wú)能無(wú)力,因此E和D的位數(shù)越長(zhǎng)則越安全,但是加解密速度會(huì)越慢,所以E和d位數(shù)的長(zhǎng)度應(yīng)與實(shí)際應(yīng)用系統(tǒng)有綜合的權(quán)衡。</p><p> (1)RSA的選擇密文攻擊</p><p> RSA在選擇密文攻擊面前很脆弱。所謂密碼分析者并不知道解密的密鑰,但是給出任意的消息,密
99、碼分析者可以將其加密,再解密?;蛘哒f(shuō),密碼分析者能獲得解密服務(wù)。設(shè)攻擊者為A,密文接受者為T(mén),公鑰對(duì)為(e,n),私鑰為d,T收到的密文為c,c對(duì)應(yīng)的明文為m?,F(xiàn)在A想知道m(xù) = c^d mod n,但是他不想分解n。于是T找了一個(gè)隨機(jī)數(shù)r,r < n。他進(jìn)行如下計(jì)算:</p><p> x = r^e mod n (對(duì)r用T的公鑰加密,得到臨時(shí)密文x),y = (x * c) mod n (將臨時(shí)密文x
100、與密文c相乘)t = r^(-1) mod n。A利用了RSA加密和解密過(guò)程的特點(diǎn),即:如果x = r^e mod n,那么 r = x^d mod n現(xiàn)在A要做的是使T用d對(duì)t簽名:u = t^d mod n。A需要獲得u,然后計(jì)算m = (t * u) mod n計(jì)算結(jié)果是這樣推導(dǎo)的:</p><p> t *u mod n = [r^(-1) * y^d] mod n= [r^(-1) * x^d * c
101、^d] mod n= c^d mod n= m[14]</p><p> ?。?)RSA的公共模數(shù)攻擊</p><p> 若系統(tǒng)中共有一個(gè)模數(shù),只是不同的人擁有不同的e和d,系統(tǒng)將是危險(xiǎn)的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互質(zhì),那么該信息無(wú)需私鑰就可得到恢復(fù)。</p><p> 設(shè)P為信息明文,兩個(gè)加密密鑰為e1和e2,公共模數(shù)是n,則:
102、 C1 = P^e1 mod n C2 = P^e2 mod n密碼分析者知道n、e1、e2、C1和C2,就能得到P。因?yàn)閑1和e2互質(zhì),故用Euclidean算法能找到r和s,滿(mǎn)足:r * e1 + s * e2 = 1假設(shè)r為負(fù)數(shù),需再用Euclidean算法計(jì)算C1^(-1),則 ( C1^(-1) )^(-r) * C2^s = P mod n 。</p><p> 5.3.5 RSA的缺點(diǎn)</p
103、><p> ?。?)RSA產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密 </p><p> ?。?)安全性, RSA的安全性依賴(lài)于大數(shù)的因子分解,但并沒(méi)有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià),而且密碼學(xué)界多數(shù)人士?jī)A向于因子分解不是NPC問(wèn)題。目前,人們已能分解140多個(gè)十進(jìn)制位的大素?cái)?shù),這就要求使用更長(zhǎng)的密鑰,速度更慢;另外,目前人們正在積極尋找攻擊RSA的方法,如
104、選擇密文攻擊,一般攻擊者是將某一信息作一下偽裝(Blind),讓擁 有私鑰的實(shí)體簽署。然后,經(jīng)過(guò)計(jì)算就可得到它所想要的信息。實(shí)際上,攻擊利用的都是同一個(gè)弱點(diǎn),即存在這樣一個(gè)事實(shí):乘冪保留了輸入的乘法結(jié)構(gòu): XM )d = Xd *Md mod n 前面已經(jīng)提到,這個(gè)固有的問(wèn)題來(lái)自于公鑰密碼系統(tǒng)的最有用的特征--每個(gè)人都能使用公鑰。但從算法上無(wú)法解決這一問(wèn)題,主要措施有兩條:一條是采用好的公鑰協(xié)議,保證工作過(guò)程中實(shí)體不對(duì)其他實(shí)體任意產(chǎn)生的
105、信息解密,不對(duì)自己一無(wú)所知的信息簽名;另一條是決不對(duì)陌生人送來(lái)的隨機(jī)文檔簽名,簽名時(shí)首先使用One-Way Hash Function對(duì)文檔作HASH處理,或同時(shí)使用不同的簽名算法。除了利用公共模數(shù),人們還嘗試一些利用解密指數(shù)或φ(n)等等攻擊. </p><p> (3)速度太慢,由于RSA 的分組長(zhǎng)度太大,為保證安全性,n 至少也要 600 bitx以上,使運(yùn)算代價(jià)很高,尤其是速度較慢,較對(duì)稱(chēng)密碼算法慢幾個(gè)
106、數(shù)量級(jí);且隨著大數(shù)分解技術(shù)的發(fā)展,這個(gè)長(zhǎng)度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。目前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048比特長(zhǎng)的密鑰,其他實(shí)體使用1024比特的密鑰。為了速度問(wèn)題,目前人們廣泛使用單,公鑰密碼結(jié)合使用的方法,優(yōu)缺點(diǎn)互補(bǔ):單鑰密碼加密速度快,人們用它來(lái)加密較長(zhǎng)的文件,然后用RSA來(lái)給文件密鑰加密,極好的解決了單鑰密碼的密鑰分發(fā)問(wèn)題。[15]</p>&l
107、t;p> 5.3.6 RSA的優(yōu)點(diǎn)</p><p> ?。?)數(shù)學(xué)表達(dá)式簡(jiǎn)單?</p><p> ?。?)RSA的安全性基于大數(shù)分解的困難性?</p><p> (3)RSA公鑰密碼體制具有一些傳統(tǒng)密碼體制不能實(shí)現(xiàn)的一些功能,如認(rèn)證,鑒別和數(shù)字簽名等,特別適合于現(xiàn)代密碼通信?</p><p> 5.4 RSA數(shù)字簽名</p
108、><p> 5.4.1 RSA數(shù)字簽名的過(guò)程</p><p> 首先產(chǎn)生密鑰,過(guò)程如下:</p><p> ?。?)隨機(jī)產(chǎn)生兩個(gè)等長(zhǎng)度為K/2位的素?cái)?shù)P 和 Q</p><p> ?。?)然后計(jì)算公鑰 publicKey=P*Q;(publicKey 是k位的長(zhǎng)度)</p><p> ?。?)隨機(jī)產(chǎn)生一個(gè)加密密鑰 ke
109、yE, 2<=keyE<=Φ(n)-1其GCD(keyE, Φ(n))=1;注意這是保證解密密鑰keyE *keyD mod Φ(n)=1 有解的充要條件,Φ(n)稱(chēng)為n的歐拉函數(shù),值為:Φ(n)=(P-1)*(Q-1)</p><p> (4)求解解密密鑰keyD=keyE-1 mod (n) ,keyE-1為解密密鑰keyD的逆元 ,此公式原方程為 (keyE*keyD mod (n)=1)&l
110、t;/p><p> 由此公鑰,加密密鑰,解密密鑰全部產(chǎn)生。其次 對(duì)明文加密或?qū)γ芪倪M(jìn)行解密,過(guò)程如下;</p><p> ?。?)加密:C = Mkey^E mod publicKey;其中M表示明文,C表示密文。</p><p> ?。?)解密:M = Ckey^D mod publicKey.;其中M表示明文,C表示密文。</p><p>
111、 5.4.2 RSA數(shù)字簽名算法實(shí)現(xiàn)步驟 </p><p> (1)簽名算法(包括兩步:消息摘要計(jì)算,RSA加密)</p><p> 1 消息摘要MD的計(jì)算: 消息在簽名前首先通過(guò)MD5計(jì)算,生成128位的消息摘要 ;MD5函數(shù)是一種單向散列函數(shù),它將任意長(zhǎng)度的消息壓縮成128位的消息摘要。應(yīng)用MD5的單向性(即給定散列值,計(jì)算消息很難)和抗碰撞性(即給定消息M,要找到另一消息M
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字簽名本科畢業(yè)論文
- rsa算法和rsa數(shù)字簽名算法的實(shí)現(xiàn)
- 數(shù)字簽名技術(shù)畢業(yè)論文--數(shù)字簽名在電子商務(wù)中的應(yīng)用
- RSA算法在數(shù)字簽名中的應(yīng)用.pdf
- 網(wǎng)絡(luò)數(shù)字簽名技術(shù)研究與探索【畢業(yè)論文】
- 基于RSA和橢圓加密算法的數(shù)字簽名.pdf
- 基于elgamal數(shù)字簽名的雙向認(rèn)證方案研究[碩士畢業(yè)論文]
- 基于RSA公鑰體制的WLAN數(shù)字簽名認(rèn)證方案.pdf
- 改進(jìn)的RSA算法及其在數(shù)字簽名中的應(yīng)用.pdf
- 基于rsa算法的數(shù)字簽名系統(tǒng)的應(yīng)用研究
- 基于XML平臺(tái)RSA數(shù)字簽名體制的研究與應(yīng)用.pdf
- 畢業(yè)設(shè)計(jì)(論文)-elgamal數(shù)字簽名技術(shù)的研究
- RSA數(shù)字簽名鏈的研究及在Kerberos中的實(shí)現(xiàn).pdf
- 基于RSA算法的數(shù)字簽名系統(tǒng)的應(yīng)用研究.pdf
- RSA模安全性及隨機(jī)填充概率數(shù)字簽名研究.pdf
- 代理數(shù)字簽名.pdf
- 06 數(shù)字簽名1
- 代理數(shù)字簽名和群數(shù)字簽名的分析與設(shè)計(jì).pdf
- 一個(gè)基于強(qiáng)RSA假設(shè)的數(shù)字簽名方案及其應(yīng)用.pdf
- 數(shù)字簽名課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論