I.3.網絡安全密碼學基本理論_第1頁
I.3.網絡安全密碼學基本理論_第2頁
I.3.網絡安全密碼學基本理論_第3頁
I.3.網絡安全密碼學基本理論_第4頁
I.3.網絡安全密碼學基本理論_第5頁
已閱讀5頁,還剩109頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

網絡信息安全第一部分網絡信息安全基礎(密碼學基礎)第3章網絡安全密碼學基本理論2.1密碼學概況2.2密碼體制分類2.3常見密碼算法2.4雜湊函數2.5數字簽名2.6安全協議2.8本章小結3.1密碼學概況密碼學是一門研究信息安全保護的科學。它最早可追溯到幾千年前,主要用于軍事和外交通信。隨著網絡與信息技術的發展,密碼學的應用不再局限于軍事、政治、外交領域,而是逐步應用于社會各個領域,例如電子商務、個人安全通信、網絡安全管理等。密碼學的發展可大致劃分為四個階段:第一階段:從古代到1949年。該時期的密碼學沒有數學理論基礎,其應用領域僅限于通信。第二階段:從1949年到1975年。這一時期的標志性事件是香農在1949年發表的著名論文—《保密系統的信息理論》,該文為私鑰密碼系統奠定了理論基礎。3.1密碼學概況密碼學是一門研究信息安全保護的科學。它最早可追溯到幾千年前,主要用于軍事和外交通信。隨著網絡與信息技術的發展,密碼學的應用不再局限于軍事、政治、外交領域,而是逐步應用于社會各個領域,例如電子商務、個人安全通信、網絡安全管理等。密碼學的發展可大致劃分為四個階段:第三階段:1976年到1990年。這一時期的密碼技術出現了革命性變化,一是開辟了公鑰密碼學的新紀元,公鑰密碼體制誕生。二是美國政府提出了數據加密標準(DES)。這兩個引人矚目的事件標志著現代密碼學的誕生。這一階段的密碼學應用不夠廣泛,使用人員并不多。第四階段:1990年到至今。因特網技術的普及和信息技術的發展極大地帶動了密碼學的應用需求,密碼技術成為網絡與信息安全的核心技術。在這一時期,密碼學的應用得到了社會的廣泛認同,密碼學正影響著網絡與信息技術的發展。密碼學的歷史古羅馬:Caesar密碼ABCDEFGHIGKLMNOPQRSTUVWXYZDEFGHIGKLMNOPQRSTUVWXYZABCCaesarwasagreatsoldier密碼本密文Fdhvduzdvdjuhdwvroglhu明文密文CAESAR密碼:c=(m+3)Mod26有趣的加密:巴比倫的文字密碼學的歷史美國南北戰爭CANYOUUNDERSTAND輸入方向輸出方向明文:Canyouunderstand密文:codtaueanurnynsd密碼學的歷史轉輪密碼機ENIGMA,由ArthurScherbius于1919年發明,4輪ENIGMA在1944年裝備德國海軍。密碼學的歷史英國的TYPEX打字密碼機,是德國3輪ENIGMA的改進型密碼機。它在英國通信中使用廣泛,且在破譯密鑰后幫助破解德國信號。密碼學的歷史圖靈(AlanMathisonTuring)AlanMathisonTuring,1912~1954.英國數學家。一生對智能與機器之間的關系進行著不懈探索。1936年,24歲的圖靈提出“圖靈機”的設想。二戰期間成功地破譯了納粹德國的密碼,設計并制造了COLOSSUS,向現代計算機邁進了重要一步。1952年,圖靈遭到警方拘捕,原因是同性戀。1954年6月8日,服毒自殺,年僅42歲。圖靈去世12年后,美國計算機協會以他的名字命名了計算機領域的最高獎“圖靈獎”。一個簡單的加密算法—異或一個簡單的加密算法—異或異或

密文:0110

解密: 密鑰:

0101

明文:0011 已知明文、密文,怎樣求得密鑰?C=PKP=CK異或運算(不帶進位加法): 明文:0011

加密: 密鑰:0101

密文:0110K=CP消息和加密遵循國際命名標準,加密和解密可以翻譯成:“Encipher(譯成密碼)”和“(Decipher)(解譯密碼)”。也可以這樣命名:“Encrypt(加密)”和“Decrypt(解密)”。消息被稱為明文。用某種方法偽裝消息以隱藏它的內容的過程稱為加密,加了密的消息稱為密文,而把密文轉變為明文的過程稱為解密,下圖表明了加密和解密的過程。Mathisfun!CYPHERTEXTSecret

KeyEncrypt(Lock)Decrypt(Unlock)DataConfidentialityCYPHERTEXTMathisfun!明文密文明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本文件、位圖、數字化的語音流或者數字化的視頻圖像等。密文用C(Cipher)表示,也是二進制數據,有時和M一樣大,有時稍大。通過壓縮和加密的結合,C有可能比P小些。加密函數E作用于M得到密文C,用數學公式表示為:E(M)=C。解密函數D作用于C產生M,用數據公式表示為:D(C)=M。先加密后再解密消息,原始的明文將恢復出來,D(E(M))=M必須成立。算法和密鑰密碼算法也叫密碼函數,是用于加密和解密的數學函數。通常情況下有兩個相關的函數,一個用作加密,另一個用作解密。算法本身是保密的稱為受限制的算法。受限制的算法不可能進行質量控制或標準化,每個用戶組織必須有它們自己的唯一的算法,這樣的組織不可能采用流行的硬件或軟件產品。密碼算法的分類根據算法和密鑰是否分開古典密碼:不分開現代密碼:分開根據密鑰特點對稱密碼體制:加、解密密鑰相同,或彼此容易相互確定非對稱密碼體制:加、解密密鑰不同,彼此很難互相確定加、解密分離根據加密方式流密碼:明文消息按字符逐位加密分組密碼:將明文消息分組,逐組進行加密古典密碼和現代密碼古典密碼代替密碼(SubstitutionCipher)換位密碼(transpositionCipher)代替密碼與換位密碼的組合古典密碼(受限密碼)的缺陷密碼體制的安全性在于保持算法本身的保密性受限算法的缺陷不適合大規模生產不適合較大的或者人員變動較大的組織用戶無法了解算法的安全性古典密碼和現代密碼現代密碼算法把算法和密鑰分開密碼算法可以公開,密鑰保密密碼系統的安全性在于保持密鑰的保密性發送方接收方mm加密E解密Dc=Ek(m)m=Ek(c)密碼分析密鑰分配(秘密信道)kk鑒別、完整性和抗抵賴性除了提供機密性外,密碼學需要提供三方面的功能:鑒別、完整性和抗抵賴性。這些功能是通過計算機進行社會交流,至關重要的需求。鑒別:消息的接收者應該能夠確認消息的來源;入侵者不可能偽裝成他人。完整性:消息的接收者應該能夠驗證在傳送過程中消息沒有被修改;入侵者不可能用假消息代替合法消息。抗抵賴性:發送消息者事后不可能虛假地否認他發送的消息。3.1.2密碼學基本概念密碼學的主要目的是保持明文的秘密以防止攻擊者獲知,而密碼分析學則是在不知道密鑰的情況下識別出明文的科學。所謂明文,是指需要采用密碼技術進行保護的消息。而密文則是指用密碼技術處理“明文”后的結果,通常稱為加密消息。將明文變換成密文的過程稱作加密(encryption)。其逆過程,即由密文恢復出原明文的過程稱作解密(decryption)。加密過程所使用的一組操作運算規則稱作加密算法;而解密時使用的一組運算規則稱作解密算法。加密和解密算法的操作通常都是在密鑰(key)控制下進行的,分別稱為加密密鑰和解密密鑰。3.1.2密碼學基本概念根據密碼分析者破譯時已具備的前提條件,人們通常將攻擊類型分為三種:惟密文攻擊密碼分析者只擁有一個或多個用同一個密鑰加密的密文,沒有其他可利用的信息。已知明文攻擊密碼分析者僅知道當前密鑰下的一些明文及所對應的密文。選擇明文攻擊密碼分析者能夠得到當前密鑰下自己選定的明文所對應的密文。選擇密文攻擊攻擊者能夠得到任何選定的密文所對應的明文。3.2密碼體制分類根據密鑰的特點,密碼體制分為私鑰和公鑰密碼體制兩種。介于私鑰與公鑰之間的密碼體制稱為混合密碼體制。3.2.1私鑰密碼體制私鑰密碼體制又稱作對稱密碼體制,是廣泛應用的普通密碼體制。該體制的特點是加密和解密使用相同的密鑰,如圖所示。當用戶應用這種體制時,消息的發送者和接收者必須事先通過安全渠道交換密鑰,以保證發送消息或接收消息時能夠有供使用的密鑰。3.2.1私鑰密碼體制雙方共享一個密鑰加密方解密方奉天承運皇帝詔曰……共享密鑰yHidYTVdkd;AOt……yHidYTVdkd;AOt……奉天承運皇帝詔曰……加密解密共享密鑰用戶保存的密鑰數ABCD秘密密鑰加密技術特點算法簡單、速度快,被加密的數據塊長度可以很大密鑰在加密方和解密方之間傳遞和分發必須通過安全通道進行3.2.1私鑰密碼體制在私鑰體制中,使用者A和B具有相同的加、解密能力,因此使用者B無法證實收到的A發來的消息確實來自A。私鑰密碼體制的缺陷可歸納為三點:密鑰分配問題、密鑰管理問題無法源認證。雖然私鑰密碼體制有不足之處,但私鑰密碼算法處理速度快,常常用作數據加密處理。目前,私鑰密碼典型算法已有DES、IDEA、AES等,其中,DES是美國早期數據加密標準,現在已經被AES取代。私鑰密碼加密示意圖Internet明文數據“m”②加密函數E(k,m)=c③解密函數D(k,c)=m明文數據“m”①共享密鑰k密文數據“c”3.2.2公鑰密碼體制1976年,W.Diffie和M.E.Hellman發表了論文《密碼學的新方向》,提出了公鑰密碼體制的思想。公鑰密碼體制又稱作非對稱密碼體制基本的原理是在加密和解密的過程中使用不同的密鑰處理方式。加密密鑰可以公開,而只需要把解密密鑰安全存放即可。在安全性方面,密碼算法即使公開時,由加密密鑰推知解密密鑰的計算也是不可行的。公鑰密碼體制原理示意如圖所示。明文明文密文加密解密公開密鑰秘密密鑰3.2.2公鑰密碼體制加密方解密方奉天承運皇帝詔曰……解密方的公開密鑰yHidYTVdkd;AOt……yHidYTVdkd;AOt……奉天承運皇帝詔曰……加密解密解密方的私有密鑰加密和解密的密鑰不同用戶需要保存的密鑰數ABCDInternet公開密鑰加密技術特點算法復雜、速度慢,被加密的數據塊長度不宜太大公鑰在加密方和解密方之間傳遞和分發不必通過安全通道進行3.2.2公鑰密碼體制公鑰密碼體制可看成郵箱,任何人都能容易地把郵件放進郵箱,只要打開口子投進去就行了。把郵件放進郵箱是一件公開的事情,但打開郵箱卻不是,它是難的,需要吹焊器或其他工具。然而,如果持有秘密信息(鑰匙或組合密碼),就很容易打開郵箱了。與對稱密碼體制相比較,公鑰密碼體制有以下優點:(1)密鑰分發方便,可以以公開方式分配加密密鑰。例如,因特網中的個人安全通信常將自己的公鑰公布在網頁中,方便其他人用它進行安全加密。(2)密鑰保管量少。網絡中的消息發送方可以共用一個公開加密密鑰,從而減少密鑰數量。(3)支持數字簽名。目前,只有三類體制被證明是安全和有效的,即RSA體制、ELGamal體制以及橢圓曲線密碼體制公鑰加密示意圖Internet②公鑰加密E(p,m)=c③私鑰解密D(q,c)=m①將公鑰給對方明文數據“m”密文數據“c”明文數據“m”私鑰始終未在網上傳輸對非對稱密碼算法的誤解非對稱密鑰算法比對稱密鑰密碼算法更安全?任何一種算法都依賴于密鑰長度、破譯密碼的工作量,從抗分析角度,沒有一方更優越非對稱密鑰算法使對稱密鑰成為過時了的技術?非對稱密鑰算法的計算速度比較慢,一般用于密鑰管理和數字簽名,而對稱密鑰密碼算法計算速度快,二者各有優勢,分別適用于不同的場景,將長期共同存在。不可不提的非對稱密碼Diffie-Hellman密鑰交換RSA體制ElGamal體制橢圓曲線密碼體制非對稱密碼算法的用途需要注意的是,非對稱密碼算法不但可以用來保護數據的保密性,而且可以用來保護數據的真實性和完整性。例如,如果A想要保護消息M的真實性和完整性,他可以給M計算數字簽名S。當消息M的接收者B接收到消息M和數字簽名S后,他可以對這個消息的真實性和完整性進行驗證,這樣能確保消息M是A發送給他的,并且在傳送的過程中沒有遭到破壞。3.2.3混合密碼體制混合密碼體制利用公鑰密碼體制分配私鑰密碼體制的密鑰,消息的收發雙方共用這個密鑰,然后按照私鑰密碼體制方式,進行加密和解密運算。混合密碼體系工作原理明文明文密文對稱密鑰密文密文B私鑰解密解密B公鑰加密對稱密鑰AB3.3常見密碼算法—1.DESDESDES是數據加密標準的簡稱,由IBM在20世紀60年代研制出來。DES是一個分組加密算法,能夠支持64比特的明文塊加密,其密鑰長度為56比特。DES是世界上應用最廣泛的密碼算法。但是,隨著計算機系統運算速度的增加和網絡計算的進行,在有限的時間內進行大量的運算將變得更可行。1997年,RSA實驗室發出了破解DES密文的挑戰。DES56比特的密鑰長度已不足以保證密碼系統的安全了。NIST于1999年10月25日采用三重DES作為過渡期間的國家標準,以增強DES的安全性,并開始征集AES(AdvancedEncryptionStandard)算法。3.3常見密碼算法—1.DESDES算法的安全性DES算法正式公開發表以后,引起了一場激烈的爭論。1977年Diffie和Hellman提出了制造一個每秒能測試106個密鑰的大規模芯片,這種芯片的機器大約一天就可以搜索DES算法的整個密鑰空間,制造這樣的機器需要兩千萬美元。1993年R.Session和M.Wiener給出了一個非常詳細的密鑰搜索機器的設計方案,它基于并行的密鑰搜索芯片,此芯片每秒測試5×107個密鑰,當時這種芯片的造價是10.5美元,5760個這樣的芯片組成的系統需要10萬美元,這一系統平均1.5天即可找到密鑰,如果利用10個這樣的系統,費用是100萬美元,但搜索時間可以降到2.5小時。可見這種機制是不安全的。3.3常見密碼算法—1.DESDES算法的安全性1997年1月28日,美國的RSA數據安全公司在互聯網上開展了一項名為“密鑰挑戰”的競賽,懸賞一萬美元,破解一段用56比特密鑰加密的DES密文。一位名叫RockeVerser的程序員設計了一個可以通過互聯網分段運行的密鑰窮舉搜索程序,組織實施了一個稱為DESHALL的搜索行動,成千上萬的志愿者加入到計劃中,在計劃實施的第96天,即挑戰賽計劃公布的第140天,1997年6月17日晚上10點39分,美國鹽湖城Inetz公司的職員MichaelSanders成功地找到了密鑰,在計算機上顯示了明文:“Theunknownmessageis:Strongcryptographymakestheworldasaferplace”。3.3常見密碼算法—1.DESDES算法原理DES算法的入口參數有三個:Key、Data、Mode。其中Key為8個字節共64位,是DES算法的工作密鑰;Data為8個字節64位,是要被加密或被解密的數據;Mode為DES的工作方式有兩種:加密或解密。DES算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密,生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。3.3常見密碼算法—1.DESDES算法實現加密需要三個步驟:1.變換明文。對給定的64位比特的明文x,首先通過一個置換IP表來重新排列x,從而構造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。2.按照規則迭代。規則為Li=Ri-1Ri=Li⊕f(Ri-1,Ki)(i=1,2,3…16)經過第一步變換已經得到L0和R0的值,其中符號⊕表示的數學運算是異或,f表示一種置換,由S盒置換構成,Ki是一些由密鑰編排函數產生的比特塊。f和Ki將在后面介紹。3.對L16R16利用IP-1作逆置換,就得到了密文y。加密過程如圖示。3.3常見密碼算法—1.DES從圖中可看出,DES加密需要四個關鍵點:1、IP置換表和IP-1逆置換表。2、函數f。3、子密鑰Ki。4、S盒的工作原理。輸入64位bit明文IP置換表L0R0IP逆置換表輸出64位bit明文迭代16次Li=Ri-1Ri=Lif(Ri-1,Ki)

(i=1,2,…,16)DES加密過程3.3常見密碼算法—1.DES輸入64位bit明文IP置換表L0R0IP逆置換表輸出64位bit明文迭代16次Li=Ri-1Ri=Lif(Ri-1,Ki)

(i=1,2,…,16)輸入的64位數據按置換IP表進行重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換IP表如下表所示將輸入64位比特的第58位換到第一位,第50位換到第二位,依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位。比如:置換前的輸入值為D1D2D3…D64,則經過初始置換后的結果為:L0=D58D50...D8,R0=D57D49...D7。(1)IP置換表和IP-1置換表3.3常見密碼算法—1.DES輸入64位bit明文IP置換表L0R0IP逆置換表輸出64位bit明文迭代16次Li=Ri-1Ri=Lif(Ri-1,Ki)

(i=1,2,…,16)經過16次迭代運算后。得到L16、R16,將此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置的逆運算,例如,第1位經過初始置換后,處于第40位,而通過逆置換IP-1,又將第40位換回到第1位,其逆置換IP-1規則如下表所示。(1)IP置換表和IP-1置換表3.3常見密碼算法—1.DES函數f有兩個輸入:32位Ri-1和48位Ki,f處理流程如圖示S1S2S3S4S5S6S7S832位Ri-1E變換P變換32位輸出48位Ki48位48位輸入64位bit明文IP置換表L0R0IP逆置換表輸出64位bit明文迭代16次Li=Ri-1Ri=Lif(Ri-1,Ki)

(i=1,2,…,16)(2)函數f3.3常見密碼算法—1.DESS1S2S3S4S5S6S7S832位Ri-1E變換P變換32位輸出48位Ki48位48位E變換的算法是從Ri-1的32位中選取某些位,構成48位。即E將32比特擴展變換為48位,變換規則根據E位選擇表,如下表所示。Ki是由密鑰產生的48位比特串,具體的算法下面介紹。將E的選位結果與Ki作異或操作,得到一個48位輸出。分成8組,每組6位,作為8個S盒的輸入。(2)函數f3.3常見密碼算法—1.DESS1S2S3S4S5S6S7S832位Ri-1E變換P變換32位輸出48位Ki48位48位每個S盒輸出4位,共32位,S盒的工作原理將在第第四步介紹。S盒的輸出作為P變換的輸入,P的功能是對輸入進行置換,P換位表如下表所示。(2)函數f3.3常見密碼算法—1.DES假設密鑰為K,長度為64位,但是其中第8、16、24、32、40、48、64用作奇偶校驗位,實際上密鑰長度為56位。K的下標i的取值范圍是1到16,用16輪來構造。構造過程如圖示。(3)子密鑰Ki64位密鑰字符串KPC1變換C0D0LS2LS2C2D2LS16LS16C16D16LS1LS1C1D1PC2變換PC2變換PC2變換48位K148位K148位K128bit28bit3.3常見密碼算法—1.DES(3)子密鑰Ki64位密鑰字符串KPC1變換C0D0LS2LS2C2D2LS16LS16C16D16LS1LS1C1D1PC2變換PC2變換PC2變換48位K148位K148位K128bit28bit57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124首先,對于給定的密鑰K,應用PC1變換進行選位,選定后的結果是56位,設其前28位為C0,后28位為D0。PC1選位如上表所示。3.3常見密碼算法—1.DES(3)子密鑰Ki64位密鑰字符串KPC1變換C0D0LS2LS2C2D2LS16LS16C16D16LS1LS1C1D1PC2變換PC2變換PC2變換48位K148位K148位K128bit28bit第一輪:對C0作左移LS1得到C1,對D0作左移LS1得到D1,對C1D1應用PC2進行選位,得到K1。其中LS1是左移的位數,如下表所示。1122222212222221表中的第一列是LS1,第二列是LS2,以此類推。3.3常見密碼算法—1.DES(3)子密鑰Ki64位密鑰字符串KPC1變換C0D0LS2LS2C2D2LS16LS16C16D16LS1LS1C1D1PC2變換PC2變換PC2變換48位K148位K148位K128bit28bit左移的原理是所有二進位向左移動,原來最右邊的比特位移動到最左邊。其中PC2如上表所示。14171124153281562110231912,426816727201324152313747553040514533484449395634534642503629323.3常見密碼算法—1.DES(3)子密鑰Ki64位密鑰字符串KPC1變換C0D0LS2LS2C2D2LS16LS16C16D16LS1LS1C1D1PC2變換PC2變換PC2變換48位K148位K148位K128bit28bit第二輪:對C1,D1作左移LS2得到C2和D2,進一步對C2D2應用PC2進行選位,得到K2。如此繼續,分別得到K3,K4…K16。3.3常見密碼算法—1.DESS盒以6位作為輸入,而以4位作為輸出,現在以S1為例說明其過程。假設輸入為A=a1a2a3a4a5a6,則a2a3a4a5所代表的數是0到15之間的一個數,記為:k=a2a3a4a5;由a1a6所代表的數是0到3間的一個數,記為h=a1a6。在S1的h行,k列找到一個數B,B在0到15之間,它可以用4位二進制表示,為B=b1b2b3b4,這就是S1的輸出。DES算法的解密過程是一樣的,區別僅僅在于第一次迭代時用子密鑰K15,第二次K14、最后一次用K0,算法本身并沒有任何變化。DES的算法是對稱的,既可用于加密又可用于解密。(4)S盒的工作原理3.3常見密碼算法—1.DESDES算法的誤區DES算法具有比較高安全性,到目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間為256,這意味著如果一臺計算機的速度是每一秒種檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的時間,可見,這是難以實現的。當然,隨著科學技術的發展,當出現超高速計算機后,我們可考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。3.3常見密碼算法—2.IDEA2.IDEAIDEA(InternationalDataEncryptionAlgorithm)是國際數據加密算法的簡記,是一個分組加密處理算法,其明文和密文分組都是64比特,密鑰長度為128比特。該算法是由來學嘉(X.J.Lai)和Massey提出的建議標準算法,已在PGP中得到應用。IDEA算法能夠接受64比特分組加密處理,同一算法既可用于加密又可用于解密該算法的設計思想是:“混合使用來自不同代數群中的運算”。3.3常見密碼算法—3.AES3.AES1997年4月15日,美國國家標準技術研究所(NIST)發起征集AES(AdvancedEncryptionStandard)算法的活動,并專門成立了AES工作組。目的是為了確定一個非保密的、公開的、全球免費使用的分組密碼算法,用于保護下一世紀政府的敏感信息。NIST規定候選算法必須滿足下面的要求:密碼必須是沒有密級的,絕不能像保護商業秘密那樣來保護它;算法的全部描述必須公開披露;密碼必須可以在世界范圍內免費使用;密碼系統支持至少128比特長的分組;密碼支持的密鑰長度至少為128、192和256比特。3.3常見密碼算法—4.RSA4.RSAWhitefieldDiffie和MartinHellman于1976年提出了公鑰密碼系統的思想,然而他們并沒有給出一個實用的公鑰密碼系統。Diffie-Hellman的文章發表兩年后,MIT的RonaldRivist、AdiShamir和LenAdlemar開發出了第一個公鑰密碼體制。1977年,Rivest、Shamir和Adleman三個人實現了公開密鑰密碼體制,現在稱為RSA公開密鑰體制,它是第一個既能用于數據加密也能用于數字簽名的算法。這種算法易于理解和操作,算法的名字以發明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。但RSA的安全性一直未能得到理論上的證明。它經歷了各種攻擊,至今未被完全攻破。3.3常見密碼算法—4.RSARSA算法原理可以簡單描述如下:1.生成兩個大素數p和q。2.計算這兩個素數的乘積n=p×q。3.計算小于n且與n互質的整數的個數,即歐拉函數φ(n)=(p-1)(q-1)。4.選擇一個隨機數e滿足1<e<φ(n),并且e和φ(n)互質,即gcd(e,φ(n))=1。5.計算de≡1modφ(n)。d稱為e的模反元素。有:de-1=kφ(n)6.保密d,p和q,公開n和e。如果兩個正整數a和n互質,那么一定可以找到整數b,使得ab-1被n整除,或者說ab被n除的余數是1。b就叫做a的"模反元素"3.3常見密碼算法—4.RSARSA加密的具體實例。設素數p=3,q=17,并令e=13,則RSA的加密操作如下:(1)計算nn=pq=3×17=51,得出公鑰n=51,e=13。(2)計算φ(n)和dφ(n)=(p-1)(q-1)=2×16=32。de≡1modφ(n),所以d=(kφ(n)+1)/e,k=gdc(p-1,q-1)由此算出d=(2×32+1)/13=5,即解密鑰是d=5(3)加密和解密處理計算(Alice發送明文”2”)已知Bob的公開密鑰是e=13、n=51,則Alice計算密文C=Memodn=213mod51=8192mod51=32Bob收到Alice發來的密文C后,用自己的私鑰d解密密文C,即M=Cd

modn=325mod51=512mod51=23.3常見密碼算法—4.RSA利用RSA加密時,明文以分組的方式加密:每一個分組的比特數應該小于log2n比特。加密明文x時,利用公鑰(e,n)來計算c=xemodn就可以得到相應的密文c。解密的時候,通過計算cdmodn就可以恢復出明文x。選取的素數p和q要足夠大,從而乘積n足夠大,在事先不知道p和q的情況下分解n是計算上不可行的。常用的公鑰加密算法包括:RSA密碼體制、ElGamal密碼體制散列函數密碼體制(MD4、MD5等)3.3常見密碼算法—4.RSARSA算法的安全性RSA的安全性依賴于大數分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法。目前RSA的一些變種算法已被證明等價于大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定基于安全性考慮,要求n的長度至少應為1024比特。然而從長期的安全性來看n的長度至少應為2048比特3.3常見密碼算法—4.RSARSA算法的速度由于進行的都是大數計算,使得RSA最快的情況也比DES慢上倍,無論是軟件還是硬件實現。速度一直是RSA的缺陷。一般來說只用于少量數據加密。RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現在已近40年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一3.3常見密碼算法—5.DH密鑰交換算法5.Diffie-Hellman密鑰交換協議W.Deffie和M.E.Hellman于1976年首次提出密鑰交換體制,通常簡稱Diffie-Hellman密鑰交換協議。Diffie-Hellman密鑰交換協議基于求解離散對數問題的困難性,即對于下述等式:Cd=MmodPd稱為模P的以C為底數的M的對數在已知C和P的前提下,由d求M很容易,只相當于進行一次指數計算。而再由M反過來求d,則需要指數級次計算。隨著P取得足夠大,就能實現足夠的安全強度。對稱密鑰交換對稱加密和hash都要求通信雙方具有相同的密鑰。問題:怎樣在雙方之間安全地傳遞密鑰?密鑰哈哈,要是敢直接傳遞密鑰,我就只好偷看了密鑰DH算法的基本原理RouterARouterB生成一個整數p生成一個整數qp把p發送到對端把q發送到對端q根據p、q生成g根據p、q生成g生成密鑰Xa生成密鑰Xb發送YaYa=(g^Xa)modp發送YbYb=(g^Xb)modpYaYbKey=(Yb^Xa)modpKey=(Ya^Xb)modp最后得到的對稱密鑰雙方沒有直接傳遞密鑰Diffie-Hellman密鑰交換協議例現在假設Alice和Bob使用Diffie-Hellman密鑰交換協議,在一個不安全的信道上交換密鑰,則其操作步驟如下:1.Alice和Bob確定一個適當的素數p和整數a,并使a是p的原根,其中a和p可以公開。2.Alice秘密選取一個整數,計算,并把發送給Bob。3.Bob秘密選取一個整數,計算,并把發送給Alice。和就是所說的Diffie-Hellman公開值。4.Alice和Bob雙方分別計算出共享密鑰,即Alice通過計算生成密鑰;Bob通過計算生成密鑰;因為:

所以,Alice和Bob生成的密鑰K是相同的,這樣一來就實現了密鑰的交換。

Alice和Bob采用Diffie-Hellman密鑰交換的安全性是求解離散對數問題的困難性,即從yA或yB以及計算或在計算上是不可行的。Diffie-Hellman密鑰交換協議例3.3常見密碼算法—5.ElGamal體制1985年,ElGamal設計出該密碼體制安全性基于有限域上求解離散對數的困難性即可用于數據加密,亦可用于數字簽名美國數字簽名標準(DSS)的基礎3.3常見密碼算法—6.橢圓曲線密碼體制ECC1985年,Koblitz和Miller分別將橢圓曲線用于非對稱密碼體制的設計二人并未發明使用橢圓曲線的密碼算法,但用有限域上的橢圓曲線實現了已經存在的非對稱密碼算法ECC實現同等安全性所需使用的密鑰長度比ElGamal、RSA等密碼體制短很多,軟件實現規模小,硬件實現電路省電。3.4Hash函數雜湊函數簡稱Hash函數,它能夠將任意長度的信息轉換成固定長度哈希值(又稱數字摘要或消息摘要),并且任意的不同消息或文件所生成的哈希值是不一樣。令h表示Hash函數,則h應滿足下列條件:

h的輸入可以是任意長度的消息或文件M;

h的輸出長度是固定的;

給定h和M,計算h(M)是容易的;

給定h的描述,找兩個不同的消息M1和M2,使得h(M1)=h(M2)在計算上是不可行的。3.4Hash函數Hash函數的安全性是指:在現有的計算資源下,找到一個碰撞是不可能的。Hash函數在網絡安全應用中,不僅能用于保護消息或文件的完整性,而且也能用作密碼信息的安全存儲。例如,網頁防篡改應用。網頁文件管理者首先用網頁文件生成系列Hash值,并將Hash值備份存放在安全地方。然后定時再計算這些網頁文件的Hash值,如果新產生的Hash值與備份的Hash值不一樣,則說明網頁文件被篡改了。目前,主要Hash算法有MD2、MD4、MD5、SHA。其中,MD5能產生128比特長度的哈希值,它的使用廣泛,常用于網絡中文件的完整性檢查。但是,據最新研究表明,MD5的安全性受到挑戰,已被中國的王小云女士攻破。而SHA由NIST和NSA研究開發,在美國政府中使用,作為安全哈希標準,SHA產生的哈希值比MD5長,有160比特。單向哈希函數一個函數是單向函數,如果:對于所有的,很容易計算;而對于給定的,不可能計算出一個,使得。這里的“不可能計算”可以理解為,用當前最快速的計算機,需要非常長,比如幾百萬年的時間才能計算出來。單向哈希函數WhitfieldDiffie曾在《應用密碼學》中舉了一個很生動的比喻,單向函數就像是把盤子打碎,打碎它很容易,但是要把盤子重新拼起來確實難上加難。簡而言之,單向函數是一種易于正向計算,但很難反向計算的函數。需要注意的是,單向函數的存在至今仍然是一個沒有經過證明的假設,也就是說,到目前為止沒有一個函數被證明為單向函數。單向哈希函數什么是哈希函數呢?哈希函數H把一個值x(值x屬于一個有很多個值的集合(或者是無窮多個值)),影射到另外一個值y,y屬于一個有固定數量個值(少于前面集合)的集合。哈希函數不是可逆函數——不同的輸入值可能產生相同的輸出,也就是碰撞,或稱為沖突。如果一個哈希函數具有單向函數的性質——也就是:給定一個值x,很容易計算H(x)但是,給定一個值y,很難找到一個值x,使得H(x)=y,這個哈希函數叫做單向哈希函數。單向哈希函數如果一個哈希函數除了具有單向函數的性質以外,從計算的可能性來說,很難找到兩個不同的輸入值x1,x2∈X,使得H(x1)=H(x2),那么這個函數叫做無碰撞的單向哈希函數。無碰撞是很重要的——可以防止攻擊者偽造消息摘要等信息。單向哈希函數(4)從密碼學角度而言,適用的哈希函數的基本要求如下:

(1)輸入可以是任意長度的;

(2)輸出是可以固定長的;

(3)對于任意的值x,H(x)很容易計算;

(4)H(x)是單向的;

(5)H(x)是無沖突的;單向哈希函數Merkle提出了安全哈希函數的一般結構。它是一種迭代結構,將輸入報文分為L個大小為b位的分組,若第L個分組不足b位則填充至b位,然后再附加上一個表示輸入總長度的分組。由于輸入中包含長度,所以攻擊者必須找出具有相同哈希值且長度相等的兩條報文,或者找出兩條長度不等但加入報文長度后哈希值相同的報文,從而增加了攻擊的難度。單向哈希函數哈希函數的一般結構可歸納如下:單向哈希函數哈希函數MD2,MD4和MD5產生128位的哈希值RIPEMD也是一個單向哈希函數。SHA-1產生160位的哈希值。RIPEMD-160是RIPEMD的增強版,它產生的是160位的哈希值。MD5和SHA-1是目前應用最廣泛的單向哈希函數。MD5的應用MD5算法可以用來在數據庫系統中為用戶的密碼加密。如下:問題:如果所有用戶的密碼都是一樣的會有什么問題?密碼學中加鹽的含義具體來說就是在原有材料(用戶自定義密碼)中加入其它成分(一般是用戶自有且不變的因素),以此來增加系統復雜度。當這種鹽和用戶密碼相結合后,再通過摘要處理,就能得到隱蔽性更強的摘要值。數字簽名數據報文驗證HMAC實現數據完整性驗證實現身份驗證InternetABB+K1加密后的數據“d”數字簽名Hash算法加密后的數據d數字簽名+K1加密后的數據+K1Hash算法是否相同如果數據被篡改將無法得到相同的數字簽名數字簽名數據報文驗證HMAC實現數據完整性驗證MD5實現身份驗證SHAInternetABB數字簽名Hash算法數字簽名+K1加密后的數據+K1Hash算法是否相同加密后的用戶信息身份驗證使用用戶信息經歷相同的過程通信雙方的身份是靠判斷用戶信息的真假而被驗證的嗎?數字簽名對數據進行hash運算來保證完整性完整性:數據沒有被非法篡改。通過對數據進行hash運算,產生類似于指紋的數據摘要,以保證數據的完整性。土豆兩塊錢一斤Hash4ehIDx67NMop9土豆兩塊錢一斤4ehIDx67NMop9土豆三塊錢一斤4ehIDx67NMop9我偷改數據Hash2fwex67N32rfee3兩者不一致代表數據已被篡改土豆兩塊錢一斤Hashfefe23fgrNMop7土豆兩塊錢一斤fefe23fgrNMop7土豆三塊錢一斤2fwex67N32rfee3我同時改數據和摘要兩者還是不一致Hashfergergr23frewfgh對數據和密鑰一起進行hash運算攻擊者篡改數據后,可以根據修改后的數據生成新的摘要,以此掩蓋自己的攻擊行為。通過把數據和密鑰一起進行hash運算,可以有效抵御上述攻擊。3.5數字簽名數字簽名(DigitalSignature)是手寫簽名的電字模擬,是通過電子信息計算處理,產生的一段特殊字符串消息,該消息具有與手寫簽名一樣的特點,是可信的、不可偽造的、不可重用的、不可抵賴的以及不可修改的。因而,通常將這種消息稱為數字簽名。與手寫簽名類似,數字簽名至少應滿足以下三個條件:簽名者事后不能否認自己的簽名;接收者能驗證簽名,而任何其他人都不能偽造簽名;當雙方就簽名的真偽發生爭執時,第三方能解決雙方之間發生的爭執。數字簽名的原理在文件上手寫簽名長期以來被用作作者身份的證明,或表明簽名者同意文件的內容。實際上,簽名體現了以下5個方面的保證:1.簽名是可信的。簽名使文件的接收者相信簽名者是慎重地在文件上簽名的。2.簽名是不可偽造的。簽名證明是簽字者而不是其他的人在文件上簽字。3.簽名不可重用。簽名是文件的一部分,不可能將簽名移動到不同的文件上。4.簽名后的文件是不可變的。在文件簽名以后,文件就不能改變。5.簽名是不可抵賴的。簽名和文件是不可分離的,簽名者事后不能聲稱他沒有簽過這個文件。數字簽名一個數字簽名方案一般由簽名算法和驗證算法組成。簽名算法的密鑰是秘密的,只有簽名人掌握;驗證算法則是公開的,以便他人驗證。典型的數字簽名方案RSA簽名體制、Rabin簽名體制、ElGamal簽名體制和DSS標準。簽名與加密很相似一般是簽名者利用秘密密鑰(私鑰)對需簽名的數據進行加密驗證方利用簽名者的公開密鑰(公鑰)對簽名數據做解密運算。簽名與加密的不同之處加密的目的是保護信息不被非授權用戶訪問簽名的目的是讓消息接收者確信信息的發送者是誰,信息是否被他人篡改。數字簽名的產生原理摘要算法簽名算法消息摘要數字簽名(發送給接收者)消息(發送給接收者)發送者的私鑰數字簽名的驗證原理摘要算法簽名算法摘要簽名(來自發送者)消息(來自發送者)發送者的公鑰消息摘要消息摘要兩者相同嗎?數字簽名下面我們給出數字簽名的基本流程。假設Alice需要簽名發送一份電子合同文件給Bob。Alice的簽名步驟如下:1.Alice使用Hash函數將電子合同文件生成一個消息摘要。2.Alice使用自己的私鑰,把消息摘要加密,形成一個數字簽名。3.Alice把電子合同文件和數字簽名一同發送給Bob。數字簽名的驗證過程+IDInformation加密Hash_I解密Hash_I私鑰公鑰本地遠端Hash=+身份信息Hash對稱密鑰數字簽名+身份信息Hash12數字證書+Internet對稱密鑰數字簽名數字證書&公鑰為信息發送者的公鑰&驗證數字簽名過程數字簽名特點:是一種加密的消息摘要,可防止攻擊者同時替換消息和消息摘要,同時不需共享密鑰,安全性高。缺點是在抗抵賴性和欺騙性方面較弱。(可用帶時間戮的數字簽名解決)應用用于數據的完整性(即防止數據被修改)驗證(確定簽名者的身份)。用于簽署合同、電子郵件等常用算法:RSA與MD5或SHA-1組合。DSA(只進行數字簽名不進行數據加密)算法區別:DSA簽名的速度更快,而RSA驗證的速度更快。由于大多數情況下簽名驗證所花費的時間比簽名產生所花時間多得多,故在大多數應用程序中RSA要快一些。數字簽名存在的問題計算機上進行數字簽名并使用這些保證能夠繼續有效還存在一些問題。計算機文件易于復制,即使簽名難以偽造,但是將有效的簽名從一個文件剪輯和粘貼到另一個文件比較容易。這就使簽名失去了意義。文件在簽名后也易于修改,并且不會留下任何修改痕跡。使用公鑰加密算法都能用作數字簽名,其基本過程如下:1.Alice用她的私鑰對文件加密,從而對文件簽名。2.Alice將簽名后的文件傳給Bob3.Bob用Alice的公鑰解密文件,從而驗證簽名。數字簽名基本協議過程在實際過程中,上面的做法效率太低。為節省時間,數字簽名協議常與單向Hash函數一起使用。Alice并不對整個文件簽名,而是只對文件的Hash值簽名。Hash函數和數字簽名算法是事先協商好的。過程如下:Alice產生文件的單向散列值。2.Alice用她的私人密鑰對散列加密,以此表示對文件的簽名。3.Alice將文件和散列簽名送給Bob4.Bob用Alice發送的文件產生文件的單向散列值,同時用Alice的公鑰對簽名的散列解密。如果簽名的散列值與自己產生的散列值匹配,簽名是有效的。3.5.2數字簽名的應用例子現在Alice向Bob傳送數字信息,為了保證信息傳送的保密性、真實性、完整性和不可否認性,需要對要傳送的信息進行數字加密和數字簽名,其傳送過程為:1.Alice準備好要傳送的數字信息(明文)。2.Alice對數字信息進行哈希運算,得到一個信息摘要。3.Alice用自己的私鑰對信息摘要進行加密得到Alice的數字簽名,并將其附在數字信息上。4.Alice隨機產生一個加密密鑰,并用此密鑰對要發送的信息進行加密,形成密文。5.Alice用Bob的公鑰對剛才隨機產生的加密密鑰進行加密,將加密后的DES密鑰連同密文一起傳送給Bob3.5.2數字簽名的應用例子現在Alice向Bob傳送數字信息,為了保證信息傳送的保密性、真實性、完整性和不可否認性,需要對要傳送的信息進行數字加密和數字簽名,其傳送過程為:6.Bob收到Alice傳送過來的密文和加過密的DES密鑰,先用自己的私鑰對加密的DES密鑰進行解密,得到DES密鑰。7.Bob然后用DES密鑰對收到的密文進行解密,得到明文的數字信息,然后將DES密鑰拋棄(即DES密鑰作廢)。8.Bob用Alice的公鑰對Alice的數字簽名進行解密,得到信息摘要。9Bob用相同的hash算法對收到的明文再進行一次hash運算,得到一個新的信息摘要。10.Bob將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。3.6數字水印數字水印(DigitalWatermark)技術,是指在數字化的數據內容中嵌入不明顯的記號。被嵌入的記號通常是不可見或不可察的,但是通過計算操作可以檢測或者被提取。水印與源數據緊密結合并隱藏其中,成為源數據不可分離的一部分,并可以經歷一些不破壞源數據使用價值或商用價值的操作而存活下來。根據信息隱藏的目的和技術要求,數字水印應具有3個基本特性:1.隱藏性(透明性)。水印信息和源數據集成在一起,不改變源數據的存儲空間;嵌入水印后,源數據必須沒有明顯的降質現象;水印信息無法為人看見或聽見,只能看見或聽見源數據;2.魯棒性(免疫性、強壯性)。魯棒性是指嵌入水印后的數據經過各種處理操作和攻擊操作以后,不導致其中的水印信息丟失或被破壞的能力。處理操作包括:模糊、幾何變形、放縮、壓縮、格式變換、剪切、D/A和A/D轉換等攻擊操作包括:有損壓縮、多拷貝聯合攻擊、剪切攻擊、解釋攻擊等等。3.安全性。指水印信息隱藏的位置及內容不為人所知,這需要采用隱蔽的算法,以及對水印進行預處理(如加密)等措施。3.6.1數字水印產生背景多媒體通信業務和Internet——“數字化、網絡化”的迅猛發展給信息的廣泛傳播提供了前所未有的便利,各種形式的

溫馨提示

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

最新文檔

評論

0/150

提交評論