版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本 科 生 畢 業(yè) 論 文(設(shè) 計(jì))</p><p> 題 目:數(shù)據(jù)加密技術(shù)的研究綜述(模板)</p><p> 學(xué)習(xí)中心: </p><p> 層 次: ??破瘘c(diǎn)本科 </p><p> 專 業(yè): 網(wǎng)絡(luò)工程 &l
2、t;/p><p> 年 級(jí): 2009年秋季 </p><p> 學(xué) 號(hào): </p><p> 學(xué) 生: XXXX </p><p> 指導(dǎo)教師: XXX </p><p> 完成日期
3、: 2013年 03 月 18 日</p><p><b> 內(nèi)容摘要</b></p><p> 隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,數(shù)據(jù)加密技術(shù)將成為信息網(wǎng)絡(luò)安全技術(shù)中的核心技術(shù),本文介紹了網(wǎng)絡(luò)與信息安全技術(shù)體系結(jié)構(gòu),對(duì)目前信息加密技術(shù)進(jìn)行了分析,闡述了各類加密算法的優(yōu)缺點(diǎn),同時(shí)對(duì)加密技術(shù)的發(fā)展趨勢(shì)進(jìn)行了描述從最初的保密通信發(fā)展到目前的網(wǎng)絡(luò)信息加密。數(shù)據(jù)加密技術(shù)
4、是指將一個(gè)信息經(jīng)過加密鑰匙及加密函數(shù)轉(zhuǎn)換,變成無意義的密文,而接收方則將此密文經(jīng)過解密函數(shù)、解密鑰匙還原成明文。在競爭激烈的信息時(shí)代,客觀上需要一種強(qiáng)有力的安全措施來保護(hù)機(jī)密數(shù)據(jù)不被竊取或篡改,因此數(shù)據(jù)加密技術(shù)就應(yīng)運(yùn)而生。</p><p> 關(guān)鍵詞:信息安全 ;數(shù)據(jù)加密;加密鑰匙;解密鑰匙;加密算法 </p><p><b> 目 錄</b></p&
5、gt;<p><b> 內(nèi)容摘要I</b></p><p><b> 引 言1</b></p><p><b> 1 概述2</b></p><p><b> 1.1 背景2</b></p><p> 1.2 本文
6、的主要內(nèi)容及組織結(jié)構(gòu)3</p><p> 2 數(shù)據(jù)加密和加密系統(tǒng)4</p><p> 2.1 數(shù)據(jù)加密技術(shù)原理4</p><p> 2.2 數(shù)據(jù)加密技術(shù)的分類及其應(yīng)用4</p><p> 2.3 加密系統(tǒng)體系5</p><p> 2.3.1 加密系統(tǒng)的分類5</p><
7、;p> 2.3.2 加密體制存在的問題6</p><p> 2.4 對(duì)稱加密、非對(duì)稱加密和數(shù)字簽名7</p><p> 3 DES加密標(biāo)準(zhǔn)9</p><p> 3.1 DES介紹和DES算法框架9</p><p> 3.2 DES實(shí)例分析9</p><p> 3.3 DES的安全
8、性和應(yīng)用誤區(qū)12</p><p> 3.4 DES的拓展12</p><p> 3.4.1 3DES12</p><p> 3.4.2 AES算法13</p><p> 4 公開加密算法RSA14</p><p> 4.1 RSA的簡介14</p><p> 4
9、.2 RSA算法的結(jié)構(gòu)14</p><p> 4.3 RSA算法的案例14</p><p> 4.4 RSA探索22</p><p> 5 其他加密技術(shù)25</p><p> 5.1 MD525</p><p> 5.2 可變長密鑰塊Blowfish加密技術(shù)26</p>
10、<p> 5.3 橢圓曲線密碼體制27</p><p> 5.4 偽隨機(jī)數(shù)加密技術(shù)28</p><p><b> 6 結(jié)論32</b></p><p><b> 參考文獻(xiàn)33</b></p><p> 附錄一 偽隨機(jī)數(shù)加密法的加密和解密程序33</p>
11、<p><b> 引 言</b></p><p> 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)安全也就成為當(dāng)今網(wǎng)絡(luò)社會(huì)的焦點(diǎn)中的焦點(diǎn),幾乎沒有人不在談?wù)摼W(wǎng)絡(luò)上的安全問題,病毒、黑客程序、郵件炸彈、遠(yuǎn)程偵聽等這一切都無不讓人膽戰(zhàn)心驚。病毒、黑客的猖獗使身處今日網(wǎng)絡(luò)社會(huì)的人們感覺到談網(wǎng)色變,無所適從。 </p><p> 用戶必需清楚地認(rèn)識(shí)到,這一切一切的安全問題不
12、可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因?yàn)槿魏畏床《境绦蚨贾荒茉谛虏《景l(fā)現(xiàn)之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所以用戶不能有等網(wǎng)絡(luò)安全了再上網(wǎng)的念頭,因?yàn)榛蛟S網(wǎng)絡(luò)不能有這么一日,就象“矛”與“盾”,網(wǎng)絡(luò)與病毒、黑客永遠(yuǎn)是一對(duì)共存體。</p><p> 現(xiàn)代的電腦加密技術(shù)就是適應(yīng)了網(wǎng)絡(luò)安全的需要而應(yīng)運(yùn)產(chǎn)生的,它為用戶
13、進(jìn)行一般的電子商務(wù)活動(dòng)提供了安全保障,如在網(wǎng)絡(luò)中進(jìn)行文件傳輸、電子郵件往來和進(jìn)行合同文本的簽署等。其實(shí)加密技術(shù)也不是什么新生事物,只不過應(yīng)用在當(dāng)今電子商務(wù)、電腦網(wǎng)絡(luò)中還是近幾年的歷史。</p><p> 加密作為保障數(shù)據(jù)安全的一種方式,它不是現(xiàn)在才有的,它產(chǎn)生的歷史相當(dāng)久遠(yuǎn),它是起源于要追溯于公元前2000年(幾個(gè)世紀(jì)了),雖然它不是現(xiàn)在所講的加密技術(shù)(甚至不叫加密),但作為一種加密的概念,確實(shí)早在幾個(gè)世紀(jì)前就
14、誕生了。當(dāng)時(shí)埃及人是最先使用特別的象形文字作為信息編碼的,隨著時(shí)間推移,巴比倫、美索不達(dá)米亞和希臘文明都開始使用一些方法來保護(hù)他們的書面信息。</p><p> 近期加密技術(shù)主要應(yīng)用于軍事領(lǐng)域,如美國獨(dú)立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機(jī)器是German Enigma機(jī),在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于Alan Turing和Ultra計(jì)劃以及其他人的努力,終于對(duì)德國人的密
15、碼進(jìn)行了破解。當(dāng)初,計(jì)算機(jī)的研究就是為了破解德國人的密碼,人們并沒有想到計(jì)算機(jī)給今天帶來的信息革命。隨著計(jì)算機(jī)的發(fā)展,運(yùn)算能力的增強(qiáng),過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數(shù)據(jù)加密方式,如利用ROSA算法產(chǎn)生的私鑰和公鑰就是在這個(gè)基礎(chǔ)上產(chǎn)生的。</p><p> 本文主介紹究各種加密算法以及各類加密算法的優(yōu)缺點(diǎn),以及各類加密技術(shù)在軍事、科學(xué)等多方面的應(yīng)用。</p><p&g
16、t;<b> 1 概述</b></p><p><b> 1.1 背景 </b></p><p> 當(dāng)今網(wǎng)絡(luò)社會(huì)選擇加密已是我們必然選擇,一方面是因?yàn)樵诨ヂ?lián)網(wǎng)上進(jìn)行文件傳輸、電子郵件商務(wù)往來存在許多不安全因素,特別是對(duì)于一些大公司和一些機(jī)密文件在網(wǎng)絡(luò)上傳輸。而且這種不安全性是互聯(lián)網(wǎng)存在基礎(chǔ)——TCP/IP協(xié)議所固有的,包括一些基于TCP
17、/IP的服務(wù);另一方面,互聯(lián)網(wǎng)給眾多的商家?guī)砹藷o限的商機(jī),互聯(lián)網(wǎng)把全世界連在了一起,走向互聯(lián)網(wǎng)就意味著走向了世界,這對(duì)于無數(shù)商家無疑是夢(mèng)寐以求的好事,特別是對(duì)于中小企業(yè) 。為了解決這一對(duì)矛盾,選擇數(shù)據(jù)加密以及基于加密技術(shù)的數(shù)字簽名已成為必然選擇。</p><p> 隨著信息技術(shù)的發(fā)展與應(yīng)用,信息安全的內(nèi)涵在不斷的延伸,從最初的信息保密性發(fā)展到信息的完整性、可用性、可控性和不可否認(rèn)性,進(jìn)而又發(fā)展為"攻
18、(攻擊)、防(防范)、測(檢測)、控(控制)、管(管理)、評(píng)(評(píng)估)"等多方面的基礎(chǔ)理論和實(shí)施技術(shù)。 就理論研究而言,一些關(guān)鍵的基礎(chǔ)理論需要保密,因?yàn)閺幕A(chǔ)理論研究到實(shí)際應(yīng)用的距離很短。現(xiàn)代信息系統(tǒng)中的信息安全其核心問題是密碼理論及其應(yīng)用,其基礎(chǔ)是可信信息系統(tǒng)的構(gòu)作與評(píng)估??偟膩碚f,目前在信息安全領(lǐng)域人們所關(guān)注的焦點(diǎn)主要有以下幾方面: 1) 密碼理論與技術(shù); 2) 安全協(xié)議理論
19、與技術(shù); 3) 安全體系結(jié)構(gòu)理論與技術(shù); 4) 信息對(duì)抗理論與技術(shù); 5) 網(wǎng)絡(luò)安全與安全產(chǎn)品。 自從1976年公鑰密碼的思想提出以來,國際上已經(jīng)提出了許多種公鑰密碼體制,但比較流行的主要有兩類:一類是基于大整數(shù)因子分解問題的,其中最典型的代表是RSA;另一類是基于離散對(duì)數(shù)問題的,比如ElGamal公鑰密碼和影響比較大的橢圓曲線公鑰密碼。由于分解大整數(shù)的能力日益增強(qiáng),所
20、以對(duì)RSA的安全帶來了一定的威脅。目前768比特模長的RSA已不安全。一般建議使用1024比特</p><p> 1.2 本文的主要內(nèi)容及組織結(jié)構(gòu)</p><p> 本文研究的內(nèi)容為幾種數(shù)據(jù)加密技術(shù)的原理及應(yīng)用。</p><p> 第一章,主要是介紹數(shù)據(jù)加密技術(shù)的背景。</p><p> 第二章,主要是介紹數(shù)據(jù)加密技術(shù)的原理、數(shù)據(jù)加
21、密技術(shù)分類體系及各種加密技術(shù)的優(yōu)缺點(diǎn)。</p><p> 第三章,主要是介紹DES加密標(biāo)準(zhǔn)算法及DES標(biāo)準(zhǔn)算法案例。</p><p> 第四章,主要是介紹RSA加密算法標(biāo)準(zhǔn)、結(jié)構(gòu)以及RSA加密算法案例和探索。</p><p> 第五章,主要是介紹其他幾種加密技術(shù)的原理及應(yīng)用。</p><p> 2 數(shù)據(jù)加密和加密系統(tǒng)</p&g
22、t;<p> 本部分主要介紹數(shù)據(jù)加密技術(shù)的基本原理,并介紹數(shù)據(jù)加密技術(shù)的分類,以及它們分別應(yīng)用于什么場合,另外介紹一下加密系統(tǒng)的體系結(jié)構(gòu)和原理,具體介紹主要的加密技術(shù)如對(duì)稱加密、非對(duì)稱加密以及數(shù)字簽名等。</p><p> 2.1 數(shù)據(jù)加密技術(shù)原理</p><p> 數(shù)據(jù)加密的基本過程就是對(duì)原來為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“
23、密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑達(dá)到保護(hù)數(shù)據(jù)不被人非法竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。</p><p> 當(dāng)信息發(fā)送者需要發(fā)送信息時(shí),首先生成一個(gè)對(duì)稱密鑰,用該對(duì)稱密鑰加密要發(fā)送的報(bào)文;信息發(fā)送者用信息接收者的公鑰加密上述對(duì)稱密鑰;信息發(fā)送者將第一步和第二步的結(jié)果結(jié)合在一起傳給信息接收者,稱為數(shù)字信封;信息接收者使用自己的私鑰解
24、密被加密的對(duì)稱密鑰,再用此對(duì)稱密鑰解密被發(fā)送方加密的密文,得到真正的原文[1]。 </p><p> 2.2 數(shù)據(jù)加密技術(shù)的分類及其應(yīng)用</p><p> 加密技術(shù)通常分為兩大類:“對(duì)稱式”和“非對(duì)稱式”。</p><p> 對(duì)稱式加密就是加密和解密使用同一個(gè)密鑰,通常稱之為“Session Key ”這種加密技術(shù)目前被廣泛采用,如美國政府所采用的DES加密
25、標(biāo)準(zhǔn)就是一種典型的“對(duì)稱式”加密法,它的Session Key長度為56Bits。</p><p> 非對(duì)稱式加密就是加密和解密所使用的不是同一個(gè)密鑰,通常有兩個(gè)密鑰,稱為“公鑰”和“私鑰”,它們兩個(gè)必需配對(duì)使用,否則不能打開加密文件。這里的“公鑰”是指可以對(duì)外公布的,“私鑰”則不能,只能由持有人一個(gè)人知道。它的優(yōu)越性就在這里,因?yàn)閷?duì)稱式的加密方法如果是在網(wǎng)絡(luò)上傳輸加密文件就很難把密鑰告訴對(duì)方,不管用什么方法都
26、有可能被別竊聽到。而非對(duì)稱式的加密方法有兩個(gè)密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時(shí)只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。</p><p><b> ■SSL加密技術(shù)</b></p><p> SSL3.0 用一種電子證書(electric certificate)來實(shí)行身份進(jìn)行驗(yàn)證后,雙方就可以用保密密鑰進(jìn)行安
27、全的會(huì)話了。它同時(shí)使用“對(duì)稱”和“非對(duì)稱”加密方法,在客戶與電子商務(wù)的服務(wù)器進(jìn)行溝通的過程中,客戶會(huì)產(chǎn)生一個(gè)Session Key,然后客戶用服務(wù)器端的公鑰將Session Key 進(jìn)行加密,再傳給服務(wù)器端,在雙方都知道Session Key 后,傳輸?shù)臄?shù)據(jù)都是以Session Key 進(jìn)行加密與解密的,但服務(wù)器端發(fā)給用戶的公鑰必需先向有關(guān)發(fā)證機(jī)關(guān)申請(qǐng),以得到公證。</p><p><b> ■VPN
28、加密</b></p><p> 將具有加密/解密功能的路由器使人們通過互聯(lián)網(wǎng)連接專用局域網(wǎng),這就是通常所說的虛擬專用網(wǎng)(VPN)。當(dāng)數(shù)據(jù)離開發(fā)送者所在的局域網(wǎng)時(shí),該數(shù)據(jù)首先被用戶端連接到互聯(lián)網(wǎng)上的路由器進(jìn)行硬件加密,數(shù)據(jù)在互聯(lián)網(wǎng)上是以加密的形式傳送的,當(dāng)達(dá)到目的LAN 的路由器時(shí),該路由器就會(huì)對(duì)數(shù)據(jù)進(jìn)行解密,這樣目的LAN 中的用戶就可以看到真正的信息了[2]。</p><p&g
29、t; 數(shù)據(jù)加密在銀行系統(tǒng)中的應(yīng)用</p><p> 數(shù)據(jù)加密就是按照確定的密碼算法把敏感的明文數(shù)據(jù)變換成難以識(shí)別的密文數(shù)據(jù),通過使用不同的密鑰,可用同一加密算法把同一明文加密成不同的密文。當(dāng)需要時(shí),可使用密鑰把密文數(shù)據(jù)還原成明文數(shù)據(jù),稱為解密。這樣就可以實(shí)現(xiàn)數(shù)據(jù)的保密性。眾所周知,各種相關(guān) 網(wǎng)絡(luò) 安全的黑客和病毒都是依賴網(wǎng)絡(luò)平臺(tái)進(jìn)行的,而如果在網(wǎng)絡(luò)平臺(tái)上就能切斷黑客和病毒的傳播途徑,那么就能更好地保證安全。眾
30、多銀行如農(nóng)業(yè)銀行、建設(shè)銀行、工商銀行等都采取了數(shù)據(jù)加密技術(shù)與網(wǎng)絡(luò)交換設(shè)備聯(lián)動(dòng)。即是指交換機(jī)或防火墻在運(yùn)行的過程中,將各種數(shù)據(jù)流的信息上報(bào)給安全設(shè)備,數(shù)字加密系統(tǒng)可根據(jù)上報(bào)信息和數(shù)據(jù)流內(nèi)容進(jìn)行檢測,在發(fā)現(xiàn)網(wǎng)絡(luò)安全事件的時(shí)候,進(jìn)行有針對(duì)性的動(dòng)作,并將這些對(duì)安全事件反應(yīng)的動(dòng)作發(fā)送到交換機(jī)或防火墻上,由交換機(jī)或防火墻來實(shí)現(xiàn)精確端口的關(guān)閉和斷開,這樣就可以使數(shù)據(jù)庫得到及時(shí)充分有效的保護(hù)。由于金融系統(tǒng) “網(wǎng)上銀行”的興起,銀行系統(tǒng)的安全問題顯得越來
31、越重要,安全隱患已成為迫在眉睫的首要問題。為了解決銀行的安全隱患,因此各種數(shù)據(jù)加密在銀行系統(tǒng)中起著越來越重要的作用。</p><p><b> 2.3加密系統(tǒng)體系</b></p><p> 2.3.1加密系統(tǒng)的分類■對(duì)稱加密算法 對(duì)稱加密算法是應(yīng)用較早的加密算法,技術(shù)成熟。在對(duì)稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后
32、,使其變成復(fù)雜的加密密文發(fā)送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對(duì)密文進(jìn)行解密,才能使其恢復(fù)成可讀明文。在對(duì)稱加密算法中,使用的密鑰只有一個(gè),發(fā)收信雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,這就要求解密方事先必須知道加密密鑰。對(duì)稱加密算法的特點(diǎn)是算法公開、計(jì)算量小、加密速度快、加密效率高。應(yīng)用于:電子商務(wù)?!霾粚?duì)稱加密算法 不對(duì)稱加密算法使用兩把完全不同但又是完全匹配的一對(duì)鑰匙—公鑰和
33、私鑰。在使用不對(duì)稱加密算法加密文件時(shí),只有使用匹配的一對(duì)公鑰和私鑰,才能完成對(duì)明文的加密和解密過程。加密明文時(shí)采用公鑰加密,解密密文時(shí)使用私鑰才能完成,而且發(fā)信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對(duì)稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到</p><p> 2.3.2
34、 加密體制存在的問題■對(duì)稱加密算法 不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對(duì)用戶每次使用對(duì)稱加密算法時(shí),都需要使用其他人不知道的惟一鑰匙,這會(huì)使得發(fā)收信雙方所擁有的鑰匙數(shù)量成幾何級(jí)數(shù)增長,密鑰管理成為用戶的負(fù)擔(dān)。對(duì)稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。在計(jì)算機(jī)專網(wǎng)系統(tǒng)中廣泛使用的對(duì)稱加密算法有DES、IDEA和AES?!霾粚?duì)稱加密算法 不對(duì)稱加密算法
35、使用兩把完全不同但又是完全匹配的一對(duì)鑰匙—公鑰和私鑰。在使用不對(duì)稱加密算法加密文件時(shí),只有使用匹配的一對(duì)公鑰和私鑰,才能完成對(duì)明文的加密和解密過程。加密明文時(shí)采用公鑰加密,解密密文時(shí)使用私鑰才能完成,而且發(fā)信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對(duì)稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到加密密文
36、后,使用自己的私鑰才能解密密文。顯然,采用不對(duì)稱加密算法,收發(fā)信雙方在通信之前,收信方必須將自己早已隨機(jī)生成的</p><p> 2.4 對(duì)稱加密、非對(duì)稱加密和數(shù)字簽名</p><p> 對(duì)稱加密算法使用單個(gè)私鑰來加密和解密數(shù)據(jù)。由于具有密鑰的任意一方都可以使用該密鑰解密數(shù)據(jù),因此必須保護(hù)密鑰不被未經(jīng)授權(quán)的代理得到。 </p><p> 非對(duì)稱加密使用一個(gè)必
37、須對(duì)未經(jīng)授權(quán)的用戶保密的私鑰和一個(gè)可以對(duì)任何人公開的公鑰。公鑰和私鑰都在數(shù)學(xué)上相關(guān)聯(lián);用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰簽名的數(shù)據(jù)只能用公鑰驗(yàn)證。公鑰可以提供給任何人;公鑰用于對(duì)要發(fā)送到私鑰持有者的數(shù)據(jù)進(jìn)行加密。兩個(gè)密鑰對(duì)于通信會(huì)話都是唯一的。</p><p> 數(shù)字簽名(Digital Signature)是公開密鑰加密技術(shù)的一種應(yīng)用, 是指用發(fā)送方的私有密鑰加密報(bào)文摘要, 然后將其與原始的信息附加在一
38、起, 合稱為數(shù)字簽名。其使用方式是:報(bào)文的發(fā)送方從報(bào)文文本中生成一個(gè)128位或160位的單向散列值(或報(bào)文摘要),并用自己的私有的密鑰對(duì)這個(gè)散列值進(jìn)行加密,形成發(fā)送方的數(shù)字簽名;然后將這個(gè)數(shù)字簽名作為報(bào)文的附件和報(bào)文一起發(fā)送給報(bào)文的接收方;報(bào)文的接收方首先從接收到的原始報(bào)文中計(jì)算出128位的散列值(或報(bào)文摘要),接著再用發(fā)送方的公開密鑰對(duì)報(bào)文附加的數(shù)字簽名進(jìn)行解密;如果這兩個(gè)散列值相同,那么接收方就能確認(rèn)數(shù)字簽名是發(fā)送方的。通過數(shù)字簽名
39、能夠?qū)崿F(xiàn)對(duì)原始報(bào)文的的鑒別和驗(yàn)證,保證報(bào)文的完整性、權(quán)威性和發(fā)送者對(duì)報(bào)文的不可抵賴性。數(shù)字簽名機(jī)制提供了一種鑒別方法,普遍用于銀行、電子商務(wù)等, 以解決偽造、抵賴、冒充、篡改等問題。</p><p> 3 DES加密標(biāo)準(zhǔn)</p><p> 本部分主要介紹DES的定義、起源,并介紹DES算法的框架以及DES實(shí)際的案例,然后討論一下DES算法的安全性和DES的應(yīng)用誤區(qū);最后介紹一下DES
40、的拓展算法,例如3DES、AES算法。</p><p> 3.1 DES介紹和DES算法框架</p><p> 它出自 IBM 的研究工作,并在 1997 年被美國政府正式采納。它很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護(hù)金融數(shù)據(jù)的安全中,最初開發(fā)的 DES 是嵌入硬 件中的。通常,自動(dòng)取款機(jī)(Automated Teller Machine,ATM)都使用 DES。</p&g
41、t;<p> DES 使用一個(gè) 56 位的密鑰以及附加的 8 位奇偶校驗(yàn)位,產(chǎn)生最大 64 位的分組大小。這是一個(gè)迭代的分組密碼,使用稱為 Feistel 的技術(shù),其中將加密的文本塊分成兩半。使用子密鑰對(duì)其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交換這兩半,這一過程會(huì)繼續(xù)下去,但最后一個(gè)循環(huán)不交換。DES 使用 16 個(gè)循環(huán)。</p><p> DES 的主要形式被稱為蠻力的
42、或徹底密鑰搜索,即重復(fù)嘗試各種密鑰直到有一個(gè)符合為止。如果 DES 使用 56 位的密鑰,則可能的密鑰數(shù)量是 2 的 56 次方個(gè)。隨著計(jì)算機(jī)系統(tǒng)能力的不斷發(fā)展,DES 的安全性比它剛出現(xiàn)時(shí)會(huì)弱得多,然而從非關(guān)鍵性質(zhì)的實(shí)際出發(fā),仍可以認(rèn)為它是足夠的。不過 ,DES 現(xiàn)在僅用于舊系統(tǒng)的鑒定,而更多地選擇新的加密標(biāo)準(zhǔn) — 高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)。 </p><p&
43、gt; DES 的常見變體是三重 DES,使用 168 位的密鑰對(duì)資料進(jìn)行三次加密的一種機(jī)制;它通常(但非始終)提供極其強(qiáng)大的安全性。如果三個(gè) 56 位的子元素都相同,則三重 DES 向后兼容 DES。</p><p> 3.2 DES實(shí)例分析</p><p> 密文到明文的解密過程可采用與加密完全相同的算法。不過解密要用加密的逆變換,就是把上面的最后換位表和初始換位表完全倒過來變
44、換。這里不再贅述。 下面這個(gè)例子中演示了如何使用c#中的加密包進(jìn)行DES算法加密,大家可以借助這個(gè)例子一窺DES加密的用法。 des_demo.cs代碼如下: using System; using System.Security.Cryptography; using System.IO; using System.Text; public class EncryptStringDES {
45、 public static void Main(String[] args) { if (args.Length < 1) { Console.WriteLine("Usage: des_demo encrypt>", args[0]); return; } // 使用UTF8函數(shù)加密輸入?yún)?shù) UTF8Encoding utf8Encodin
46、g = new UTF8Encoding(</p><p> 轉(zhuǎn)貼于 中國//DES_CSP DES = new DES_CSP(); // 初始化DES加密的密鑰和一個(gè)隨機(jī)的、8比特的初始化向量(IV) Byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}; Byte[] IV = {0x12, 0x34, 0
47、x56, 0x78, 0x90, 0xab, 0xcd, 0xef}; des.Key = key; des.IV = IV; // 建立加密流 SymmetricStreamEncryptor sse = des.CreateEncryptor(); // 使用CryptoMemoryStream方法獲取加密過程的輸出 CryptoMemoryStream cms = new Cr
48、yptoMemoryStream(); // 將SymmetricStreamEncryptor流中的加密數(shù)據(jù)輸出到 CryptoMemoryStream中 sse.SetSink(cm</p><p> 3.3 DES的安全性和應(yīng)用誤區(qū)</p><p> DES算法具有極高安全性,到目前為止,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。而56
49、位長的密鑰的窮舉空間為256,這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒種檢測一百萬個(gè)密鑰,則它搜索完全部密鑰就需要將近2285年的時(shí)間,可見,這是難以實(shí)現(xiàn)的,當(dāng)然,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)超高速計(jì)算機(jī)后,我們可考慮把DES密鑰的長度再增長一些,以此來達(dá)到更高的保密程度。 DES算法中只用到64位密鑰中的其中56位,而第8、16、24、......64位8個(gè)位并未參與DES運(yùn)算,這一點(diǎn),向我們提出了一個(gè)應(yīng)用上的要求,即DES的安全性
50、是基于除了8,16,24,......64位外的其余56位的組合變化256才得以保證的。因此,在實(shí)際應(yīng)用中,我們應(yīng)避開使用第8,16,24,......64位作為有效數(shù)據(jù)位,而使用其它的56位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。如果不了解這一點(diǎn),把密鑰Key的8,16,24,..... .64位作為有效數(shù)據(jù)使用,將不能保證DES加密數(shù)據(jù)的安全性,對(duì)運(yùn)用DES來達(dá)到保密作用的系統(tǒng)產(chǎn)生數(shù)據(jù)被破譯的危險(xiǎn),這正是DES算法在應(yīng)
51、用上的誤區(qū),</p><p> 3.4 DES的拓展</p><p> 3.4.1 3DES</p><p> 3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的加密標(biāo)準(zhǔn)),是DES的一個(gè)更安全的變形。它以DES為基本模塊,通過組合分組方法設(shè)計(jì)出分組加密算法,其具體實(shí)現(xiàn)如下:設(shè)Ek()和Dk()代表D
52、ES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密表,這樣, </p><p> 3DES加密過程為:C=Ek3(Dk2(Ek1(P))) </p><p> 3DES解密過程為:P=Dk1((EK2(Dk3(C))) [4] </p><p> 3.4.
53、2 AES算法</p><p> AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長度也是128位。用Nr表示對(duì)一個(gè)數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長度的關(guān)系如表1所列)。每一輪都需要一個(gè)與輸入分組具有相同長度的擴(kuò)展密鑰Expandedkey(i)的參與。由于外部輸入的加密密鑰K長度有限,所以在算法中要用一個(gè)密鑰擴(kuò)展程序(Keyexpansion)把外部密鑰K擴(kuò)展成更長的比特串,以生成各輪的加密和解密密鑰。&l
54、t;/p><p> 應(yīng)用:主要用于基于私鑰數(shù)據(jù)加密算法的各種信息安全技術(shù)和安全產(chǎn)品中:</p><p> 1、無線網(wǎng)絡(luò)應(yīng)用2、信息安全領(lǐng)域3、AES軟件應(yīng)用4、虛擬專用網(wǎng)、同步光網(wǎng)絡(luò)、遠(yuǎn)程訪問服務(wù)器,高速路由器、移動(dòng)通信、衛(wèi)星通信、電子金融業(yè)務(wù)等。 </p><p> 4 公開加密算法RSA</p><p> 本章主要介紹非對(duì)稱加密算
55、法RSA的基本原理以及其算法結(jié)構(gòu),并舉出RSA算法的一個(gè)具體實(shí)例進(jìn)行分析,最后討論一下RSA的探索——大整數(shù)運(yùn)算。</p><p> 4.1 RSA的簡介</p><p> RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。</p><p> RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普
56、遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià)。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題。</p><p> RSA的缺點(diǎn)主要有:A)產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n 至少也要 600bits以上,使運(yùn)算代價(jià)很
57、高,尤其是速度較慢,較對(duì)稱密碼算法慢幾個(gè)數(shù)量級(jí);且隨著大數(shù)分解技術(shù)的發(fā)展,這個(gè)長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。目前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實(shí)體使用1024比特的密鑰。C)RSA密鑰長度隨著保密級(jí)別提高,增加很快。下表列出了對(duì)同一安全級(jí)別所對(duì)應(yīng)的密鑰長度。</p><p> 這種算法1978年就出現(xiàn)了,它是第一個(gè)既
58、能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。算法的名字以發(fā)明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。早在1973年,英國國家通信總局的數(shù)學(xué)家Clifford Cocks就發(fā)現(xiàn)了類似的算法。但是他的發(fā)現(xiàn)被列為絕密,直到1998年才公諸于世。</p><p> 4.2 RSA算法的結(jié)構(gòu)</p><p> RSA加密
59、算法使用了兩個(gè)非常大的素?cái)?shù)來產(chǎn)生公鑰和私鑰。即使從一個(gè)公鑰中通過因數(shù)分解可以得到私鑰,但這個(gè)運(yùn)算所包含的 計(jì)算 量是非常巨大的,以至于在現(xiàn)實(shí)上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實(shí)中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個(gè)對(duì)稱加密算法的密鑰,然后再利用一個(gè)快速的對(duì)稱加密算法來加密數(shù)據(jù)。</p><p
60、> ?。?)RSA算法原理</p><p> RSA算法是基于數(shù)論中的同余理論。如果用m代表明文,c代表密文,E(m)代表加密運(yùn)算,D(c)代表解密運(yùn)算,x=y(mode z)表示x和y模z同余,則加密和解密算法簡單表示如下:</p><p> 加密算法 c=E(m)=me(mod n)</p><p> 解密算法 m=D(c)=cd(mod n)<
61、;/p><p> 其中n和密鑰e是公開的,而密鑰d是保密的。</p><p> 下面討論密鑰的求?。?lt;/p><p> ?、龠x取兩個(gè)隨機(jī)大素?cái)?shù)p和q(保密);</p><p><b> ②設(shè)n=p×q;</b></p><p> ③歐拉函數(shù)φ(n)=(p-1)(q-1)(保密);&l
62、t;/p><p> ?、苓x取與φ(n)互素的正整數(shù)e,即滿足gcd(φ(n),e)=1和0<e<φ(n);</p><p> ?、萦?jì)算d(保密),使?jié)M足e×d=1(mod φ(n)),即d和e相對(duì)于模φ(n)互為逆元素。</p><p> 由RSA算法原理可知,RSA算法的核心是求模取余運(yùn)算,其安全性是建立在大合數(shù)因子分解困難的基礎(chǔ)之上的。<
63、;/p><p><b> (2)模運(yùn)算的實(shí)現(xiàn)</b></p><p> RSA算法的核心操作也是最耗時(shí)的操作是模運(yùn)算,所以開發(fā)一種快速指數(shù)和取模運(yùn)算是解決運(yùn)算速度的關(guān)鍵。通常的模運(yùn)算都是利用加減法來實(shí)現(xiàn)的,因?yàn)榧訙p法指令的執(zhí)行速度快。在進(jìn)行模運(yùn)算時(shí),一般先將指數(shù)e(長度為kbit)改寫成二進(jìn)制數(shù)組的形式e,即</p><p> 其中:ei∈{
64、0,1},i=0,1,Λ,k-1。</p><p> 這樣,在計(jì)算me(mod n)時(shí),先做一次平方運(yùn)算,然后根據(jù)ei的值,再做一次乘法運(yùn)算,以此來簡化模運(yùn)算的復(fù)雜性。</p><p> 由于實(shí)際中的e值非常大,為了提高運(yùn)算速度,可以將e進(jìn)行分組后運(yùn)算。設(shè)對(duì)e以四位一組(十六進(jìn)制)的形式計(jì)算me(mod n),那么:</p><p> 其中:ei∈{0,1,2
65、,…,15},t=k/4;</p><p> ?、谇蟪鰉2,m3,…,m15(mod n);</p><p> ③設(shè)置變量c:=1;</p><p> ④對(duì)于i=t-1,t-2,…,1,0重復(fù)計(jì)算:</p><p> c:=c2(mod n)(平方);</p><p> c:=c2(mod n)(四次方);&l
66、t;/p><p> c:=c2(mod n)(八次方);</p><p> c:=c2(mod n)(十六次方);</p><p> e.若ei≠0,則c:=c×mei(mod n)。</p><p><b> ?、菟胏即為所求。</b></p><p> 4.3 RSA算法的案
67、例 例如大數(shù)18446744073709551615,等于 ffffffff ffffffff,就相當(dāng)于十進(jìn)制的99:有兩位,每位都是ffffffff。而18446744073709551616 等于00000001 0000000000000000,就相當(dāng)于十進(jìn)制的100:有三位,第一位是1 ,其它兩位是0,如此等等。 在實(shí)際應(yīng)用中,“數(shù)字”數(shù)組的排列順序采用低位在前高位在后的方式,這樣,大數(shù)A 就可以方便地用數(shù)學(xué)表達(dá)
68、式來表示其值:A=Sum[i=0 to n](A[i]*0x100000000**i)(其中Sum 表示求和,A[i]表示用以記錄A 的數(shù)組的第i 個(gè)元素,**表示乘方)。 任何整數(shù)運(yùn)算最終都能分解成數(shù)字與數(shù)字之間的運(yùn)算,在0x100000000 進(jìn)制下其“數(shù)字”最大達(dá)到0xffffffff,其數(shù)字與數(shù)字之間的運(yùn)算,結(jié)果也必然超出了目前32系統(tǒng)的字長。在VC++中,存在一個(gè)__int64 類型可以處理64位的整數(shù),所以不用擔(dān)心這
69、一問題,而在其它編譯系統(tǒng)中如果不存在64位整形,就需要采用更小的進(jìn)制方式來存儲(chǔ)大數(shù),例如WORD</p><p> 加法設(shè): A=Sum[i=0 to p](A[i]*0x100000000**i) B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q C=Sum[i=0 to n](C[i]*0x10
70、0000000**i)=A+B</p><p><b> 顯然:</b></p><p> C[i]不是簡單地等于A[i]+B[i],因?yàn)槿绻鸆[i]>0xffffffff就需要進(jìn)位,當(dāng)然計(jì)算C[i-1]時(shí)也可能產(chǎn)生了進(jìn)位,所以計(jì)算C[i]時(shí)還要加上上次的進(jìn)位值。 如果用carry[i]記錄每次的進(jìn)位則有: C[i]=A[
71、i]+B[i]+carry[i-1]-carry[i]*0x100000000 其中carry[-1]=0 若A[i]+B[i]+carry[i-1]>0xffffffff,則carry[i]=1;反之則carry[i]=0 若carry[p]=0,則n=p;反之則n=p+1</p><p> 減法設(shè):
72、160;A=Sum[i=0 to p](A[i]*0x100000000**i) B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q C=Sum[i=0 to n](C[i]*0x100000000**i)=A-B</p><p><b> 顯然:</b></p><p> C[
73、i]不是簡單地等于A[i]-B[i],因?yàn)槿绻鸄[i]<B[i]就需要借位,當(dāng)然計(jì)算 C[i-1]時(shí)也可能產(chǎn)生了借位,所以計(jì)算C[i]時(shí)還要減去上次的借位值。 如果用carry[i]記錄每次的借位則有: C[i]=A[i]+carry[i]*0x100000000-B[i]-carry[i-1] 其中carry[-1]=0 若A[i]>
74、;B[i]則carry[i]=0;反之則carry[i]=1 若C[p]=0,則n=p-1;反之則n=p</p><p><b> 乘法</b></p><p> 設(shè): A=Sum[i=0 to p](A[i]*0x100000000**i) B=Sum[i=0 to q](B[i]*0x
75、100000000**i),p>=q C=Sum[i=0 to n](C[i]*0x100000000**i)=A*B</p><p> 顯然: C=Sum[i=0 to q](A*B[i]*0x100000000**i) 而(A*B[i]*100000000**i)=Sum[j=0 to p](A[j]*B[i]*0x1000000
76、00**(i+j)) 所以C=Sum[i=0 to q](Sum[j=0 to p](A[j]*B[i]*0x100000000**(i+j)))</p><p> 因此: C[i]=Sum[j=0 to q](A[i-j]*B[j])+carry[i-1]-carry[i]*0x100000000 其中carry[-1]=0
77、 carry[i]=(Sum[j=0 to q](A[i-j]*B[j])+carry[i-1])/0x100000000 n=p+q-1,若carry[n]>0,則n=n+1,C[n]=carry</p><p><b> 除法</b></p><p> 設(shè): A=Sum[i=0 to p](
78、A[i]*0x100000000**i) B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q C=Sum[i=0 to n](C[i]*0x100000000**i)=A/B</p><p> 由于無法將B 對(duì)A “試商”,我們只能轉(zhuǎn)換成B[q]對(duì)A[p]的試商來得到一個(gè)近似值,所以我們不能夠直接計(jì)算C。但是,我們
79、可以一步一步地逼近C</p><p> 顯然: (A[p]/B[q]-1)*0x100000000**(p-q)<C</p><p><b> 令: X=0</b></p><p> 重復(fù): A=A-X*B,X=X+(A[p]/B[q]-1)*0x10000
80、0000**(p-q),直到A<B</p><p><b> 則有: X=C</b></p><p> 注意: 由于大數(shù)可理解為0x100000000進(jìn)制,所以對(duì)于任意大數(shù)A*0x100000000**k 都等價(jià)于將A 的數(shù)組中的各元素左移k 位,不必計(jì)算;同樣,除法則等價(jià)于右移</p>
81、;<p><b> 取模</b></p><p> 設(shè): A=Sum[i=0 to p](A[i]*0x100000000**i) B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q C=Sum[i=0 to n](C[i]*0x100000000**i)=A%B&
82、lt;/p><p> 求模與求商的過程一致,只是由于不需要記錄商而更加簡單:</p><p> 重復(fù): A=A-(A[p]/B[q]-1)*0x100000000**(p-q)*B,直到A<B</p><p><b> 則有: A=C</b></p><p><
83、;b> 二元一次方程:</b></p><p> 在RSA 算法中,往往要在已知A、M的情況下,求 B,使得 (A*B)%M=1。即相當(dāng)于求解B、N都是未知數(shù)的二元一次不定方程 A*B-M*N=1,的最小整數(shù)解。</p><p> 而針對(duì)不定方程ax-by=1 的最小整數(shù)解,古今中外都進(jìn)行過詳盡的研究,西方有著名的歐幾里德算法,即輾轉(zhuǎn)相除法,中國有秦九韶的“大衍求一
84、術(shù)”。歐幾里德算法是一種遞歸算法,比較容易理解:</p><p> 例如:11x-49y=1,求x (a) 11 x - 49 y = 1 49%11=5 -> (b) 11 x - 5 y = 1
85、;11%5 =1 -> (c) x - 5 y = 1 令y=0 [來源:GameRes.com]代入(c)得x=1 令x=1 代入(b)得y=2 令y=2 代入(a)得x=
86、9</p><p> 同理可使用遞歸算法求得任意 ax-by=1(a、b互質(zhì))的解,實(shí)際上通過分析歸納將遞歸算法轉(zhuǎn)換成非遞歸算法就變成了大衍求一術(shù)。</p><p><b> 冪模運(yùn)算:</b></p><p> 冪模運(yùn)算是RSA 核心算法,最直接地決定了RSA 算法的性能,針對(duì)快速冪模運(yùn)算這一課題,許多西方現(xiàn)代數(shù)學(xué)家提出了大量的解決方案
87、。通常都是先將冪模運(yùn)算化簡為乘模運(yùn)算。</p><p> 例如求D=C**15 % N,由于: a*b % n = (a % n)*(b % n) % n</p><p> 所以: C1=C*C
88、% N =C**2 % N C2=C1*C % N =C**3 % N C3=C2*C2 % N
89、; =C**6 % N C4=C3*C % N =C**7 % N C5=C4*C4 % N
90、=C**14 % N C6=C5*C % N =C**15 % N </p><p> 即: 對(duì)于E=15的冪模運(yùn)算可分解為6個(gè)乘模運(yùn)算</p&g
91、t;<p> 歸納分析以上方法可以發(fā)現(xiàn)對(duì)于任意E,可采用以下算法計(jì)算D=C**E % N: D=1 WHILE E>=0 IF E為奇數(shù) D=D*C %
92、N D=D*D % N E=E-1 IF E為偶數(shù) D=D*D % N
93、0; E=E/2 RETURN D</p><p> 再加以分析會(huì)發(fā)現(xiàn),要知道D 何時(shí)需乘 C,不需要反復(fù)對(duì)E 進(jìn)行減一或除二的操作,只需要驗(yàn)證E 的二進(jìn)制各位是0 還是1 就可以了,而且從左至右驗(yàn)證和從右至左驗(yàn)證都行,反而從左至右驗(yàn)證更簡單:</p><p>
94、; 若E=Sum[i=0 to n](E[i]*2**i),0<=E[i]<=1 D=1 FOR i=n TO 0 D=D*D % N IF E[i]=1
95、60; D=D*C % N RETURN D</p><p> 剩下的問題就是乘模運(yùn)算了,對(duì)于A*B % N,如果A、B 都是1024位的大數(shù),先計(jì)算A*B,再% N,就會(huì)產(chǎn)生2048位的中間結(jié)果,如果不采用動(dòng)態(tài)內(nèi)存分配技術(shù)就必須將大數(shù)定義中的數(shù)組空間增加一倍,這樣會(huì)造成大量的浪費(fèi),因?yàn)樵诮^大多數(shù)情況下不會(huì)
96、用到那額外的一倍空間,而采用動(dòng)態(tài)內(nèi)存分配技術(shù)會(huì)使大數(shù)存儲(chǔ)失去連續(xù)性而使運(yùn)算過程中的循環(huán)操作變得非常繁瑣。所以計(jì)算的首要原則就是要避免計(jì)算A*B。</p><p> 由于: A*B=A*(Sum[i=0 to n](B[i]*0x100000000**i))</p><p> 所以:
97、0; A*B % N = (Sum[i=0 to n]((A*B[i])*0x100000000**i)) % N</p><p> 可以用一個(gè)循環(huán)求得: C=0; FOR i=0 to n
98、0; C=C+A*B[i]*0x100000000 % N RETURN C</p><p> 事實(shí)上,有一種蒙哥馬利算法能夠更快地完成多次循環(huán)的乘模運(yùn)算,但是其原理涉及較多的數(shù)論知識(shí),且實(shí)現(xiàn)起來比較麻煩,對(duì)速度雖有提高,經(jīng)測試也不會(huì)超過一個(gè)數(shù)量級(jí),所以暫且不予考慮。</p><p> 素?cái)?shù)測試
99、0; 數(shù)論學(xué)家利用費(fèi)馬小定理研究出了多種素?cái)?shù)測試方法,目前最快的算法是拉賓米勒測試算法,其過程如下:</p><p> (1)計(jì)算奇數(shù)M,使得N=(2**r)*M+1(2)選擇隨機(jī)數(shù)A<N(3)對(duì)于任意i<r,若A**((2**i)*M) MOD N = N-1,則N通過隨機(jī)數(shù)A的測試(4)或者,若A**M MOD N = 1,則N通過隨機(jī)數(shù)A的測試(5)讓A取不同的值
100、對(duì)N進(jìn)行5次測試,若全部通過則判定N為素?cái)?shù)</p><p> 若N 通過一次測試,則N 不是素?cái)?shù)的概率為 25%,若N 通過t 次測試,則N 不是素?cái)?shù)的概率為1/4**t。事實(shí)上取t 為5 時(shí),N 不是素?cái)?shù)的概率為 1/128,N 為素?cái)?shù)的概率已經(jīng)大于99.99%。</p><p> 在實(shí)際應(yīng)用中,可首先用300—500個(gè)小素?cái)?shù)對(duì)N 進(jìn)行測試,以提高拉賓米勒測試通過的概率,從而提高測試
101、速度。而在生成隨機(jī)素?cái)?shù)時(shí),選取的隨機(jī)數(shù)最好讓 r=0,則可省去步驟(3) 的測試,進(jìn)一步提高測試速度。</p><p> 輸入輸出 大數(shù)的輸入輸出是通過字符串來完成的,事實(shí)上很容易實(shí)現(xiàn),例如按照十進(jìn)制格進(jìn)行處理,則:</p><p> 輸入: X=0
102、160;FOR i=0 TO n X=X*10 X=X+(int)(str[n]-48) RETURN X</p><p> 輸出: str=
103、60; WHILE(X>0) str=(char)(X%10-48)+str RETURN str [5]</p><p> 4.4 RSA探索</p><p> RSA算法中的加密解密操作,都是大整數(shù)的算術(shù)運(yùn)算,在硬件實(shí)現(xiàn)上需要長的(千位以上的)運(yùn)
104、算結(jié)構(gòu)。目前,在集成電路中進(jìn)行大整數(shù)算術(shù)運(yùn)算的結(jié)構(gòu)設(shè)計(jì),需要做全局?jǐn)?shù)據(jù)廣播,不僅扇出大、延時(shí)長,而且需要的連線資源很大。全局信號(hào)的廣播問題,在現(xiàn)有關(guān)于RSA硬件實(shí)現(xiàn)的文獻(xiàn)資料中很少提及。實(shí)際上,對(duì)于任何在深亞微米工藝條件下實(shí)現(xiàn)的集成電路,全局信號(hào)的廣播都是需要認(rèn)真解決的問題。對(duì)于RSA模乘冪運(yùn)算器這樣一個(gè)數(shù)據(jù)寬度特別大的結(jié)構(gòu),這個(gè)問題尤其重要,直接影響到設(shè)計(jì)的性能。 在基于冗余陣列的設(shè)計(jì)中,針對(duì)現(xiàn)有結(jié)構(gòu)中存在的問題,我們對(duì)蒙哥馬利算法進(jìn)
105、行優(yōu)化,并采用將信號(hào)廣播流水化的方法,解決長整數(shù)運(yùn)算結(jié)構(gòu)中關(guān)鍵信號(hào)廣播帶來的負(fù)載問題。我們采用在信號(hào)廣播中插入中間寄存器的方法,設(shè)計(jì)者在RTL的層次控制扇出節(jié)點(diǎn)的數(shù)量,從而減少扇出,降低關(guān)鍵路徑的延遲,提高時(shí)鐘頻率。相對(duì)于未優(yōu)化的結(jié)構(gòu),新設(shè)計(jì)的時(shí)鐘頻率提高100~154%,模乘冪運(yùn)算速度提高99~153%,而面積的增加僅有5~28%。 在基于脈動(dòng)陣列的設(shè)計(jì)中,盡管脈動(dòng)陣列的結(jié)構(gòu)可以解決進(jìn)位鏈的傳遞問題,但是,仍然有一部分全局信號(hào)需要從控
106、制部件廣播到乘法器的特定位置。我們</p><p> 對(duì)極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之,對(duì)一極大整數(shù)做因數(shù)分解愈困難,RSA算法愈可靠。假如有人找到一種快速因數(shù)分解的算法的話,那么用RSA加密的信息的可靠性就肯定會(huì)極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強(qiáng)力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長
107、,用RSA加密的信息實(shí)際上是不能被解破的。但在分布式計(jì)算技術(shù)和量子計(jì)算機(jī)理論日趨成熟的今天,RSA加密安全性受到了挑戰(zhàn)。</p><p><b> 5 其他加密技術(shù)</b></p><p> 本章主要介紹其他的一些加密技術(shù)及其應(yīng)用,例如數(shù)據(jù)指印MD5碼、橢圓曲線密碼體制ECC、偽隨機(jī)數(shù)加密技術(shù)、可變長密鑰塊Blowfish加密技術(shù)等。</p>&l
108、t;p><b> 5.1 MD5</b></p><p> 對(duì)MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。</p><p> 在MD5算法中,首先需要對(duì)信息進(jìn)行填充,使其位長對(duì)512求余的結(jié)
109、果等于448。因此,信息的位長(Bits Length)將被擴(kuò)展至N*512+448,即N*64+56個(gè)字節(jié)(Bytes),N為一個(gè)非負(fù)整數(shù),N可以是零。填充的方法如下,在信息的后面填充一個(gè)1和無數(shù)個(gè)0,直到滿足上面的條件時(shí)才停止用0對(duì)信息的填充。然后,在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息的位長=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿
110、足后面處理中對(duì)信息長度的要求。</p><p> MD5中有四個(gè)32位被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。</p><p> 當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。</p>
111、<p> 將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A到a,B到b,C到c,D到d。</p><p> 主循環(huán)有四輪(MD4只有三輪),每輪循環(huán)都很相似。第一輪進(jìn)行16次操作。每次操作對(duì)a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向左環(huán)移一個(gè)不定的數(shù),并加上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之一。<
112、/p><p> 典型應(yīng)用是對(duì)一段信息(Message)產(chǎn)生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多軟件在下載的時(shí)候都有一個(gè)文件名相同,文件擴(kuò)展名為.md5的文件,在這個(gè)文件中通常只有一行文本,大致結(jié)構(gòu)如:</p><p> MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461</p&g
113、t;<p> 這就是tanajiya.tar.gz文件的數(shù)字簽名。MD5將整個(gè)文件當(dāng)作一個(gè)大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個(gè)唯一的MD5信息摘要。為了讓讀者朋友對(duì)MD5的應(yīng)用有個(gè)直觀的認(rèn)識(shí),筆者以一個(gè)比方和一個(gè)實(shí)例來簡要描述一下其工作過程:</p><p> 大家都知道,地球上任何人都有自己獨(dú)一無二的指紋,這常常成為公安機(jī)關(guān)鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為
114、任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個(gè)同樣獨(dú)一無二的“數(shù)字指紋”,如果任何人對(duì)文件做了任何改動(dòng),其MD5值也就是對(duì)應(yīng)的“數(shù)字指紋”都會(huì)發(fā)生變化。</p><p> 常常在某些軟件下載站點(diǎn)的某軟件信息中看到其MD5值,它的作用就在于我們可以在下載該軟件后,對(duì)下載回來的文件用專門的軟件(如Windows MD5 Check等)做一次MD5校驗(yàn),以確保我們獲得的文件與該站點(diǎn)提供的文件為同一文件。利用MD5算法來進(jìn)
115、行文件校驗(yàn)的方案被大量應(yīng)用到軟件下載站、論壇數(shù)據(jù)庫、系統(tǒng)文件安全等方面。</p><p> 5.2 可變長密鑰塊Blowfish加密技術(shù)</p><p> 隨著近些年互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,如何在開放的傳輸環(huán)境下保護(hù)私人信息、如何在公共設(shè)施上保護(hù)個(gè)人隱私成了人們關(guān)心的問題。近些年科學(xué)家利用DES、RSA加密法發(fā)展起來了網(wǎng)上數(shù)字簽證系統(tǒng)、WINDOWS NT和UNIX的密碼系統(tǒng)。DES加
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)加密技術(shù)的研究畢業(yè)論文
- 基于dsp的數(shù)據(jù)加密技術(shù)綜述
- 畢業(yè)論文-ssh加密技術(shù)研究和實(shí)現(xiàn)
- 畢業(yè)論文ssh加密技術(shù)研究和實(shí)現(xiàn)
- 畢業(yè)論文—基于matlab的光學(xué)圖像加密解密技術(shù)
- 淺談數(shù)據(jù)庫加密技術(shù)
- 淺析計(jì)算機(jī)網(wǎng)絡(luò)信息加密技術(shù)——畢業(yè)論文
- 基于DSP的數(shù)據(jù)加密技術(shù)研究.pdf
- 加密技術(shù)
- 飛行數(shù)據(jù)加密技術(shù)研究.pdf
- 數(shù)據(jù)庫加密技術(shù)研究.pdf
- 對(duì)XML數(shù)據(jù)安全加密技術(shù)的研究.pdf
- XML數(shù)據(jù)加密技術(shù)的研究與實(shí)現(xiàn).pdf
- 試論信息數(shù)據(jù)的安全與加密技術(shù)
- 數(shù)據(jù)庫加密技術(shù)算法研究.pdf
- 基于數(shù)據(jù)加密技術(shù)的網(wǎng)絡(luò)安全研究——基于數(shù)據(jù)加密技術(shù)的辦公自動(dòng)化技術(shù)的研究與實(shí)現(xiàn).pdf
- 畢業(yè)論文---信息保密技術(shù)淺談
- 畢業(yè)論文---信息保密技術(shù)淺談
- 圖像加密技術(shù)在遠(yuǎn)程醫(yī)療診斷系統(tǒng)中的應(yīng)用研究畢業(yè)論文
- 數(shù)據(jù)庫加密技術(shù)的研究及應(yīng)用.pdf
評(píng)論
0/150
提交評(píng)論