信息安全理論與技術(shù) 3、密碼學知識_第1頁
信息安全理論與技術(shù) 3、密碼學知識_第2頁
信息安全理論與技術(shù) 3、密碼學知識_第3頁
信息安全理論與技術(shù) 3、密碼學知識_第4頁
信息安全理論與技術(shù) 3、密碼學知識_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

信息安全基本原理與技術(shù)目錄信息安全概述常見攻擊手段密碼學知識認證與數(shù)字簽名網(wǎng)絡安全防御體系訪問控制可信計算密碼學的基本概念(1)密碼學是關于加密和解密變換的一門科學,是保護數(shù)據(jù)和信息的有力武器。密碼是什么?密碼就是變換。(信息代碼變換、數(shù)據(jù)電平變換)變換是什么?變換是一種算法實現(xiàn)過程。誰來做變換?變換可以由硬件和軟件實現(xiàn)。(人、器件部件、計算機)密碼學的基本概念(2)密碼學(Cryptology):研究信息系統(tǒng)安全保密的科學。它包含兩個分支

密碼編碼學(Cryptography),對信息進行編碼實現(xiàn)隱蔽信息的一門學問

密碼分析學(Cryptanalytics),研究分析破譯密碼的學問。

明文(消息)(Plaintext):被隱蔽消息。密文(Ciphertext)或密報(Cryptogram):明文經(jīng)密碼變換成的一種隱蔽形式。加密(Encryption):將明文變換為密文的過程。解密(Decryption):加密的逆過程,即由密文恢復出原明文的過程。加密員或密碼員(Cryptographer):對明文進行加密操作的人員。密碼學的基本概念(3)

加密算法(Encryptionalgorithm):密碼員對明文進行加密時所采用的一組規(guī)則。接收者(Receiver):傳送消息的預定對象。解密算法:接收者對密文進行解密時所采用的一組規(guī)則。密鑰(Key):控制加密和解密算法操作的數(shù)據(jù)處理,分別稱作加密密鑰和解密密鑰。截收者(Eavesdropper):在信息傳輸和處理系統(tǒng)中的非受權(quán)者,通過搭線竊聽、電磁竊聽、聲音竊聽等來竊取機密信息。密碼學的基本概念(4)

密碼分析(Cryptanalysis):截收者試圖通過分析從截獲的密文推斷出原來的明文或密鑰。密碼分析員(Cryptanalyst):從事密碼分析的人。被動攻擊(Passiveattack):對一個保密系統(tǒng)采取截獲密文進行分析的攻擊。主動攻擊(Activeattack):非法入侵者(Tamper)、攻擊者(Attcker)或黑客(Hacker)主動向系統(tǒng)竄擾,采用刪除、增添、重放、偽造等竄改手段向系統(tǒng)注入假消息,達到利已害人的目的。密碼學的基本概念(5)一個密碼系統(tǒng),通常簡稱為密碼體制,由5部分組成:明文空間M全體明文的集合密文空間C全體密文的集合密鑰空間K全體密鑰的集合加密算法E一組由M到C的加密變換解密算法D一組由C到M的解密變換密碼體制基本組成信息加密傳輸?shù)倪^程加密:C=E(M,Ke)MCEKeCMKdD解密:M=D(C,Kd)M------明文C------密文Ke-----加密密鑰Kd-----解密密鑰E-------加密算法D------解密算法明文加密算法加密密鑰K1網(wǎng)絡信道解密算法明文解密密鑰K2密文用戶A用戶B傳送給B的信息B收到信息竊聽者CC竊聽到的信息!@#$%^注意數(shù)據(jù)安全基于密鑰而不是算法的保密。也就是說,對于一個密碼體制,其算法是可以公開的,讓所有人來使用、研究。但具體對于某次加密過程中所使用的密鑰,則是保密的。例如,加密算法為Y=aX+b,其中,X為明文,計算后Y成為密文。在具體加密過程中,a、b的取值為密鑰,假設為(2,3),X=2,則密文計算后為7。在這個過程中,Y=aX+b可以公開,但具體a=2,b=3的取值不公開。所以即使對方知道了采用的加密算法,由于不知道具體參數(shù)取值,也無法根據(jù)密文計算出明文。密碼系統(tǒng)的分類(1)根據(jù)密鑰的使用方式分類

對稱密碼體制(秘密鑰密碼體制)用于加密數(shù)據(jù)的密鑰和用于解密數(shù)據(jù)的密鑰相同,或者二者之間存在著某種明確的數(shù)學關系。加密:EK(M)=C解密:DK(C)=M非對稱密碼體制(公鑰密碼體制)用于加密的密鑰與用于解密的密鑰是不同的,而且從加密的密鑰無法推導出解密的密鑰。用公鑰KP對明文加密可表示為:EKP(M)=C用相應的私鑰KS對密文解密可表示為:DKS(C)=M密碼系統(tǒng)的分類(2)根據(jù)明文和密文的處理方式分類

分組密碼體制(BlockCipher)

設M為明文,分組密碼將M劃分為一系列明文塊Mi,通常每塊包含若干字符,并且對每一塊Mi都用同一個密鑰Ke進行加密。M=(M1,M2,…,Mn),C=(C1,C2,

…,Cn,),其中Ci=E(Mi,Ke),i=1,2…,n。序列密碼體制(StreamCipher)將明文和密鑰都劃分為位(bit)或字符的序列,并且對明文序列中的每一位或字符都用密鑰序列中對應的分量來加密。M=(M1,M2,…,Mn),Ke=(ke1,ke2,…,ken),C=(C1,C2,…,Cn),其中Ci=E(mi,kei),i=1,2,…,n。

密碼系統(tǒng)的分類(3)根據(jù)加密算法是否變化分類設E為加密算法,K0,K1,…,Kn,為密鑰,M0,M1,…,Mn為明文,C為密文

固定算法密碼體制C0=E(M0,K0),C1=E(M1,K1),...,Cn=E(Mn,Kn)

變化算法密碼體制C0=E1(M0,K0),C1=E2(M1,K1),...,Cn=En(Mn,Kn)

密碼分析

截收者在不知道解密密鑰及通信者所采用的加密體制的細節(jié)條件下,對密文進行分析,試圖獲取機密信息。研究分析解密規(guī)律的科學稱作密碼分析學。密碼分析在外交、軍事、公安、商業(yè)等方面都具有重要作用,也是研究歷史、考古、古語言學和古樂理論的重要手段之一。密碼分析

密碼設計和密碼分析是共生的、又是互逆的,兩者密切有關但追求的目標相反。兩者解決問題的途徑有很大差別

密碼設計是利用數(shù)學來構(gòu)造密碼密碼分析除了依靠數(shù)學、工程背景、語言學等知識外,還要靠經(jīng)驗、統(tǒng)計、測試、眼力、直覺判斷能力……,有時還靠點運氣。密碼分析方法—分析法

確定性分析法利用一個或幾個已知量(比如,已知密文或明文-密文對)用數(shù)學關系式表示出所求未知量(如密鑰等)。已知量和未知量的關系視加密和解密算法而定,尋求這種關系是確定性分析法的關鍵步驟。

統(tǒng)計分析法利用明文的已知統(tǒng)計規(guī)律進行破譯的方法。密碼破譯者對截收的密文進行統(tǒng)計分析,總結(jié)出其間的統(tǒng)計規(guī)律,并與明文的統(tǒng)計規(guī)律進行對照比較,從中提取出明文和密文之間的對應或變換信息。

密碼可能經(jīng)受的攻擊攻擊類型攻擊者擁有的資源惟密文攻擊加密算法截獲的部分密文已知明文攻擊加密算法,截獲的部分密文和相應的明文選擇明文攻擊加密算法加密黑盒子,可加密任意明文得到相應的密文選擇密文攻擊加密算法解密黑盒子,可解密任意密文得到相應的明文密碼分析方法--窮舉破譯法

對截收的密報依次用各種可解的密鑰試譯,直到得到有意義的明文;一般來說,要獲取成功必須嘗試所有可能密鑰的一半。

或在不變密鑰下,對所有可能的明文加密直到得到與截獲密報一致為止,此法又稱為完全試湊法(Completetrial-and-errorMethod)。只要有足夠多的計算時間和存儲容量,原則上窮舉法總是可以成功的。但實際中,任何一種能保障安全要求的實用密碼都會設計得使這一方法在實際上是不可行的。

注意Internet的廣泛應用,可以把全世界的計算機資源連成一體,形成巨大的計算能力,從而擁有巨大的密碼破譯能力,使原來認為安全的密碼被破譯。1994年,40多個國家的600多位科學家通過Internet,歷時9個月破譯了RSA-129密碼,1999年又破譯了RSA-140密碼,2005年,RSA-200也被成功破譯。1997年6月18日美國科羅拉多州以RockeVerser為首的工作小組宣布,通過利用Internet上的數(shù)萬臺微機,歷時4個多月,通過窮舉破譯了DES。因此,在21世紀,只有經(jīng)得起通過Internet進行全球攻擊的密碼,才是安全的密碼。經(jīng)典密碼學經(jīng)典密碼學經(jīng)典密碼(古典密碼)對于今天來說,是極不安全的,是極易破解的,但其基本方法仍然是近、現(xiàn)代密碼學的基礎。經(jīng)典密碼運用的兩種基本技術(shù):代換法:將明文字母替換成其他字母、數(shù)字或符號置換法:明文的字母保持相同,但順序被打亂代換技術(shù)代換法,是將明文字母替換成其他字母、數(shù)字或符號的方法。例如:明晨五點發(fā)動反攻明文:MINGCHENWUDIANFADONGFANGONG密文:GNOGNAFGNODAFNAIDUWNEHCGNIMCaesar密碼(已知的最早的代換密碼)例如:明晨五點發(fā)動反攻明文:MINGCHENWUDIANFADONGFANGONG密文:PLQJFKHQZXGLDQIDGRQJIDQJRQJCaesar密碼如果讓每個字母等價于一個數(shù)值:a=0,b=1,…,z=25則加密公式為:

C=E(p)=(p+3)mod26更一般地:

C=E(p)=(p+k)mod26解密:p=D(C)=(C-k)mod26用窮舉分析可輕松破解Caesar密碼通常,加密和解密算法是已知的。需測試的密鑰只有25個。明文所用的語言是已知的,其意義易于識別。因此,為了提高窮舉分析的難度,密鑰空間必須很大。例如3-DES算法的密鑰長度為168位,密鑰空間為2168。單表代換密碼使用一個密文字母表,并且用密文字母表中的一個字母來代替一個明文字母表中的一個字母。例如,明文a用c來代換,b用剩下的25個字母中隨機的一個來代換,c用剩下的24個字母中隨機的一個來代換,……,以此類推。這樣,密鑰空間為26!,約4*1026種可能的密鑰。破解單表代換密碼根據(jù)頻率統(tǒng)計進行分析確定每個字母被映射到什么字母單個字母出現(xiàn)的可能是A或I一般來說3個字母出現(xiàn)的可能是THE或AND還可以用其他通常出現(xiàn)的雙字母或三字母組合還可以應用其它很少應用的字母最常見的兩字母組合,依照出現(xiàn)次數(shù)遞減的順序排列:TH、HE、IN、ER、AN、RE、DE、ON、ES、ST、EN、AT、TO、NT、HA、ND、OU、EA、NG、AS、OR、TI、IS、ET、IT、AR、TE、SE、HI、OF最常見的三字母組合,依照出現(xiàn)次數(shù)遞減的順序排列:THE、ING、AND、HER、ERE、ENT、THA、NTH、WAS、ETH、FOR、DTH改變明文的語法模式和結(jié)構(gòu)

------抵抗頻度分析可采用多表代換密碼Playfair密碼Hill密碼Vigenère密碼采用相關的單表代換規(guī)則由密鑰來決定給定變換的具體規(guī)則最著名的多表代換加密體制--Playfair由英國科學家CharlesWheatstone于1854年發(fā)明,以其好友BaronPlayfair的名字命名。在第一次世界大戰(zhàn)中,英軍使用Playfair密碼作為陸軍的標準加密體制。在第二次世界大戰(zhàn)中,盟軍使用它作為通信加密工具。LordPeterWimsey給出的例子Playfair算法基于使用一個5×5字母矩陣,該矩陣使用一個關鍵詞構(gòu)造。從左至右、從上至下填入該關鍵詞的字母(去除重復字母),然后再以字母表順序?qū)⒂嘞碌淖帜柑钊刖仃囀S嗫臻g。字母I和J被算作一個字母。MONARCHYBDEFGI/JKLPQSTUVWXZ屬于相同對中的重復的明文字母將用一個填充字母進行分隔,因此,詞balloon將被加密為balxloon。屬于該矩陣相同行的明文字母將由其右邊的字母替代,而行的最后一個字母由行的第一個字母代替。例如,ar被加密為RM。屬于相同列的明文字母將由它下面的字母代替,而列的最后一個字母由列的第一個字母代替。例如,mu被加密為CM否則,明文的其他字母將由與其同行,且與下一個同列的字母代替。因此,hs成為BP,ea成為IM(或JM,這可根據(jù)加密者的意愿而定)。代換規(guī)則Playfair密碼的優(yōu)點Playfair密碼與簡單的單一字母替代法密碼相比有了很大的進步雖然僅有26個字母,但有26×26=676種字母對,因此,識別字母對要比單個字母要困難得多一個明文字母有多種可能的代換密文字母,使得頻率分析困難的多(hs成為BP,hq成為YP)。由于這些原因,Playfair密碼過去長期被認為是不可破的。最簡單的多表代換密碼---Vigenère

維吉尼亞密碼選擇一個詞組作為密鑰,密鑰中每個字母用來確定一個代換表,每個密鑰字母用來加密一個明文字母。例如密鑰字母為a,明文字母為c,則密文字母為0+2(mod26)=2,也就是c。直到所有的密鑰字母用完,后再從頭開始,使用第一個密鑰字母加密。也就是說,密鑰循環(huán)使用。一個例子明文為attackbeginsatfive,密鑰為cipher,

attackbeginsatfive明文+cipherciphercipher密鑰

----------------------------------------------

=cbihgbdmvprjcbupzv密文去除空格后為cbihgbdmvprjcbupzv破解維吉尼亞密碼的一個途徑如果密文足夠長,其間會有大量重復的密文序列出現(xiàn)。通過計算重復密文序列間距的公因子,分析者可能猜出密鑰詞的長度(因為密鑰詞是重復使用的)。一次一密---無法攻破的加密體制一次一密亂碼本(one-timepad),由MajorJosephMauborgne和AT&T公司的GilbertVernam在1917發(fā)明。一次一密亂碼本不外乎是一個大的不重復的真隨機密鑰字母集,這個密鑰字母集被寫在幾張紙上,并被粘成一個亂碼本。發(fā)送者用每一個明文字符和一次一密亂碼本密鑰字符的模26加法。每個密鑰僅對一個消息使用一次。發(fā)送者對所發(fā)送的消息加密,然后銷毀亂碼本中用過的一頁或磁帶部分。接收者有一個同樣的亂碼本,并依次使用亂碼本上的每個密鑰去解密密文的每個字符。接收者在解密消息后銷毀亂碼本中用過的一頁或磁帶部分。新的消息則用亂碼本中新的密鑰加密。

一次一密的優(yōu)點面對一條待破譯的密文,攻擊者能夠找到很多個與密文等長的密鑰,使得破譯出的明文符合語法結(jié)構(gòu)的要求,因為密鑰本身是隨機的,是沒有規(guī)律的。就算在這些可能的密鑰中存在真正的密鑰,攻擊者也無法在這些可能的密鑰中確定真正的密鑰,因為密鑰只是用一次,攻擊者無法用其它密文來驗證這個密鑰,因此是無法攻破的。一次一密的缺點一個一次一密加密系統(tǒng),需要在某個規(guī)則基礎上建立百萬個隨機字符,提供這樣規(guī)模的真正隨機字符集市相當艱巨的任務。對每一條消息,需要提供給發(fā)送發(fā)和接收方等長度的密鑰,因此存在龐大的密鑰分配問題。基于這些原因,一次一密在實際中極少應用。置換技術(shù)在置換密碼中,明文的字母保持相同,但順序被打亂了。在簡單的縱行換位密碼中,明文以固定的寬度水平地寫在一張圖表紙上,密文按垂直方向讀出,解密就是將密文按相同的寬度垂直地寫在圖表紙上,然后水平地讀出明文。Plaintext:COMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECOMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECiphertext:CAELPOPSEEMHLANPIOSSUCWTITSBIVEMUTERATSGYAERBTX

這種簡單的技巧對于密碼分析者來說是微不足道的??稍谥脫Q前,把列的次序打亂,列的次序就是算法的密鑰。代換技術(shù)與置換技術(shù)通常結(jié)合使用。一般地,可先利用代換技術(shù)加密,再用置換技術(shù)將密文再次加密。轉(zhuǎn)輪機---經(jīng)典密碼的機械階段20世紀20年代,隨著機械和機電技術(shù)的成熟,以及電報和無線電需求的出現(xiàn),引起了密碼設備方面的一場革命——發(fā)明了轉(zhuǎn)輪密碼機(簡稱轉(zhuǎn)輪機,Rotor),轉(zhuǎn)輪機的出現(xiàn)是密碼學發(fā)展的重要標志之一。美國人EdwardHebern認識到:通過硬件卷繞實現(xiàn)從轉(zhuǎn)輪機的一邊到另一邊的單字母代替,然后將多個這樣的轉(zhuǎn)輪機連接起來,就可以實現(xiàn)幾乎任何復雜度的多個字母代替。轉(zhuǎn)輪機由一個鍵盤和一系列轉(zhuǎn)輪組成,每個轉(zhuǎn)輪是26個字母的任意組合。轉(zhuǎn)輪被齒輪連接起來,當一個轉(zhuǎn)輪轉(zhuǎn)動時,可以將一個字母轉(zhuǎn)換成另一個字母。照此傳遞下去,當最后一個轉(zhuǎn)輪處理完畢時,就可以得到加密后的字母。為了使轉(zhuǎn)輪密碼更安全,人們還把幾種轉(zhuǎn)輪和移動齒輪結(jié)合起來,所有轉(zhuǎn)輪以不同的速度轉(zhuǎn)動,并且通過調(diào)整轉(zhuǎn)輪上字母的位置和速度為破譯設置更大的障礙。轉(zhuǎn)輪機的工作原理每一個旋轉(zhuǎn)輪代表一個單表代換系統(tǒng),旋轉(zhuǎn)一個引腳,再轉(zhuǎn)變?yōu)榱硪粋€單表代換系統(tǒng)。為使機器更安全,可把幾種轉(zhuǎn)輪和移動的齒輪結(jié)合起來。因為所有轉(zhuǎn)輪以不同的速度移動,n個轉(zhuǎn)輪的機器的周期是26n,即個單表代換系統(tǒng)。最后一個轉(zhuǎn)輪轉(zhuǎn)完一圈之后,它前面的轉(zhuǎn)輪就旋轉(zhuǎn)一個引腳,有點像時鐘的齒輪。轉(zhuǎn)輪機的經(jīng)典---ENIGMA1918年,德國發(fā)明家ArthurScherbius用二十世紀的電氣技術(shù)來取代已經(jīng)過時的鉛筆加紙的加密方法。他研究的結(jié)果就是永遠被尊為經(jīng)典的ENIGMA。ENIGMA首先是作為商用加密機器得到應用的。它的專利在1918年在美國得到確認。售價大約相當于現(xiàn)在的30000美元。ENIGMA在二戰(zhàn)中的傳奇二戰(zhàn)中德國軍隊大約裝備了三萬臺ENIGMA。在第二次世界大戰(zhàn)開始時,德軍通訊的保密性在當時世界上無與倫比。ENIGMA在納粹德國二戰(zhàn)初期的勝利中起到的作用是決定性的。精密的轉(zhuǎn)輪破解ENIGMA波蘭人在1934年,研究出了破譯ENIGMA的方法。德國人在1938年底又對ENIGMA作了大幅度改進。1939年7月25日,波蘭情報部門邀請英國和法國的情報部門共商合作破譯ENIGMA。1939年7月,英國情報部門在倫敦以北約80公里的一個叫布萊奇利的地方征用了一所莊園。一個月后,鮮為人知的英國政府密碼學校遷移到此。不久,一批英國數(shù)學家也悄悄來到這所莊園,破譯恩尼格瑪密碼的工作進入了沖刺階段。在這里剛開始時只有五百人,戰(zhàn)爭結(jié)束時已經(jīng)增加到了七千人。為了破譯ENIGMA,英國人將國內(nèi)最優(yōu)秀的數(shù)學家悉數(shù)照進莊園。其中就有從劍橋來的圖靈。正是他打破了ENIGMA不可戰(zhàn)勝的神話。雖然英國人成功的破譯了ENIGMA,但是他們極好地隱藏了這一點,使得戰(zhàn)爭的進程大大加速。

從海里打撈起來的二戰(zhàn)中用到的ENIGMA對稱密碼體制概述對稱密碼體制就是在加密和解密是用到的密鑰相同,或者加密密鑰和解密密鑰之間存在著確定的轉(zhuǎn)換關系。對稱密碼體制又有兩種不同的實現(xiàn)方式,即分組密碼和序列密碼(或稱流密碼)。流密碼與分組密碼流密碼每次加密數(shù)據(jù)流中的一位或一個字節(jié)。分組密碼,就是先把明文劃分為許多分組,每個明文分組被當作一個整體來產(chǎn)生一個等長(通常)的密文分組。通常使用的是64位或128位分組大小。分組密碼的實質(zhì),是設計一種算法,能在密鑰控制下,把n比特明文簡單而又迅速地置換成唯一n比特密文,并且這種變換是可逆的(解密)。分組密碼分組密碼算法實際上就是在密鑰的控制下,簡單而迅速地找到一個置換,用來對明文分組進行加密變換,一般情況下對密碼算法的要求是:分組長度m足夠大(64~128比特)密鑰空間足夠大(密鑰長度64~128比特)密碼變換必須足夠復雜(包括子密鑰產(chǎn)生算法)分組密碼的設計思想擴散(diffusion)

將明文及密鑰的影響盡可能迅速地散布到較多個輸出的密文中。產(chǎn)生擴散的最簡單方法是通過“置換(Permutation)”(比如:重新排列字符)?;煜?confusion)其目的在于使作用于明文的密鑰和密文之間的關系復雜化,是明文和密文之間、密文和密鑰之間的統(tǒng)計相關特性極小化,從而使統(tǒng)計分析攻擊不能奏效。通常的方法是“代換(Substitution)”(回憶愷撒密碼)。DES(DataEncryptionStandard)

美國國家標準局NBS于1973年5月發(fā)出通告,公開征求一種標準算法用于對計算機數(shù)據(jù)在傳輸和存儲期間實現(xiàn)加密保護的密碼算法。1975年美國國家標準局接受了美國國際商業(yè)機器公司IBM推薦的一種密碼算法并向全國公布,征求對采用該算法作為美國信息加密標準的意見。經(jīng)過兩年的激烈爭論,美國國家標準局于1977年7月正式采用該算法作為美國數(shù)據(jù)加密標準。1980年12月美國國家標準協(xié)會正式采用這個算法作為美國的商用加密算法。DES的實質(zhì)DES是一種對稱密碼體制,它所使用的加密和解密密鑰是相同的,是一種典型的按分組方式工作的密碼。其基本思想是將二進制序列的明文分成每64bit一組,用長為64bit(56bit)的密鑰對其進行16輪代換和置換加密,最后形成密文。DES的基本加密流程加密前,先將明文分成64bit的分組,然后將64bit二進制碼輸入到密碼器中,密碼器對輸入的64位碼首先進行初始置換,然后在64bit主密鑰產(chǎn)生的16個子密鑰控制下進行16輪乘積變換,接著再進行末置換就得到64位已加密的密文。DES算法的一般描述子密鑰產(chǎn)生器

密鑰(64bit)除去第8,16,…,64位,共8個校驗位置換選擇1(PC-1)Ci(28bit)Di(28bit)循環(huán)左移ti+1位循環(huán)左移ti+1位置換選擇2(PC-2)Ki(48bit)置換選擇1移位次數(shù)表第i次迭代12345678910111213141516循環(huán)左移次數(shù)1122222212222221若C1=c1c2…c28,D1=d1d2…d28則C2=c2c3…c28c1,D2=d2d3…d28d1。置換選擇2置換選擇PC-2將C中第9182225位和D中第791526位刪去,并將其余數(shù)字置換位置后送出48bit數(shù)字作為第i次迭代時所用的子密鑰kiCiDi=b1b2…b56,則ki=b14b17b11b24…b36b29b32

初始置換將64個明文比特的位置進行置換,得到一個亂序的64bit明文組,然后分成左右兩段,每段為32bit以L和R表示。2.乘積變換Li-1(32比特)Ri-1(32比特)選擇擴展運算E48比特寄存器子密鑰Ki(48比特)48比特寄存器選擇壓縮運算S32比特寄存器置換運算PLi(32比特)Ri(32比特)Li=Ri-1Ri=Li-1F(Ri-1,Ki)選擇擴展運算E對原第321458912131617202124252829各位重復一次得到數(shù)據(jù)擴展。1,2,…………3232123454567898910111213121314151617161718192021202122232425242526272829282930313211,2,…………48選擇擴展運算結(jié)果(48bit)E的輸入(32bit)選擇壓縮運算S將前面送來的48bit數(shù)據(jù)自左至右分成8組,每組6bit。然后并行送入8個S盒,每個S盒為一非線性代換網(wǎng)絡,有4個輸出。

S盒的內(nèi)部結(jié)構(gòu)S盒的內(nèi)部計算若輸入為b1b2b3b4b5b6其中b1b6兩位二進制數(shù)表達了0至3之間的數(shù)。b2b3b4b5為四位二進制數(shù),表達0至15之間的某個數(shù)。在S1表中的b1b6行b2b3b4b5列找到一數(shù)m(0≤m≤15),若用二進制表示為m1m2m3m4,則m1m2m3m4便是它的4bit輸出。例如,輸入為001111,b1b6=01=1,b2b3b4b5=0111=7,即在S1盒中的第1行第7列求得數(shù)1,所以它的4bit輸出為0001。關于S盒S盒是DES的核心,也是DES算法最敏感的部分,其設計原理至今仍諱莫如深,顯得非常神秘。所有的替換都是固定的,但是又沒有明顯的理由說明為什么要這樣,有許多密碼學家擔心美國國家安全局設計S盒時隱藏了某些陷門,使得只有他們才可以破譯算法,但研究中并沒有找到弱點。置換運算P對S1至S8盒輸出的32bit數(shù)據(jù)進行坐標變換置換P輸出的32bit數(shù)據(jù)與左邊32bit即Ri-1諸位模2相加所得到的32bit作為下一輪迭代用的右邊的數(shù)字段,并將Ri-1并行送到左邊的寄存器作為下一輪迭代用的左邊的數(shù)字段。逆初始置換IP-1

將16輪迭代后給出的64bit組進行置換得到輸出的密文組1,2,…………64408481656246432397471555236331386461454226230375451353216129364441252206028353431151195927342421050185826331419491757251,2,…………64密文(64bit)置換碼組(64bit)DES的解密解密算法與加密算法相同,只是子密鑰的使用次序相反。DES的安全性DES在20多年的應用實踐中,沒有發(fā)現(xiàn)嚴重的安全缺陷,在世界范圍內(nèi)得到了廣泛的應用,為確保信息安全做出了不可磨滅的貢獻。存在的安全弱點:密鑰較短:56位密鑰空間約為7.2*1016。1997年6月RockeVerser小組通過因特網(wǎng)利用數(shù)萬臺微機歷時4個月破譯了DES;1998年7月,EFF用一臺25萬美元的機器,歷時56小時破譯DES。存在弱密鑰:有的密鑰產(chǎn)生的16個子密鑰中有重復者。互補對稱性:C=DES(M,K),則C’=DES(M’,K’),其中,M’,C’,K’是M,C,K的非。DES具有良好的雪崩效應雪崩效應:明文或密鑰的微小改變將對密文產(chǎn)生很大的影響。特別地,明文或密鑰的某一位發(fā)生變化,會導致密文的很多位發(fā)生變化。DES顯示了很強的雪崩效應兩條僅有一位不同的明文,使用相同的密鑰,僅經(jīng)過3輪迭代,所得兩段準密文就有21位不同。一條明文,使用兩個僅一位不同的密鑰加密,經(jīng)過數(shù)輪變換之后,有半數(shù)的位都不相同。多重DESDES在窮舉攻擊下相對比較脆弱,因此需要用某種算法來替代它,有兩種解決方法:設計全新的算法;用DES進行多次加密,且使用多個密鑰,即多重DES。這種方法能夠保護用于DES加密的已有軟件和硬件繼續(xù)使用。二重DES(DoubleDES)給定明文P和兩個加秘密鑰k1和k2,采用DES對P進行加密E,有密文C=EK2(EK1(P))對C進行解密D,有明文P=DK1(DK2(C))EEPXCK2K1加密圖DDK2K1CXP解密圖二重DES很難抵擋住中間相遇攻擊法(Meet-in-the-MiddleAttack)C=EK2(EK1(P))從圖中可見

X=EK1(P)=DK2(C)EEPCXK1K2DDCPXK2K1加密解密

若給出一個已知的明密文對(P,C)做:對256個所有密鑰K1做對明文P的加密,得到一張密鑰對應于密文X的一張表;類似地對256個所有可能的密鑰K2做對密文C的解密,得到相應的“明文”X。做成一張X與K2的對應表。比較兩個表就會得到真正使用的密鑰對K1,K2。帶有雙密鑰的三重DES

(TripleDESwithTwoKeys)Tuchman給出雙密鑰的EDE模式(加密-解密-加密):

C=EK1(DK2(EK1(P)))……對P加密

P=DK1(EK2(DK1(C)))……對C解密這種替代DES的加密較為流行并且已被采納用于密鑰管理標準(TheKeyManagerStandardsANSX9.17和ISO8732).EDEDEDCBAPPAB

CK1K2K1K1K2K1加密圖解密圖到目前為止,還沒有人給出攻擊三重DES的有效方法。對其密鑰空間中密鑰進行蠻干搜索,那么由于空間太大為2112=5×1033,這實際上是不可行的。注意:1*.Merkle和Hellman設法創(chuàng)造一個條件,想把中間相遇攻擊(meet-in-the-middleattack)的方法用于三重DES,但目前也不太成功。2*.雖然對上述帶雙密鑰的三重DES到目前為止還沒有好的實際攻擊辦法,但人們還是放心不下,又建議使用三密鑰的三重DES,此時密鑰總長為168bits.

C=EK3(DK2(EK1(P)))高級加密標準AES

1997年1月,美國國家標準局NIST向全世界密碼學界發(fā)出征集21世紀高級加密標準(AES——AdvancedEncryptionStandard)算法的公告,并成立了AES標準工作研究室,1997年4月15日的例會制定了對AES的評估標準。AES的要求(1)AES是公開的;(2)AES為單鑰體制分組密碼;(3)AES的密鑰長度可變,可按需要增大;(4)AES適于用軟件和硬件實現(xiàn);(5)AES可以自由地使用,或按符合美國國家標準(ANST)策略的條件使用;算法衡量條件滿足以上要求的AES算法,需按下述條件判斷優(yōu)劣a.安全性b.計算效率c.內(nèi)存要求d.使用簡便性e.靈活性。AES加密算法的具體實現(xiàn)AES每輪要經(jīng)過四次變換,分別是

字節(jié)代換運算(SubByte())ShiftRows()(行移位)變換

MixColumns()(列混合)變換

AddRoundKey()(輪密鑰的混合)變換

我們用的128bit的密鑰(循環(huán)次數(shù)為10),那么每次加密的分組長為128bit,16個字節(jié),每次從明文中按順序取出16個字節(jié)假設為a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15,這16個字節(jié)在進行變換前先放到一個4×4的矩陣中。如下頁圖所示:a0a4a8a12a1a5a9a13a2a6a10a14a3a7a11a15這個矩陣稱為狀態(tài)(state)

以后所有的變換都是基于這個矩陣進行的,到此,準備工作已經(jīng)完成?,F(xiàn)在按照前面的順序進行加密變換,首先開始第一次循環(huán)的第一個變換:字節(jié)代換(SubByte())。字節(jié)代換(SubByte())

a0a4a8a12a1a5a9a13a2a6a10a14a3a7a11a15s00s01s02s03s10s11s12s13s20s21s22s23s30s31s32s33out0out4out8out12out1out5out9out13out2out6out10out14out3out7out11out15查表字節(jié)代換-S盒變換(查表)S12={53},則X=5,Y=3,out9=edShiftRows()(行移位)變換s00s01s02s03s10s11s12s13s20s21s22s23s30s31s32s33s00s01s02s03s11s12s13s10s22s23s20s21s33s30s31s32行變換示意圖SS′MixColumns()(列混合)變換S’0cS’1cS’2cS’3cS0cS1cS2cS3c02030101010203010101020303010102

S’0c=({02}●S0c)⊕({03}●S1c)⊕S2c⊕S3c,但這個結(jié)果可能會超出一個字節(jié)的存儲范圍,所以實際上還要對結(jié)果進行處理。序列密碼(流密碼)“一次一密”密碼在理論上是不可攻破的。流密碼則由“一次一密”密碼啟發(fā)而來。流密碼目前的理論已經(jīng)比較成熟,工程實現(xiàn)也比較容易,加密效率高,在許多重要領域得到應用?!耙淮我幻堋泵艽a使用的密鑰是和明文一樣長的隨機序列,密鑰越長越安全,但長密鑰的存儲、分配都很困難。流密碼的密鑰流流密碼的關鍵就是產(chǎn)生密鑰流的算法,該算法必須能夠產(chǎn)生可變長的、隨機的、不可預測的密鑰流。保持通信雙方的精確同步是流密碼實際應用中的關鍵技術(shù)。由于通信雙方必須能夠產(chǎn)生相同的密鑰流,所以這種密鑰流不可能是真隨機序列,只能是偽隨機流。明文流密文流密鑰流流密碼的結(jié)構(gòu)典型的流密碼每次加密一位或一個字節(jié)明文。將初始密鑰(種子)輸入到發(fā)生器,輸出一個隨機數(shù)(密鑰)。偽隨機字節(jié)發(fā)生器(密鑰流發(fā)生器)明文字節(jié)流M密文字節(jié)流C密鑰Kk異或加密偽隨機字節(jié)發(fā)生器(密鑰流發(fā)生器)密鑰Kk異或解密明文字節(jié)流M11001100明文01101100密鑰流10100000密文設計流密碼需要考慮的因素密鑰流的周期要長。偽隨機數(shù)發(fā)生器產(chǎn)生的并非完全隨機的序列,它是一個產(chǎn)生確定的比特流的函數(shù),該比特流最終將產(chǎn)生重復。重復的周期越長,相當于密鑰越長,密碼分析也就越困難。密鑰流應盡可能地接近于一個真正的隨機數(shù)流的特征。例如1和0的個數(shù)應大致相同。密鑰流越隨機,加密所得的密文也越隨機,分析就越困難。偽隨機數(shù)發(fā)生器的輸出取決于輸入的密鑰的值。RC4流密碼RC4是RonRivest為RSA公司在1987年設計的一種流密碼。它是一種可變密鑰長度、面向字節(jié)操作的流密碼。RC4可能是應用最廣泛的流密碼用于SSL/TLS(安全套接字/傳輸層安全協(xié)議)用于IEEE802.1無線局域網(wǎng)中的WEP協(xié)議。RC4算法輸入:一個256個字節(jié)的表示0---255的狀態(tài)矢量S、密鑰K(長度為kenlen)輸出:密鑰字節(jié)流*初始化*Fori=0to255do S[i]=i; T[i]=K[imodkeylen];//臨時矢量T(256字節(jié))*置換*j=0;Fori=0to255do j=(j+S[i]+T[i])mod256;Swap(S[i],S[j]);//S仍然包含所有值為0到255的元素*密鑰流的生成*i=0,j=0;While(true) i=(i+1)mod256; j=(j+S[i])mod256; swap(S[i],S[j]); t=(S[i]+S[j])mod256; k=S[t];加密中,將k的值與下一明文字節(jié)異或;解密中,將k的值與下一密文字節(jié)異或。其他對稱密碼IDEA由旅居瑞士的華人來學嘉和他的導師J.L.Massey共同開發(fā)的。IDEA使用128位密鑰,明文和密文分組長度為64位。已被用在多種商業(yè)產(chǎn)品中。CLIPPER密碼采用SKIPJACK算法,明文和密文分組長度為64位,密鑰長度為80位。BlowfishBlowfish允許使用最長為448位的不同長度的密鑰,并針對在32位處理器上的執(zhí)行進行了優(yōu)化。TwofishTwofish使用128位分組,可以使用128、192或256位密鑰。CAST-128CAST-128使用128位密鑰。它在更新版本的PGP中使用。GOSTGOST是為了回應DES而開發(fā)的俄羅斯標準,它使用256位密鑰。公鑰密碼體制整除定理:設整數(shù)a和b,如果存在整數(shù)k,使b=ak,則說b能被a整除,記作:a|b例:3|15,-15|60性質(zhì):對所有整數(shù)a≠0,a|0、a|a成立對任意整數(shù)b,1|b成立素數(shù)(primenumber)定義:如果整數(shù)p(p>1)只能被1或者它本身整除,而不能被其他整數(shù)整除,則其為素數(shù),否則為合數(shù)。素數(shù)定理:在各種應用中,我們需要大的素數(shù),如100位的素數(shù)素數(shù)是構(gòu)成整數(shù)的因子,每一個整數(shù)都是由一個或幾個素數(shù)的不同次冪相乘得來的。最大公約數(shù)a和b的最大公約數(shù)是能夠同時整除a和b的最大正整數(shù),記為gcd(a,b)。如果gcd(a,b)=1,則說a和b是互素的。定理:設a和b是兩個整數(shù)(至少一個非0),d=gcd(a,b),則存在整數(shù)x和y,使得ax+by=d特殊地,如果a和b互素,則有整數(shù)x和y,使得ax+by=1同余設整數(shù)a,b,n(n≠0),如果a-b是n的整數(shù)倍,則a≡b(modn),即a同余于b模n。也可理解為a/n的余數(shù)等于b/n的余數(shù)。(modn)運算將所有的整數(shù)(無論小于n還是大于n),都映射到{0,1,…,n-1}組成的集合。模算術(shù)的性質(zhì):(amodn)+(bmodn)=(a+b)modn(amodn)-(bmodn)=(a-b)modn(amodn)*(bmodn)=(a*b)modn性質(zhì)有整數(shù)a,b,c,n(n≠0):如果a≡b(modn),b≡c(modn)

那么a≡c(modn)如果a≡b(modn),c≡d(modn)

那么a+c≡b+d,a-c≡b-d,ac≡bd(modn)計算117mod13計算21234mod789除法設整數(shù)a,b,c,n(n≠0),且gcd(a,n)=1。如果ab≡ac(modn),那么b≡c(modn)證明:∵gcd(a,n)=1,∴有x和y,使ax+ny=1兩邊同乘以(b-c):(b-c)(ax+ny)=b-c即:(ab-ac)x+n(b-c)y=b-c……①∵ab≡ac(modn),即ab=ac+k1n,∴ab-ac是n的倍數(shù)同時,n(b-c)y顯然也是n的倍數(shù)所以,:(ab-ac)x+n(b-c)y也是n的倍數(shù),假設是k2倍則①式變?yōu)椋篵-c=k2n即b≡c(modn)歐幾里德算法(Euclid)用歐幾里德算法求最大公約數(shù)。求:gcd(482,1180)1180=2*482+216482=2*216+50216=4*50+1650=3*16+216=8*2+0所以gcd(482,1180)=2乘法逆元如果gcd(a,b)=1,那么:存在a-1,使a*a-1

≡1modb存在b-1,使b*b-1

≡1moda這里,把a-1稱為a模b的乘法逆元,b-1稱為b模a的乘法逆元用擴展的歐幾里德算法求乘法逆元gcd(11111,12345)12345=1*11111+123411111=9*1234+51234=246*5+45=1*4+14=4*1+01=5-1*4=5-1*(1234-246*5)=247*5-1*1234=247*(11111-9*1234)-1*1234=247*11111-2224*1234=247*11111-2224*(12345-1*11111)=2471*11111-2224*12345費爾馬小定理(Fermat)如果p是一個素數(shù),a不是p的倍數(shù),則:ap-1≡1(modp)證明:設有一整數(shù)空間S={1,2,…,p-1}再設有一函數(shù)Ψ(x)=ax(modp)x∈S(1)對于任何x∈S,有Ψ(x)∈S(2)對于x和y(x≠y),有Ψ(x)≠Ψ(y)(3)根據(jù)乘法定理和除法定理

(p-1)!ap-1≡(p-1)!modp歐拉函數(shù)Ф(n):小于n且與n互素的正整數(shù)的個數(shù)顯然,對于素數(shù)p,有Ф(p)=p-1設有兩個素數(shù)p和q,p≠q,那么對于n=pq,有:Ф(n)=Ф(pq)=Ф(p)*Ф(q)=(p-1)*(q-1)歐拉定理(Euler)對于任意互素的a和n,有aФ(n)

≡1modn證明:對于整數(shù)n,與n互素的數(shù)有Ф(n)個:令這些數(shù)為:R={x1,x2,…,xФ(n)

}用a與R中的每個元素相乘模n,得到集合S:

S={ax1modn,x2modn,…,xФ(n)modn

}其實S就是R:(ax1modn)RS中的元素是唯一的那么:R中各元素相乘就等于S中各元素相乘:∈公鑰密碼體制(Publickeysystem)公鑰密碼學與其他密碼學完全不同:公鑰算法基于數(shù)學函數(shù)而不是基于替換和置換使用兩個獨立的密鑰公鑰密碼學的提出是為了解決兩個問題:密鑰的分配數(shù)字簽名1976年Diffie和Hellman首次公開提出了公鑰密碼學的概念,被認為是一個驚人的成就。公鑰密碼體制的原理公鑰體制(Publickeysystem)(Diffie和Hellman,1976)

每個用戶都有一對選定的密鑰(公鑰k1;私鑰k2),公開的密鑰k1可以像電話號碼一樣進行注冊公布。主要特點:加密和解密能力分開多個用戶加密的消息只能由一個用戶解讀,(用于公共網(wǎng)絡中實現(xiàn)保密通信)只能由一個用戶加密消息而使多個用戶可以解讀(可用于認證系統(tǒng)中對消息進行數(shù)字簽字)。無需事先分配密鑰。公鑰密碼體制有4個組成部分明文:算法的輸入,它們是可讀信息或數(shù)據(jù),用M表示;密文:算法的輸出。依賴于明文和密鑰,對給定的消息,不同的密鑰產(chǎn)生密文不同。用E表示;公鑰和私鑰:算法的輸入。這對密鑰中一個用于加密,為Ke,此密鑰公開;一個用于解密,為Kd,此密鑰保密。加密算法執(zhí)行的變換依賴于密鑰;加密、解密算法公鑰密碼體制下的秘密通信公鑰加密體制的特點加密和解密能力分開多個用戶加密的消息只能由一個用戶解讀,可用于公共網(wǎng)絡中實現(xiàn)保密通信用私鑰加密的消息可以用對應的公鑰解密,所以由一個用戶加密消息而使多個用戶可以解讀,可用于認證系統(tǒng)中對消息進行數(shù)字簽字無需事先分配密鑰密鑰持有量大大減少提供了對稱密碼技術(shù)無法或很難提供的服務:如與哈希函數(shù)聯(lián)合運用可生成數(shù)字簽名,可證明的安全偽隨機數(shù)發(fā)生器的構(gòu)造,零知識證明等保證機密性

MEKbeE(M,Kbe)DKbdMKbe:Bob的公鑰Kbd

:Bob的私鑰保證真實性

Kad:Alice的私鑰Kae

:Alice的公鑰MEKadE(M,Kad)DKaeM既保證機密性又保證真實性

Kad:Alice的私鑰Kae

:Alice的公鑰MEKbeE(C1,Kbe)DKbdMEKadC1=E(M,Kad)C1DKaeKbe:Bob的公鑰Kbd

:Bob的私鑰公鑰密碼應滿足的要求接收方B產(chǎn)生密鑰對在計算上是容易的發(fā)送方A用收方的公開鑰對消息m加密以產(chǎn)生密文c在計算上是容易的。收方B用自己的秘密鑰對密文c解密在計算上是容易的。敵手由密文c和B的公開密鑰恢復明文在計算上是不可行的。敵手由密文c和B的公開密鑰恢復秘密密鑰在計算上是不可行的加解密次序可換,即EPKB[DSKB(m)]=DSKB[EPKB(m)],不是對任何算法都做此要求。對公鑰密碼體制的攻擊和單鑰密碼體制一樣,如果密鑰太短,公鑰密碼體制也易受到窮搜索攻擊。因此密鑰必須足夠長才能抗擊窮搜索攻擊。然而又由于公鑰密碼體制所使用的可逆函數(shù)的計算復雜性與密鑰長度常常不是呈線性關系,而是增大得更快。所以密鑰長度太大又會使得加解密運算太慢而不實用。因此公鑰密碼體制目前主要用于密鑰管理和數(shù)字簽字。對公鑰密碼算法的第2種攻擊法是尋找從公開鑰計算秘密鑰的方法。目前為止,對常用公鑰算法還都未能夠證明這種攻擊是不可行的。RSA算法

RSAAlgorithm概況MIT三位年青數(shù)學家R.L.Rivest,A.Shamir和L.Adleman[Rivest等1978,1979]發(fā)現(xiàn)了一種用數(shù)論構(gòu)造雙鑰的方法,稱作MIT體制,后來被廣泛稱之為RSA體制。它既可用于加密、又可用于數(shù)字簽字。RSA算法的安全性基于數(shù)論中大整數(shù)分解的困難性。迄今為止理論上最為成熟完善的公鑰密碼體制,該體制已得到廣泛的應用。算法原理RSA算法使用了乘方運算。要求:明文M經(jīng)過加密得到密文C:C=Memodn

密文C經(jīng)過解密得到明文M:

Cd

modn=(Memodn)dmodn=Medmodn=M即:必須存在e,d,n,使Medmodn=M成立如何確定e,d,n確定n:獨立地選取兩大素數(shù)p和q(各100~200位十進制數(shù)字)計算n=p×q,其歐拉函數(shù)值

(n)=(p-1)(q-1)確定e:隨機選一整數(shù)e,1

e<

(n),gcd(

(n),e)=1確定d:根據(jù)ed≡

1

mod

(n)在模

(n)下,計算d這樣確定的e,d,n是否能使Medmodn=M成立呢?因為ed≡1

mod

(n)即ed=k

(n)+1

所以:Med=Mk

(n)+1如果M和n互素,即gcd(M,n)=1那么,根據(jù)歐拉定理(如果gcd(a,n)=1,則

aФ(n)

≡1modn):有:M

(n)≡1modn所以:Med≡Mk

(n)+1≡M[M

(n)]kmodn

≡M[1]kmodn

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論