網(wǎng)絡(luò)數(shù)字簽名技術(shù)研究與探索【畢業(yè)論文】_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)論文(設(shè)計)</p><p> 題 目:網(wǎng)絡(luò)數(shù)字簽名技術(shù)研究與探索</p><p> 學 院:</p><p> 學生姓名:</p><p> 專 業(yè):計算機科學與技術(shù)</p><p> 班 級:</p><p> 指導教師:</p&g

2、t;<p> 起止日期:</p><p>  網(wǎng)絡(luò)數(shù)字簽名技術(shù)研究與探索</p><p><b>  摘 要</b></p><p>  目前隨著因特網(wǎng)的普及和發(fā)展,越來越多的人離不開網(wǎng)絡(luò)。網(wǎng)絡(luò)帶給了人們便捷,網(wǎng)上購物的發(fā)展讓人們從此多了一種購物的方式,方便快捷省事是它發(fā)展迅速的資本。</p><p> 

3、 由于網(wǎng)絡(luò)購物涉及金錢,大家一方面對于網(wǎng)購欲罷不能,另一方面卻在擔心自己的金錢會不會被他人取走。數(shù)字簽名插件的出現(xiàn)解決了這個問題,即使你的密碼被他人獲取,對方依然無法取走你網(wǎng)銀中的錢。這種己方與對方互信的通訊讓網(wǎng)購的安全性大大增加。</p><p>  數(shù)字簽名有多種加密算法,如RSA,AES,DSS,MD5等。本文主要研究MD5,RSA和ECC在數(shù)字簽名中的應用。MD5目前已經(jīng)廣泛應用于對于文件的數(shù)據(jù)摘要。RS

4、A已經(jīng)在國際上廣泛驗證,只要兩個素數(shù)長度夠大,破解是幾乎不可能的。ECC是目前已知的公鑰密碼體制中,對每一比特所提供加密強度最高的一種體制。</p><p>  【關(guān)鍵詞】數(shù)字簽名,RSA,MD5,ECC</p><p>  Network of digital signature technology research and explo

5、ration</p><p><b>  Abstract</b></p><p>  With the popularization and development of the Internet, more and more people are inseparable from the network. Netw

6、ork brings people convenient, the development of online shopping for people from now on a new shopping way,Convenient  and quick-turnaround is the rapidly developing capital.</p><p>  As

7、the network shopping involves money, The one hand, online shopping unable to stop ,the other hand, they worried about their own money will be taken away by others. Digita

8、l certificates plug-in solves this problem, even if your password to be for others, the others still can not take away the money in your online banking. This kind of our mutual tru

9、st and communication with each other for the safety of the net buys increase greatly.</p><p>  Digital signature have a variety of encryption algorithm,such as RSA, AES, the DSS,MD5.This paper makes a s

10、tudy of the MD5, RSA and ECC in digital signature of application.MD5 has been widely used in the data summary file.RSA has been widely verified in the international,aslongas&#

11、160;the length of the two prime numbers large enough,the crack is almost impossible.ECC is present known public key cryptosystems of, for each bit provided the highest strength encrypti

12、on system.</p><p>  Keywords】digital signature,RSA,MD5,ECC</p><p><b>  目錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p>&l

13、t;b>  1數(shù)字簽名簡介1</b></p><p>  1.1數(shù)字簽名的定義1</p><p>  1.2 數(shù)字簽名的工作原理1</p><p>  1.3 數(shù)字簽名的功能3</p><p>  1.4數(shù)字簽名的問題3</p><p>  1.5數(shù)字簽名研究現(xiàn)狀4</p>

14、<p>  2.Hash算法之MD55</p><p>  2.1 MD5算法簡介6</p><p>  2.2 MD5算法原理6</p><p>  2.3 MD5算法在數(shù)字簽名中應用7</p><p>  2.4 MD5算法的安全性9</p><p>  3利用RSA的數(shù)字簽名方法和原理10

15、</p><p>  3.1 RSA算法的基本原理10</p><p>  3.2 RSA算法加密解密原理11</p><p>  3.3 RSA算法在計算上的可行性12</p><p>  3.4 RSA算法的安全性問題12</p><p>  3.4.1暴力破解13</p><p>

16、;  3.4.2因子分解14</p><p>  3.4.3選擇密文攻擊15</p><p>  3.4.4共模攻擊15</p><p>  3.4.5小指數(shù)攻擊16</p><p>  3.4.6定時攻擊16</p><p>  3.4.7RSA安全性防范16</p><p>  

17、4橢圓曲線簽名算法18</p><p>  4.1橢圓曲線密碼體制18</p><p>  4.2基礎(chǔ)信息維護模塊的實現(xiàn)19</p><p>  4.3實域R上橢圓曲線的點的加法運算法則21</p><p>  4.4有限域上橢圓曲線的運算23</p><p><b>  5總結(jié)25</b&

18、gt;</p><p><b>  參考文獻26</b></p><p><b>  1數(shù)字簽名簡介</b></p><p>  1.1數(shù)字簽名的定義</p><p>  數(shù)字簽名,就是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明

19、。</p><p>  數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應用。</p><p>  數(shù)字簽名了的文件的完整性是很容易驗證的(不需要騎縫章,騎縫簽名,也不需要筆跡專家),而且數(shù)字簽名具有不可抵賴性(不需要筆跡專家來驗證)。</p><p>  簡單地說,所謂數(shù)字簽名就是附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換。這種數(shù)據(jù)或變換允許數(shù)據(jù)單元的接

20、收者用以確認數(shù)據(jù)單元的發(fā)送起始點和數(shù)據(jù)單元是否完整一致并保護數(shù)據(jù)的安全,以防止被其他人篡改。數(shù)字簽名是對數(shù)據(jù)形式的信息內(nèi)容進行簽名的一種方法,一個被簽名過的消息內(nèi)容能在一個通信網(wǎng)絡(luò)中傳輸。目前數(shù)字簽名普遍基于公鑰密碼模式,其中包括一般的數(shù)字簽名算法和特別的數(shù)字簽名算法。一般的數(shù)字簽名算法有Fiat-Shamir、ElGamal、Guillou- Quisquarte、RSA/DES/DSA數(shù)字簽名算法,橢圓曲線數(shù)字簽名算法。特別的數(shù)字簽

21、名算法有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、擁有信息復原功能的簽名算法等。很明顯,數(shù)字簽名的運用觸及到法律問題,美國政府在建立于有限域上的離散對數(shù)問題規(guī)定了自己的數(shù)字簽名標準(DSS)。數(shù)字簽名的運作模式是,信息內(nèi)容發(fā)送方利用自己的私鑰對原文件內(nèi)容使用HASH提取出來的信息摘要進行加密處理,完成對信息內(nèi)容的合法簽名,信息內(nèi)容獲得方則利用發(fā)送方公開的公鑰來解密獲到的數(shù)字簽名,并將解密后的結(jié)果作用于對信息內(nèi)容的完整

22、性的測</p><p>  1.2 數(shù)字簽名的工作原理</p><p>  發(fā)送報文時,發(fā)送方用一個哈希函數(shù)從報文文本中生成報文摘要,然后使用其私鑰對這個摘要進行加密,這個加密后的摘要將作為報文的數(shù)字簽名和報文一起發(fā)送給接收方,接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報文中計算出報文摘要,接著再用發(fā)送方的公用密鑰來對報文附加的數(shù)字簽名進行解密,如果這兩個摘要相同、那么接收方就能確

23、認該數(shù)字簽名是發(fā)送方的。</p><p>  運用數(shù)字簽名一般要用到以下幾個步驟:</p><p>  (1)個體生成或者獲得唯一的加密密碼組。</p><p>  (2)信息發(fā)送方在計算機上備置一個文件內(nèi)容。</p><p>  (3)信息發(fā)送方用一種安全的哈希函數(shù)對備置好的文件內(nèi)容使用生成信息摘要。數(shù)字簽名由一個信息摘要生成。該函數(shù)值由被

24、簽名的信息內(nèi)容以及信息發(fā)送方的私鑰生成,并對其而言是具有唯一性的。為了保證哈希函數(shù)生成的信息摘要的安全,應該使利用任何消息和私鑰的組合而生成一模一樣的數(shù)字簽名的可能性為無。</p><p>  (4)信息發(fā)送方通過運用私鑰將信息摘要進行加密。私鑰通過運用一種特定的加密算法被運用在信息摘要內(nèi)容中。</p><p>  (5)信息發(fā)送方將數(shù)字簽名附著在信息內(nèi)容之后。</p>&l

25、t;p>  (6)信息發(fā)送方將數(shù)字簽名和信息內(nèi)容(加過密或未經(jīng)加過密)發(fā)送給信息接收方。</p><p>  (7)信息接收方使用信息發(fā)送方的公鑰確認信息發(fā)送方的數(shù)子簽名的安全性。使用信息發(fā)送方的公鑰對數(shù)字簽名進行解密,以確保信息來自發(fā)送方,并未經(jīng)修改。</p><p>  (8)信息接收方使用同樣安全的哈希函數(shù)對信息內(nèi)容進行運算,以獲得信息摘要。</p><p&

26、gt;  (9)信息接收方比較獲得的兩個信息摘要,如果兩者一樣,則信息接收方可以確認信息內(nèi)容在簽名后并未被作任何修改。信息內(nèi)容被簽名后哪怕是僅僅一個字節(jié)的修改,信息接收方創(chuàng)建的數(shù)據(jù)摘都會和信息發(fā)送方創(chuàng)建的數(shù)據(jù)摘要有所區(qū)別。</p><p>  (10)信息接收方從CA處獲得認證證書(或者是通過信息發(fā)件人獲得),這個證書是用來確認信息接收方發(fā)出的信息內(nèi)容上的數(shù)字簽名的真實性。CA在數(shù)字簽名系統(tǒng)中是一個典型的第三方受

27、委托管理證明業(yè)務(wù)。該證書包含信息發(fā)送方的公鑰以及其他可能附加的信息,由CA在該信息內(nèi)容上進行數(shù)字簽名。</p><p>  數(shù)字簽名有兩種功效:一是數(shù)字簽名能確定消息的完整性。二是能確定消息確實是由發(fā)送方簽名并發(fā)出來的,因為別人假冒不了發(fā)送方的簽名。因為數(shù)字簽名的特點是它代表了文件的特征,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。不同的文件將得到不同的數(shù)字簽名。一次數(shù)字簽名涉及到一個哈希函數(shù)、發(fā)送者的公鑰、發(fā)送

28、者的私鑰。</p><p>  1.3 數(shù)字簽名的功能</p><p>  歸納起來,數(shù)字簽名技術(shù)可以解決偽造、篡改、冒充、抵賴等問題,其功能主要表現(xiàn)在以下幾方面:</p><p>  (l)第一,簽名是可信的。因為簽名者就是現(xiàn)實中的那個人,數(shù)字簽名是根據(jù)文件的內(nèi)容而變,所以簽名的內(nèi)容就是簽名者想要表達的真實意愿。</p><p>  (2)

29、第二,簽名是不可偽造。大家相信其他人不可能仿冒簽名者的簽名,因為簽名私鑰只有簽名者知道,其他人不可能構(gòu)造出正確的簽名數(shù)據(jù)。</p><p>  (3)簽名是不可重用的。其他人不可能將簽名動到另外的文件上,因為簽名是根據(jù)文件的內(nèi)容而產(chǎn)生的,即使被移動,解密后的信息和原來的也是完全兩個意思,接收者可輕易發(fā)現(xiàn)。</p><p>  (4)簽名后的文件是不可篡改的。人們確信不可對已經(jīng)簽名的文件作任

30、何更改,因為數(shù)字簽名與原始文件內(nèi)容及其用函數(shù)產(chǎn)生的摘要一起發(fā)送給接收者,一旦消息被篡改,接收者可通過計算摘要和驗證簽名來判斷該文件無效,從而保證了數(shù)據(jù)的正確性。</p><p>  (5)簽名不可抵賴。數(shù)字簽名作為信息發(fā)送方簽名操作的證據(jù),可以防止簽名者抵賴。要防止信息接收方的抵賴,可以在數(shù)字簽名中請求信息接收方發(fā)送一個己方簽名的表明已經(jīng)收到的信息,給信息發(fā)送方或雙方都信任的第三方機構(gòu)。假如信息接收方不返回任意消

31、息,則這次通信可結(jié)束或者重新開始,信息發(fā)送方也沒有什么損失,因此雙方均不可抵賴。</p><p>  (6)防多放攻擊。如在電子商務(wù)中,A向B發(fā)送了一筆物品訂單,如果有不法之徒中途獲取訂單并發(fā)送多筆訂單給B,這樣會引起B(yǎng)以為A購買了多筆物品。在數(shù)字簽名中,通常采用對簽名文件附上時間戳或增加處理流水號等技術(shù),這樣便可以阻止多放攻擊。</p><p>  1.4數(shù)字簽名的問題</p>

32、;<p>  在生活中,有冒充簽名的,有私刻單位印章的。而數(shù)字簽名的引入,不可避免的也帶來一些新問題:</p><p>  (l)基礎(chǔ)設(shè)施的使用費問題。是收費還是免費,這些都將影響到該技術(shù)的推廣速度以及開發(fā)者和民眾的接受程度。</p><p>  (2)假設(shè)某人發(fā)送消息后脫離了其原屬組織,被取消了原先的數(shù)字簽名的權(quán)限,以往發(fā)送的數(shù)字簽名在鑒定時只能在取消確認列表中找到原有確認

33、信息,這樣就需要鑒定中心結(jié)合時間信息進行鑒定,這需要鑒定中心的建立健全。</p><p>  (3)要求數(shù)字簽名需要被認可并被大量推廣,如果發(fā)送方的消息已經(jīng)進行了數(shù)字簽名,那么接收方一定要有數(shù)字簽名相關(guān)軟件才可處理。</p><p>  (4)需要立法機關(guān)對數(shù)字簽名有足夠重視,并且在法律建設(shè)上加快腳步,迅速制定相關(guān)法律,以充分實現(xiàn)數(shù)字簽名具有的作用。</p><p>

34、;  數(shù)字簽名實際上就是使用了某些算法變換了所需傳輸?shù)南?,與傳統(tǒng)的手工簽名和印章有著根本的不同。現(xiàn)實中手工簽名是模擬的,因人而異,不同的人,其寫法必定是不同的,寫出來的字當然也會不同;數(shù)字簽名是針對文件內(nèi)容處理后的數(shù)據(jù),即O和l的數(shù)據(jù)串,是因文件內(nèi)容而異的,同一個人,對不同的文件內(nèi)容,其簽名結(jié)果是完全不同的。</p><p>  傳統(tǒng)手工簽名中,簽名與文件本身的內(nèi)容是互相分開的;而數(shù)字簽名中,簽名是因文件內(nèi)容而

35、異的,換句話說簽名與本身文件內(nèi)容已經(jīng)組成了一個混合的整體數(shù)據(jù),原有文件內(nèi)容的修改必定會反映至數(shù)字簽名的改變。所以,數(shù)字簽名相比傳統(tǒng)手寫簽名更具有可靠性。</p><p>  1.5數(shù)字簽名研究現(xiàn)狀</p><p>  本文主要以MD5和RSA以及ECC三個算法對數(shù)字簽名目前的加密技術(shù)進行討論。</p><p>  目前對消息提取摘要的一般為雜湊函數(shù),構(gòu)造雜湊函數(shù)的方

36、法有兩種:一種是直接構(gòu)造,比如MD5雜湊算法和安全雜湊函數(shù)(SHA) ;另一種是非直接構(gòu)造,主要是利用目前已有的分組加密算法,諸如DES、AES等,對其稍加改造,采取通過它們加密的非線性變換構(gòu)造雜湊函數(shù)。</p><p>  MD5雜湊算法可以說是目前應用最廣泛的Hash算法,而它是以MD4為基礎(chǔ)設(shè)計的。它在MD4的基礎(chǔ)上增加了"安全-帶子"(safety-belts)的概念。雖然MD5比MD

37、4復雜度大一些,但卻更為安全。</p><p>  RSA以模算術(shù)方式將指數(shù)應用于加密和解密之中,是非對稱密碼技術(shù)中最著名的一種。其安全性依賴于大數(shù)因子分解問題。雖然在理論上RSA是可以被破解的,但經(jīng)過多年對于RSA安全性的密碼分析,我們既不能證明也不能否認其安全性,這恰恰說明該算法有一定的可信度。</p><p>  ECC的主要優(yōu)勢是在某些情況下它比其他的方法使用更小的密鑰——比如RS

38、A加密算法——提供相當?shù)幕蚋叩燃壍陌踩?。ECC的另一個優(yōu)勢是可以定義群之間的雙線性映射,基于Weil對或是Tate對;雙線性映射已經(jīng)在密碼學中發(fā)現(xiàn)了大量的應用,例如基于身份的加密。</p><p>  2.Hash算法之MD5</p><p>  隨著信息安全技術(shù)的發(fā)展,Hash函數(shù)的重要性日益提高,它在公鑰密碼、數(shù)字簽名、完整性檢驗、身份認證等安全領(lǐng)域中有著廣泛的應用。Hash函數(shù)是將

39、任意長的數(shù)字串m映射成一個較短的定長輸出的數(shù)字串H的函數(shù),以h表承函數(shù)名,h(m) 易于計算,稱H = h(m) 為m的雜湊值。這個H又被稱為輸入m的數(shù)字指紋或消息摘要。h是多對一映射,因此無法從H來求解出原先的m,但可以證明任何給出序列m,是否與m有一模一樣的雜湊值。若雜湊函數(shù)h為單向性函數(shù),則稱函數(shù)h是單向雜湊函數(shù)。適用于信息證明的雜湊函數(shù)全部都是單向雜湊函數(shù)。單向雜湊函數(shù)按照它是否有密鑰要求分為兩種:一種是有密鑰要求的,以h(k,

40、 m) 表示,是密鑰雜湊函數(shù);另一種是無密鑰要求的,是一般雜湊函數(shù)。無密鑰要求的單向雜湊函數(shù),其雜湊值只是輸入字串的函數(shù),所有人均可計算,因而不具備身份驗證功能,只適用于檢測獲得的數(shù)據(jù)的完整性。雜湊函數(shù)在實際中有廣泛應用,在密碼學和信息安全技術(shù)中,它是實現(xiàn)安全數(shù)字簽名和驗證的主要方法,是安全驗證協(xié)議中的主要模塊。為了抵抗各種攻擊,所應用的雜湊函數(shù)需滿足機密,鑒別,完整性,不可否認性等密碼學性質(zhì)[2]。</p><p&

41、gt;  其中消息摘要像現(xiàn)實生活中的指紋一樣可以驗證一個人身份的唯一性一樣,Hash函數(shù)也可用于驗證一個消息的唯一性。正是由于這個特性,Hash函數(shù)在信息安全的認證領(lǐng)域中得到廣泛應用。Hash函數(shù)主要有MDx系列和SHA系列, MDx系列包括MD4,MD5,HAVAL,RIPEMD等;SHA系列包括Sha-1,Sha-256,Sha-384等,這些 Hash 算法體現(xiàn)了目前主要的Hash 函數(shù)設(shè)計技術(shù)。那么這些Hash算法到底有什么用呢

42、?</p><p>  Hash算法在信息安全方面的應用主要體現(xiàn)在以下的3個方面:</p><p><b>  1) 文件校驗 ;</b></p><p><b>  2) 數(shù)字簽名 ;</b></p><p><b>  3) 鑒權(quán)協(xié)議 。</b>

43、;</p><p>  在信息安全領(lǐng)域中應用的Hash算法,還需要滿足其他關(guān)鍵特性:</p><p><b>  第一當然是單向性;</b></p><p><b>  第二是抗沖突性;</b></p><p>  第三是映射分布均勻性和差分分布均勻性。</p><p>  

44、在2004年國際密碼年會上,一種破解Hash函數(shù)的辦法被王小云等中國科研工作者發(fā)表,減少很多攻擊算法的繁雜性,而且有關(guān)于碰撞的實例在PC上運算就可以找到。這個問題對于目前的hash函數(shù)來說是非常嚴峻,因此這也促進了先進的Hash算法的開發(fā)。本文以MD5為例對其在數(shù)字簽名中的應用進行討論。</p><p>  2.1 MD5算法簡介</p><p>  MD5可以說是目前應用最廣泛的Hash

45、算法,而它是以MD4為基礎(chǔ)設(shè)計的。</p><p>  1) MD4 :MD4是一種由麻省理工學院教授Ronald Rivest于1990年發(fā)明的信息摘要算法。它是一種密碼散列函數(shù)實行,可以用來測試信息的完整性。其摘要長度為128位。這個算法后來影響了如MD5、SHA 家族和RIPEMD等。1991年Den Boer和Bosselaers發(fā)表了一篇文章指出MD4的不足之處,至今未能找到基于MD4以上改進

46、的算法有任何可以用來進攻的弱點。2004年8月王小云報告在計算MD4時可能發(fā)生雜湊沖撞[3]。</p><p>  2) MD5:MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現(xiàn)。將數(shù)據(jù)(如漢字)運算為另一固定長度值,是雜湊算法的基礎(chǔ)原理,MD5的前身有M

47、D2、MD3和MD4[4]。它比MD4的進步之處在于:</p><p>  1) 每一個步驟都有一個獨一無二的加法常數(shù);</p><p><b>  2)第四輪被加入;</b></p><p>  3) 對稱性的減少由第二輪中的G函數(shù)從((X ∧ Y) ∨ (X ∧ Z) ∨ (Y ∧ Z)) 變?yōu)?((X ∧ Z) ∨ (Y ∧~Z))來體現(xiàn)

48、;</p><p>  4) 前一步的得出來的結(jié)果都被并入了下一步,以加快"雪崩效應";</p><p>  5) 訪問輸入子分組的順序在第2輪和第3輪中被改變了,減小了形式的相似度;</p><p>  6) 每一輪的循環(huán)左移位移量被近似優(yōu)化了,以期加快"雪崩效應",各輪的循環(huán)左移都不同。雖然MD5比MD4要復雜一點,而且速

49、度也要慢一點,但是在抗差分和抗分析方面表現(xiàn)的更好[5]。</p><p>  2.2 MD5算法原理</p><p>  信息內(nèi)容一開始被拆成若干個512位的分組,其中最后的512位分組是“消息尾+填充字節(jié)(100…0)+64位消息長度”,以保證對于不同長度的消息,該分組不相同。64位消息長度的限制導致了MD5安全的輸入長度必須小于264bit,因為大于64位的長度信息將被忽略。而4個32

50、位寄存器字初始化為A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210,它們將始終參與運算并形成最終的散列結(jié)果。接著各個512位消息分組以16個32位字的形式進入算法的主循環(huán),512位消息分組的個數(shù)據(jù)決定了循環(huán)的次數(shù)。主循環(huán)有4輪,每輪分別用到了非線性函數(shù)F(X, Y, Z) = (X ∧ Y) ∨ (~X ∧ Z) G(X, Y, Z) = (X ∧ Z) ∨ (Y ∧~Z)

51、 H(X, Y, Z) =X ⊕ Y ⊕ Z I(X, Y, Z) = X ⊕ (Y ∨~Z) 這4輪變換是對進入主循環(huán)的512位消息分組的16個32位字分別進行如下操作:將A、B、C、D的副本a、b、c、d中的3個經(jīng)F、G、H、I運算后的結(jié)果與第4個相加,再加上32位字和一個32位字的加法常數(shù),并</p><p>  2.3 MD5算法在數(shù)字簽名中應用</p><

52、;p>  數(shù)字簽名的核心內(nèi)容是保證簽名或者傳輸?shù)男畔]有被人非法竄改過, 從這種意義上來說, 數(shù)字簽名算法只需要提供一種機制來驗證信息的完整性和原始性, 而不需要提供解密機制, 也就是說數(shù)字簽名算法可以是非可逆的。</p><p>  不過MD5算法是不可逆的。由于算法的某些不可逆特征, 在數(shù)字簽名上有較好的安全性。并且,MD5算法的使用不需要支付任何版權(quán)費用。正是由于這些原因使得 MD5 算法成為人們設(shè)計

53、數(shù)字簽名算法時所最先考慮的算法。盡管目前有報道稱王小云教授破解了 MD5 算法, 但是這并不影響其安全性。因為 MD5和 SHA- 1屬于散列算法, 從設(shè)計原理來講, 就有產(chǎn)生碰撞的可能, 王小云教授的方法縮短了找到碰撞的時間, 是一項重要的成果。但她找到的是強無碰撞, 要能找到弱無碰撞,才算真正破解, 才有實際意義。碰撞分為強無碰撞和弱無碰撞。強無碰撞是無法產(chǎn)生有實際意義的原文的, 也就無法篡改和偽造出有意義的明文。通過強無碰撞偽造一

54、個誰也看不懂的東西, 沒有實際意義。而數(shù)字簽名算法的用途不是對明文加密, 讓別人看不懂, 而是通過對信息摘要的比對,防止對原文的篡改[7]。從這種意義上來講, MD5 算法依然是安全的。</p><p>  MD5 算法是 MD4 算法的改進算法。Ron Rivest于1990年提出 MD4 單向散列函數(shù), MD 表示消息摘要(Message Digest) , 對輸入消息, 算法產(chǎn)生 128位散列值。該算法首次

55、公布之后, Bert den Boer 和AntoonBosselaers對算法三輪中的后兩輪進行了成功的密碼分析。在一個不相關(guān)的分析結(jié)果中,Ralph MerKle成功地攻擊了前兩輪。盡管這些攻擊都沒有擴展到整個算法, 但Rivest還是改進了其算法, 結(jié)果就是MD5 算法。MD5 算法是 MD4 的改進算法, 它比 MD4 更復雜, 但設(shè)計思想相似, 輸入的消息可任意長, 輸出結(jié)果也仍為 128位, 特別適用于高速軟件實現(xiàn), 是基于

56、32- 位操作數(shù)的一些簡單的位操作[8]。</p><p><b>  算法描述:</b></p><p>  該算法的輸入是一個字節(jié)串, 每個字節(jié) 8 個bit。算法的執(zhí)行分為以下幾個步驟:</p><p>  第一步, 補位:MD5 算法先對輸入的數(shù)據(jù)進行補位, 使得數(shù)據(jù)的長度( 以 byte 為單位) 對 64 求余的結(jié)果是 56。即數(shù)據(jù)

57、擴展至 LEN= K* 64+ 56 個字節(jié), K 為整數(shù)。補位方法: 補一個 1, 然后補 0 至滿足上述要求。相當于補一個 0x80 的字節(jié), 再補值為 0 的字節(jié)。這一步里總共補充的字節(jié)數(shù)為0~ 63個。</p><p>  第二步, 附加數(shù)據(jù)長度:用一個64 位的整數(shù)表示數(shù)據(jù)的原始長度( 以bit 為單位) , 將這個數(shù)字的 8 個字節(jié)按低位的在前, 高位在后的順序附加在補位后的數(shù)據(jù)后面。這時, 數(shù)據(jù)被填

58、補后的總長度為:LEN = K* 64+ 56+ 8= ( K+ 1) * 64 Bytes。# 注意那個64 位整數(shù)是輸入數(shù)據(jù)的原始長度而不是填充字節(jié)后的長度[9]。</p><p>  第三步, 初始化 MD5參數(shù):有4 個 32 位整數(shù)變量 ( A, B, C, D) 用來計算信息摘要, 每一個變量被初始化成以下以十六進制數(shù)表示的數(shù)值, 低位的字節(jié)在前面。</p><p>  wor

59、d A: 01 23 45 67</p><p>  word B: 89 ab cd ef</p><p>  word C: fe dc ba 98</p><p>  word D: 76 54 32 10</p><p>  第四步, 定義四個MD5 基本的按位操作函數(shù):</p><p>  X, Y, Z 為

60、 32 位整數(shù)。</p><p>  F( X, Y, Z) = ( X and Y) or ( not( X) and Z)</p><p>  G( X, Y, Z) = ( X and Z) or ( Y and not( Z) )</p><p>  HH( a, b, c, d, Mj, s, ti) 表示 a= b+ ( ( a+ ( H ( b, c,

61、 d) +Mj+ ti) <<< s)</p><p>  I( X, Y, Z) = Y xor ( X or not( Z) )</p><p>  再定義四個分別用于四輪變換的函數(shù)。設(shè)Mj表示消息的第 j 個子分組( 從 0 到 15) ,<<< s 表示循環(huán)左移 s 位, 則四種操作為:</p><p>  FF( a,

62、b, c, d, Mj, s, ti) 表示 a= b+ ( ( a + ( F( b, c, d) + Mj+ ti) <<< s)</p><p>  G( X, Y, Z) = ( X and Z) or ( Y and not( Z) )</p><p>  HH( a, b, c, d, Mj, s, ti) 表示 a= b+ ( ( a+ ( H ( b, c

63、, d) +Mj+ ti) <<< s)</p><p>  II( a, b, c, d,M j, s, ti) 表示 a= b+ ( ( a+ ( I( b, c, d) + Mj+ti) <<< s)</p><p>  第五步, 對輸入數(shù)據(jù)作變換:處理數(shù)據(jù),N 是總的字節(jié)數(shù), 以 64 個字節(jié)為一組, 每組作一次循環(huán), 每次循環(huán)進行四輪操作。要變

64、換的 64 個字節(jié)用 16 個 32 位的整數(shù)數(shù)組 M[ 0. . . 15] 表示。而數(shù)組 T [ 1 . . . 64] 表示一組常數(shù), T[ i] 為 4294967296* abs( sin( i) ) 的 32 位整數(shù)部分, i的單位是弧度, i的取值從 1 到 64。MD5 的典型應用是對一段信息( message) 產(chǎn)生信息摘要( message- digest) , 以防止被篡改[10]。比如,45在unix下有很多軟件

65、在下載的時候都有一個文件名相同, 文件擴展名為. md5 的文件, 在這個文件中通常只有一行文本, 大致結(jié)構(gòu)如:</p><p>  MD5 ( tanajiya. tar. gz)= 0ca175b9c0f726a831d895e269332461</p><p>  這就是tanajiya. tar. gz文件的數(shù)字簽名。MD5將整個文件當作一個大文本信息, 通過其不可逆的字符串變換算

66、法, 產(chǎn)生了這個唯一的MD5 信息摘要。如果在以后傳播這個文件的過程中, 無論文件的內(nèi)容發(fā)生了任何形式的改變( 包括人為修改或者下載過程中線路不穩(wěn)定引起的傳輸錯誤等) , 只要你對這個文件重新計算MD5 時就會發(fā)現(xiàn)信息摘要不相同, 由此可以確定你得到的只是一個不正確的文件。如果再有一個第三方的認證機構(gòu), 用 MD5還可以防止文件作者的抵賴,這就是所謂的數(shù)字簽名應用[10]。</p><p>  2.4 MD5算法

67、的安全性</p><p>  從安全的角度講,MD5的輸出為128位,若采用純強力攻擊尋找一個消息具有給定Hash值的計算困難性為2128,用每秒可試驗1000000000個消息的計算機需時1.07×1022年。若采用生日攻擊法,尋找有相同Hash值的兩個消息需要試驗264個消息,用每秒可試驗1000000000個消息的計算機需時585年。在目前的信息系統(tǒng)中,對md5加密方法的利用主要通過在腳本頁面中引

68、用包含md5加密函數(shù)代碼的文件,以asp腳本為例,在需要調(diào)用的頁面中加入,md5.asp為md5加密函數(shù)代碼文件,然后直接調(diào)用函數(shù)MD5(sMessage)即可,md5加密后的值有16位和32位之分,如果在md5加密函數(shù)中使用的是MD5 = LCase(WordToHex(a) &WordToHex(b) &WordToHex(c) &WordToHex(d)),則表示是32位,如果使用的是MD5=LCase(W

69、ordToHex(b) &WordToHex(c)),則表示是16位。</p><p>  3利用RSA的數(shù)字簽名方法和原理</p><p>  RSA加密算法是一種非對稱加密算法。在公鑰加密標準和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonar

70、d Adleman)一起提出的。當時他們?nèi)硕荚诼槭±砉W院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。它是一個基于數(shù)論理論的非對稱密碼體制。</p><p>  對極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之,對一極大整數(shù)做因數(shù)分解愈困難,RSA算法愈可靠。盡管如此,只有一些RSA算法的變種]被證明為其安全性依賴于因數(shù)分解。假如有人找到一種快速因數(shù)分解的算法的話,那么用RSA加密的信息的可靠

71、性就肯定會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。但在分布式計算和量子計算機理論日趨成熟的今天,RSA加密安全性受到了挑戰(zhàn)。RSA是第一個不僅能用于加密也能適用于數(shù)字簽名的算法,同時易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在己經(jīng)二十多年,經(jīng)歷了

72、各種攻擊的考驗,逐漸為人們接受。普遍認為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價,即RSA的重大缺陷是無法從理論上把握它的保密性能如何[11]。</p><p>  RSA的缺點主要有:</p><p>  (l)產(chǎn)生密鑰很麻煩。由于受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。</p><p

73、>  (2)分組長度過大。為了保證密鑰安全性,至少也要600bits以上,使計算機的運算代價很高,尤其是運算速度較慢,較對稱密碼算法慢幾個數(shù)量級,且隨著大數(shù)分解技術(shù)的不斷發(fā)展,這個長度還在相應的增加,這不利于數(shù)據(jù)格式的標準化。</p><p>  3.1 RSA算法的基本原理</p><p>  假設(shè)Bob想給Alice送一個消息m,他知道Alice產(chǎn)生的N和e。他使用起先與Alic

74、e約好的格式將m轉(zhuǎn)換為一個小于N的整數(shù)n,比如他可以將每一個字轉(zhuǎn)換為這個字的Unicode碼,然后將這些數(shù)字連在一起組成一個數(shù)字。假如他的信息非常長的話,他可以將這個信息分為幾段,然后將每一段轉(zhuǎn)換為n。利用公式他可以將n加密為c,計算c并不復雜。Bob算出c后就可以將它傳遞給Alice。Alice得到Bob的消息c后就可以利用她的密鑰d來解碼。她可以用公式來將c轉(zhuǎn)換為n,得到n后,她可以將原來的信息m重新復原。解碼的原理是 錯誤!未找到

75、引用源。以及ed ≡ 1 (mod p-1)和ed ≡ 1 (mod q-1)[13]。</p><p>  3.2 RSA算法加密解密原理</p><p>  因為e*d=1mod (n) 即e*d=k(n)+1所以:Med=Mk(n)+1</p><p>  如果M和n互素,即gcd(M,n)=1那么,根據(jù)歐拉定理(如

76、果gcd(a,n)=1,則aФ(n)≡1 mod n:</p><p>  有: M(n)≡1 mod n</p><p>  所以:Med ≡ Mk(n)+1 ≡M[M(n) ]kmod n</p><p>  ≡M[1]kmod n</p><p><b>  ≡M mod n</b></p><

77、;p>  如果M和n不互素,即gcd(M,n)≠1,即M和n有大于1的公約數(shù)。因為n=pq,而p、q都是素數(shù),不可再分解,所以M一定包含了p或q為因子。又因為M<n,所以M不可能既是p的倍數(shù)又是q的倍數(shù)。不妨設(shè)M是p的倍數(shù),M=cp。由于M不是q的倍數(shù),所以gcd(M,q)=1,則M(q) ≡1 mod q ,所以:</p><p>  [M(q) ] (p)≡1 mod q 即</p>

78、<p>  M(n) ≡1 mod n,即</p><p>  M(n) =1+kqM(n)=1+kq兩邊同乘以M=cp,則:</p><p>  M(n)+1=M+kqcp=M+kcn把kc看作一個常數(shù),則:</p><p>  M(n)+1=M+tn,即</p><p>  M(n)+1≡M mod n,即</p>

79、<p>  M(n) ≡1 mod n因為ed=1 mod (n),所以:</p><p>  Med ≡ Mk(n)+1 ≡M[M(n) ]kmod n</p><p>  ≡ M[1]kmod n</p><p><b>  ≡ M mod n</b></p><p>  綜上,這樣的e,d,n可以實

80、現(xiàn)加密C=Memod n和解密M=Cdmod n</p><p>  3.3 RSA算法在計算上的可行性</p><p>  無論是加密還是解密都需要計算某個整數(shù)的模n整數(shù)次冪,即C=Me mod n、M=Cd mod n。但不需要先求出整數(shù)的冪再對n取模,而可利用模運算的性質(zhì):(a mod n) * (b mod n)= (a*b) mod n</p><p>

81、;  對于Me mod n,可先求出M1 mod n,M2 mod n,M4 mod n……,再求Me mod n</p><p>  由于n是公開的,為了避免攻擊者用窮舉法求出p和q(根據(jù)n=pq),應該從足夠大的集合中選取p和q,即p和q必須是大素數(shù)。</p><p>  目前還沒有有效的方法可以產(chǎn)生任意大素數(shù),通常使用的方法是:隨機挑選一個期望大小的奇數(shù),然后測試它是否是素數(shù),若不是

82、,則挑選下一個隨機數(shù)直至檢測到素數(shù)為止。</p><p><b>  例如:</b></p><p>  選p=7,q=17。</p><p>  求n=p×q=119,φ(n)=(p-1)(q-1)=96。</p><p>  取e=5,滿足1<e<φ(n),且gcd(φ(n),e)=1。確定滿足

83、d*e=1 mod 96且小于96的d,因為77×5=385=4×96+1,所以d為77。</p><p>  因此公開鑰為{5,119},秘密鑰為{77,119}。設(shè)明文m=19,則由加密過程得密文為</p><p>  C=195mod 119≡2476099 mod 119=66</p><p>  解密為6677mod 119=19<

84、;/p><p>  3.4 RSA算法的安全性問題</p><p>  RSA算法的安全性就是基于大整數(shù)的因子分解困難之上的,雖然到目前其還是安全的,但是隨著人類計算能力的不斷提高,RSA的安全性還是有待考證。由于分解算法的進一步改進。分解算法過去都采用二次篩法,如對RSA-129的分解。而對RSA-130的分解則采用了一個新算法,稱為推廣的數(shù)域篩法,該算法在分解RSA-130時所做的計算僅比

85、分解SA-129多10%。將來也可能還有更好的分解算法,因此在使用RSA算法時對其密鑰的選取要特別注意其大小。估計在未來一段比較長的時期,密鑰長度介于1024比特至2048比特之間的RSA是安全的。但是它本身卻存在著一些缺陷,綜合來說,RSA算法的不足或者缺陷主要包括:</p><p> ?。ㄒ唬㏑SA算法所要求的n,p,q都要求為很大的整數(shù)或素數(shù),實現(xiàn)時采用的是重復平方求模和相乘后求模的迭代方法來實現(xiàn),此方法在

86、進行數(shù)據(jù)加密時耗費時間過長?! 。ǘ㏑SA算法中所用的p,q如果太接近的話,密碼分析者可以通過計算,然后在附近搜索p,q來分解n?! 。ㄈτ谝粋€明文消息m(0≤m<n),如果將其加密成m自身,稱m為RSA的不動點,也成m為未隱匿的消息。對RSA算法來講其不動點的個數(shù)為(1+gcd((e-1),(p+1)))*(1+gcd((e-1),(q-1))。由于e-1,p-1,q-1都是偶數(shù),所以RSA不動點的個數(shù)至少為9個?! 。ㄋ?/p>

87、)同態(tài)性。由RSA算法知對于一切x1,x2∈Zn,有E*k(x1,x2)≡E*k(x1)E*k(modn)是RSA算法的一個缺陷,因為攻擊者知道C1,C2的明文,就可以知道C1C2(modn)對應明文m1m2(modn)[14]?! 』谝陨系娜毕?,攻擊者想來對RSA算法進行攻擊的一系列攻擊方法,其中最常用的攻擊方法有因子分解攻擊、選擇密文攻擊、同模攻擊、小指數(shù)/指數(shù)攻擊、迭代循環(huán)攻擊、定時攻擊等。為了防止可以很容易地分解n,RS&l

88、t;/p><p>  1.P和q的長度應僅相差幾位。對于1024位的密鑰而言,p和q都應在1075到10100之間;</p><p>  2.(p-1)和(q-1)都應有一個大的素因子;</p><p>  3.Gcd(p-1,q-1)應該較小。</p><p>  雖然目前是RSA只要密鑰長度適合還是安全的,但是我們還是要注意目前存在的RSA攻

89、擊模式:</p><p>  暴力破解:通過選取所有可能的私鑰來達到目的;</p><p>  技巧類:通過使用數(shù)學技巧,分解n來達到目的;</p><p>  時間攻擊:通過查看算法運行的時間來達到目的。</p><p><b>  3.4.1暴力破解</b></p><p>  對于第一種暴力

90、破解,只要密鑰選取足夠的長度,窮舉法是無能為力的。雖然對于算法的執(zhí)行速度有所影響,但相對于數(shù)據(jù)的安全性,還是值得犧牲的。</p><p><b>  3.4.2因子分解</b></p><p>  目前大部分進行RSA密碼分析的討論都熱忠于對n進行素因子分解。易知,若n=p*q被因子分解,則可以得到p(n)=(p-1)*(q-1)的值,從而利用e*d≡l(mod(Φ(

91、n)))解出d。較早出現(xiàn)的因子分解攻擊方法是試除法,即通過嘗試小于n的所有素數(shù),來找到因子。這種辦法理論上是有效的,但對于大數(shù)n,由于要花費更多時間使其變得不可能完成。  由于因子分解的時間復雜性并未降到多項式時間,所以仍是一個計算上的難題。但是隨著計算速度的提高,分解的速度會越來越快.因此我們通常把因子分解的性能作為評價RSA安全性的基準。</p><p>  對于比較大的密鑰的安全性的攻擊威脅主要來自兩個方

92、面:計算能力的增長和因子分解算法的不斷改進。</p><p>  在計算機出現(xiàn)之前,對擁有比較大的素因子的數(shù)進行因子分解是極其不容易的,不過計算機出現(xiàn)之后,特別是基于網(wǎng)絡(luò)的分布式計算機,略微降低了因子分解的困難程度和時間長度。例如,Mirtin Gardner在1977年“Scientific American”的專欄文章中介紹了RSA碼。為了顯示這一技術(shù)的威力,RSA公司的研究人員用一個129位的數(shù)N和一個4位

93、數(shù)e 對這個關(guān)于禿鷹的消息作了編碼。Gardner刊登了那個密文,同時給出了N和e。RSA公司還懸賞100美元,獎給第一個破譯這密碼的人。</p><p>  96869 61375 46220 61477 14092 22543 55882 90575 99911 24574 31987 46951 20930 81629 82251 45708 35693 14766 22883 98962 80133 91

94、990 55182 99451 57815 154</p><p>  一批松散組成的因子分解迷,大約有六百多人,分布在二十幾個國家。他們經(jīng)過八個月的努力最后于1994年4月為RSA-129找到了64位數(shù)和65位數(shù)兩個素數(shù)因子。</p><p>  11438 16257 57888 86766 92357 79976 14661 20102 18296 72124 23625 62561

95、 84293 57069 35245 73389 78305 97123 56395 87050 58989 07514 75992 90026 87954 3541 = 34905 29510 84765 09491 47849 61990 38981 33417 76463 84933 87843 99082 0577 * 32769 13299 32667 09549 96198 81908 34461 41317 76429 6

96、7992 94253 97982 88533 </p><p>  “The magic words are squeamish ossifrage” </p><p>  目前進行因子分解,一般采用二次篩或廣義數(shù)域篩等算法。其中廣義數(shù)域篩是一種較新的算法,例如其對于比十進制129位更大的整數(shù)只使用10%的計算量就可以進行分解。還有一種稱為特殊數(shù)域篩的方法,對分解某種特殊形式的整數(shù),比廣義

97、數(shù)域篩更加快速有效。隨著因子分解新方法的產(chǎn)生,目前使用的64位或128位密鑰已經(jīng)不安全了,有的學者建議使用1O24位或者更長的模n。</p><p>  3.4.3選擇密文攻擊</p><p>  選擇密文攻擊是通過騙取掌握私鑰者的簽名實現(xiàn)攻擊,RSA在選擇密文攻擊面前很脆弱。一般攻擊者是將某一信息作一下偽裝 (Blind),讓擁有私鑰的實體簽署。然后,經(jīng)過計算就可得到它所想要的信息。假設(shè)

98、攻擊者截獲了密文y,想得到明文x,可以采用如下方法:選擇一個隨機數(shù)r,r<n,然后使用收件人的公鑰加密r,假設(shè)得到的中間結(jié)果為t,顯然t=re(modn);然后將中間結(jié)果t與截獲的密文相乘,假設(shè)得到O,O=t*Y(modn),想辦法騙取收件人用私鑰d對O進行簽名,假設(shè)簽名后的結(jié)果為u,u=O(modn),得到u后,攻擊者計算值f=r-1(modn),結(jié)合u就可以計算出明文X。</p><p>  前面已經(jīng)提

99、到,這個問題來自于公鑰密碼系統(tǒng)中最有用的特征——每個人都能使用公鑰,光從算法上無法解決這一難題,主要方法有兩條:一條是采用好的公鑰協(xié)議,保證工作過程中一個個體不對其他個體任意產(chǎn)生的信息解密,不對自己無法知曉的信息簽名;另一條是不對無法確認的個體送來的隨機文檔簽名,簽名時優(yōu)先使用One- WayHashFunction對文檔作HASH處理,或同時使用不同的簽名算法。</p><p><b>  3.4.4

100、共模攻擊</b></p><p>  共模攻擊是由于在RSA體制的實現(xiàn)過程中,不同用戶使用相同的模n、不同的指數(shù)值e和d所引起的。由于出現(xiàn)這種情況可能導致下列三個主要問題,所以會使得系統(tǒng)變得不再安全。</p><p>  1.若相同的明文分送給兩個不同的使用者,且此二使用者的公開密鑰為互素,則此系統(tǒng)并不安全。</p><p>  2.擁有一對的加/解密密

101、鑰就能因子分解n。</p><p>  3.擁有一對加/解密密鑰,能在不必分解n的情況下,求出另一對加解密密鑰。</p><p>  若系統(tǒng)中共同擁有一個模數(shù)n,僅是不同的個體擁有不同的e和d,則系統(tǒng)將是不安全的。普遍情況是同一內(nèi)容用不同的公鑰加密,這些公鑰共模而且互質(zhì),那么該內(nèi)容無需私鑰就可得到恢復。總之,如果知道給定模數(shù)的一對e和d,那么第一是有利于攻擊者計算出其它成對的e’和d’,而

102、無需分解模數(shù),第二是有利于攻擊者分解模數(shù)。解決的方法只有一個,那就是不需要分享模數(shù)n。</p><p>  3.4.5小指數(shù)攻擊</p><p>  從計算速度角度考慮,為了提高RSA的運算速度,公鑰指數(shù)e越小加密速度越快,有人建議使公鑰e取較小的值,這樣會使加密變得易于實現(xiàn),速度提高。可是,當明文也很小時就會出現(xiàn)問題。比如我們?nèi)=3,明文x小于N 的三次方,密文y= 錯誤!未找到引用源

103、。 (modN)= 錯誤!未找到引用源。 (modN)= 錯誤!未找到引用源。,這樣直接對密文y開三次方就會得到明文x,對付辦法就是e和d都取較大的值。</p><p><b>  3.4.6定時攻擊</b></p><p>  定時攻擊主要針對RSA核心運算是非常耗時間的模乘,只要能精確監(jiān)視RSA的解密過程,獲得解密時間,就可以估算出私有密鑰d。模指數(shù)運算是通過一位

104、一位來計算的,每次迭代執(zhí)行一次模乘,并且如果當前位是l,則還需要進行一次模乘.對于有些密碼,后一次模乘執(zhí)行速度會極慢,攻擊者就可以在觀測數(shù)據(jù)解密時,根據(jù)執(zhí)行時間判斷當前位是1還是0。</p><p>  3.4.7 RSA安全性防范</p><p>  針對RSA算法的固有缺陷和對RSA算法的常見攻擊方法,我們可以采取以下幾種措施對其進行防范:</p><p>  

105、(一)為了保證安全性,在選取p、q時使用較大的素數(shù),因式分解理論的研究現(xiàn)狀表明:使用RSA密鑰至少需要1024比特,才能有效的保證攻擊者無法在短時間破解得到因子。</p><p> ?。ǘ┩ㄟ^設(shè)計新的素數(shù)生成方案,保證為每一用戶生成不同的大素數(shù),從而消除用戶共模,避免系統(tǒng)遭受共模攻擊?! 。ㄈ┕€e不可選得過小,使攻擊者很難通過開方得到密文。 ?。ㄋ模┩ㄟ^常數(shù)取冪時間,隨即延時,在加密前對數(shù)據(jù)做盲化處理盲

106、化等方法對定時攻擊進行防范[15]?! SA算法是第一個能同時用于加密和數(shù)字簽名的算法,也是被研究得最為廣泛的公鑰算法,從1978年提出到現(xiàn)在的三十多年里經(jīng)歷了各種攻擊的考驗,被認為是目前最優(yōu)秀的公鑰方案之一。但是, RSA的安全性還需要不斷的研究和改進,這就使得我們在應用時既要注意使用安全和環(huán)境安全,發(fā)揮RSA自身的優(yōu)勢,同時也要重視多種密碼體制并用,不斷研究和發(fā)現(xiàn)新的密碼體制,來滿足人們的通信安全保密需求。</p>

107、<p>  目前,SET(SecureElectronic Transaction)協(xié)議中要求CA采用2048比特長的密鑰,其他實體使用1024比特的密鑰。由于進行的都是大數(shù)計算,使得RSA的速度相比同類計算要慢,無論是軟件還是硬件實現(xiàn)。速度一直是RSA的缺陷。</p><p><b>  4橢圓曲線簽名算法</b></p><p>  橢圓曲線密碼學(E

108、lliptic curve cryptography,縮寫為ECC)是基于橢圓曲線數(shù)學的一種公鑰密碼的方法。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。ECC的主要優(yōu)勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA加密算法——提供相當?shù)幕蚋叩燃壍陌踩?。ECC的另一個優(yōu)勢是可以定義群之間的雙線性映射,基于Weil對或是Tate對;雙線性映射已經(jīng)在密碼學中發(fā)現(xiàn)了大量

109、的應用,例如基于身份的加密。不過一個缺點是加密和解密操作的實現(xiàn)比其他機制花費的時間長[16]。</p><p>  在數(shù)學上,橢圓曲線為一代數(shù)曲線,被下列式子所定義: 錯誤!未找到引用源。其是無奇點的;亦即,其圖形沒有尖點或自相交。若 錯誤!未找到引用源。,其中P為任一沒有重根的三次或四次多項式,然后可得到一虧格1的無奇點平面曲線,其通常亦被稱為橢圓曲線。更一般化地,虧格為1的代數(shù)曲線,如兩個三維二次曲面相交,即

溫馨提示

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

評論

0/150

提交評論