DES加密算法的研究與實(shí)現(xiàn)_第1頁
DES加密算法的研究與實(shí)現(xiàn)_第2頁
DES加密算法的研究與實(shí)現(xiàn)_第3頁
DES加密算法的研究與實(shí)現(xiàn)_第4頁
DES加密算法的研究與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、畢 業(yè) 設(shè) 計(jì) 論 文題 目: DES加密算法的研究與實(shí)現(xiàn) 學(xué) 院: 計(jì)算機(jī)科學(xué)與工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: 學(xué) 號(hào): 指導(dǎo)老師: 完成時(shí)間: 摘 要隨著信息技術(shù)的發(fā)展,計(jì)算機(jī)應(yīng)用滲透到社會(huì)生活的各個(gè)領(lǐng)域,人們對(duì)信息化的依賴程度越來越高,隨之而來的安全性問題成為人們關(guān)注的熱點(diǎn)。數(shù)據(jù)加密技術(shù)作為信息安全中的重要武器,發(fā)揮著越來越大的作用。DES (Date Encryption Standard)算法從成為加密標(biāo)準(zhǔn)到現(xiàn)在,已經(jīng)成功在應(yīng)用在了很多領(lǐng)域并且經(jīng)歷了長期的考驗(yàn)。實(shí)踐證明,DES算法對(duì)于大部分的應(yīng)用來說,還是足夠安全的。本論文首先介紹C語言基本知識(shí)及其實(shí)用軟件Visua

2、l C+6.0,然后介紹DES加密算法原理;接著介紹DES加密模塊的三大底層模塊的原理與設(shè)計(jì);最后介紹了頂層模塊的調(diào)用與設(shè)計(jì),測試文件的編寫,從整體上完成了對(duì)DES加密模塊的實(shí)現(xiàn)。本文通過C語言來實(shí)現(xiàn)DES加密模塊的設(shè)計(jì)與驗(yàn)證。本設(shè)計(jì)采用自頂而下的模塊化設(shè)計(jì)方法將DES加密模塊劃分為四大模塊,其中包括三個(gè)底層模塊 :密鑰產(chǎn)生模塊、S部件代換模塊(S1、S2、S3、S4、S5、S6、S7、S8)、DES的一輪變換模塊,還含有一個(gè)頂層調(diào)用模塊,整體的調(diào)用三個(gè)底層模塊用來實(shí)現(xiàn)DES加密模塊的功能。此外還對(duì)DES的安全性進(jìn)行評(píng)估以及簡要的驗(yàn)證了三重DES加密算法的加密和解密過程。關(guān)鍵詞:DES;加密;

3、解密;C語言Abstract With the development of information technology, the application of computer has came into any field. Peoples dependence on information technology is becoming more. Followed by the issue of security has also become a hot spot of concern to the people . Encryption technology, as an impo

4、rtant weapon of information security, is playing an increasingly important role. DES (Date Encryption Standard) encryption algorithm from becoming the standard to the present , has been successfully used in a lot in the area and has experienced long-term test. Practice has proved that, DES algorithm

5、 for most of the application adequate is security.This paper introduces C language and its utility software Visual C+6.0, and introduces the DES algorithm, and then introduces the DES encryption module the three underlying modules principles and design. Finally, it introduces the top-level module an

6、d its design as well as the test documentation, and achieves the whole DES encryption module Through the C language , this paper achieves DES encryption module design and simulation. The design uses a top-down modular design method to DES encryption module, it is divided into 4 modules,which contain

7、s three bottom modules: key generation module, S module and one transformation module of DES, and it also contains a top-level module which calls the bottom of the overall three modules for the function of DES encryption module. In addition , the security of DES evaluation and briefly proved three D

8、ES encryption algorithm for encryption and decryption process.Key Words: DES;cryption; encryption;C language前言密碼學(xué)是伴隨著戰(zhàn)爭發(fā)展起來的一門科學(xué),其歷史可以追溯到古代,并且還有過輝煌的經(jīng)歷。但成為一門學(xué)科則是近20年來受計(jì)算機(jī)科學(xué)蓬勃發(fā)展的刺激結(jié)果。今天在計(jì)算機(jī)被廣泛應(yīng)用的信息時(shí)代,信息本身就是時(shí)間,就是財(cái)富。如何保護(hù)信息的安全(即密碼學(xué)的應(yīng)用)已不再局限于軍事、政治和外交,而是擴(kuò)大到商務(wù)、金融和社會(huì)的各個(gè)領(lǐng)域。特別是在網(wǎng)絡(luò)化的今天,大量敏感信息(如考試成績、個(gè)人簡歷、體檢結(jié)果、實(shí)驗(yàn)

9、數(shù)據(jù)等)常常要通過互聯(lián)網(wǎng)進(jìn)行交換。(現(xiàn)代電子商務(wù)也是以互聯(lián)網(wǎng)為基礎(chǔ)的。)由于互聯(lián)網(wǎng)的開放性,任何人都可以自由地接入互聯(lián)網(wǎng),使得有些不誠實(shí)者就有可能采用各種非法手段進(jìn)行破壞。因此人們十分關(guān)心在網(wǎng)絡(luò)上交換信息的安全性。普遍認(rèn)為密碼學(xué)方法是解決信息安全保護(hù)的一個(gè)最有效和可行的方法。有效是指密碼能做到使信息不被非法竊取,不被篡改或破壞,可行是說它需要付出的代價(jià)是可以接受的。密碼是形成一門新的學(xué)科是在20世紀(jì)70年代。它的理論基礎(chǔ)之一應(yīng)該首推1949年Shannon的一篇文章“保密系統(tǒng)的通信理論”,該文章用信息論的觀點(diǎn)對(duì)信息保密問題作了全面的闡述。這篇文章過了30年后才顯示出它的價(jià)值。1976年,Dif

10、fie和Hellman發(fā)表了論文密碼學(xué)的新方向,提出了公鑰密碼體制的新思想,這一思想引發(fā)了科技界對(duì)研究密碼學(xué)的極大興趣,大量密碼學(xué)論文開始公開發(fā)表,改變了過去只是少數(shù)人關(guān)起門來研究密碼學(xué)的狀況。同時(shí)為了適應(yīng)計(jì)算機(jī)通信和電子商務(wù)迅速發(fā)展的需要,密碼學(xué)的研究領(lǐng)域逐漸從消息加密擴(kuò)大到數(shù)字簽名、消息認(rèn)證、身份識(shí)別、抗欺騙協(xié)議等新課題。 美國國家標(biāo)準(zhǔn)局(NBS)1973年開始研究除國防部外的其它部門的計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)加密標(biāo)準(zhǔn),并批準(zhǔn)用于非機(jī)密單位及商業(yè)上的保密通信。于1973年5月15日和1974年8月27日先后兩次向公眾發(fā)出了征求加密算法的公告。1977年1月,美國政府頒布:采用IBM公司1971年設(shè)

11、計(jì)出的一個(gè)加密算法作為非機(jī)密數(shù)據(jù)的正式數(shù)據(jù)加密標(biāo)準(zhǔn)(DES : Data Encryption Standard)。DES廣泛應(yīng)用于商用數(shù)據(jù)加密,算法完全公開,這在密碼學(xué)史上是一個(gè)創(chuàng)舉。在密碼學(xué)的發(fā)展過程中,DES算法起了非常重要的作用。本次學(xué)年論文介紹的就是分組加密技術(shù)中最典型的加密算法DES算法。目 錄第一章 緒論11.1 信息安全的現(xiàn)狀11.2 單鑰密碼系統(tǒng)21.3 分組密碼的總體結(jié)構(gòu)和安全性31.4 DES加密技術(shù)研究的意義41.5 設(shè)計(jì)語言及驗(yàn)證工具41.5.1 C語言的簡要介紹41.5.2 使用的驗(yàn)證工具的介紹6第二章 DES加密算法的原理分析92.1 DES加密算法的描述92.2

12、 DES加密標(biāo)準(zhǔn)102.2.1 初始置換IP112.2.2 IP-1是IP的逆置換122.2.3 DES算法的迭代過程122.2.4 子密鑰的生成152.3 DES算法的解密過程16第三章 DES加密算法的安全性評(píng)估173.1 DES弱密鑰和補(bǔ)密鑰特性173.2 DES的密鑰的長度和迭代次數(shù)183.3 DES加密算法S-盒的設(shè)計(jì)183.4 DES加密算法的應(yīng)用誤區(qū)193.5 DES加密算法安全性統(tǒng)計(jì)20第四章 DES加密算法的實(shí)現(xiàn)及驗(yàn)證224.1 DES加密算法的實(shí)現(xiàn)224.1.1 通過DES算法實(shí)現(xiàn)對(duì)字符的加密224.1.2 通過DES算法實(shí)現(xiàn)對(duì)文件的加密234.2 子密鑰函數(shù)的生成函數(shù)DE

13、S_MakeSubKeys()234.3 DES算法的加密函數(shù)DES_Encrypt()244.4 DES算法加密函數(shù)DES_Decrypt()254.5 DES算法的主函數(shù)void main()264.6 DES的加密過程和舉例284.7 DES算法的分析29結(jié) 論32致 謝33參考文獻(xiàn)34附錄A C語言源代碼35第一章 緒論1.1 信息安全的現(xiàn)狀美國著名未來學(xué)家阿爾溫托夫勒說:“電腦網(wǎng)絡(luò)的建立和普及將徹底改變?nèi)祟惿婕吧畹哪J剑刂婆c掌握網(wǎng)絡(luò)的人就是未來命運(yùn)的主宰。誰掌握了信息,控制了網(wǎng)絡(luò),誰就擁有整個(gè)世界。”的確,網(wǎng)絡(luò)的國際化、社會(huì)化、開放化、個(gè)人化誘發(fā)出無限的商機(jī),電子商務(wù)的迅速崛起

14、,使網(wǎng)絡(luò)成為國際競爭的新戰(zhàn)場。各種信息的傳播越來越便捷。在當(dāng)今的信息時(shí)代,大量敏感信息如法庭記錄、資金轉(zhuǎn)移、私人財(cái)產(chǎn)、個(gè)人隱私等常常通過公共通信設(shè)施或者計(jì)算機(jī)網(wǎng)絡(luò)來進(jìn)行交換,而這些信息的秘密性和真實(shí)性是人們迫切需要的。然而,由于安全技術(shù)本身的缺陷,使得信息傳播的脆弱性大大增加,一旦信息傳播的途徑與方式受到攻擊,輕則對(duì)個(gè)人的工作、生活產(chǎn)生重大影響。嚴(yán)重時(shí)甚至?xí):野踩拐麄€(gè)社會(huì)陷入危機(jī)。所以,構(gòu)筑安全的電子信息環(huán)境,愈來愈受到國際社會(huì)的高度關(guān)注。加密技術(shù)是基于密碼學(xué)原理來實(shí)現(xiàn)計(jì)算機(jī)、網(wǎng)絡(luò)乃至一切信息系統(tǒng)安全的理論與技術(shù)基礎(chǔ)。簡單的說,加密的基本意思是改變信息的排列形式,使得只有合法的接受才

15、能讀懂,任何他人即使截取了該加密信息也無法使用現(xiàn)有的手段來解讀。解密是我們將密文轉(zhuǎn)換成能夠直接閱讀的文字(即明文)的過程稱為解密,它是加密的反向處理,但解密者必須利用相同類型的加密設(shè)備和密鑰對(duì)密文進(jìn)行解密。不安全的信息還不如沒有信息。一個(gè)不設(shè)防的信息傳播方式,一旦遭到惡意攻擊,將意味著一場災(zāi)難。對(duì)于信息的傳播,需要居安思危、未雨綢繆,克服脆弱、克制威脅,防患于未然。信息安全是對(duì)付威脅、克服脆弱性、保護(hù)各種信息資源的所有措施的總和,涉及政策、法律、管理、教育和技術(shù)等方面的內(nèi)容。信息安全是一項(xiàng)系統(tǒng)工程,針對(duì)來自不同方面的安全威脅,需要采取不同的安全對(duì)策。從法律、制度、管理和技術(shù)上采取綜合措施,以便

16、相互補(bǔ)充,達(dá)到較好的安全效果。管理是所有安全領(lǐng)域的重要組成部分,而技術(shù)措施是最直接的屏障,目前常用而有效的信息安全技術(shù)對(duì)策有如下幾種:加密、數(shù)字簽名、鑒別、訪問控制、防火墻、安全審計(jì)、數(shù)據(jù)備份與恢復(fù)等等。在這些對(duì)策中,加密無疑是所有信息保護(hù)措施中最古老,最基本的方法。加密的主要目的是防止信息的非授權(quán)泄漏。加密方法多種多樣,在信息網(wǎng)絡(luò)中一般是利用信息變換規(guī)則把可靠的信息變成不可懂的信息。既可對(duì)傳輸信息加密,也可對(duì)存儲(chǔ)信息加密,把計(jì)算機(jī)數(shù)據(jù)變成一堆雜亂無章的數(shù)據(jù),攻擊者即使得到加密的信息,也不過是一串毫無意義的字符。加密可以有效的對(duì)抗截收、非法訪問等威脅。現(xiàn)代密碼算法不僅可以實(shí)現(xiàn)加密,還可以實(shí)現(xiàn)數(shù)

17、字簽名,鑒別等功能,有效地對(duì)抗截收、非法訪問、破壞信息的完整性、冒充、抵賴、重演等威脅。因此,加密技術(shù)是網(wǎng)絡(luò)信息安全的核心技術(shù)。社會(huì)信息化步伐的不斷加快,極大地推動(dòng)了信息安全技術(shù)的核心技術(shù)現(xiàn)代密碼學(xué)的發(fā)展。現(xiàn)代密碼學(xué)的應(yīng)用已經(jīng)涵蓋了軍事、政治、外交、金融、商業(yè)等眾多領(lǐng)域,其商用價(jià)值和社會(huì)價(jià)值得到了充分的肯定。為密碼理論與技術(shù)的應(yīng)用提供了廣闊的前景。1.2 單鑰密碼系統(tǒng)密碼學(xué)中有兩種重要類型的密碼系統(tǒng),單鑰(私鑰)和雙鑰(公鑰)密碼系統(tǒng)。在單鑰密碼系統(tǒng)中,明文的加密和密文的解密是用同樣的密鑰。直到1976年Diffie、Hellman引入公鑰(雙鑰)密碼學(xué)之前,所有的密碼都是單鑰系統(tǒng),因此單鑰系

18、統(tǒng)也稱為傳統(tǒng)密碼系統(tǒng)。傳統(tǒng)密碼系統(tǒng)廣泛地用在今天的世界上,有兩種單鑰密碼體制:流密碼和分組密碼。流密碼是利用密鑰k產(chǎn)生一個(gè)密鑰流z=z0z1,并使用如下規(guī)則對(duì)明文串x=x0x1x2加密: y=y0y1y2=Ez0(x0)Ez1(x1)Ez2(x2)。密鑰流由密鑰流發(fā)生器f產(chǎn)生: zi=f(k,i),這里i是加密器中的記憶元件(存儲(chǔ)器)在時(shí)刻i的狀態(tài),f是由密鑰k和i產(chǎn)生的函數(shù)。而分組密碼就是將明文消息序列:m,m,m,劃分為等長的消息組(m,m,m),(m,m,m),(y,y),(y,y),各組明文分別在密鑰k=(k1,k2,kt)的控制下,按固定的算法E一組一組進(jìn)行加密。加密后輸出等長密文組

19、分組密碼的模型,如圖1.1所示。圖1.1 分組密碼的模型它與流密碼的不同之處在于輸出的每一位數(shù)字不只與相應(yīng)時(shí)刻輸入明文數(shù)字有關(guān),而是與一組長為m的明文數(shù)組有關(guān)。它們的區(qū)別就在于有無記憶性(如圖1.2)。流密碼的滾動(dòng)密鑰z0=f(k,0)由函數(shù)f、密鑰k和指定的初態(tài)0完全確定。此后,由于輸入加密器的明文可能影響加密器中內(nèi)部記憶元件的存儲(chǔ)狀態(tài),因而i(i0)可能依賴于k,0,x0,x1,xi-1等參數(shù)。圖 圖 1.2 流密碼和與分組密碼的區(qū)別分組密碼的優(yōu)點(diǎn)在于其容易實(shí)現(xiàn)同步,因?yàn)橐粋€(gè)密文組的傳輸錯(cuò)誤不會(huì)影響其他組,丟失一個(gè)密文組不會(huì)對(duì)其后的組的解密正確性帶來影響。分組密碼又分為三類:代替密碼(Su

20、bstitution)、移位密碼(Transposition)和乘積密碼。隨著計(jì)算技術(shù)的發(fā)展,早期的代替和移位密碼已無安全可言。一個(gè)增加密碼強(qiáng)度的顯然的方法是合并代替和移位密碼,這樣的密碼稱為乘積密碼。如果密文是由明文運(yùn)用輪函數(shù)多次而得,這樣的乘積密碼又稱為迭代分組密碼。DES和今天的大多數(shù)分組密碼都是迭代分組密碼。目前著名的對(duì)稱分組密碼系統(tǒng)算法有DES、IDEA、Blowfish、RC4、RC5、FEAL等。1.3 分組密碼的總體結(jié)構(gòu)和安全性分組密碼采用兩種類型的總體結(jié)構(gòu):SP網(wǎng)絡(luò)與Feistel網(wǎng)絡(luò),它們的主要區(qū)別在于:SP結(jié)構(gòu)每輪改變整個(gè)數(shù)據(jù)分組,而Feistel密碼每輪只改變輸入分組的

21、一半。AES和DES分別是這兩種結(jié)構(gòu)的代表。Feistel網(wǎng)絡(luò)(又稱Feistel結(jié)構(gòu))可把任何輪函數(shù)轉(zhuǎn)化為一個(gè)置換,它是由Horst Feistel在設(shè)計(jì)Lucifer分組密碼時(shí)發(fā)明的,并因DES的使用而流行,“加解密相似”是Feistel型密碼的實(shí)現(xiàn)優(yōu)點(diǎn)。SP網(wǎng)絡(luò)(又稱SP結(jié)構(gòu))是Feistel網(wǎng)絡(luò)的一種推廣,其結(jié)構(gòu)清晰,S一般稱為混淆層,主要起混淆作用,P一般稱為擴(kuò)散層,只要起擴(kuò)散作用。SP網(wǎng)絡(luò)可以更快速的擴(kuò)散,不過SP網(wǎng)絡(luò)的加解密通常不相似。安全性是分組密碼最重要的設(shè)計(jì)原則,它要求即使攻擊者知道分組密碼的內(nèi)部結(jié)構(gòu),仍不能破譯該密碼,這也意味著,不存在針對(duì)該密碼的某種攻擊方法,其工作量小

22、于窮密鑰搜索。但是隨著密碼分析技術(shù)的發(fā)展,使得對(duì)于具有更多輪的分組密碼的破譯成為可能。1.4 DES加密技術(shù)研究的意義DES于1977年1月15日正式被批準(zhǔn)作為美國聯(lián)邦信息處理標(biāo)準(zhǔn),同年7月15日開始生效。雖然在1994年1月的評(píng)估后,美國已經(jīng)決定1998年12月以后就不再使用DES ,然而DES算法和其各種改進(jìn)算法目前仍在世界上被廣泛的應(yīng)用者,如3-DES等。因此對(duì)DES的安全性分析仍然十分重要。數(shù)據(jù)加密標(biāo)準(zhǔn)DES,作為ANSI的數(shù)據(jù)加密算法(Data Encryption Algorithm, DEA)和ISO的DEA-1,成為一個(gè)世界范圍內(nèi)的標(biāo)準(zhǔn)己經(jīng)20多年了。盡管它帶有過去時(shí)代的特征,

23、但它很好地抗住了多年的密碼分析,除可能的最強(qiáng)有力的敵手外,對(duì)其他的攻擊仍然是安全的。同時(shí),對(duì)DES的研究極大地推動(dòng)了密碼理論的發(fā)展和應(yīng)用,對(duì)于掌握分組密碼的基本理論、設(shè)計(jì)思想和實(shí)際應(yīng)用仍然有著重要的參考價(jià)值。但隨著密碼分析技術(shù)和計(jì)算能力的提高,1994年,美國決定不再使用DES算法,目前DES算法已被更為安全的加解密算法取代。雖然這樣,但是目前還無法將DES加密算法徹底破解掉,而且DES算法的加解密算法非常快,仍是目前使用最為普遍的對(duì)稱密碼算法。在國內(nèi),隨著三金工程尤其是金卡工程的啟動(dòng),DES算法在POS、ATM、磁卡及智能卡、加油站、高速公路收費(fèi)站等領(lǐng)域被廣泛應(yīng)用,以此來實(shí)現(xiàn)關(guān)鍵數(shù)據(jù)的保密,

24、如信用卡人的PIN碼加密偉輸,IC卡與POS機(jī)之間的雙向認(rèn)證、金融交易數(shù)據(jù)包的MAC校驗(yàn)等,均用到DES算法。1.5 設(shè)計(jì)語言及驗(yàn)證工具1.5.1 C語言的簡要介紹C語言是1972年由美國的Dennis Ritchie設(shè)計(jì)發(fā)明的,并首次在UNIX操作系統(tǒng)的DEC PDP-11計(jì)算機(jī)上使用。它由早期的編程語言BCPL(Basic Combined Programming Language)發(fā)展演變而來,在1970年,AT&T貝爾實(shí)驗(yàn)室的Ken Thompson根據(jù)BCPL語言設(shè)計(jì)出較先進(jìn)的并取名為B的語言,最后導(dǎo)致了C語言的問世。 而B語言之前還有A語言,取名自世界上第一位女程序員Ada(艾達(dá))

25、。隨著微型計(jì)算機(jī)的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標(biāo)準(zhǔn), 使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標(biāo)準(zhǔn)研究所(ANSI)為C語言制定了一套ANSI標(biāo)準(zhǔn),成為現(xiàn)行的C語言標(biāo)準(zhǔn)。C語言是世界上最流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語言之一。在操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級(jí)語言,許多大型應(yīng)用軟件都是用C語言編寫的。C語言繪圖能力強(qiáng),具有可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫。它是數(shù)值計(jì)算的高級(jí)語言。C語言的主要特點(diǎn)表現(xiàn)為下幾點(diǎn):(1) 簡潔緊湊、靈活方便:C語言一共只有32個(gè)關(guān)鍵

26、字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C 語言可以像匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。 (2) 運(yùn)算符豐富:C語言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語言中難以實(shí)現(xiàn)的運(yùn)算。(3) 數(shù)據(jù)類型豐富:C語言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。(

27、4) 表達(dá)方式靈活實(shí)用:C語言提供多種運(yùn)算符和表達(dá)式值的方法,對(duì)問題的表達(dá)可通過多種途徑獲得,其程序設(shè)計(jì)更主動(dòng)、靈活。它語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大,如對(duì)整型量與字符型數(shù)據(jù)及邏輯型數(shù)據(jù)可以通用等。(5) 允許直接訪問物理地址,對(duì)硬件進(jìn)行操作:由于C語言允許直接訪問物理地址,可以直接對(duì)硬件進(jìn)行操作,因此它既具有高級(jí)語言的功能,又具有低級(jí)語言的許多功能,能夠像匯編語言一樣對(duì)位(bit)、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可用來寫系統(tǒng)軟件。(6) 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高:C語言描述問題比匯編語言迅速,工作量小、可讀性好,易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言

28、相當(dāng)。C語言一般只比匯編程序生成的目標(biāo)代碼效率低10%20%。(7) 可移植性好:C語言在不同機(jī)器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便于移植。在一個(gè)環(huán)境上用C語言編寫的程序,不改動(dòng)或稍加改動(dòng),就可移植到另一個(gè)完全不同的環(huán)境中運(yùn)行。(8) 表達(dá)力強(qiáng):C語言有豐富的數(shù)據(jù)結(jié)構(gòu)和運(yùn)算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,用來實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。C語言的運(yùn)算符有34種,范圍很寬,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)難度極大的運(yùn)算。C語言的缺點(diǎn)主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C+的一大區(qū)別。 C語言的語法限制不太嚴(yán)格,

29、對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級(jí)語言較難掌握。也就是說,對(duì)用C語言的人,要求對(duì)程序設(shè)計(jì)更熟練一些。C語言能直接訪問硬件的物理地址,能進(jìn)行位(bit)操作。兼有高級(jí)語言和低級(jí)語言的許多優(yōu)點(diǎn)。它既可用來編寫系統(tǒng)軟件,又可用來開發(fā)應(yīng)用軟件,已成為一種通用程序設(shè)計(jì)語言。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器,且計(jì)算功能、邏輯判斷功能強(qiáng)大。常用的編譯軟件有Microsoft Visual C+,Borland C+,gcc(linux系統(tǒng)下最常用的編譯器),Watcom C+ ,Borland C+, Borland C+

30、Builder,Borland C+ 3.1 for DOS,Watcom C+ 11.0 for DOS,GNU DJGPP C+, Lccwin32 C Compiler 3.1,Microsoft C,High C等。1.5.2 使用的驗(yàn)證工具的介紹Visual C+ 6.0,簡稱VC或者VC6.0,是微軟推出的一款C+編譯器,將“高級(jí)語言”翻譯為“機(jī)器語言(低級(jí)語言)”的程序。Visual C+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C+1.0后,隨著其新版本的不斷問世,Visual C+已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公

31、司推出了 Visual C+.NET(Visual C+7.0),但它的應(yīng)用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C+6.0為平臺(tái)。 C+6.0由Microsoft開發(fā), 它不僅是一個(gè)C+ 編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visual C+6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lass Wizard等開發(fā)工具,這些組件通過一個(gè)名為Develop

32、er Studio的組件集成為和諧的開發(fā)環(huán)境。Microsoft的主力軟件產(chǎn)品。Visual C+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C+1.0后,隨著其新版本的不斷問世,Visual C+已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了Visual C+.NET(Visual C+7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0,所以實(shí)際中,更多的是以Visual C+6.0為平臺(tái)。Visual C+6.0以擁有“語法高亮”,自動(dòng)編譯功能以及高級(jí)除錯(cuò)功能而著稱。

33、比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件(stdafx.h)、最小重建功能及累加連結(jié)(link)著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。由于C+是由C語言發(fā)展起來的,也支持C語言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對(duì)于模版的支持比較差。現(xiàn)在最新補(bǔ)丁為SP6,推薦安裝,否則易出現(xiàn)編譯時(shí)假死狀態(tài)。僅支持Windows操作系統(tǒng)。目前發(fā)現(xiàn)與windows 7兼容性不好,安裝成功后可能會(huì)出現(xiàn)無法打開cpp文件的現(xiàn)象。Visual C+6.0主要組

34、成部分有:(1) Developer Studio這是一個(gè)集成開發(fā)環(huán)境,我們?nèi)粘9ぷ鞯?9%都是在它上面完成的,再加上它的標(biāo)題赫然寫著“Microsoft Visual C+”,所以很多人理所當(dāng)然的認(rèn)為,那就是Visual C+了。其實(shí)不然,雖然Developer Studio提供了一個(gè)很好的編輯器和很多Wizard,但實(shí)際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會(huì)介紹。我們也知道,Developer Studio并不是專門用于VC的,它也同樣用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio當(dāng)成Visual

35、 C+,它充其量只是Visual C+的一個(gè)殼子而已。(2) MFC從理論上來講,MFC也不是專用于Visual C+,Borland C+,C+Builder和Symantec C+同樣可以處理MFC。同時(shí),用Visual C+編寫代碼也并不意味著一定要用MFC,只要愿意,用Visual C+來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,Visual C+本來就是為MFC打造的,Visual C+中的許多特征和語言擴(kuò)展也是為MFC而設(shè)計(jì)的,所以用Visual C+而不用MFC就等于拋棄了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。 (3) P

36、latform SDK這才是Visual C+和整個(gè)Visual Studio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,Platform SDK是以Microsoft C/C+編譯器為核心(不是Visual C+,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到Developer Studio沒有編譯程序的功能,那么這項(xiàng)工作是由誰來完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構(gòu)成Visual Studio的基石。第二章 DES加密算法的原理分析2.1 DES加密算法的描述DES是Data Encryption Standard(數(shù)據(jù)

37、加密標(biāo)準(zhǔn))的縮寫。它是由IBM公司在1971年設(shè)計(jì)出的一個(gè)加密算法,美國國家標(biāo)準(zhǔn)局(NBS)于1977年公布把它作為非機(jī)要部門使用的數(shù)據(jù)加密標(biāo)準(zhǔn)。 數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data Encryption Standard)算法是一個(gè)分組加密算法,也是一個(gè)對(duì)稱算法,加密和解密使用同一個(gè)算法,利用傳統(tǒng)的換位、異或、置換等加密方法。DES算法以64位(8 byte)為分組對(duì)數(shù)據(jù)加密,其中有8位(第8、16、24、32、40、48、56和64位)用作奇偶校驗(yàn)位,另外的56位為真正的密鑰,保密性依賴于密鑰,加密和解密過程使用同一個(gè)密鑰。DES對(duì)64-位的明文進(jìn)行操作。通過一個(gè)初始置換,將明文分組分成左半部分

38、和有半部分,各32位長。然后進(jìn)行16輪完全相同的運(yùn)算,這些運(yùn)算被稱為函數(shù)f,在運(yùn)算的過程中數(shù)據(jù)和密鑰結(jié)合。經(jīng)過16輪后,左、右半部分合在一起經(jīng)過一個(gè)末尾置換(初始置換的逆置換),這樣該算法就完成了。在每一輪中,密鑰位移位,然后再從密鑰的56位中選出48位。通過一個(gè)擴(kuò)展置換將數(shù)據(jù)的右半部分?jǐn)U張成48位,并通過一個(gè)異或操作與48位密鑰結(jié)合,通過8個(gè)S-盒將這48位代替成為新的32位數(shù)據(jù),再將其置換一次。這四步運(yùn)算就構(gòu)成了函數(shù)f。然后,通過另一個(gè)異或運(yùn)算,函數(shù)f的輸出與左半部分結(jié)合,其結(jié)果即成為新的右半部分,原來的右半部分成為了新的左半部分。將該操作重復(fù)16次,便實(shí)現(xiàn)了DES的16輪運(yùn)算。經(jīng)過16輪

39、后,左、右半部分合在一起,最后再通過一個(gè)逆初始置換(初始置換的逆置換),這樣就完成DES加密算法。它是分組密碼的典型代表,也是第一個(gè)被公布出來的加密標(biāo)準(zhǔn)算法。DES 加密算法的工作流程如圖2.1所示。圖2.1 DES算法流程2.2 DES加密標(biāo)準(zhǔn)現(xiàn)如今,依靠Internet的分布式計(jì)算能力,用窮舉密鑰搜索攻擊方法破譯已成為可能。數(shù)據(jù)加密標(biāo)準(zhǔn)DES已經(jīng)達(dá)到它的信任終點(diǎn)。但是作為一種Feistel加密算法的例子仍然有討論的價(jià)值。DES是對(duì)二元數(shù)字分組加密的分組密碼算法,分組長度為64比特。每64位明文加密成64位密文,沒有數(shù)據(jù)壓縮和擴(kuò)展,密鑰長度為56比特,若輸入64比特,則第8,16,24,32

40、,40,48,56,64為奇偶校驗(yàn)位,所以,實(shí)際密鑰只有56位。DES算法完全公開,其保密性完全依賴密鑰。它的缺點(diǎn)就在于密鑰太短。設(shè)明文串m=m1m2m64;密鑰串k=k1k2k64。在后面的介紹中可以看到k8,k16,k24,k32,k40,k48,k56,k64實(shí)際上是不起作用的。DES的加密過程可表示為:DES(m)= IP-1T16T15T2T1IP(m).密鑰經(jīng)過16輪置換和64位經(jīng)過16輪置換的明文一起在逆初始置換就得到了64位密文,如圖2.2是完全16輪DES算法框圖:圖2.2 完全16輪DES算法2.2.1 初始置換IP初始置換是數(shù)據(jù)加密的第一步,將64位的明文按照?qǐng)D2.3 置

41、換。把要加密的數(shù)據(jù)塊分成64位的數(shù)據(jù)塊,不滿64位的以適當(dāng)?shù)姆绞教钛a(bǔ)至64位。在第一輪運(yùn)算之前,先對(duì)數(shù)據(jù)塊作初始置換IP(初始置換是簡單的比特移位),即設(shè)有一個(gè)比特的信息塊m=m1m2m64,則IP(m)= m58 m50m7。初始置換是將輸入的64位明文分為8個(gè)數(shù)組,每一組包括8位,按1至64編號(hào)。IP的置換規(guī)則如下圖2.3所示:圖2.3 初始置換即將輸入的第58位換到第1位,第50位換到第2位,依次類推,最后一位是原來的第7位。2.2.2 IP-1是IP的逆置換由于第1位經(jīng)過初始置換后,已處于第40位。逆置換就是再將第40位換回到第1位。逆置換規(guī)則如圖2.4所示:圖2.4 IP-1置換初始

42、置換IP及其逆置換IP-1并沒有密碼學(xué)意義,因?yàn)橹脫Q前后的一一對(duì)應(yīng)關(guān)系是已知的。它們的作用在于打亂原來輸入明文的ASCII碼字劃分的關(guān)系,并將原來明文的第位m8,m16,m24,m32,m40,m48,m56,m64位(校驗(yàn)位)變成IP的輸出的一個(gè)字節(jié)。2.2.3 DES算法的迭代過程 圖2.5 DES算法的迭代過程圖圖中Li-1和Ri-1分別是第i-1次迭代結(jié)果的左右兩部分,各32比特。即Li=Ri-1, Ri=Li-1 f(Ri-1,ki)。其中輪密鑰Ki為48比特,函數(shù)F(R,K)的計(jì)算過程如圖2.5所示。輪輸入的右半部分R為32比特,R首先被擴(kuò)展成48比特,擴(kuò)展過程由圖2.6定義的置換

43、,其中將R的16個(gè)比特各重復(fù)一次。擴(kuò)展后的48比特再與子密鑰Ki異或,然后再通過一個(gè)S盒,產(chǎn)生32比特的輸出。該輸出再經(jīng)過一個(gè)由圖2.6定義的置換,產(chǎn)生的結(jié)果即為函數(shù)F(R,K)的輸出。圖2.6 擴(kuò)展置換ki是由64比特的初始密鑰(亦稱種子密鑰)導(dǎo)出的第i輪子密鑰,ki是48比特DES算法的關(guān)鍵是f(Ri-1,ki)的功能,其中的重點(diǎn)又在S-盒(Substitution Boxes)上。F函數(shù)的輸出是32比特。圖2.7 F函數(shù)計(jì)算過程圖將R經(jīng)過一個(gè)擴(kuò)展運(yùn)算E變?yōu)?8位,記為E(R)。計(jì)算E(R)K=B,對(duì)B施行代換S,此代換由8個(gè)代換盒組成,即S-盒。每個(gè)S-盒有6個(gè)輸入,4個(gè)輸出,將B依次分

44、為8組,每組6位,記B= B1B2B3B4B5B6B7B8其中Bj作為第j個(gè)S-盒的輸入,其輸出為Cj,C= C1C2C3C4C5C6C7C8就是代換S的輸出,所以代換S是一個(gè)48位輸入,32位輸出的選擇壓縮運(yùn)算,將結(jié)果C再實(shí)行一個(gè)置換P(圖2.7),即得F(R,K)。其中,擴(kuò)展運(yùn)算E與置換P主要作用是增加算法的擴(kuò)散效果。S-盒是DES算法中唯一的非線性部件,當(dāng)然也就是整個(gè)算法的安全性所在。它的設(shè)計(jì)原則與過程一直因?yàn)榉N種不為人知的因素所限,而未被公布出來。S-盒的設(shè)計(jì)如下圖2.8所示: 圖2.8 S-盒S-盒的置換規(guī)則為:取0,1,15上的4個(gè)置換,即它的4個(gè)排列排成4行,得一4*16矩陣。若

45、給定該S盒的6個(gè)輸入為b0 b1 b2 b3 b4 b5,在Si表中找出b0 b5行,b1 b2 b3 b4列的元素,以4位二進(jìn)制表示該元素,此為S-盒Si的輸出。2.2.4 子密鑰的生成圖2.9 子密鑰產(chǎn)生的流程圖圖2.9給出了子密鑰產(chǎn)生的流程圖。首先對(duì)初始密鑰經(jīng)過置換PC-1(圖2.4),將初始密鑰的8個(gè)奇偶校驗(yàn)位剔除掉,而留下真正的56比特初始密鑰。然后將此56位分為C0,D0兩部分,各28比特,C0,D0如下:C0=k57k49k44k36D0=k63k55k12k4然后分別進(jìn)行一個(gè)循環(huán)左移函數(shù)LS1,得到C1,D1,將C1(28位),D1(28位)連成56比特?cái)?shù)據(jù),再經(jīng)過密鑰置換PC

46、-2做重排動(dòng)作,從而便得到了密鑰K1(48位)。依次類推,便可得到K2,K3K16。其中LS1(1i16)表示一個(gè)或兩個(gè)位置的循環(huán)左移,當(dāng)i=1,2,9,16時(shí),移一個(gè)位置,當(dāng)i=3,4,5,6,7,8,10,11,12,13,14,15時(shí),移兩個(gè)位置。2.3 DES算法的解密過程DES解密和加密使用相同的算法,唯一的不同是密鑰的次序相反,即只需要把16個(gè)密鑰的順序倒過來。若各輪加密的密鑰分別是K1,K2,K3,K16,則解密的密鑰為K16,K15,K14,K1。為各輪產(chǎn)生的密鑰的算法也是循環(huán)的。密鑰向右移動(dòng),每次移動(dòng)的個(gè)數(shù)為:0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。D

47、ES解密過程可用符號(hào)表示如下: R16L16=IP(密文) Ri-1=Li,Li-1= Rif(Ri-1,Ki),其中,i =1,2,16解密過程和加密過程的算法都大致相同,故而編寫的C語言也是一樣,在此省略。第三章 DES加密算法的安全性評(píng)估3.1 DES弱密鑰和補(bǔ)密鑰特性由于算法各輪的子密鑰是通過改變初始密鑰這種方式得到的,因此有些初始密鑰成了弱密鑰。開始時(shí),初始值被分成了兩部分,每部分各自獨(dú)立地移動(dòng)。如果每一部分的所有位都是0和1,那么算法的任意周期的密鑰都是相同的。當(dāng)密鑰全是1或者全是0時(shí),或者一部分是1、一半是全0,會(huì)發(fā)生這種情況。此外,其中兩種弱密鑰還具有使其安全性變差的其他性質(zhì)。

48、表1以十六進(jìn)制編碼方式給出了四種弱密鑰。(注意,每個(gè)第八位是奇偶校驗(yàn)位。)弱密鑰(帶奇偶校驗(yàn)位)真實(shí)密鑰01010101010101011F1F1F1F0E0E0E0EE0E0E0E0F1F1F1F1FFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFFFFFFFFFFFFFF此外,還有一些密鑰對(duì)把明文加密成相同的密文。換句話說,密鑰對(duì)里的一個(gè)密鑰能解密鑰另一個(gè)密鑰加密的信息。這也是由于DES產(chǎn)生子密鑰這種方式所決定的。這些密鑰只產(chǎn)生2個(gè)不同的子密鑰,而不是16個(gè)不同的子密鑰。算法中每個(gè)這樣的子密鑰都使用了8次。這些子密鑰叫做半弱密鑰。關(guān)于密鑰的虛弱性其他密鑰模式也以作了調(diào)查,但是什

49、么也沒有發(fā)現(xiàn)。將密鑰的每一位取反,也就是說將所有的0用1代替,將所有的1用0代替。假設(shè)用原來的密鑰加密一個(gè)明文分組得到一個(gè)密文分組,那只用該密鑰的補(bǔ)密鑰加密將該明文分組的補(bǔ)便得到該密文分組的補(bǔ)。如果是x的補(bǔ),則有如下的等式:子密鑰與每一輪經(jīng)擴(kuò)展置換輸出的右半部分異或運(yùn)算,是其互補(bǔ)特性的直接結(jié)果。這表明,對(duì)DES的選擇明文攻擊僅僅需要測試其可能的個(gè)密鑰的一半,個(gè)即可。這是否是DES的弱點(diǎn)有待討論。因?yàn)榻^大多數(shù)消息并無明文補(bǔ)分組,用戶被告誡不要使用補(bǔ)密鑰。3.2 DES的密鑰的長度和迭代次數(shù) IBM最初向NBS提交的方案有112位密鑰。到DES成為一個(gè)標(biāo)準(zhǔn)時(shí),被消減至56位密鑰。許多密碼學(xué)家力薦使

50、用更長的密鑰,他們的理由集中在窮舉攻擊的可能性上。1976年及1977年,Diffie和Hellman證明,一臺(tái)專用于破譯DES的并行計(jì)算機(jī)能在一天中重新找到密鑰,但將耗資2000萬美元。1981年,Diffie將這個(gè)數(shù)據(jù)增加到2天的搜索時(shí)間和5000萬美元的費(fèi)用。Diffie和Hellman據(jù)此指出,除了像NSA這種機(jī)構(gòu)外,任何人都不可能破譯DES,,但到1990年時(shí),DES將完全是不安全的。Hellman提出了另一個(gè)反對(duì)短的密鑰長度的理由:用存儲(chǔ)空間的增大來換取時(shí)間的減少,將加速這一搜索過程。如用每個(gè)可能的密鑰加密一個(gè)明文分組能得到個(gè)可能的結(jié)果,Hellman提出了計(jì)算和存儲(chǔ)這些結(jié)果可能性

51、。這樣的話,要破譯出一個(gè)未知的密鑰,一個(gè)密鑰分析者所要的一切即是:把明文分組插入到加密序列中,恢復(fù)所得到的密文,從而找到密鑰。Hellman估計(jì),這種破譯機(jī)的費(fèi)用將不會(huì)超過500萬美元。同時(shí),DES的硬件實(shí)現(xiàn)方法逐漸接近Diffie和Hellman的專用機(jī)所要求每秒百萬次加密的速度。1984年制造出了每秒完成次加密的DES芯片。到1987年又研制出了每秒完成次的加密芯片,并且還研制出了每秒能搜索一百萬個(gè)密鑰的芯片,而且,在1993年,Michael Wiener 設(shè)計(jì)一個(gè)一百萬美元的機(jī)器,它能在平均3.5小時(shí)內(nèi),完成對(duì)DES的窮舉攻擊。直到1990年,兩位以色列數(shù)學(xué)家Biham和Shamir的

52、發(fā)現(xiàn)了差分密鑰分析技術(shù),這個(gè)技術(shù)將密鑰長度問題暫且擱置起來。在討論這個(gè)技術(shù)前,讓我先轉(zhuǎn)到DES的其他一些設(shè)計(jì)準(zhǔn)則上去。DES為什么是16輪而不是32輪?經(jīng)過5輪迭代后,密文每一位基本上是所有明文和密鑰位的函數(shù),經(jīng)過8輪迭代后,密文基本上是所有明文和密鑰位的隨機(jī)函數(shù)。那為什么算法在8輪后還不停止呢?近年來,多種降低輪數(shù)的DES已被成功地攻擊。1982年3輪或四輪DES就被輕易地破解。幾年后,6輪DES也被破譯了。Diffie和Hellman的差分密鑰分析同樣地闡述了這一點(diǎn):對(duì)于低16輪的任意DES的已知明文攻擊要比窮舉攻擊有效。有趣的是只有當(dāng)算法恰好有16輪時(shí),只有窮舉攻擊最有效。3.3 DES

53、加密算法S-盒的設(shè)計(jì) 除了因減少密鑰長度而遭到非難外,NSA還被指責(zé)修改了S-盒的內(nèi)容。當(dāng)被質(zhì)問S-盒的設(shè)計(jì)依據(jù)時(shí),NSA表示,算法設(shè)計(jì)原理“敏感的”,不宜公之于眾。許多密碼專家擔(dān)心NSA設(shè)計(jì)S-盒隱藏了“陷門”,使得只有他們才可以破譯算法。自那時(shí)起,人們?cè)诜治鯯-盒的設(shè)計(jì)和運(yùn)算上做了大量的工作。70年代中葉,Lexar公司和Bell實(shí)驗(yàn)室研究了S-盒的運(yùn)算,盡管他們都發(fā)現(xiàn)了不能解釋的特征,但是研究中并沒有找到弱點(diǎn)。如果S-盒是隨機(jī)選擇的,但是S-盒的線性變換將具有比預(yù)期更大的普遍性。Bell實(shí)驗(yàn)小組說S-盒可能隱藏了陷門,Lexar的報(bào)告結(jié)論是:已經(jīng)發(fā)現(xiàn)的DES的結(jié)構(gòu)毫無疑問增強(qiáng)了系統(tǒng)抗擊一

54、定攻擊的能力,同時(shí)也正是這些結(jié)構(gòu)似乎削弱系統(tǒng)抗攻擊的能力。另一方面,這個(gè)報(bào)告也提出了警告:探尋S-盒的結(jié)構(gòu)問題是很復(fù)雜的事,借助人的思維能力去發(fā)現(xiàn)隨機(jī)數(shù)的結(jié)構(gòu)與實(shí)際的結(jié)構(gòu)根本不相同。在DES的第二次討論會(huì)上,NSA透漏了S-盒的幾條設(shè)計(jì)準(zhǔn)則。這些并未消除人們的猜測,爭論還在繼續(xù)。第四個(gè)S-盒的后三位的輸出可以像第一位的輸出一樣,通過對(duì)某些輸入位取補(bǔ)推出。經(jīng)過盡心挑選的兩個(gè)不同輸入可以使S-盒產(chǎn)生相同的輸出,如果只改變?nèi)齻€(gè)相鄰S-盒的輸入位,可使單論DES輸出相同。Shamir注意到S-盒的輸入項(xiàng)看起來具有某種不平衡,但是這種不平衡并不導(dǎo)致可能的攻擊。3.4 DES加密算法的應(yīng)用誤區(qū)DES算法具

55、有極高安全性,到目前為止,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。而56位長的密鑰的窮舉空間為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算法介紹我們可以看到:DES算法中只用到64位密鑰中的其中56位,而第8、16、24、.64位8個(gè)位并未參與DES運(yùn)算,這一點(diǎn),向我們提出了一個(gè)應(yīng)用上的要求,即DES的安全性是基于除了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)用上的誤區(qū),留下了被人攻擊、被人破譯的極大隱患。雖然已發(fā)表的針對(duì)

溫馨提示

  • 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)論