密碼學(xué)課件 消息認(rèn)證_第1頁
密碼學(xué)課件 消息認(rèn)證_第2頁
密碼學(xué)課件 消息認(rèn)證_第3頁
密碼學(xué)課件 消息認(rèn)證_第4頁
密碼學(xué)課件 消息認(rèn)證_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

密碼學(xué)導(dǎo)論IntroductiontoCryptology主講教師:李衛(wèi)海、胡紅鋼第9章消息認(rèn)證消息認(rèn)證認(rèn)證的概念消息認(rèn)證算法消息認(rèn)證的實(shí)現(xiàn)消息認(rèn)證認(rèn)證的概念消息認(rèn)證算法消息認(rèn)證的實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境中常見攻擊Disclosure泄露Trafficanalysis流量分析確定連接頻率、持續(xù)時(shí)間、消息量Masquerade偽裝身份假冒Contentmodification內(nèi)容篡改插入、刪除、轉(zhuǎn)換、修改Sequencemodification順序篡改插入、刪除、重排序Timingmodification計(jì)時(shí)篡改延時(shí)、重放Sourcerepudiation信源抵賴Destinationrepudiation信宿抵賴加密認(rèn)證認(rèn)證服務(wù)認(rèn)證服務(wù)和功能認(rèn)證是證實(shí)信息交換過程有效性和合法性的一種手段,包括消息認(rèn)證(也稱報(bào)文認(rèn)證)在產(chǎn)生消息時(shí)進(jìn)行:MAC、Hash、數(shù)字簽名涉及的是特定實(shí)體所聲稱的特定消息主要任務(wù)是消息內(nèi)容的認(rèn)證,即保護(hù)報(bào)文的真實(shí)性、完整性可以兼具認(rèn)證信源身份、認(rèn)證時(shí)間性(需配合協(xié)議)的功能通常與實(shí)際的安全需求結(jié)合起來考慮身份認(rèn)證(也稱實(shí)體認(rèn)證)在協(xié)議執(zhí)行時(shí)進(jìn)行:身份認(rèn)證協(xié)議通常涉及的是特定實(shí)體所具有某些信息,而非傳遞的消息認(rèn)證的目的防篡改、防偽裝、防重放、防抵賴等等例:TCP幀校驗(yàn)碼TCP頭結(jié)構(gòu)提供了額外的特定結(jié)構(gòu),保證密文不被篡改例:TCP幀校驗(yàn)碼幀校驗(yàn)碼FCS和加密函數(shù)的順序很關(guān)鍵加密保護(hù)了數(shù)據(jù),但不解密就不能驗(yàn)證FCS不解密也能驗(yàn)證密文的FCS,但不能檢測(cè)攻擊者對(duì)密文的篡改消息認(rèn)證認(rèn)證的概念消息認(rèn)證算法消息認(rèn)證的實(shí)現(xiàn)消息認(rèn)證服務(wù)的實(shí)現(xiàn)機(jī)制三種操作/機(jī)制可以提供消息認(rèn)證:消息加密消息認(rèn)證碼MessageAuthenticationCode(MAC)Hash函數(shù)消息加密實(shí)現(xiàn)認(rèn)證消息加密本身能夠提供一定的認(rèn)證功能對(duì)稱密鑰密碼保密性解密后可以通過檢驗(yàn)消息的冗余,確認(rèn)消息的真實(shí)性、完整性B可以相信消息來自A(密鑰沒泄露)B可以偽造A可以抵賴消息加密實(shí)現(xiàn)認(rèn)證公開密鑰密碼,公鑰加密保密性解密后可以通過檢驗(yàn)消息的冗余,確認(rèn)消息的真實(shí)性、完整性B無法確認(rèn)消息來源B可以偽造消息加密實(shí)現(xiàn)認(rèn)證公開密鑰密碼,私鑰加密(簽名)解密后可以通過檢驗(yàn)消息的冗余,確認(rèn)消息的真實(shí)性、完整性B可以確認(rèn)A的來源(A私鑰未泄露)B不可以偽造無保密性消息加密實(shí)現(xiàn)認(rèn)證公開密鑰密碼,公鑰加密-私鑰簽名保密性解密后可以通過檢驗(yàn)消息的冗余,確認(rèn)消息的真實(shí)性、完整性B可以確認(rèn)A的來源(A私鑰未泄露)B不可以偽造消息認(rèn)證碼MAC使用密鑰產(chǎn)生短小的定長(zhǎng)數(shù)據(jù)分組,即所謂的密碼校驗(yàn)MAC,將它附加在報(bào)文中。顯然,MAC是多對(duì)一的映射通信雙方共享密鑰k,發(fā)送方計(jì)算MAC=C(k,m)

并附在報(bào)文后。接收方根據(jù)m重新計(jì)算MAC,并與接收到的MAC比較。若密鑰不公開且MAC匹配,則:接收方可以確信報(bào)文未被更改接收方可以確信報(bào)文來自聲稱的發(fā)送者因使用對(duì)稱密鑰,不能抗抵賴和偽造MAC函數(shù)類似加密,但非加密,也無需可逆報(bào)文鑒別不提供保密可以對(duì)密文計(jì)算MAC,驗(yàn)證密文的完整性MAC的基本使用方式MAC的應(yīng)用場(chǎng)合對(duì)稱加密同時(shí)提供保密和認(rèn)證,為什么還要用只提供認(rèn)證的MAC?將一條非秘密消息廣播給很多人時(shí)——不需要加密,也不需要每個(gè)人都做認(rèn)證網(wǎng)絡(luò)數(shù)據(jù)的監(jiān)管——信息傳輸速度過快,沒時(shí)間逐個(gè)解密,可以隨機(jī)選擇認(rèn)證計(jì)算機(jī)程序的防篡改——每次運(yùn)行都解密是很麻煩的用戶不希望做認(rèn)證的人/機(jī)構(gòu)得到明文——不讓外人解密認(rèn)證和保密性的分開,有利于系統(tǒng)的層次化設(shè)計(jì)對(duì)MAC的攻擊對(duì)MAC密鑰的窮舉攻擊當(dāng)密鑰長(zhǎng)度(k)大于MAC值長(zhǎng)度(n)時(shí),窮舉得到密鑰可能不止一個(gè),有必要使用更多的消息進(jìn)行驗(yàn)證消息構(gòu)造攻擊:MAC必須仔細(xì)設(shè)計(jì)例,假設(shè)一個(gè)MAC算法為: m=X1||X2||…||Xm,

ΔX(m)=X1

X2

Xm, MAC=C(k,m)=E(k,ΔX(m))攻擊者可以構(gòu)造: m'=Y1||Y2||…||Ym, Ym=Y1

Y2

Ym-1

ΔX(m)

ΔY(m)=ΔX(m)要求逆運(yùn)算不可行,要求不能構(gòu)造碰撞。否則攻擊者可以替換消息對(duì)MAC的要求應(yīng)考慮對(duì)MAC函數(shù)的各種類型的攻擊當(dāng)密鑰k保密時(shí),MAC函數(shù)應(yīng)滿足:已知消息和MAC值,構(gòu)造另一個(gè)具有相同MAC值的消息在計(jì)算上不可行的MAC值應(yīng)當(dāng)均勻分布抗基于選擇明文的窮舉攻擊MAC函數(shù)應(yīng)當(dāng)?shù)雀诺厥褂孟⒌乃斜忍匚籑AC的結(jié)構(gòu)種類多,對(duì)它進(jìn)行攻擊的研究少數(shù)據(jù)認(rèn)證算法(DAA)FIPSPUB113待認(rèn)證數(shù)據(jù)為D1||D2||…||DNMAC值為DAC以密碼分組鏈接(CBC)為操作方式,又稱為CBC-MAC用0作為初始化向量基于DES加密算法散列函數(shù)Hashfunction散列函數(shù)對(duì)任意長(zhǎng)度報(bào)文m,產(chǎn)生定長(zhǎng)的散列碼h=H(m),亦稱報(bào)文摘要MessageDigest,收縮函數(shù)、操作檢驗(yàn)碼、信息完整性校驗(yàn)(MIC)、哈希值等顯然,hash也是多對(duì)一的映射。期望是均勻的映射是報(bào)文所有比特的函數(shù)值,具有差錯(cuò)檢測(cè)能力哈希值是明文的“指紋”或稱摘要。對(duì)哈希值的數(shù)字簽名,可以視為對(duì)明文的數(shù)字簽名可以用來提高數(shù)字簽名的效率通常認(rèn)為hash函數(shù)是公開的,無密鑰的MAC是有密鑰的散列函數(shù)的使用對(duì)避免加密的方法重視的原因加密過程很慢,硬件開銷,傳輸量問題,專利問題,出口限制等等散列函數(shù)的用途用作消息完整性認(rèn)證驗(yàn)證雙方是否共享KAB用于加密:將分組加密轉(zhuǎn)換成序列加密,產(chǎn)生流密鑰。有OFB和CFB方式用戶密碼產(chǎn)品產(chǎn)地限制使用情況境外組織、個(gè)人境內(nèi)可以使用境外需要《使用境外生產(chǎn)的密碼產(chǎn)品準(zhǔn)用證》中國(guó)法人、組織、公民境內(nèi)可以使用境外不得使用國(guó)家密碼管理局2007年4月23日公布的《商用密碼產(chǎn)品使用管理規(guī)定》和《境外組織和個(gè)人在華使用密碼產(chǎn)品管理辦法》散列函數(shù)的使用散列函數(shù)的使用簡(jiǎn)單散列函數(shù)例經(jīng)度(垂直)冗余校驗(yàn)每分組對(duì)應(yīng)位異或數(shù)據(jù)格式可能影響有效性帶循環(huán)移位的冗余校驗(yàn)每處理一分組,散列值循環(huán)移位一次可以保護(hù)數(shù)據(jù)完整性安全性差很容易構(gòu)造假消息只需在假消息后附加一個(gè)特定分組分組順序可以改變密碼學(xué)對(duì)散列函數(shù)的要求應(yīng)用要求:低代價(jià):對(duì)任意明文m,哈希函數(shù)H(m)由軟/硬件容易實(shí)現(xiàn)均勻性:任意明文應(yīng)等概率地映射為某個(gè)哈希值安全性要求:?jiǎn)蜗蛐裕簩?duì)任意哈希值h,要找到一個(gè)明文m與之對(duì)應(yīng),即h=H(m),在計(jì)算上不可行抗偽造攻擊(抗原像攻擊)抗弱碰撞:給定明文m1,要找到另一明文m2,具有相同哈希值,即h(m1)=h(m2),在計(jì)算上不可行(抗第二原像攻擊)抗偽造攻擊抗強(qiáng)碰撞:要找到任意一對(duì)具有相同哈希值的明文,即(m1,m2),h(m1)=h(m2),在計(jì)算上不可行抗生日攻擊應(yīng)用在數(shù)字簽名上的哈希函數(shù)必須是強(qiáng)哈希函數(shù)弱哈希函數(shù)強(qiáng)哈希函數(shù)不能抗弱碰撞的一種設(shè)計(jì)反例例:美國(guó)國(guó)家標(biāo)準(zhǔn)局曾用過的一種方法: C=XN+1=X1

X2

XN

用密文分組鏈接CBC對(duì)整個(gè)消息和散列碼加密,得 Y1,Y2,…,YN,YN+1不安全。注意, XN+1=X1

X2

XN =[IV

DK(Y1)]

[Y1

DK(Y2)]

[YN-1

DK(YN)]

密文分組的順序改變,對(duì)散列碼沒有影響生日悖論數(shù)學(xué)背景——生日悖論: k要多大,才能使得在k個(gè)人中,至少有兩個(gè)人生日相同的概率大于1/2?k個(gè)人生日的總排列數(shù)是365k,k個(gè)人有不同生日的總排列數(shù)為

N=Pk365=365!/(365-k)!k個(gè)人有不同生日的概率:

Q(365,k)=[365!/(365-k)!]/365k=365!/(365k(365-k)!)k個(gè)人中至少有兩個(gè)人有相同生日的概率是:

P(365,k)=1-Q(365,k)計(jì)算得P(365,23)=0.5073,即k=23P(365,50)=0.9744;P(365,100)=0.9999998生日悖論的推廣一個(gè)集合中元素重復(fù)的一般情形:給定一個(gè)在1到n之間均勻分布的隨機(jī)整數(shù)變量和k個(gè)實(shí)例,那么至少有一個(gè)重復(fù)的概率:

P(n,k)=1-[n!/(n-k)!]/nk

>

1-exp[-k(k-1)/(2n)]

當(dāng)k≈1.18n1/2時(shí),P(n,k)>0.5兩個(gè)集合中元素的重復(fù):

給定一個(gè)在1到n之間均勻分布的隨機(jī)整數(shù)變量和它的兩個(gè)實(shí)例集,每個(gè)集中有k個(gè)元素,那么這兩個(gè)集相交(即至少有一個(gè)元素同屬于兩個(gè)集)的概率: R(n,k)=1-((1-1/n)k)k=1-(1-1/n)k2>1-e-k2/n

當(dāng)k≈0.83n1/2時(shí),R(n,k)>0.5

當(dāng)k=n1/2時(shí),R(n,k)>0.6321生日悖論的推廣函數(shù)形式的弱碰撞:

若一個(gè)函數(shù)可能有n個(gè)函數(shù)值,且已知一個(gè)函數(shù)值h(x),任選k個(gè)數(shù)作為函數(shù)輸入值,問:k必須多大才能保證找到至少一個(gè)滿足h(x)=h(y)的輸入值y的概率大于1/2? P(n,k)=1-(1-1/n)k≈1-k/n

當(dāng)k=n/2時(shí),P(n,k)>0.5對(duì)輸出n比特的hash函數(shù),弱碰撞的攻擊代價(jià)為2n,強(qiáng)碰撞的生日攻擊代價(jià)為2n/2只要散列碼較短,或散列碼很長(zhǎng)但可以分解為獨(dú)立的子碼,就存在生日攻擊基于生日悖論的攻擊:制作假消息的生日攻擊Yuval于1979年提出一種基于生日悖論的攻擊:攻擊者需要在消息進(jìn)行Hash前就介入。假設(shè)消息簽名方法是對(duì)m位散列碼加密后附于消息之后攻擊者產(chǎn)生該消息的2m/2種同義變形,再產(chǎn)生偽造消息的2m/2種同義變形,并分別計(jì)算它們的散列值;根據(jù)生日悖論,這兩個(gè)集合以大于0.5的概率存在相同元素,即偽造消息變形和真實(shí)消息變形中以大于0.5的概率存在一對(duì)的散列值相同攻擊者將該真實(shí)消息的變形提交,進(jìn)行散列運(yùn)算及簽名,之后,將偽造消息替代真實(shí)消息。因?yàn)樗鼈兊纳⒘兄迪嗤浼用芎灻慕Y(jié)果也相同。對(duì)64位散列碼,所需代價(jià)僅為232基于生日悖論的攻擊:惡意程序的偽裝目前多數(shù)軟件提供MD5驗(yàn)證,而MD5已被攻破可以制作兩個(gè)Hash相同的程序,其一是很吸引人的某種正常用途,其二實(shí)現(xiàn)某種惡意攻擊,會(huì)發(fā)生什么?Windows上的應(yīng)用程序多是PE格式。PE程序一般由以下幾部分構(gòu)成: PEheader,PE文件頭 .textsection,代碼段 .datasection,數(shù)據(jù)段 othersections(.reloc,.rdata,.tls,etc)PEheaderreservedblock1.textsectionreservedblock2.datasectionothersections功能1ifR1=R2功能2NY改造目標(biāo)基于生日悖論的攻擊:惡意程序的偽裝偽裝過程:編寫應(yīng)用程序,在其中實(shí)現(xiàn)兩種不同功能手工調(diào)整PE文件結(jié)構(gòu),添加保留塊以PEheader為前導(dǎo)(preamble),搜索隨機(jī)碰撞(collision),使得:X1=PEheader||R1;X2=PEheader||R2;MD5(X1)=MD5(X2)手工制作兩個(gè)文件:將R1填入reservedblock1和reservedblock2中,該文件a執(zhí)行功能1將R2和R1分別添入reservedblock1和reservedblock2中,該文件b執(zhí)行功能2這兩個(gè)文件后續(xù)部分相同,因此MD5保持相同將文件a提交審核,將文件b用于實(shí)際傳播基于生日悖論的攻擊:偽造電子簽名文檔過程:針對(duì)腳本式高級(jí)文檔語言(比如postscript);基于postscript的要求構(gòu)造preamble,尋找MD5隨機(jī)碰撞: X1=preamble;put(R1); X2=preamble;put(R2); MD5(X1)=MD5(X2)給X1和X2添加相同后綴S:MD5(X1||S)=MD5(X2||S)準(zhǔn)備兩份文本T1和T2,T1是正常文本(用來騙取簽名),T2是其他用途文本。最后形成兩份postscript文檔: Y1=preamble;put(R1);

put(R1);if(=)thenT1elseT2 Y2=preamble;put(R2);

put(R1);if(=)thenT1elseT2打開Y1,看到的是T1;打開Y2,看到的是T2。基于生日攻擊的“中間相遇”攻擊Rabin于1978年提出一種算法:消息M=M1||M2||…|MN,使用對(duì)稱分組加密體制(如DES),分組長(zhǎng)度mH0=初始值,Hi=E(Mi,Hi-1)散列碼G=HN基于生日悖論的“中間相遇”攻擊計(jì)算消息的散列值G構(gòu)造消息Q1||Q2||…||QN-2,并計(jì)算HN-2,產(chǎn)生2m/2個(gè)隨機(jī)分組,對(duì)每一分組X,計(jì)算E(X,HN-2);再產(chǎn)生2m/2個(gè)隨機(jī)分組,對(duì)每一分組Y,計(jì)算D(Y,G)根據(jù)生日悖論,存在X和Y滿足E(X,HN-2)=D(Y,G)的概率較大構(gòu)造消息Q1||Q2||…||QN-2||X||Y,其散列碼也為G生日攻擊能成功地攻擊任何使用分組鏈接但分組算法可逆的散列方法如果Hi=E(Hi-1,Mi)呢?消息認(rèn)證認(rèn)證的概念消息認(rèn)證算法消息認(rèn)證的實(shí)現(xiàn)典型的安全散列函數(shù)鏈接結(jié)構(gòu)若壓縮函數(shù)具有抗碰撞能力,那么迭代散列函數(shù)也具有抗碰撞能力散列函數(shù)安全性有算法可以將MD4的抗強(qiáng)碰撞能力降到220已有對(duì)RipeMD-128,MD5和SHA-1的攻擊,降低其抗強(qiáng)碰撞能力2012年選出SHA-3優(yōu)勝者Keccak,采用海綿結(jié)構(gòu),允許變長(zhǎng)的輸入和輸出散列函數(shù)分組長(zhǎng)度摘要長(zhǎng)度抗單向性抗強(qiáng)碰撞MD21281282128264MD45121282128264MD55121282128264RipeMD-1605121602160280SHA-15121602160280SHA-25651225622562128SHA-384102438423842192SHA-512102451225122256信息摘要算法MD5(RFC1321)輸入:長(zhǎng)度小于264的明文輸出:128位的報(bào)文摘要MD5報(bào)文摘要流程增加填充位,使長(zhǎng)度模512等于448填充由一個(gè)1和后續(xù)的0組成填充長(zhǎng)度,用64位表示原始消息長(zhǎng)度,低位在前明文分組,每組512位,分為L(zhǎng)組初始化MD緩沖區(qū)逐個(gè)分組用HMD5處理消息。每組分為16個(gè)32位字,M[k],k=0,1,2…,15輸出MD5的壓縮函數(shù)HMD5壓縮函數(shù)HMD5由四輪運(yùn)算組成,每輪16步,共64步每步對(duì)4個(gè)32位寄存器A,B,C,D中的數(shù)據(jù)進(jìn)行處理最后A,B,C,D中的值即為128位摘要4個(gè)32位的寄存器初始值(低字節(jié)在前)是: A=67452301; B=EFCDAB89; C=98BADCFE; D=10325476;每輪都將512位輸入使用一遍,共四遍MD5單步操作(壓縮函數(shù)){a,b,c,d}{d,((a+g(b,c,d)+M[k]+T[i])<<<s)+b,b,c}a,b,c,d是寄存器A,B,C,D的別名,它按一定次序變化bcd寄存器的內(nèi)容以非線性函數(shù)g處理。

g是每輪對(duì)應(yīng)的非線性函數(shù)F,G,H,I結(jié)果與寄存器a、32位子明文塊M[k]、

一個(gè)固定數(shù)T[i]相加?!?”是模232加法結(jié)果左移s位,再與寄存器b相加最后的32位結(jié)果重新存入abcdabcdabcd輪表示定義1F(b,c,d)(b&c)|((~b)&d)2G(b,c,d)(b&d)|(c&(~d))3H(b,c,d)bcd4I(b,c,d)c

(b|(~d))MD5單步操作的固定數(shù)T[i]=232×abs(sin(i))的整數(shù)部分,i是弧度MD5每步操作的abcd、k、s、i可以看到,每輪中k是0~15的一個(gè)排列,即16個(gè)32位字的消息被使用一遍MD5的強(qiáng)度MD5的每一位都依賴于消息的所有位邏輯函數(shù)F,G,H,I的使用增加了混淆程度MD5可能是128位Hash碼中最強(qiáng)的算法MD5抗密碼分析的能力較弱生日攻擊代價(jià)為264數(shù)量級(jí)王小云教授的碰撞攻擊算法效率很高安全散列算法SHASHA由美國(guó)標(biāo)準(zhǔn)與技術(shù)研究所NIST于1993年設(shè)計(jì)1995年修訂,稱之為SHA-1標(biāo)準(zhǔn)FIPS180-1,及互聯(lián)網(wǎng)中RFC3174算法稱為SHA,對(duì)應(yīng)標(biāo)準(zhǔn)稱為SHSSHA-1建立在MD4算法之上產(chǎn)生160比特消息摘要2005年NIST宣布將逐步廢止SHA-1此后不久,王小云教授公開攻擊算法,尋找碰撞的計(jì)算量為269至2011年,尋找碰撞的計(jì)算量為263安全散列算法SHA-1概述要求輸入小于264位,輸出為160位處理過程與MD5類似。用同樣方式填充明文,并分成512位的定長(zhǎng)塊,每一塊與當(dāng)前信息摘要值結(jié)合,產(chǎn)生信息摘要的下一個(gè)中間結(jié)果,直到處理完畢共掃描5遍,效率略低于MD5(4遍),強(qiáng)度略高使用5個(gè)寄存器:A,B,C,D,ESHA-1的壓縮函數(shù)基本算法初值: A=67452301;B=EFCDAB89; C=98BADCFE;

D=10325476; E=C3D2E1F0A、B、C、D、E進(jìn)行四輪迭代,每輪20步運(yùn)算注意這里每輪使用了20個(gè)消息字,采用了消息擴(kuò)展的處理方式SHA-1的消息擴(kuò)展Wt=Mt(輸入的相應(yīng)消息字),0<=t<=15Wt=Wt-3

Wt-8

Wt-14

Wt-16,16<=t<=79共80個(gè)消息字,等效為掃描消息80/16=5遍SHA-1單步操作{A,B,C,D,E}

{(CLS5(A)+ft(B,C,D)+E+Wt+Kt),A,CLS30(B),C,D}其中,A,B,C,D,E寄存器固定,與MD5每步更換不同t:步數(shù)ft:基本邏輯函數(shù)CLSx:左循環(huán)移位x位Wt:由輸入導(dǎo)出的32位字kt:常數(shù)+:模232的加運(yùn)算步常數(shù)Ktft(B,C,D)0~195A827999(B&C)|((~B)&D)20~396ED9EBA1B

C

D40~598F1BBCDC(B&C)|(B&D)|(C&D)60~79CA62C1D6B

C

DSHA-1與MD-5的比較抗強(qiáng)行攻擊的安全性SHA-1較強(qiáng)抗密碼分析的安全性王小云教授的算法對(duì)MD5較高效,對(duì)SHA-1偏低速度都是32位加法運(yùn)算SHA-1執(zhí)行80步,緩沖區(qū)160位MD5執(zhí)行64步,緩沖區(qū)128位簡(jiǎn)單性和緊湊性都易于實(shí)現(xiàn)低字節(jié)在前(MD5)和高字節(jié)在前結(jié)構(gòu)(SHA-1)沒有本質(zhì)區(qū)別SHA修訂版本2002年,NIST發(fā)布修正版FIPS180-2增加三個(gè)新版本:SHA-256,SHA-384,SHA-512最初目的是與由于使用AES而增加的安全性相應(yīng)SHA-224、SHA-256、SHA-384、SHA-512合稱為SHA-22015年8月發(fā)布修正版FIPS180-4/btc/blocksSHA修訂版本2015年8月發(fā)布FIPS202,稱為SHA-3采用了海綿結(jié)構(gòu),允許變長(zhǎng)的輸入和輸出填充方式:pad10*1消息分組長(zhǎng)為r位,稱為位速率每輪迭代對(duì)b=r+c位的狀態(tài)變量s進(jìn)行操作,c稱為容量。可以通過減低速率r,增大容量c,來增強(qiáng)安全程度海綿結(jié)構(gòu)包括兩個(gè)階段:吸收階段:在每輪迭代中,用0填充消息分組,由r位擴(kuò)展為b位。將其與s異或的結(jié)果作為函數(shù)f的輸入。函數(shù)f的輸出為下一輪的s。若期望輸出長(zhǎng)度d≤r,則返回s的前d位,海綿結(jié)構(gòu)運(yùn)行結(jié)束。否則,進(jìn)入擠壓階段。擠壓階段:若d>r,保留s的前r為作為輸出分組z0,然后迭代運(yùn)行函數(shù)f來更新s,每輪均保留s的前r位為輸出分組zi,直至輸出總長(zhǎng)度不少于d位。連接輸出分組,返回前d位。RipeMD-160RIPEMD-160由歐洲RIPE計(jì)劃下一組研究人員于1996年設(shè)計(jì)與MD5/SHA算法結(jié)構(gòu)類似算法核心具有兩個(gè)并行組,每組5輪,每輪16步輸出160位消息摘要比MD5慢,比SHA-1快安全性略高于MD5和SHA-1RipeMD-160算法步驟增加填充位,使長(zhǎng)度模512余448填充長(zhǎng)度,附加原始消息長(zhǎng)度,64比特初始化5個(gè)32位寄存器(A,B,C,D,E)A=67452301;

B=efcdab89;C=98badcfe;D=10325476;E=c3d2e1f0

每個(gè)分組10輪操作,每輪16步分為2組,每組5輪操作,使用5個(gè)邏輯函數(shù)f1,f2,f3,f4,f5計(jì)算結(jié)果加上輸入寄存器值作為新的寄存器值輸出消息摘要為最終寄存器值RipeMD-160單步操作步ft(B,C,D)0<=j<=15f1=B

C

D16<=j<=31f2=(B&C)|((~B)&D)32<=j<=47f3=(B|(~C))

D48<=j<=63f4=(B&D)|(C&(~D))64<=j<=79f5=B

(C|(~D))RipeMD-160單步操作消息字的變換循環(huán)左移RipeMD-160vs.MD5&SHA-1Whirlpool2003年提出,得到歐盟支持的“新歐洲簽名、完整性和加密計(jì)劃”認(rèn)可使用修改了的AES內(nèi)部結(jié)構(gòu)作為壓縮函數(shù)基于分組密碼的散列函數(shù)的缺點(diǎn)有:密碼是可逆的,隨機(jī)性缺失分組密碼常會(huì)有其它規(guī)則性和弱點(diǎn)速度慢長(zhǎng)度受限:消息摘要長(zhǎng)度為密文分組長(zhǎng)度(或其兩倍)AES刺激人們利用強(qiáng)分組密碼來設(shè)計(jì)安全散列函數(shù)Whirlpool特點(diǎn):消息摘要長(zhǎng)度為512比特總體結(jié)構(gòu)可以防止針對(duì)“基于分組密碼的散列函數(shù)”的常見攻擊基于AES結(jié)構(gòu),適于軟硬件實(shí)現(xiàn),效率高抗線性分析和差分分析Whirlpool整體結(jié)構(gòu)Whirlpool單分組結(jié)構(gòu)Whirlpool使用一個(gè)專為散列函數(shù)設(shè)計(jì)的分組密碼結(jié)構(gòu)不能獨(dú)立用于加密具有與AES相似的安全性和效率分組長(zhǎng)度512比特結(jié)構(gòu)與函數(shù)與AES類似,但輸入以行優(yōu)先映射到矩陣10輪操作不同的素多項(xiàng)式,GF(28)S盒子的設(shè)計(jì)不同Whirlpool單分組結(jié)構(gòu)第r輪操作可寫為:RF(Kr)=AK[Kr]?MR?SC?SBWhirlpool單分組結(jié)構(gòu)狀態(tài)矩陣Whirlpool單分組結(jié)構(gòu)字節(jié)代換與AES算法相同增加非線性S盒子構(gòu)造:Whirlpool單分組結(jié)構(gòu)列移位:第i列,向下循環(huán)移位i-1個(gè)字節(jié)行混淆:[B]=[A][C],模多項(xiàng)式10011101 [C]=[0101040108050209 0901010401080502 0209010104010805 0502090101040108 0805020901010401 0108050209010104 0401080502090101 0104010805020901]Whirlpool單分組結(jié)構(gòu)密鑰擴(kuò)展:運(yùn)用輪常數(shù),通過算法本身,將512比特的密鑰K擴(kuò)展為輪密鑰序列K0,K1,…,K10第r輪的輪常數(shù)是一個(gè)矩陣RC[r],其中只有第一行是非零的(每個(gè)元素是S盒的一個(gè)值),定義為RC[r]0,j=S[8(r-1)+j], 0≤j≤7,1≤r≤10RC[r]i,j=0, 0≤i≤7,0≤j≤7,1≤r≤10Whirlpool性能與安全性擁有與AES相似的性能和空間特性便于軟硬件實(shí)現(xiàn)占內(nèi)存少高效與SHA-512相比,Whirlpool需要更多硬件資源,但性能更好SM3SM3是我國(guó)國(guó)家密碼管理局2010年發(fā)布,2018年成為國(guó)際標(biāo)準(zhǔn)SM3基于MD(Merkle-Damgard)結(jié)構(gòu)算法核心包括64步面向32位處理器產(chǎn)生256比特消息摘要SM3算法步驟增加填充位,使長(zhǎng)度模512余448填充長(zhǎng)度,附加原始消息長(zhǎng)度,64比特初始化8個(gè)32位寄存器(A,B,C,D,E,F,G,H)A=7380166f;

B=4914b2b9;C=172442d7;D=da8a0600;E=a9bf30bc;F=163138aa;G=e38dee4d;H=b0fb0e4e 執(zhí)行64步計(jì)算結(jié)果加上輸入寄存器值作為新的寄存器值輸出消息摘要為最終寄存器值64步ABCDEFGH32CVq256++++++++256CVq+1512YqSM3單步操作ABCDCLS9FFjABCD++CLS12+Wj'+CLS7TjCLSjHGFECLS19GGjHGFE+++WjP0

SM3消息擴(kuò)展W15W14W13W12W11W10W9W8W7W6W5W4W3W2W1W0WjCLS15P1CLS7Wj'

Wj的產(chǎn)生類似于FSR輸出;Wj'的產(chǎn)生是對(duì)FSR的濾波輸出消息驗(yàn)證碼算法可以用分組密碼或帶密碼的散列函數(shù)來設(shè)計(jì)MAC更傾向于使用帶密碼的散列函數(shù)一般而言散列函數(shù)執(zhí)行速度快散列函數(shù)不象分組密碼那樣受出口限制AES的廣泛使用,使得上述意義消弱最初的方案:KeyedHash=Hash(Key|Message)存在缺陷最終導(dǎo)致了HMAC的出現(xiàn)HMACHMAC的設(shè)計(jì)目標(biāo)不修改現(xiàn)有的散列函數(shù),直接使用它們可以很容易地更換新的散列函數(shù)保持散列函數(shù)的原有性能,不能過分降低其性能對(duì)密鑰的使用和處理應(yīng)較簡(jiǎn)單根據(jù)嵌入散列函數(shù)的強(qiáng)度,進(jìn)而分析抗密碼分析的強(qiáng)度RFC

2104、FIPS

198HMACHMACK=Hash[(K+

opad)||Hash[(K+

ipad)||M)]]Hash:可選SHA256,SHA-3等IV:初始向量Yi:M的第i個(gè)分組L:M中的分組數(shù)b:每分組的比特?cái)?shù)n:散列碼長(zhǎng)K:密鑰,建議長(zhǎng)度≥nK+:用0填充K左側(cè),使長(zhǎng)度與分組一致ipad:填充常數(shù),00110110重復(fù)b/8次,使得

K+的一半位發(fā)生變化opad:填充常數(shù),01011100重復(fù)b/8次,使得

K+的一半位發(fā)生變化散列壓縮函數(shù)的計(jì)算次數(shù)僅比消息分組數(shù)多3次HMAC預(yù)運(yùn)算等價(jià)于產(chǎn)生兩個(gè)密鑰相關(guān)的初始向量f即是Hash函數(shù)中的散列壓縮函數(shù)經(jīng)過預(yù)運(yùn)算后,實(shí)際操作僅多執(zhí)行一次

散列壓縮函數(shù)HMAC安全性HMAC的安全性取決于嵌入的散列算法的強(qiáng)度對(duì)HMAC的攻擊方式可等價(jià)為:對(duì)密鑰的窮舉攻擊生日攻擊由于密鑰的存在,攻擊者不易反復(fù)地、獨(dú)自地任選一對(duì)明文進(jìn)行散列運(yùn)算,只能大量觀察用同一密鑰產(chǎn)生的MAC來進(jìn)行攻擊SHA256,SHA-3還是可以用在這里的,密鑰是要經(jīng)常更換的Hash函數(shù)的選擇應(yīng)在安全性和速度上做一個(gè)折中CMACCBC-MAC曾被政府和工業(yè)界廣泛使用初始向量為0但僅在消息長(zhǎng)度固定時(shí)才是安全的例:設(shè)攻擊者知道兩個(gè)消息的驗(yàn)證碼t=MAC(m)和t'=MAC(m')構(gòu)造一個(gè)新消息m",將m'的第一個(gè)分組與t異或 m"=m||m1'⊕t||m2'||...||mn'則新消息m的驗(yàn)證碼為MAC(m")=t'為解除限制,提出了基于密文的消息認(rèn)證碼CMAC在NISTSP800-38B中有此規(guī)范使用一個(gè)加密密鑰,及兩個(gè)由加密密鑰導(dǎo)出的常數(shù)mE(K,)m1'⊕ttE(K,)m1'CMAC總體結(jié)構(gòu)常數(shù)K1,K2的長(zhǎng)度:分組長(zhǎng)度n常數(shù)K1,K2的計(jì)算: L=EK(0n) K1=L·x K2=L·x2=(L·x)·x在域GF(2n)中運(yùn)算,素多項(xiàng)式p(x)為: 64位分組:x64+x4+x3+x+1 128位分組:x128+x7+x2+x+1常用的既加密又認(rèn)證的模式先Hash再加密(HE)E(K,M||H(M))先認(rèn)證再加密(AE)E(K2,M||MAC(K1,M))先加密再認(rèn)證(EA)MAC(K1,E(K2,M))獨(dú)立加密和認(rèn)證(E+A)E(K2,M)||MAC(K1,M)不恰當(dāng)?shù)氖褂脮?huì)導(dǎo)致安全漏洞例如WEP協(xié)議使用HE方案,密鑰固定且初始向量?jī)H為24位常用的既加密又認(rèn)證的模式分組密碼鏈-消息認(rèn)證碼模式CCMNISTSP800-38C,E+A方案的改進(jìn)用于IE

溫馨提示

  • 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. 人人文庫(kù)網(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)論