第7章數(shù)據(jù)加密技術...ppt_第1頁
第7章數(shù)據(jù)加密技術...ppt_第2頁
第7章數(shù)據(jù)加密技術...ppt_第3頁
第7章數(shù)據(jù)加密技術...ppt_第4頁
第7章數(shù)據(jù)加密技術...ppt_第5頁
免費預覽已結(jié)束,剩余107頁可下載查看

下載本文檔

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

文檔簡介

網(wǎng)絡安全與管理,第7章數(shù)據(jù)加密技術,知識目標掌握數(shù)據(jù)加密的有關概念、數(shù)據(jù)加密的模型了解傳統(tǒng)的加密技術掌握現(xiàn)代加密技術的原理及其分類掌握非對稱加密算法的基本原理掌握報文鑒別的概念技能目標掌握DES算法的基本思想及其加密、解密過程和安全性掌握RSA算法的基本思想及其加密、解密過程了解報文摘要MD5和安全散列算法了解數(shù)據(jù)加密技術的應用,7.1數(shù)據(jù)加密概述,7.1.1密碼學的有關概念,1.消息:消息(message,M)是用語言、文字、數(shù)字、符號、圖像、聲音或其組合等方式記載或傳遞的有意義的內(nèi)容。如果消息被攻擊者竊取,就能夠讀懂其中的含義,所以在密碼學中,保護的對象就是消息。2.明文:未經(jīng)過任何偽裝或技術處理的消息稱為明文(plaintext,P)。3.加密:利用某些方法或技術對明文進行偽裝或隱藏的過程稱為加密(encryption,E)。4.密文:被加密的消息稱為密文(ciphertext,C)。密文看起來是一堆雜亂無章、沒任何意義的數(shù)據(jù)。,7.1.1密碼學的有關概念,5.解密:將密文恢復為原明文的過程或操作稱為解密(decryption,)。解密也稱為脫密,可以看成加密的逆過程。6.加密算法:加密算法(encryptionalgorithm)是將明文消息加密成密文所采用的一組規(guī)則或數(shù)學函數(shù)。7.解密算法:解密算法(decryptionalgorithm)是將密文消息解密成明文所采用的一組規(guī)則或數(shù)學函數(shù)。8.密鑰:密鑰(key,K)是進行加密或解密操作所需要的秘密參數(shù)或關鍵信息。如果缺少密鑰,就不能正確地進行加密或者解密。在加密算法中,密鑰又分為加密密鑰(加密時采用的密鑰)和解密密鑰(解密時采用的密鑰)。,7.1.2加密算法的模型,圖7-1加密算法的一般模型,加密和解密的描述公式,發(fā)送端對數(shù)據(jù)的處理可以用下式描述:接收端對數(shù)據(jù)的處理可以用下式描述:,密碼學的內(nèi)容,密碼學包括兩方面密切相關的內(nèi)容:一方面是密碼編碼學,主要是研究各種加密方案,保護信息不被敵方或者任何無關的第三方偵悉;另一方面是密碼分析學,研究攻破一個加密算法的途徑,恢復被隱藏的信息的本來面目。這兩個部分相輔相成,互相促進,也是矛盾的兩個方面。,7.1.3傳統(tǒng)的加密技術,在計算機出現(xiàn)之前,密碼學由基于字符的密碼算法構成(即針對字符進行操作)的。密碼算法主要采用的是替代(substitution)和置換(transposition)這兩種方法,好的密碼算法是結(jié)合這兩種方法,每次進行多次運算?,F(xiàn)代的計算機密碼算法要復雜得多,但基本原理沒有變化,其重要的變化是算法只對位而不是字符進行變換。傳統(tǒng)的加密技術有以下幾種。,1.替代密碼,替代密碼是將明文中的每一個字符替換成密文中的另一個字符,接收者對密文進行逆替換就恢復出明文來。在傳統(tǒng)的加密技術中有3種類型的替代密碼:單表替代密碼、多表替代密碼和多字母替代密碼。,1)單表替代密碼,所謂的單表替代密碼,就是明文中的每一個字符用相應的密文字符代替。著名的“凱撒密碼”就是一種單表替代密碼,也稱為循環(huán)移位密碼。這是一種古老的加密方法,當年凱撒大帝行軍打仗時用這種方法進行通信,因此得名。,凱撒密碼加密的原理,凱撒密碼加密的原理是把明文中的每一個字母都用該字母在字母表中右邊的第個字母替代(這里k就是加密密鑰),并認為Z后邊又是A。例如,假如k為3,其替代表(在這里,為了不出現(xiàn)混淆,明文使用的是小寫字母,密文使用的是大寫字母,在實際使用中可不作這樣要求)如下:,凱撒密碼舉例,例如,明文為:networksecurity則密文為:QHWZRUNVHFXULWB,如果將26個字母分別對應于整數(shù)025,可得凱撒密碼變換為:加密:解密,一般的凱撒密碼變換,加密:解密:,凱撒密碼的缺點,顯然,這種加密算法是不安全的,它非常容易被攻破。首先,簡單的單表替代沒有掩蓋明文不同字母出現(xiàn)的頻率;其次,移位替代的密鑰空間有限,只有26個密鑰,利用暴力攻擊很容易破解,2)多表替代密碼,大多數(shù)多表替代密碼是周期替代密碼,當周期為1時,就是單表替代密碼。多表替代密碼的種類很多,一種常用的多表替代密碼叫Vigenere(維吉尼亞)密碼。它是循環(huán)使用有限個字母實現(xiàn)替代的。在Vigenere密碼中,把26個字母循環(huán)移位,排列在一起,形成一個2626的方陣表,如下表所示。,Vigenere密碼加密原理,實際使用時,往往把某個容易記憶的詞或詞組當做密鑰。給一個信息加密時,只要把密鑰反復寫在明文下方,以明文字母選擇列,以密鑰字母選擇行,兩者的交點就是加密生成的密文字母。例如,以HOW為密鑰,明文為ILOVEYOUP=ILOVEYOUK=HOWHOWHO加密后的密文Ek(P)=PZKCSUVI解密時,以密鑰字母選擇行,從中找到密文字母,密文字母所在列的列名即為明文字母。,3)多字母替代密碼,多字母替代密碼是每次對多于一個的字母進行替代的加密方法。例如,將明文中的字符每3個分為一組,當出現(xiàn)AAA時用RTQ替代,當出現(xiàn)AAB時用SLL替代,等等。在進行解密時,再按照這個對應關系進行逆替換就可以恢復出原來的明文。多字母替代密碼的優(yōu)點在于將字母的出現(xiàn)頻率隱蔽或者均勻化,從而利于抗統(tǒng)計分析。多字母替代密碼是在19世紀中期發(fā)明的,在第一次世界大戰(zhàn)中,英國人就采用了這種對成組字母加密的密碼。,2.置換密碼,置換密碼也稱為換位密碼,是根據(jù)一定的規(guī)則重新排列明文字母的順序,使之成為密文。常用的置換密碼有列置換密碼和周期置換密碼兩種。,1)列置換密碼,列置換密碼是將明文分割成n列的分組形式(即每行n個字符),按照每一列從上向下產(chǎn)生密文。例如,將明文WHATYOUCANLEARNFROMTHISBOOK分割成為5列的分組(這里5就成為密鑰k),最后不全的組可以用不常使用的字符填滿,如右所示:,按照每一列,從上向下,就可以得到密文:WOLFHOHUERIKACAOSXTARMBXYNNTOX,這里的密鑰是數(shù)字5。,2)周期置換密碼,周期置換密碼是把明文中的字母按照給定的順序排在一個矩陣中,然后用另一種順序選出矩陣中的字母來產(chǎn)生明文。例如,將上例中的明文按行排在一個56的矩陣中。給定一個置換,密鑰為24513,即按第二列,第四列,第五列,第一列,第三列的次序排列,可得到如右的矩陣:,然后按每一行,從左向右讀出,即可得到密文:HTYWAUANOCERNLARMTFOIBOHSKXXOX。,7.1.4現(xiàn)代加密技術,在傳統(tǒng)的加密技術中,算法的安全性主要是基于算法的保密性,一旦算法被泄露,很容易就被破解。這種算法稱為受限制的算法。在現(xiàn)代密碼學中,由于加密技術的普遍應用,不可能為每一個應用都開發(fā)一個成熟、有效的加密算法,因此算法的安全性就不能基于算法的保密性,而要基于密鑰的保密性。也就是說,只要密鑰不公開,即使算法公開并被分析,不知道密鑰的人也無法理解加密過的消息。現(xiàn)代加密技術中,引入了計算機對信息進行加密和解密處理,因此,運算速度大大提高,要求的密鑰長度也越來越長。,7.1.5現(xiàn)代加密技術的分類,密碼學發(fā)展至今,產(chǎn)生了很多密碼算法。有的算法已在學術刊物中披露,而更多的卻作為軍事、商業(yè)及貿(mào)易等秘密被嚴加保密。因此,密碼算法的分類也是多種多樣的。這里,重點介紹以下分類。,1.分組密碼和序列密碼,按照對明文的處理方式,密碼算法可以分為分組密碼和序列密碼。,1)分組密碼,分組密碼的加密方式是首先將明文序列以固定長度進行分組,每一組明文用相同的密鑰和加密函數(shù)進行運算。分組密碼的優(yōu)點是:明文信息良好的擴散性。對插入的敏感性。不需要密鑰同步。較強的適用性,適宜作為加密標準。缺點是:加密速度慢,錯誤擴散和傳播。,2)序列密碼,序列密碼的加密過程是把報文、語音、圖像和數(shù)據(jù)等原始信息轉(zhuǎn)換成明文數(shù)據(jù)序列,然后將它同密鑰序列進行逐位模2加生成密文序列發(fā)送給接收者。接收者用相同的密鑰序列進行逐位解密來恢復明文序列。序列密碼的安全性主要依賴于密鑰序列。序列密碼的優(yōu)點是:處理速度快,實時性好。錯誤傳播少。不存在串破譯問題。適用于軍事、外交等保密信道。缺點是:明文擴散性差。插入信息的敏感性差。需要密鑰同步。,2.對稱加密算法和非對稱加密算法,按加密和解密密鑰的類型劃分,可分為對稱加密算法和非對稱加密算法兩種。1)對稱加密算法如果加密密鑰和解密密鑰相同,或由其中一個很容易得出另一個,這樣的密碼算法稱為對稱加密算法。在這種算法中,加密和解密密鑰都需要保密。對稱加密算法也稱為單密鑰算法或私鑰加密算法。常用的對稱加密算法有DES、IDEA、RC2、RC4、SKIPJACK等。2)非對稱加密算法如果加密密鑰與解密密鑰不同,且由其中一個不容易得到另一個,則這種加密算法是非對稱加密算法。這兩個不同的密鑰,往往其中一個是公開的,另一個是保密的。非對稱加密算法也稱為公鑰加密算法。常用的非對稱加密算法有RSA、Elgamal、背包算法、Rabin、ECC(橢圓曲線加密算法)等。,3.單向加密算法和雙向加密算法,根據(jù)加密變換是否可逆,可以將加密算法分為單向加密算法和雙向加密算法。1)單向加密算法單向加密算法使用的是單向函數(shù)(也稱為散列函數(shù)、Hash函數(shù)),可以將明文加密成密文,但卻不能將密文轉(zhuǎn)換為明文(或在計算上不可行),只有同樣的輸入數(shù)據(jù)經(jīng)過同樣的不可逆運算才能得到同樣的加密數(shù)據(jù)。單向加密算法用于不需要解密的場合,因此不需要密鑰。單向加密算法主要用來進行數(shù)據(jù)完整性校驗和身份驗證。單向加密算法的代表有MD4算法、MD5算法、安全散列算法SHA。2)雙向變換加密算法通常的加密解密都屬于雙向變換加密算法,即可以把加密的密文通過解密恢復為原來的明文。,7.2對稱加密算法,對稱加密算法是應用較早的數(shù)據(jù)加密方法,技術成熟。對稱密鑰加密算法中應用最廣泛的數(shù)據(jù)加密標準(dataencryptionstandard,DES)算法。,7.2.1DES算法及其基本思想,1973年,美國國家標準局NBS在認識到建立數(shù)據(jù)保護標準的需要的情況下,開始征集聯(lián)邦數(shù)據(jù)加密標準的方案,1975年3月17日,NBS公布了IBM公司提供的密碼算法,以標準建議的形式在全國范圍內(nèi)征求意見。經(jīng)過兩年多的公開討論之后,1977年7月15日NBS宣布接受這個建議,并作為第46號聯(lián)邦信息處理標準,即DES正式頒布,供民用、商業(yè)和非國防性政府部門使用,也使得DES成為使用最廣泛的一種加密算法。,1.DES算法描述,DES采用分組密碼,它把要加密的明文以64位為一組,分成若干個分組,若最后一個分組不足64位,則在分組之后用0補足。分組之后,利用給定的密鑰,依次對每個分組進行加密,每個分組都會產(chǎn)生64位的密文分組。把所有的分組加密完之后,把產(chǎn)生的所有64位密文分組按順序組合起來就構成了用戶需要的整個密文。DES算法所使用的密鑰長度為64位,但實際只使用其中的56位,其余的8位用做奇偶校驗位。,1)DES算法的過程,第一個階段為初始置換(IP),IP表,第二個階段是進行16輪的迭代運算。,在第i(1i16)輪運算中,輸入的是Li-1、Ri-1和該輪需要的子密鑰Ki(第1輪的輸入是L0、R0和K1),輸出的是Li、Ri。Li、Ri和子密鑰Ki+1就成為下一輪的輸入。兩次相鄰的運算之間的關系是:Li=Ri-1Ri=Li-1g(Ri-1,Ki)其中表示異或操作。當進行完16輪的操作之后,把輸出的L16、R16進行對換,并合并為64位的輸出。,第三個階段完成逆初始置換(IP-1),IP-1表,剩下的兩個問題,每一輪的子密鑰K1、K2、K3、K16是如何產(chǎn)生的。g函數(shù)的結(jié)構。,2)子密鑰的產(chǎn)生,子密鑰產(chǎn)生,密鑰置換PC1,每輪移動的位數(shù),置換選擇PC2,3)g函數(shù),擴展置換E,S盒結(jié)構,S盒的具體置換過程,S盒的具體置換過程為:某個S盒的6位輸入的第1位和第6位形成一個2位的二進制數(shù)(從03),對應表中的行號;同時,輸入的中間4位構成4位二進制數(shù)(從015)對應表中的列號(注意:行和列均從0開始計數(shù))。將8個S盒的輸出連在一起生成一個32位的輸出,輸出結(jié)果再通過如下表所示的P盒置換產(chǎn)生一個32位的輸出,這個輸出的值就是g函數(shù)的輸出值g(Ri-1,Ki)。,P盒置換,2.DES解密,DES解密操作與加密采用相同的算法,如下圖所示。解密算法使用子密鑰的順序與加密過程相反。,DES解密算法,7.2.2DES算法的安全性分析,1.56位的密鑰長度對于當前的計算速度來說太小2.16輪的迭代運算次數(shù)可能太少3.S盒中可能存在著不安全的因素4.DES的一些關鍵部分不應當保密,7.3非對稱加密算法,7.3.1非對稱加密算法概述,在介紹非對稱加密算法之前,先介紹對稱加密算法的一些缺陷。(1)密鑰數(shù)量大。(2)密鑰分配困難。(3)無法抗抵賴。,非對稱加密算法的概念,在這之前,加密和解密算法都是建立在替代和置換的基礎上,而非對稱加密算法則是建立在數(shù)學函數(shù)的基礎之上,更重要的是,非對稱加密算法是非對稱的,加密密鑰與解密密鑰不同,且由其中一個不容易得到另一個,用其中一個密鑰加密的數(shù)據(jù),必須用另外一個密鑰才能進行解密。因此在使用的時候,可以公開其中一個密鑰(稱為公開密鑰,簡稱公鑰),而保密另外一個密鑰(私人密鑰,簡稱私鑰)。這對于保密通信、密鑰分配和鑒別等領域產(chǎn)生深遠的影響。,公鑰加密算法可用于以下兩個方面:,(1)保密通信(2)數(shù)字簽名,(1)保密通信,(2)數(shù)字簽名,非對稱加密算法的基礎,非對稱加密算法的算法基礎是基于一些數(shù)學難題的。比如有基于背包問題的背包算法(這是最早的非對稱加密算法),基于大整數(shù)因數(shù)分解的RSA算法、LUC算法、Rabin體制等,基于有限域中計算離散對數(shù)的困難的ElGamal算法、橢圓曲線加密算法(EllipticCurveCryptosystems,ECC)、Diffie-Hellman算法。,7.3.2RSA算法及其基本思想,著名的非對稱加密算法RSA是由美國麻省理工學院的位科學家Rivest、Shamir和Adleman于1976年提出的,故名RSA,并在1978年正式發(fā)表。RSA是非對稱加密算法中最具有典型意義的算法,大多數(shù)使用非對稱加密算法進行加密和數(shù)字簽名的產(chǎn)品和標準使用的都是RSA算法。,1.RSA基于的數(shù)學難題,RSA算法的安全性基于大整數(shù)因數(shù)分解的困難性。我們知道,求一對大素數(shù)的乘積很容易,但要對這個乘積進行因式分解則非常困難,迄今為止在數(shù)學上還沒有找到有效的辦法。,2.RSA的數(shù)學基礎,如果要想更好地了解RSA的加密和解密的原理,先補充一些數(shù)學知識。1)模運算mod2)乘法逆元3)歐拉數(shù)4)歐拉定理,1)模運算mod,如果a是一個整數(shù),而n是一個正整數(shù),定義amodn的結(jié)果為為a除以n得到的余數(shù)。例如,11mod7=4,25mod7=4。如果兩個整數(shù)a、b滿足:(amodn)=(bmodn),則稱整數(shù)a和b模n同余,可記為:abmodn例如,1125mod7。,2)乘法逆元,如果兩個整數(shù)x、y滿足:xy1modn則稱y是x的關于模n的乘法逆元(也可稱為x是y的關于模n的乘法逆元)。需要注意的是,并非所有整數(shù)都有乘法逆元。性質(zhì):若n為素數(shù),對于所有非0的x(xn)都存在乘法逆元。,3)歐拉數(shù),設n是正整數(shù),那么從1到n-1中與n互素的數(shù)的個數(shù)稱為n的歐拉數(shù),記為(n)。例如,n=10,從1到9之間與10互素的數(shù)有1、3、7、9共4個,因此(10)=4。歐拉數(shù)的兩個性質(zhì):(1)若p是素數(shù),則(p)=p-1。(2)若pq,且均為素數(shù),則(pq)=(p)(q)=(p-1)(q-1)。例如p=3,q=5,(35)=(15)=(3-1)(5-1)=8。,4)歐拉定理,設pq,且均為素數(shù),n=pq,那么任取整數(shù)x(0xn),則:xm(n)+1xmodn其中,m可為任意整數(shù)由于0xn,上式也可以寫成:xm(n)+1modn=x,歐拉定理得到的結(jié)論,這樣我們得到一個很有趣的結(jié)果,就是x經(jīng)過一系列運算之后又變回了x。我們可以想象把x看成明文,中間的運算結(jié)果可以看成密文y(上式并沒給出中間結(jié)果),經(jīng)過最后的運算又恢復成了明文x。,3.RSA密鑰對的產(chǎn)生,(1)隨機地選取兩個不同的大素數(shù)p和q(一般為150位以上的十進制數(shù),可以從網(wǎng)上下載)。(2)計算乘積n=pq。(3)計算n的歐拉數(shù)(n)=(p-1)(q-1)。(4)隨機取一個整數(shù)e,1e(n),且e和(n)互素。此時可求得滿足下式的整數(shù)d:ed1mod(n)因為e和(n)互素,所以e的乘法逆元d是存在的。(5)把e,n公開作為公鑰,把d,n作為私鑰,而p、q、(n)要銷毀。,4.RSA加密的過程,RSA加密明文消息p時(這里假設p是以十進制表示的數(shù)),首先將消息分成大小合適的數(shù)據(jù)分組,然后對分組分別進行加密。每個分組的大小應該比n小。設ci為明文分組pi加密后的密文,則加密公式為:ci=piemodn,5.RSA解密的過程,解密時,對每一個密文分組進行如下運算:pi=cidmodn,7.3.3RSA算法的安全性分析,RSA的安全性基于這么一種想法,那就是模n(即選取的大素數(shù)p、q的乘積)要足夠大以至于在適當?shù)臅r間內(nèi)把它分解是不可能的。目前,還沒有一種有效的方法可以對大數(shù)進行因數(shù)分解。,7.4報文鑒別,7.4.1報文鑒別的概念和一般實現(xiàn)方法,數(shù)據(jù)加密主要防止的是被動攻擊,而報文鑒別的目的是保護數(shù)據(jù)不受主動攻擊,也就是保護數(shù)據(jù)的完整性。數(shù)據(jù)即使被非法用戶改變了或者數(shù)據(jù)是攻擊者偽造的,數(shù)據(jù)的使用者也能發(fā)現(xiàn)。報文鑒別的主要方式有以下幾種。1.報文加密函數(shù)2.報文鑒別碼3.散列函數(shù),7.4.2散列函數(shù),散列函數(shù)又稱Hash函數(shù)、單向函數(shù),它將任意長度的報文M變換成固定長度的散列值(即報文摘要)h,散列函數(shù)表示為:h=H(M)它生成報文所獨有的“指紋”。如果原始報文改變,再次通過散列函數(shù)時,它將生成不同的散列值,因此散列函數(shù)能用來檢測報文的完整性,保證報文從建立開始到收到始終沒有被改變或破壞。收到報文的接收者,使用同樣的散列函數(shù)對報文重新計算散列值,并與收到的散列值相比較。如果相同,則證明報文在傳輸過程中沒有被修改,否則報文是不可信的。,散列函數(shù)必須具備如下特征:,(1)對于不同的報文不能產(chǎn)生相同的散列值,改變原始報文中的任意一位數(shù)值將產(chǎn)生完全不同的散列值。(2)對于任意一個報文無法預知它的散列值。(3)無法根據(jù)散列值倒推報文,因為一條報文的散列值可能是由無數(shù)的報文產(chǎn)生的。(4)散列算法是公開的,不需要保密,它的安全性來自它產(chǎn)生單向散列的能力。(5)散列值有固定的長度,一個短報文的散列與一個非常長的報文的散列可以產(chǎn)生相同長度的散列值。(6)要找到兩個不同報文產(chǎn)生相同的散列值在計算上是不可行的。,7.4.3報文摘要MD5,MD表示報文摘要(messagedigest),MD5是MD4的改進版,是由RonRivest在麻省理工學院提出的,曾是使用最廣泛的散列算法。該算法對輸入任意長度的報文進行計算,以512bit的分組進行處理,產(chǎn)生一個128位長度的報文摘要。MD5算法的實現(xiàn)要經(jīng)過以下5個步驟。,1.附加填充比特,通過附加填充比特,使其長度成為一個比512的倍數(shù)小64的數(shù),即將報文擴展至L512-64(L為正整數(shù))位,留出64位在步驟2使用。填充方法為:在報文后面填充一位1,然后填充所需數(shù)量的0。即使原始報文長度已經(jīng)滿足比512的倍數(shù)小64,仍然要進行填充。即最少要填充1位,最多填充512位。,2.附加長度值,用步驟1留出的64位填充報文的原始長度。當原始長度大于264時(即使現(xiàn)在看來,幾乎不會出現(xiàn)這種情況),用消息長度模264之后的值填充。這時,填充之后的報文長度恰好是512的整數(shù)倍(如512的L倍)。把擴展后的消息以512位為一組進行分組,可以分為L組,表示為Y0,Y1,Y2,YL-1。,3.初始化MD緩存器,在MD5算法中,需要一個128位的緩存器,用來存放中間結(jié)果和最終結(jié)果。這個緩存器由4個32位寄存器A、B、C、D表示。這4個寄存器的初始值(十六進制,按低位字節(jié)在前的順序存放)為:,4.處理512位的分組,這一步驟為MD5的主循環(huán),如圖7-10所示。每次主循環(huán)處理一個512位的分組,處理L個分組總共要進行L次循環(huán)。第q(q=0,1,L-1)次循環(huán)是以當前正在處理的512位分組Yq和128位的緩存值ABCD為輸入,然后更新緩存值ABCD的內(nèi)容,作為下一次主循環(huán)的緩存值的輸入。當q=0時,輸入的ABCD正好是初始化的緩存值。每次主循環(huán)共包含4圈主操作,每圈主操作又包含16輪迭代運算,即每次主循環(huán)總共包括64輪迭代運算。某一輪運算的過程如圖7-11所示。,MD5主循環(huán)處理,圖7-10MD5主循環(huán)處理,MD5某一輪的運算操作,圖7-11MD5某一輪的運算操作,(1)i,表示第i輪操作,i取值范圍為063。,(2)g函數(shù),g函數(shù)的輸入值為B、C、D。共有4圈主操作,每圈主操作使用的g函數(shù)不同,如表7-10所示。,表7-10g函數(shù),(3)Xi,Xi是由輸入的512位的分組Yq得出的。把512位的分組以32位為一組,分為16組,表示為M0,M1,M2,M15。Xi就是由Mi通過運算得出的,每一的輪Xi如表7-11所示。,每一輪的Xi,表7-11每一輪的Xi,(4)Ti,Ti為232*abssin(i+1)的整數(shù)部分值(0i63),其中abs表示取絕對值。運算時,要轉(zhuǎn)換為二進制數(shù),不夠32位,前面用0填充。,(5)S,表示循環(huán)左移S位,每一輪左移的位數(shù)S見表7-12。,表7-12每一輪循環(huán)左移的位數(shù),5.輸出,對所有的512位分組運算完之后,由A、B、C、D四個寄存器的輸出按位低字節(jié)在前的順序(即以A的低字節(jié)開始、D的高字節(jié)結(jié)束)得到的值即為所求出的128位的報文摘要。以上就是對MD5算法的描述。MD5算法的運算均為基本運算,易于用硬件實現(xiàn),可以達到較高的運算速度。,7.4.4安全散列算法,SHA是美國國家標準技術研究院和NSA共同設計的安全散列算法(securehashalgorithm,SHA),用于數(shù)字簽名標準(digitalsignaturestandard,DSS)。SHA1產(chǎn)生報文摘要的過程類似MD5。SHA1的輸入為長度小于264位的報文,輸出為160位的報文摘要,算法的安全性比MD5要高。具體過程如下。,1.附加填充比特,通過附加填充比特,使其長度成為一個比512的倍數(shù)小64的數(shù),即將報文擴展至L*512-64(L為正整數(shù))位,留出64位在步驟2使用。填充方法:在報文后面填充一位1,然后填充所需數(shù)量的0。即使原始報文長度已經(jīng)滿足比512的倍數(shù)小64,仍然要進行填充。即最少要填充1位,最多填充512位。,2.附加長度值,用步驟1留出的64位填充報文的原始長度。這時,填充之后的報文長度恰好是512的整數(shù)倍(即512的L倍)。把擴展后的消息以512位為一組進行分組,可以分為L組,表示為Y0,Y1,Y2,YL-1。,3.初始化MD緩存器,在SHA算法中,需要一個160位的緩存器,用來存放中間結(jié)果和最終結(jié)果。這個緩存器由5個32位寄存器A、B、C、D、E表示。這5個寄存器的初始值為(十六進制,按低位字節(jié)在前的順序存放):,4.處理512位的分組,這一步驟為SHA的主循環(huán),如圖7-12所示。每次主循環(huán)處理一個512位的分組,處理L個分組總共要進行L次循環(huán)。第q(q=0,1,L-1)次循環(huán)是以當前正在處理的512位分組Yq和160位的緩存值ABCDE為輸入,然后更新緩存值ABCDE的內(nèi)容,作為下一次主循環(huán)的緩存值的輸入。當q=0時,輸入的ABCDE正好是初始化的緩存值。每次主循環(huán)共包含4圈主操作,每圈主操作又包含20輪迭代運算,即每次主循環(huán)總共包括80輪迭代運算。某輪運算的過程如圖7-13所示。,SHA主循環(huán)處理,圖7-12SHA主循環(huán)處理,SHA某一輪的運算操作,圖7-13SHA某一輪的運算操作,(1)i,i表示第i輪操作,i取值范圍為079。,(2)5、30,5、30:分別表示循環(huán)左移5位、循環(huán)左移30位,(3)f函數(shù),f函數(shù)的輸入值為B、C、D。共有4圈主操作,每圈主操作使用的f函數(shù)如表7-13所示(其中第2圈和第4圈的f函數(shù)相同)。,表7-13f函數(shù),(4)Wi,Wi:是由輸入的512位的分組Yq得出的。把512位的分組以32位為一組,分為16組,表示為M0,M1,M2M15。Wi就是由Mi通過運算得出的,每一輪的Wi如表7-14所示。表中的S表示把括號內(nèi)的數(shù)值循環(huán)左移1位。,表7-14每一輪的Wi,(5)Ki,Ki:表示一個額外的常數(shù),見表7-15。,表7-15SHA的常數(shù)Ki,5.輸出,對所有的512位分組運算完之后,最后輸出的A、B、C、D、E五個寄存器的值即為所求出的160位的報文摘要。,7.4.5SHA-1與MD5的比較,表7-17SHA-1與MD5的比較,7.5數(shù)據(jù)加密技術的應用,隨著計算機技術和Internet技術的發(fā)展和廣泛應用,在越來越多的場合使用了數(shù)據(jù)加密技術。數(shù)據(jù)加密技術除了具有最常用的數(shù)據(jù)加密功能之外,還有其他一些作用,如電子簽名、數(shù)字時間戳、數(shù)字證書等。,7.5.1數(shù)字簽名,在計算機網(wǎng)絡通信中,不容易通過親筆簽名或印章的形式來確認身份,經(jīng)常會發(fā)生發(fā)送方不承認自己曾發(fā)送過的文件,接收方偽造發(fā)送方文件等現(xiàn)象。解決這種問題的方法就是數(shù)字簽名。數(shù)字簽名與書面文件簽名有相同之處,采用數(shù)字簽名也能確認以下兩點:信息是由簽名者發(fā)送的。信息在傳輸過程中未曾作過任何修改。,1.改進的RSA方案,(1)文件的發(fā)送者A對要發(fā)送的文件M使用SHA算法進行加密,產(chǎn)生一個160位的報文摘要h:h=SHA(M)(2)發(fā)送者A生成自己的RSA密鑰對,并公布自己的公鑰KUA。然后用私鑰KRA對生成的報文摘要h再加密,加密后的密文C就成了數(shù)字簽名。C=EKRA(h)(3)將原文M和數(shù)字簽名C同時傳給對方。(4)對方用發(fā)送者公布的公鑰KUA對數(shù)字簽名進行解密,同時對收到的文件M用SHA算法產(chǎn)生又一摘要h1。h=DKUA(C)h1=SHA(M)(5)將h和h1進行對比。如兩者一致,則說明傳送過程中文件沒有被破壞或篡改過。否則不然。,2.數(shù)字簽名算法,1991年8月,美國NIST公布了用于數(shù)字簽名標準DSS的數(shù)字簽名算法DSA,1994年12月1日正式采用為美國聯(lián)邦信息處理標準。DSA中用到了以下參數(shù):(1)p為L位長的素數(shù),其中,L為5121024之間且是64倍數(shù)的數(shù)。(2)q是160位長的素數(shù),且為p-1的因子。(3)g=h(p-1)/qmodp,其中,h是滿足1hp-1且h(p-1)/qmodp大于1的整數(shù)。(4)x是隨機產(chǎn)生的大于0而小于q的整數(shù)。(5)y=gxmodp。(6)k是隨機產(chǎn)生的大于0而小于q的整數(shù)。前三個參數(shù)p、q、g是公開的;x為私鑰,y為公鑰;x和k用于數(shù)字簽名,必須保密;對于每一次簽名都應該產(chǎn)生一次k。,簽名和驗證簽名過程,對消息m簽名:r=(gkmodp)modqs=(k-1(SHA(m)+xr)modqr和s就是簽名。驗證簽名時,算法如下:w=s-1modqu1=(SHA(m)w)modqu2=(rw)modqv=(gu1yu2)modp)modq如果v=r,則簽名有效。,7.5.2數(shù)字時間戳,交易文件中,時間是十分重要的信息。在書面合同中,文件簽署的日期和簽名一樣均是十分重要的防止文件被偽造和篡改的關鍵性內(nèi)容。在電子交易中,同樣需對交易文件的日期和時間信息采取安全措施,而數(shù)字

溫馨提示

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

評論

0/150

提交評論