第2章 對稱密鑰密碼體系_第1頁
第2章 對稱密鑰密碼體系_第2頁
第2章 對稱密鑰密碼體系_第3頁
第2章 對稱密鑰密碼體系_第4頁
第2章 對稱密鑰密碼體系_第5頁
已閱讀5頁,還剩136頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

NetworkandInformationSecurity第2章對稱密鑰密碼體系NetworkandInformationSecurity密碼體系的原理和基本概念數(shù)據(jù)加密標準(DES)IDEAAES序列密碼

主要內容2.1密碼學原理2.1.1密碼學的基本原理

密碼技術是一門古老的技術。公元前1世紀,著名的凱撒(Caesar)密碼被用于高盧戰(zhàn)爭中,這是一種簡單易行的單字母替代密碼。20世紀,第一次世界大戰(zhàn)進行到關鍵時刻,英國破譯密碼的專門機構“40號房間”利用繳獲的德國密碼本破譯了著名的“齊默爾曼”電報,促使美國放棄中立參戰(zhàn),改變了戰(zhàn)爭進程。戰(zhàn)爭的刺激和科學技術的發(fā)展對密碼學的發(fā)展起到了推動作用。NetworkandInformationSecurity凱撒密碼,又叫循環(huán)移位密碼。其加密方法就是將明文中的每個字母都用其右邊固定步長的字母代替,構成密文。例如:步長為4,則明文A、B、C、…、Y、Z可分別由E、F、G、…、C、D代替。如果明文是“about”,則變?yōu)槊芪摹癳fsyx”,其密鑰k=+4。兩個循環(huán)的字母表對應。思考:若步長為3,密文是“LORYHBRX”,則明文是多少?齊默爾曼電報(英語:ZimmermannTelegram,德語:Zimmermann-Depesche)是一份由德意志帝國外交秘書阿瑟·齊默爾曼于1917年1月16號向德國駐墨西哥大使馮·伯恩托夫發(fā)出的加密電報。

電報內容建議與墨西哥結成對抗美國的軍事聯(lián)盟,但被英國40號辦公室情報機關截獲。英國通過外交部將電報全文交給美國總統(tǒng)并約定該電報是美國自己截獲并破譯的。2.1密碼學原理

1.密碼學的發(fā)展簡史早在四千多年以前,古埃及人就開始使用密碼技術來保密要傳遞的消息。一直到第一次世界大戰(zhàn)前,密碼技術的進展很少見諸于世,直到1918年,WilliamF.Friedman的論文“TheIndexofCoincidenceandItsApplicationsinCryptography”(重合指數(shù)及其在密碼學中的應用)發(fā)表時,情況才有所好轉。2.1.1密碼學的基本原理2023/2/3

1949年,C.E.Shannon(香農)在《貝爾系統(tǒng)技術雜志》上發(fā)表了“TheCommunicationTheoryofSecrecySystem(保密系統(tǒng)的通信理論)”,為密碼技術奠定了堅實理論基礎。使密碼學真正成為一門科學。

1976年,W.E.Diffie和M.E.Hellman發(fā)表了“NewDirectioninCryptography(密碼學新方向)”一文,提出了一種全新的密碼設計思想,導致了密碼技術上的一場革命。他們首次證明了在發(fā)送端和接收端不需要傳送密鑰的保密通信是可能的,從而開創(chuàng)了公鑰密碼技術的新紀元,成為現(xiàn)代密碼技術的一個里程碑。2023/2/3

1977年美國國家標準局NBS(NationalBureauofStandards,即現(xiàn)在的國家標準與技術研究所NIST)正式公布了數(shù)據(jù)加密標準DES(DataEncryptionStandard)1978年,R.L.Rivest,A.Shamir和L.Adleman實現(xiàn)了RSA公鑰密碼技術,此后成為了公鑰密碼技術中杰出代表

1984年,Bennett.CharlesH.,Brassard.Gille首次提出了量子密碼技術(現(xiàn)稱為BB84協(xié)議)。2023/2/3

1985年,N.Koblitz和V.Miller把橢圓曲線理論運用到公鑰密碼技術中,成為公鑰密碼技術研究的新亮點。密碼技術的另一個重要方向——序列密碼(也稱為流密碼,序列密碼主要用于政府、軍方等國家要害部門)理論也取得了重大的進展。1989年,R.Mathews,D.Wheeler,L.M.Pecora和Carroll等人首次把混沌理論使用到序列密碼及保密通信理論中,為序列密碼的研究開辟了一條新的途徑。2.1.1密碼學基本原理意義解決數(shù)據(jù)的機密性、完整性、不可否認性以及身份識別等問題均需要以密碼為基礎,密碼技術是保障信息安全的核心基礎。

研究內容密碼學以研究數(shù)據(jù)保密為目的,對存儲和傳輸?shù)男畔⑦M行秘密變換以防止第三者竊取信息的科學。包括密碼編碼學和密碼分析學兩部分。密碼編碼學:研究如何編碼,采用什么樣的密碼體制保證信息被安全加密。密碼分析學:破譯密文,在未知密鑰的情況下推演出明文和密鑰的技術?;靖拍睿何唇?jīng)過加密的原始消息稱為明文m或p(PlainText)。偽裝消息以隱藏它的內容的過程稱為加密E(Encrypt)加密后的消息,即經(jīng)過偽裝后的明文稱為密文c(CipherText)把密文轉變?yōu)槊魑牡倪^程稱為解密D(Decrypt)。密碼方案確切地描述了加密變換和解密變換的具體規(guī)則加密算法對明文進行加密時所使用的規(guī)則的描述E(m)解密算法對密文進行還原時所使用的規(guī)則的描述D(c)NetworkandInformationSecurity加密和解密的原理如圖2-1所示圖2-1加密和解密原理加密函數(shù)E作用于M得到密文C,用數(shù)學公式表示為:E(M)=C相反地,解密函數(shù)D作用于C產(chǎn)生M:D(C)=M先加密消息后解密,原始的明文將恢復出來,下面的等式必須成立:D(E(M))=M2.1.2安全密碼準則如果密碼的保密性是基于保持算法的秘密,這種密碼算法就稱為受限制的算法。

缺陷:大型的或經(jīng)常變換用戶的組織不能使用它們。受限制的密碼算法不可能進行質量控制或標準化。解決方法:現(xiàn)代密碼學用密鑰解決了這個問題。密鑰:加密和解密算法的操作在稱為密鑰(K)的元素控制下進行。K可以是很多數(shù)值里的任意值。秘鑰K的可能值的范圍叫做密鑰空間。加/解密函數(shù):Ek(M)=CDk(C)=MNetworkandInformationSecurity加密的過程:c=Eke(m)解密的過程:m=Dkd(c)注意:Ke和Kd可以相同,也可以不同。加密/解密過程示意圖NetworkandInformationSecurity所有算法的安全性都基于密鑰的安全性,而不是基于算法細節(jié)的安全性。無數(shù)的事實已經(jīng)證明,只有公開的算法才是安全的。

NetworkandInformationSecurity

2.1.3對稱密鑰密碼和非對稱密鑰密碼基于密鑰的算法通常有兩類:對稱算法和非對稱算法。對稱算法有時又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中容易地推算出來,反過來也成立。在大多數(shù)對稱算法中,加/解密密鑰是相同的。這些算法也叫秘密密鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前,商定一個密鑰。對稱算法可分為兩類。一次只對明文中的單個比特(有時對字節(jié))運算的算法稱為序列密碼或流密碼算法。另一類算法是對明文的一組比特進行運算,這些比特組稱為分組,相應的算法稱為分組算法。NetworkandInformationSecurity分組密碼的工作原理如圖2-4所示:

圖2-4分組密碼的工作原理NetworkandInformationSecurity非對稱算法是這樣設計的:用作加密的密鑰不同于用作解密的密鑰,而且解密密鑰不能根據(jù)加密密鑰計算出來(至少在合理假定的有限時間內)。非對稱算法也叫做公開密鑰算法,是因為加密密鑰能夠公開,即陌生者能用加密密鑰加密信息,但只有用相應的解密密鑰才能解密信息。2.1.4密碼分析(密碼攻擊)攻擊者在不知道密鑰的情況下,對密文進行分析,試圖獲得機密信息(明文或密鑰)。密碼編碼與密碼分析是共生的、互逆的,兩者解決問題的途徑有很多差別。密碼編碼設計是利用數(shù)學基礎構造密碼。密碼分析出了依靠數(shù)學、工程背景、語言學等知識外,還靠經(jīng)驗、測試、眼力、運氣、直覺判斷能力等。根據(jù)密碼分析者對明文、密文等數(shù)據(jù)資源所掌握的程度,將密碼分析攻擊劃分為不同的形式:

密碼攻擊分類(1)唯密文攻擊密碼分析者已知的內容只有密文,即假設密碼分析者已知算法并能截取到密文,他要盡力找出所使用的秘鑰和對應的明文。唯密文攻擊最容易實施,因為密碼分析者只需要知道密文,密碼算法必須要抵抗這類攻擊,這是密碼算法設計的最低要求。NetworkandInformationSecurity(2)已知明文攻擊密碼分析者已知的內容包括一個或多個明文-密文對以及截獲的待解密密文。明文-密文對被事先搜集。NetworkandInformationSecurity(3)選擇明文攻擊

與已知明文攻擊類似,不同點在于選擇明文攻擊的密碼分析者可以自己選定明文消息,并知道其對應的密文。NetworkandInformationSecurity(4)選擇密文攻擊

與選擇明文攻擊類似,密碼分析者可以自己選擇密文并解密形成密文-明文對。NetworkandInformationSecurity(5)選擇文本攻擊

選擇文本攻擊是選擇明文攻擊與選擇密文攻擊的結合。密碼分析者已知的內容包括:加密算法、由密碼分析者選擇的明文消息和它對應的密文,以及由密碼分析者選擇的猜測性密文和它對應的已破譯的明文。

很明顯,唯密文攻擊是最困難的,因為密碼分析者有最少量的信息可供利用。上述攻擊的強度是遞增的。NetworkandInformationSecurityNetworkandInformationSecurity根據(jù)被破譯的難易程度,不同的密碼算法具有不同的安全等級如果破譯算法的代價大于加密數(shù)據(jù)的價值,那么可能是安全的。如果破譯算法所需的時間比加密數(shù)據(jù)保密的時間更長,那么可能是安全的。如果用單密鑰加密的數(shù)據(jù)量比破譯算法需要的數(shù)據(jù)量少得多,那么可能是安全的。學者LarsKundsen把破譯算法分為不同的類別,安全性的遞減順序如下:(1)全盤破譯:密碼分析者找出了秘鑰。(2)全盤推導:密碼分析者找到一個代替算法,在不知道密鑰的情況下,可用它得到明文。(3)實例(或局部)推導:密碼分析者從截獲的密文中找出明文。(4)信息推導:密碼分析者獲得一些有關密鑰或明文的信息。這些信息可能是密鑰的幾bit、有關明文格式的信息等。NetworkandInformationSecurityNetworkandInformationSecurity幾乎所有密碼系統(tǒng)在唯密文攻擊中都是可破的,只要簡單地一個接一個地去試每種可能的密鑰,并且檢查所得明文是否有意義。這種方法叫做蠻力攻擊。密碼學更關心在計算上不可破譯的密碼系統(tǒng)。如果一個算法用(現(xiàn)在或將來)可得到的資源在可接受的時間內都不能破譯,這個算法則被認為在計算上是安全的。NetworkandInformationSecurity可以用不同方式衡量攻擊方法的復雜性:(1)數(shù)據(jù)復雜性:用作攻擊輸入所需要的數(shù)據(jù)量。(2)時間復雜性:完成攻擊所需要的時間。(3)存儲復雜性:進行攻擊所需要的存儲量。2.2數(shù)據(jù)加密標準DES背景基礎:1967年美國HorstFeistel提出的理論。發(fā)明人:美國IBM公司W(wǎng).Tuchman和C.Meyer1971-1972年研制成功。產(chǎn)生:美國國家標準局(NBS)1973年5月-1974年8月兩次發(fā)布公告,公開征求用于電子計算機的加密算法,經(jīng)評選采納了IBM的LUCIFER方案。標準化:DES算法1975年3月公開發(fā)表,1977年1月15日由NBS頒布為數(shù)據(jù)加密標準,于1977年7月15日生效。應用:DES算法在POS、ATM、智能卡(IC卡),加油站、高速公路收費站被廣泛應用,以此來實現(xiàn)關鍵數(shù)據(jù)的保密。1.S-DES加密算法(簡化的DES)S-DES是由美國圣達卡拉大學的EdwardSchaeffer教授提出的,主要用于教學,其設計思想和性質與DES一致,有關函數(shù)變換相對簡化,具體參數(shù)要小得多。相關知識置換:“ABCDEFGH”做一下”82641753″置換的結果就是”HBFDAGEC”循環(huán)移位:“ABCDEFGH”循環(huán)左移2位結果就是”CDEFGHAB”S盒替代選擇:輸入的四位數(shù)”ABCD”在S盒中找第AD行BC列的數(shù)字作為輸出。比如0101輸入S0盒的話就是第1(01)行第2(10)列,輸出為1即01,再比如1001輸入S1的話就是第3(11)行第0(00)列,輸出為2即10按位異或:1100∧1010=0110S-DES的體制輸入為一個8位的二進制明文組和一個10位的二進制密鑰,輸出為8位二進制密文組;解密與加密基本一致。加密:IP-1(fk2(SW(fk1(IP(明文)))))解密:IP-1(fk1(SW(fk2(IP(密文)))))算法安全性:依賴于雙方共享的10位密鑰,經(jīng)過變換生成2個8位密鑰,分別用于加、解密的不同階段。S-DES的密鑰產(chǎn)生置換函數(shù):P10=(3,5,2,7,4,10,1,9,8,6)循環(huán)左移函數(shù)LSP8=(6,3,7,4,8,5,10,9)P10(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6)循環(huán)左移1位,結果被兩次使用,分別產(chǎn)生k1,k2思考:若初始密鑰k0為(1010000010),產(chǎn)生的兩個子密鑰k1,k2分別為多少?(k1:10100100k2:01000011)

S-DES的加密變換過程

IP=(2,6,3,1,4,8,5,7)IP-1=(4,1,3,5,7,2,8,6)E/P=(4,1,2,3,2,3,4,1)“⊕”:按位異或運算;P4=(2,4,3,1)S盒函數(shù)S0和S1為兩個盒子函數(shù),將輸入作為索引行列號查表,得到相應的系數(shù)作為輸出。SW:將左4位和右4位交換。思考:如果明文:10010101,密鑰k1=10100100,K2=01000011,則密文是多少?2023/2/3322.DES算法

DES是一個分組密碼算法,使用64位密鑰(除去8位奇偶校驗,實際密鑰長為56位)對64比特的數(shù)據(jù)分組(二進制數(shù)據(jù))加密,產(chǎn)生64位密文數(shù)據(jù)。DES是一個對稱密碼體制,加密和解密使用同一密鑰,解密和加密使用同一算法。DES的所有保密性均依賴于密鑰。2023/2/333DES加密算法圖DES的一次迭代過程NetworkandInformationSecurity(1)DES的加密過程(3個階段)第一階段:初始置換IP(如下頁表所示)DES對64位明文分組進行操作。首先,64位明文分組x經(jīng)過一個初始置換函數(shù)IP,產(chǎn)生64位的輸出x0,再將分組x0分成左半部分L0和右半部分R0,即:

x0=IP(x)=L0R0置換表如表2-1所示。此表順序為從上到下,從左至右。如初始置換把明文的第58位換至第1位,把第50位換至第二位,以此類推。NetworkandInformationSecurity表2-1初始置換IP58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157特點:整個64位按8行、8列排列;最右邊一列按照2,4,6,8和1,3,5,7的次序排列;往左邊各列的位序號依次為緊鄰其右邊一列各位序號加8.DES算法的子密鑰的生成過程

NetworkandInformationSecurityDES加密算法的密鑰長度為56位,但一般表示為64位,其中,每個第8位用于奇偶校驗。在DES加密算法中,將用戶提供的64位初始密鑰經(jīng)過一系列的處理得到K1,K2,…,K16,分別作為1~16輪運算的16個子密鑰。子密鑰的生成過程如右圖所示:8的倍數(shù)位,即第8,16,24,32,40,48,56和64位共8位未被使用。NetworkandInformationSecurity子密鑰的生成過程如下:首先,將64位密鑰去掉8個校驗位,用密鑰置換PC–1置換剩下的56位密鑰;再將56位分成前28位C0和后28位D0兩部分,即PC–1(K56)=C0D0。密鑰置換PC-1如表2-2所示。57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124表2-2密鑰置換PC–1NetworkandInformationSecurity

接下來,根據(jù)輪數(shù),這兩部分分別循環(huán)左移1位或2位。具體每輪移位的位數(shù)如表2-3所示。

表2-3每輪移動的位數(shù)輪次12345678910111213141516位數(shù)1122222212222221NetworkandInformationSecurity

移動后,將兩部分合并成56位后通過壓縮置換PC–2后得到48位子密鑰,即Ki=PC-2(CiDi)。壓縮置換如表2-4所示。表2-4壓縮置換PC–214171124153281562110231912426816727201324152313747553040514533484449395634534642503629329,18?NetworkandInformationSecurity圖2-6子密鑰產(chǎn)生第二階段:計算16次迭代變換。

DES采用了典型的Feistel結構,其算法的核心是算法所規(guī)定的16次迭代變換。DES算法的16次迭代變換具有相同的結構,每一次迭代變換都以前一次迭代變換的結果(第一次迭代以作x0=L0R0為輸入)和用戶密鑰擴展得到的子密鑰ki作為輸入;每一次迭代變換只變換一半數(shù)據(jù),它們將輸入數(shù)據(jù)的右半部分經(jīng)過函數(shù)f后,將其輸出與輸入數(shù)據(jù)的左半部分進行異或運算,并將得到的結果作為新的右半部分,原來的右半部分變成了新的左半部分NetworkandInformationSecurityDES加密算法圖注意:DES在最后一輪后,左半部分和右半部分不再交換NetworkandInformationSecurity密碼函數(shù)F:1)函數(shù)F的操作步驟密碼函數(shù)F的輸入是32比特數(shù)據(jù)和48比特的子密鑰,其操作步驟如下頁圖2-7所示。(1)擴展置換(E)。將數(shù)據(jù)的右半部分Ri從32位擴展為48位。位選擇函數(shù)(也稱E盒)如表2-5所示。NetworkandInformationSecurity圖2-7F(Ri,Ki)計算NetworkandInformationSecurity表2-5擴展置換(E)32123

4

54

5678

989101112131213141516171617

1819202120212223242524252627282928293031321特點:擴展置換(E)將32位輸入擴展為48位輸出,實際上32位輸入中有16位被重用;將48位按8行、6列的次序排列;排列時,將輸入位序號按32,1,2,。。。31,32的次序依次排列,但上一行的后兩位依次在下一行的前兩位得到重用,認為最后一行的下一行是第1行。NetworkandInformationSecurity(2)異或。擴展后的48位輸出E(Ri)與壓縮后的48位密鑰Ki作異或運算。

(3)S盒替代。將異或得到的48位結果分成八個6位的塊,每一塊通過對應的一個S盒產(chǎn)生一個4位的輸出。八個S盒如表2-6所示。NetworkandInformationSecurity表2-6S盒S1盒1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S2盒1518146113497213120510313471528141201106911501471110413158126932151381013154211671205149NetworkandInformationSecurityS3盒1009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S4盒7131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S5盒2124171011685315130149141121247131501510398642111101378159125630141181271142136150910453NetworkandInformationSecurityS6盒1211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S7盒4112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S8盒1328461511110931450127115138103741256110149271141912142061013153582114741081315129035611NetworkandInformationSecurityS盒的具體置換過程為:某個Si盒的6位輸入的第1位和第6位形成一個2位的二進制數(shù)(從0~3),對應表中的某一行;同時,輸入的中間4位構成4位二進制數(shù)(從0~15)對應表中的某一列(注意:行和列均從0開始計數(shù))。例如,第8個S盒的輸入為001011,前后2位形成的二進制數(shù)為01,對應第8個S盒的第1行;中間4位為0101,對應同一S盒的第5列。從表2-6中可得S8盒的第1行第5列的數(shù)為3,于是就用0011代替原輸入001011。

S盒具有下列一些屬性:S盒的每一行都是0—15的一個排列;S盒是非線性的,輸出不是輸入的一個仿射變換(輸入6位,輸出4位);改變S盒的1位輸入,至少有2位輸出會發(fā)生改變;如果一個S盒的兩個輸入只有中間兩位,即3,4位不同,它們的輸出至少有兩位不同;如果一個S盒的兩個輸入只有起始兩位,即第1,2位不同,而最后兩位,即第5、6位相同,它們的輸出一定是不同的;在任何一個S盒中,當它的任一位輸入保持不變,其它5位輸入盡情變化時,所有諸4位輸出中,0與1的總數(shù)接近相等。NetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurity(4)P盒置換。將八個S盒的輸出連在一起生成一個32位的輸出,輸出結果再通過置換P產(chǎn)生一個32位的輸出即:F(Ri,Ki)。表2-7為P盒置換。至此,密碼函數(shù)F的操作就完成了。最后,將P盒置換的結果與最初的64位分組的左半部分異或,然后左、右半部分交換,接著開始下一輪計算。1672021291228171152326518311028241432273919133062211425

表2-7P盒置換NetworkandInformationSecurity

第三階段:末置換函數(shù)IP-1

末置換是初始置換的逆變換。對L0和R0進行16輪相同的運算后,將得到的兩部分數(shù)據(jù)合在一起,經(jīng)過一個末置換函數(shù)就可得到64位的密文c,即:

c=IP-1(R16L16)(16指的是16輪)表2-8列出了該變換。40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725表2-8末置換IP-1DES的解密NetworkandInformationSecurityNetworkandInformationSecurity

函數(shù)F的設計

函數(shù)F是DES加密的核心,它依賴于S盒的設計。這也適用于其它的對稱分組加密算法。下面我們簡單討論一下有關F函數(shù)的一些通用設計準則以及S盒設計問題。

(1)F的設計準則。函數(shù)F的基本功能就是“擾亂(confusion)”輸入,因此,對于F來說,其非線性越高越好,也就是說,要恢復F所做的“擾亂”操作越難越好。NetworkandInformationSecurity

其它的設計準則還包括嚴格雪崩準則(SAC)和

比特獨立準則(BIC)

。所謂SAC,就是要求算法具有良好的雪崩效應,輸入當中的一個比特發(fā)生變化都應當使輸出產(chǎn)生”盡可能多”

的比特變化。

嚴格地說,就是當任何單個輸入比特位i發(fā)生變換時,一個S盒的第j比特輸出位發(fā)生變換的概率應為1/2,且對任意的i,j都應成立。

BIC的意思是當單個輸入比特位i發(fā)生變化時,輸出比特位j,k的變化應當互相獨立,且對任意的i,j,k均應成立。SAC和BIC可以有效的增強F函數(shù)的“擾亂”功能。NetworkandInformationSecurity

(2)S盒設計。S盒的設計在對稱分組密碼研究領域中起著舉足輕重的作用。本質上,S盒的作用就是對輸入向量進行處理,使得輸出看起來更具隨機性,輸入和輸出之間應當是非線性的,很難用線性函數(shù)來逼近。顯然,S盒的尺寸是一個很重要的特性。一個n×m的S盒其輸入為n比特,輸出為m比特。DES的S盒大小為6×4。S盒越大,就越容易抵制差分和線性密碼分析。NetworkandInformationSecurityMister和Adams提出了很多的S盒設計原則,其中包括要求S盒滿足SAC和BIC的原則,以及S盒的所有列的全部線性組合應當滿足一類稱為bent函數(shù)的高度非線性布爾函數(shù)的原則。Bent函數(shù)具有很多有趣的特性,其中,高度非線性和最高階的嚴格雪崩準則對于S盒的設計尤為重要。DES的安全性DES的安全性完全依賴于所用的密鑰。自從其算法作為標準公開以來,人們對它的安全性就有激烈的爭論。在對DES安全性的批評意見中,較一致的看法是DES的密鑰太短!其長度56bit,致使密鑰量僅為256=1017,不能抵抗窮舉攻擊,事實證明的確如此。NetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurityDES舉例NetworkandInformationSecurityDES舉例NetworkandInformationSecurityDES舉例NetworkandInformationSecurity分組密碼的工作模式電子編碼本模式(ECB):用相同的密鑰分別對明文分組加密。ECB模式特點模式簡單有效,主要用于內容較短且隨機的報文的加密傳遞各組的加密獨立于其它分組,可以實現(xiàn)并行處理不能隱藏明文的模式信息(統(tǒng)計規(guī)律、結構規(guī)律)相同的明文得出相同的密文同樣信息多次出現(xiàn)造成統(tǒng)計分析攻擊對明文的主動攻擊

信息塊可以被替換、重排、刪除、重放誤差傳遞較?。好芪膲K損壞只會影響其對應的明文解密明文:張三隊長昨晚抓住3名竊賊密文:c1=DES(張三隊長)c2=DES(昨晚抓住)c3=DES(3名竊賊)若將c1及c3的順序對調,則解密后?密碼分組鏈接模式(CBC)加密算法的輸入是上一個密文組和下一個明文組的異或收發(fā)雙方共享IV和Key加密:ci=Ek(mi⊕ci-1)i=1,2,3…..解密:mi=Ek-1(ci)⊕ci-1i=1,2,3…..CBC的特點優(yōu)點:相同明文塊產(chǎn)生不同密文塊,隱蔽明文的數(shù)據(jù)模式。密文塊之間聯(lián)系緊密,某一密文塊被破壞,解密不出有意義的明文塊,在一定程度上防止分組重放、插入、刪除等攻擊。缺點:加密易導致錯誤傳播,任何一個明文或密文分組出錯都會導致其后的密文分組出錯。解密時,如果某密文塊ci出錯,則該組明文mi及下一組明文mi+1會出錯,其余組不受影響。加密不能并行處理,解密可以(因做異或的加密區(qū)塊結果已經(jīng)存在)。密碼反饋模式(CFB)適用于待加密的消息需要按照字符、比特處理,需要共同的IV值。優(yōu)點:隱藏明文模式缺點:加密明文發(fā)生錯誤時,錯誤會傳播。解密時,一個密文塊損壞會影響兩個明文塊無法解密還原。無并行實現(xiàn)的算法。輸出反饋模式(OFB)與CFB類似,但反饋的內容是DES的輸出而不是密文。優(yōu)點:沒有錯誤傳播,如果傳輸中出現(xiàn)錯誤,不會影響其后各位。隱藏明文模式密文中的一位傳輸錯誤只影響明文中的相應位。缺點:不能并行實現(xiàn)安全性較CFB差2.2.2DES的變形——3DES由于DES的密鑰長度相對于窮舉攻擊過短,因此一般使用多重DES進行加密,常見的是三重DES。將64位的明文組以3個56位的密鑰分別在3個DES系統(tǒng)加密處理后,產(chǎn)生64位的密文分組,將密鑰長度有原來的56位擴增到168位,大大增強其安全性。

加密:c=EK3(DK2(EK1(m)))解密:m=DK1(EK2(DK3(c)))一些三重DES算法的模型(其中E代表加密,D代表解密)(1)DES-EEE2:第一和第三加密過程使用相同的密鑰。(2)DES-EDE2:第一和第三加密過程使用相同的密鑰。(3)DES-EEE3:每次用一個不同的密鑰。(4)DES-EDE3:每次用一個不同的密鑰。NetworkandInformationSecurity 由來學嘉(X.J.Lai)和J.L.Massey提出的第1版IDEA(internationaldataencryptionalgorithm,國際數(shù)據(jù)加密算法)于1990年公布,當時稱為PES(proposedencryptionstandard,建議加密標準)。1991年,在Biham和Shamir提出差分密碼分析之后,設計者推出了改進算法IPES,即改進型建議加密標準。1992年,設計者又將IPES改名為IDEA。這是近年來提出的各種分組密碼中一個很成功的方案,已在PGP中采用。2.3IDEANetworkandInformationSecurityIDEA是一個分組長度為64位的分組密碼算法,密鑰長度為128位,同一個算法即可用于加密,也可用于解密。首先定義五種算法:(一)三種加密運算(二)兩種子密鑰運算NetworkandInformationSecurity3種運算結合起來使用可對算法的輸入提供復雜的變換,從而使得對IDEA的密碼分析比對僅使用異或運算的DES更為困難。算法中擴散是由稱為乘加(multiplication/addition,MA)結構的基本單元實現(xiàn)的。該結構的輸入是兩個16比特的子段和兩個16比特的子密鑰,輸出也為兩個16比特的子段。這一結構在算法中重復使用了8次,獲得了非常有效的擴散效果。圖IDEA的加密框圖IDEA的加密過程包括兩部分:(1)輸入的64位明文組分成四個16位子分組:X1、X2、X3和X4。四個子分組作為算法第一輪的輸入,總共進行八輪的迭代運算,產(chǎn)生64位的密文輸出。(2)輸入的128位會話密鑰產(chǎn)生八輪迭代所需的52個子密鑰(八輪運算中每輪需要六個,還有四個用于輸出變換)。IDEA第1輪的輪結構1)X1和第1個子密鑰塊進行乘法運算。2)X2和第2個子密鑰塊進行加法運算。3)X3和第3個子密鑰塊進行加法運算。4)X4和第4個子密鑰塊進行乘法運算。5)1)和3)的結果進行異或運算。6)2)和4)的結果進行異或運算。7)5)的結果與第5子密鑰進行乘法運算。8)6)和7)的結果進行加法運算。9)8)的結果與第6個子密鑰塊進行乘法運算。10)7)和9)的結果進行加法運算。11)1)和9)的結果進行異或運算。12)3)和9)的結果進行異或運算。13)2)和10)的結果進行異或運算。14)4)和10)的結果進行異或運算。結果的輸出為11)、13)、12)、14),除最后一輪外,第2和第3塊交換。1)W1和第1個子密鑰塊進行乘法運算。2)W3和第2個子密鑰塊進行加法運算。3)W2和第3個子密鑰塊進行加法運算。4)W4和第4個子密鑰塊進行乘法運算。IDEA的輸出變換NetworkandInformationSecurity

子密鑰產(chǎn)生:加密過程中52個16比特的子密鑰是由128比特的加密密鑰按如下方式產(chǎn)生的:前8個子密鑰Z1,Z2,…,Z8直接從加密密鑰中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次類推。然后加密密鑰循環(huán)左移25位,再取下面8個子密鑰Z9,Z10,…,Z16,取法與Z1,Z2,…,Z8的取法相同。這一過程重復下去,直到52子密鑰都被產(chǎn)生為止。NetworkandInformationSecurity解密過程 解密過程和加密過程基本相同,但子密鑰的選取不同。解密子密鑰U1,U2,…,U52是由加密子密鑰轉換得到(將加密過程最后一步的輸出變換當作第9輪):①第i(i=1,…,9)輪解密的前4個子密鑰由加密過程第(10-i)輪的前4個子密鑰得出:其中第1和第4個解密子密鑰取為相應的第1和第4個加密子密鑰的模216+1乘法逆元,第2和第3個子密鑰的取法為:當輪數(shù)i=2,…,8時,取為相應的第3個和第2個加密子密鑰的模216加法逆元。i=1和9時,取為相應的第2個和第3個加密子密鑰的模216加法逆元。②第i(i=1,…,8)輪解密的后兩個子密鑰等于加密過程第(9-i)輪的后兩個子密鑰。IDEA算法的設計原理NetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurityNetworkandInformationSecurity2.4高級加密標準(AES)AES提出1997年1月,美國國家標準與技術研究所NIST向全世界密碼學界發(fā)出征集21世紀高級加密標準AES(AdvancedEncryptionStandard)算法的公告,并成立了AES標準工作研究室,1997年4月15日的例會制定了對AES的評估標準。NetworkandInformationSecurityAES的要求(1)AES是公開的;(2)AES為單鑰體制分組密碼(3)AES的密鑰長度可變,可按需要增大(4)AES適于用軟件和硬件實現(xiàn);(5)AES可以自由地使用,或按符合美國國家標準(ANST)策略的條件使用;算法衡量條件滿足以上要求的AES算法,需按下述條件判斷優(yōu)劣:安全性計算效率內存要求使用簡便性靈活性AES的評審1998年4月15日全面征集AES算法的工作結束。1998年8月12日舉行了首屆AES候選會議(firstAEScandidateconference),在涉及14個國家的密碼學家所提出的候選AES算法進行了評估和測試,初選并公布了15個備選方案,任由全世界各機構和個人攻擊和評論。CAST256、CRYPTON、E2、DEAL、FROG、SAFER+、RC6、MAGENTA、LOKI97、SERPENT、MARS、Rijndael、DFC、Twofish、HPC。這些算法設計思想新穎,技術水平先進,算法的強度都超過3-DES,實現(xiàn)速度快于3-DES。NetworkandInformationSecurityAES的評審1999年8月9日NIST宣布第二輪篩選出的5個候選算法為:MARS(C.Burwick等,IBM),RC6(R.Rivest等,RSALab),Rijndael(J.Daemen,比),SERPENT(R.Anderson等,英,以,挪威),Twofish(B.Schiener)。2000年10月2日,NIST宣布Rijndael作為新的AES。至此,經(jīng)過3年多的討論,Rijndael終于脫穎而出。NetworkandInformationSecurityAES算法設計思想抵抗所有已知攻擊在多個平臺上速度快,編碼緊湊設計簡單Rijndael是一個分組密碼算法,其分組長度和密鑰長度相互獨立,都可以改變。分組長度和密鑰長度的不同取值NetworkandInformationSecurityAES中共用到5個數(shù)據(jù)度量單位:位、字節(jié)、字、分組和態(tài)。位:就是二進制的0或1;字節(jié):就是一組8位的二進制數(shù);字:是由4個字節(jié)組成的一個基本處理單位,可以是按行或列排成一個矩陣;AES中的分組:如128位,可以表示成16個字節(jié)組成的一個行矩陣態(tài)(State):密碼運算的中間結果成為狀態(tài)。State的表示:狀態(tài)用以字節(jié)為基本構成元素的矩陣陣列來表示,該陣列有4行,列數(shù)記為Nb。Nb=分組長度(bits)÷32Nb可以取的值為4,6,8,對應的分組長度為128,192,256bits.明文分組和密鑰的組織排列方式NetworkandInformationSecurity以明文分組為128bits為例組成的陣列注意:矩陣中字節(jié)排列順序是從上到下從左到右。以明文分組(或密鑰)為128bits、192bits、256bits為例組成的陣列NetworkandInformationSecurity102AES的加密與解密

過程最后1輪沒有列混合輪函數(shù)的3層線性混合層:確保多輪之上的高度擴散非線性層:進行字節(jié)代換,即S-盒替換,起到混淆的作用密鑰加層:單輪子密鑰簡單的異或到中間狀態(tài)上,實現(xiàn)一次性掩蓋AES各輪AES加密循環(huán)(除最后一輪外)均包含4個步驟:(1)字節(jié)代換(SubBytes)通過一個非線性的替換函數(shù),用查找表的方式把每個字節(jié)替換成對應的字節(jié)。(2)行位移變換(ShiftRows)將矩陣中的每個橫列進行循環(huán)式移位。

(3)列混合變換(MixColumns)為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯(lián)的四個字節(jié)。

(4)輪密鑰加運算(AddRoundKey)矩陣中的每一個字節(jié)都與該次輪密鑰(Roundkey)做XOR運算;每個子密鑰由密鑰生成方案產(chǎn)生。AES(1)字節(jié)變換(SubBytes)Subbytes變換是一個基于S盒的非線性置換。將狀態(tài)矩陣中的每一個字節(jié)通過查表操作映射成另一個字節(jié)映射方法:輸入字節(jié)的高4位作為S盒的行值,低4位為S盒的列值。e按照字節(jié)代替的處理方法,可以將一個態(tài)中的16字節(jié)分別代替87f24d97ec6e4c904ac346e72464612aea04658583455d965c3398b0a68cd895AES(2)行位移變換(ShiftRows)每一行都向左循環(huán)位移某個偏移量。在AES中(區(qū)塊大小128位),第一行維持不變,第二行里的每個字節(jié)都向左循環(huán)移動一格。同理,第三行及第四行向左循環(huán)位移的偏移量就分別是2和3。經(jīng)過ShiftRows之后,矩陣中每一豎列,都是由輸入矩陣中的每個不同列中的元素組成。偏移量C1、C2、C3與分組長度Nb有關按照行移位的處理方法,可以將一個態(tài)中的4行分別移位處理87f24d976e4c90ec46e74ac32a24646187f24d97ec6e4c904ac346e72464612a(3)列混合變換(MixColumns)可用矩陣乘法表示:即MixColumns函數(shù)接受4個字節(jié)的輸入,輸出4個字節(jié),每一個輸入的字節(jié)都會對輸出的四個字節(jié)造成影響。因此ShiftRows和MixColumns兩步驟為這個密碼系統(tǒng)提供了擴散性。AES一個列混淆的例子0203010101020301010102030301010287f24d976e4c90ec46e74ac3a68cd8954740a34c37d4709f94e43a42eda5a6bc﹒=02·87⊕03·6e⊕01·46⊕01·a6=47113AES(4)輪密鑰加運算(AddRoundKey)

在每次的加密循環(huán)中,都會由主密鑰產(chǎn)生一把輪密鑰,這把密鑰大小會跟原矩陣一樣,然后與原矩陣中每個對應的字節(jié)作異或(⊕)加法。一個輪密鑰加的例子328831e0435a3137f6309807a88da2342b28ab097eaef7ef15d2154f16a6883c19A09aE93dF4C6F8E3E28d48Be2b2a08⊕=態(tài)輪密鑰新態(tài)密鑰擴展密碼密鑰的表示:用一個4行的矩陣來表示,列數(shù)記為Nk。Nk=密鑰長度(bits)÷32Nk可以取的值為4,6,8,對應的密鑰長度為128,192,256bits。密鑰擴展(ExpandedKey)算法密鑰bit的總數(shù)=分組長度×(輪數(shù)Round+1)例如當分組長度為128bits和輪數(shù)Round為10時,輪密鑰長度為128×(10+1)=1408bits種子密鑰被擴展為擴展密鑰輪密鑰從擴展密鑰中按順序選取:第一個輪密鑰由擴展密鑰的第一個Nb個4字節(jié)字,第二個輪密鑰由接下來的Nb個4字節(jié)字組成,以此類推。例如:128位的密鑰以字節(jié)為單位的矩陣描述的,這個密鑰采用擴展算法被擴展到一個以字為單位的密鑰序列中,最終擴展成44字的序列。128位密鑰擴展的具體步驟:(1)初始密鑰直接被復制到數(shù)組W[i]的前4個字中,得到W[0],W[1],W[2],W[3]如加密密鑰=2b7e151628aed2a6abf7158809cf4f3c,則:w[0]=2b7e1516,w[1]=28aed2a6,w[2]=abf71588,w[3]=09cf4f3c(2)對W數(shù)組中下標不為4的倍數(shù)的元素,只是簡單地異或,即W[i]=W[i-1]⊕W[i-4](i不為4的倍數(shù))W[5]=w[4]⊕w[1]w[6]=w[5]⊕w[2](3)對w數(shù)組中下標為4的倍數(shù)的元素,在使用上式進行異或前,需對w[i-1]進行一系列處理,即依次進行:1)RotWord(對輸入4個字節(jié)循環(huán)左移一個字節(jié)),即將字(b0,b1,b2,b3)變?yōu)椋╞1,b2,b3,b0)。如以下求w[4]為例,需對w[3]進行處理RotWord(w[3])=RotWord(09cf4f3c)={cf4f3c09}2)SubWord():基于S盒對輸入字(步驟1的結果)中的每個字節(jié)進行S代替。如:SubWord(cf4f3c09)={8a84eb01}3)將步驟2的結果再與輪常量Rcon[i/4]異或。前10個輪常數(shù)Rcon[i]{8a84eb01}⊕Rcon[4/4]={8a84eb01}⊕{01000000}={8b84eb01}4)將步驟3的結果再與w[i-4]異或。{8b84eb01}⊕w[4-4]={8b84eb01}⊕{2b7e1516}={a0fafe17}即w[4]={a0fafe17}例:明文信息:3243f6a8885a308d313198a2e0370734

加密密鑰:2b7e151628aed2a6abf7158809cf4f3c加密密鑰為128位,輪數(shù)Nr=10加密過程:(1)10輪迭代前,先把原明文寫成如下形式(表1),本輪密鑰寫成如表2形式328831e0435a3137f6309807a88da2342b28ab097eaeF7cf15d2154f16a6883c表1表2

進行輪密鑰加變換操作后產(chǎn)生一個結果,作為10輪迭代的第一輪輸入。輪密鑰加變換操作如下:每個字節(jié)相應異或,32:001100102b:00101011異或結果:00011001即19,所以第一個字節(jié)為19,其他字節(jié)依次類推,因此第一輪的輪開始狀態(tài)為(表3):19a09ae93df4c6f8e3e28d48be2b2a08表3

(2)輪循環(huán)

①進行第一輪的“字節(jié)代換”操作要查S盒,每個字節(jié)依次置換,結果如表4d4e0b81e27bfb44111985d52aef1e530表4

②然后按照行移位變換原則進行操作,結果如表5d4e0b81ebfb441275d52119830aef1e5表5③列混合變換利用公式完成,結果為表604e0482866cbf8068119d326e59a7a4c表6(3)密鑰擴展:①W[0]=2b7e1516、w[1]=28aed2a6、w[2]=abf71588、w[3]=09cf4f3c用初始密鑰填充。②接著求w[4],下標為4的倍數(shù),則在異或之前對w[i-1]也就是w[3]處理,w[4]的產(chǎn)生過程如下圖所示:w[4]=a0fafe17w[5]=w[4]⊕w[1]=88542cb1w[6]=w[5]⊕w[2]=23a33939w[7]=w[6]⊕w[3]=2a6c7605w[4],w[5],w[6],w[7]即為新一輪的密鑰③把新一輪的密鑰和表6做輪密鑰加變換,得到的結果如表7做為第2輪迭代的輸入。(4)依次迭代下去,直到第10輪迭代結束。最后的結果即產(chǎn)生的密文為表8所示即:3925841d02dc09fbdc118597196a0b32W[3]=09cf4f3ccf4f3c09RotByte()操作8a84eb01SubByte()操作8b84eb01a0fafe17與Rcon[1]異或與w[0]異或3902dc1925dc116a8409850b1dfb9732a4686b029c9f5b6a7f35aa50f22b4349表8表72.5序列密碼序列密碼強度完全依賴于密鑰流產(chǎn)生器所產(chǎn)生的序列的隨機性和不可預測性,其核心問題是密鑰流生成器的設計。而保持收發(fā)兩端密鑰流的精確同步是實現(xiàn)可靠解密的關鍵技術。迄今為止,只有一種理論上不可破的加密方案,叫做一次一密亂碼本,這是一種序列密碼。RC4RC4概述基本思想:

溫馨提示

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

評論

0/150

提交評論