版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ICS35.040信息技術(shù)安全技術(shù)消息鑒別碼第3部分:采用泛雜湊函數(shù)的機(jī)制codes(MACs)—Part3:Mechanismsusingauniversalhash-function(ISO/IEC9797-3:2011,MOD)國(guó)家市場(chǎng)監(jiān)督管理總局中國(guó)國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)GB/T15852.3—2019 I 4符號(hào)和縮略語(yǔ) 24.1符號(hào) 24.2縮略語(yǔ) 4 4 5 56.2UMAC 6.3Badger 6.5GMAC 附錄A(資料性附錄)測(cè)試向量 附錄B(資料性附錄)泛雜湊函數(shù)的安全性信息 附錄C(資料性附錄)ZUC和SM4算法的抗攻擊能力 IGB/T15852.3—2019GB/T15852《信息技術(shù)安全技術(shù)消息鑒別碼》分為以下3個(gè)部分:——第1部分:采用分組密碼的機(jī)制;——第2部分:采用專(zhuān)用雜湊函數(shù)的機(jī)制;——第3部分:采用泛雜湊函數(shù)的機(jī)制。本部分為GB/T15852的第3部分。本部分按照GB/T1.1—2009給出的規(guī)則起草。本部分使用重新起草法修改采用ISO/IEC9797-3:2011《信息技術(shù)安全技術(shù)消息鑒別碼第3本部分與ISO/IEC9797-3:2011的主要技術(shù)性差異及其原因如下:●用等同采用國(guó)際標(biāo)準(zhǔn)的GB/T15852.1—2008代替了ISO/IEC9797-1;——在第3章中刪除了密鑰、素?cái)?shù)兩個(gè)常規(guī)性術(shù)語(yǔ)和定義?!诘?章中增加縮略語(yǔ)部分。——在6.3.1中根據(jù)ZUC算法對(duì)初始向量的要求,將Badger的64位全1初始向量修改為128位全1初始向量?!?jiǎng)h除規(guī)范性附錄A對(duì)象標(biāo)識(shí)符(因?yàn)槿鄙賴(lài)?guó)內(nèi)相關(guān)對(duì)象標(biāo)識(shí)符定義)?!{(diào)整資料性附錄B為資料性附錄A,列舉了在底層采用ZUC或SM4算法的MAC算法所生——調(diào)整資料性附錄C為資料性附錄B,介紹了泛雜湊函數(shù)的安全性信息;——增加資料性附錄C,介紹了ZUC和SM4算法的抗攻擊能力。請(qǐng)注意本文件的某些內(nèi)容可能涉及專(zhuān)利。本文件的發(fā)布機(jī)構(gòu)不承擔(dān)識(shí)別這些專(zhuān)利的責(zé)任。本部分由全國(guó)信息安全標(biāo)準(zhǔn)化技術(shù)委員會(huì)(SAC/TC260)提出并歸口。1GB/T15852.3—2019信息技術(shù)安全技術(shù)消息鑒別碼第3部分:采用泛雜湊函數(shù)的機(jī)制GB/T15852的本部分規(guī)定了4種采用泛雜湊函數(shù)的消息鑒別碼算法:UMAC、Badger、Poly1305和GMAC。這些算法基于GB/T33133.1—2016中規(guī)定的序列密碼算法和GB/T32907—2016中規(guī)定數(shù)處理一個(gè)長(zhǎng)度為m位的比特串,輸出一個(gè)長(zhǎng)度為n位的比特串作為MAC。驗(yàn)數(shù)據(jù)是否在未經(jīng)授權(quán)的方式下被更改。也可以作為消息鑒別機(jī)制,確保消息來(lái)注:提供完整性服務(wù)的一般框架在ISO/IE2規(guī)范性引用文件下列文件對(duì)于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文GB/T15852.1—2008信息技術(shù)安全技術(shù)消息鑒別碼第1部分:采用分組密碼的機(jī)制(ISO/IEC9797-1:1999,IDT)GB/T32907—2016信息安全技術(shù)SM4分組密碼算法GB/T33133.1—2016信息安全技術(shù)祖沖之序列密碼算法第1部分:算法描述GB/T36624—2018信息技術(shù)安全技術(shù)可鑒別的加密機(jī)制3.13.3GB/T15852.1—2008界定的以及下列術(shù)語(yǔ)和定義適用于本文件。3.42GB/T15852.3—2019輸出在密鑰均勻隨機(jī)的前提下發(fā)生碰撞的概率極小。注:泛雜湊函數(shù)由Carter和Wegman提出4,其在MAC算法中的應(yīng)用最早由Wegman和Carter描述[11]下列符號(hào)適用于本文件。bit(S,n)若比特串S的第n個(gè)比特是1則輸出整數(shù)1,否則輸出整數(shù)0(索引從1開(kāi)始)bitlength(S)比特串S的比特長(zhǎng)度十…+21*bit(S,t—1)+bit(S,t)blocklenEnc(K,X)KEKHkeylenlog?MmaxNoctetlength(S)octetstr2uint(S)底層分組密碼的分組長(zhǎng)度(按字節(jié)計(jì))最小的整數(shù)n明文分組X在密鑰K的作用下通過(guò)分組密碼Enc進(jìn)行加密的最大的整數(shù)n加密密鑰雜湊密鑰分組密碼的密鑰長(zhǎng)度(按字節(jié)計(jì))二進(jìn)制對(duì)數(shù)函數(shù)指定參數(shù)中的最大值臨時(shí)值比特串S按字節(jié)計(jì)的長(zhǎng)度(假定S的比特長(zhǎng)度是8的倍數(shù))定義為S[0]+2?*S[1]+21?×S[2]+…+28n-8*S[n—1]的非負(fù)整注2:字節(jié)串是以低位順序排列的,即第一個(gè)字節(jié)為最低位prime(n)對(duì)任意正整數(shù)n,小于2”的最大素?cái)?shù)值注3:本部分使用的素?cái)?shù)如表1所示。3nprime(n)prime(n)的十六進(jìn)制表示232-50xFFFFFFFB236—50x0000000FFFFFFFFB2?4—590xFFFFFFFFFFFFFFC52128-1590xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF612130-50x00000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBS[i]比特串S的第i個(gè)字節(jié)(索引從0開(kāi)始)注4:6.2中關(guān)于UMAC的條款使用了一個(gè)起始為1而不是0的索引。由S的第i個(gè)到第j個(gè)字節(jié)組成的子串uint2bitstr(x,n)uint2octetstr(x,n)長(zhǎng)度為n的字節(jié)串S,滿足x=octetstr2uint(S)X|左側(cè)的s個(gè)比特組成的長(zhǎng)度為s位的比特分組X|比特分組X的右截?cái)啵喝鬤的比特長(zhǎng)度大于或等于s,則X是由X最右側(cè)的s個(gè)比特組成的長(zhǎng)度為s位的比特分組Xzeropad(S,n)n個(gè)字節(jié)的整數(shù)倍。形式化地,zeropad(S,n)=S|T,其中T是滿足S||T非空并且n可以整除octetlength(S||T)的最短的零比特串(T可能為空)田A比特串的比特級(jí)邏輯與運(yùn)算。若A,B是長(zhǎng)度相等的比特串,則AAB十32兩個(gè)32位的比特串的加法運(yùn)算,得到一個(gè)32位的比特串。形式化地,S+3T=uint2bitstr(bitstr2uint(S兩個(gè)64位的比特串的加法運(yùn)算,得到一個(gè)64位的比特串。形式化地,關(guān)兩個(gè)64位的比特串的乘法運(yùn)算,得到一個(gè)64位的比特串。形式化地,注5:十?2,+64和*g?運(yùn)算與在現(xiàn)代計(jì)算機(jī)上可以高效執(zhí)行的加法和乘法運(yùn)算有著很好的對(duì)應(yīng)。4GB/T15852.3—2019兩個(gè)比特串的級(jí)聯(lián)。若A和B分別是長(zhǎng)度為a位和b位的比特串,則A0”1”|B是長(zhǎng)度為(a+b)位的比特串,其中最左側(cè)的a位是比特串A,最右側(cè)的b位是比特串B由n個(gè)0組成的比特串由n個(gè)1組成的比特串空串域GF(2128)上的乘法,定義GF(2128)的多項(xiàng)式為1+α+α2+α?+α1281)若bit(V,i)=1,則令W=W田Z;下列縮略語(yǔ)適用于本文件。ENH:增強(qiáng)的非線性雜湊函數(shù)(EnhancedNon-linearHash-function)GMAC:伽羅華消息鑒別碼(GaloisMessageAuthenticationCode)KDF:密鑰流生成函數(shù)(key-derivationfunction)MAC:消息鑒別碼(MessageAuthenticationCode)NH:非線性雜湊函數(shù)(Non-linearHash-function)PDF:填充生成函數(shù)(pad-derivationfunction)UMAC:泛雜湊消息鑒別碼(Universal-HashMessageAuthenticationCode)5一般模型采用泛雜湊函數(shù)的消息鑒別碼算法使用了一種加密算法(分組密碼算法、序列密碼算法或偽隨機(jī)生成器算法)。這類(lèi)消息鑒別碼算法具有一個(gè)特性,即:在假定加密算法安全的前提下,可以證明這類(lèi)消息鑒別碼算法的安全性。附錄A列舉了在底層采用ZUC或SM4算法的MAC算法所生成的測(cè)試向量,附錄B給出了泛雜湊函數(shù)的安全性信息,附錄C給出了加密算法ZUC和SM4算法的安全性說(shuō)明。采用泛雜湊函數(shù)的MAC算法需要一個(gè)主密鑰K,一個(gè)消息M和一個(gè)臨時(shí)值N作為輸入。依照下列步驟序列可以計(jì)算得到MAC:a)密鑰預(yù)處理。利用主密鑰K生成一個(gè)雜湊密鑰Kn和一個(gè)加密密鑰KE。其中,在UMAC和Badger中還使用臨時(shí)值N作為輸入。b)消息預(yù)處理。將輸入的消息M編碼為雜湊函數(shù)所需的輸入格式。c)消息雜湊。編碼后的消息在雜湊密鑰Kn的控制下經(jīng)一個(gè)泛雜湊函數(shù)進(jìn)行雜湊。其結(jié)果為一個(gè)固定且長(zhǎng)度較短的雜湊值H。d)終止化操作。將雜湊值H在加密密鑰Ke的控制下進(jìn)行加密,其結(jié)果即為消息鑒別碼MAC。其中,在Poly1305和GMAC中還使用臨時(shí)值N作為輸入。對(duì)于本部分中提出的所有機(jī)制,默認(rèn)輸入消息的長(zhǎng)度是字節(jié)的整數(shù)倍。對(duì)于所有采用泛雜湊函數(shù)的MAC算法,最重要的是,當(dāng)使用相同的密鑰時(shí),鑒別每個(gè)新消息應(yīng)使用不同的臨時(shí)值。如果該安全性要求沒(méi)有滿足,算法的安全性將嚴(yán)重降低。5GB/T15852.3—20196機(jī)制6.2.1UMAC的描述UMAC是一個(gè)由4個(gè)MAC算法組成的算法族,它們針對(duì)不同的輸出比特長(zhǎng)度做了效率優(yōu)化,分且臨時(shí)值N的長(zhǎng)度介于8比特和128比特之間。根據(jù)使用的UMAC族中算法的不同,產(chǎn)生的MAC的長(zhǎng)度分別為32比特、64比特、96比特或128比特。該指標(biāo)由參數(shù)taglen表示,相應(yīng)地為4個(gè)、8個(gè)、12個(gè)或16個(gè)字節(jié)。輸入消息的長(zhǎng)度應(yīng)小于267個(gè)字節(jié)。輸入U(xiǎn)MAC函數(shù)的消息應(yīng)包含整數(shù)個(gè)字節(jié),附錄A的A.1中列舉了在底層采用SM4算法的UMAC所生成的測(cè)試向量。注1:這里指定的UMAC的版本避免與UMAC算法較早的版本(如參考文獻(xiàn)[2]等)相混淆。注2:若MAC函數(shù)的輸入包含整數(shù)個(gè)字節(jié),則這里指定的UMAC函數(shù)與IETFRFC4418[6]中描述的函數(shù)相同?!R時(shí)值的長(zhǎng)度,應(yīng)介于8比特和128比特之間。輔助函數(shù)KDF輸入:主密鑰K(長(zhǎng)度為keylen字節(jié)的比特串)index(小于264的非負(fù)整數(shù))numoctets(小于2?4的非負(fù)整數(shù))輸出:Y(長(zhǎng)度為numoctets字節(jié)的比特串)a)n=ceil(numoctets/blocklen)。b)將Y設(shè)為空串。c)對(duì)于i=1到n,令:1)T=uint2bitstr(index,blocklen—8)||uint2bitstr(i,8);2)T=Enc(K,T);6GB/T15852.3—2019d)Y=Y[1…numoctets]。e)輸出Y。注:根據(jù)GB/T17964—2008[8]中的定義,輔助函數(shù)PDF輸入:主密鑰K(長(zhǎng)度為keylen字節(jié)的比特串)臨時(shí)值N(長(zhǎng)度介于1和blocklen之間的字節(jié)串)輸出:Y(長(zhǎng)度為taglen字節(jié)的比特串)a)PDFnonce=N。1)index=bitstr2uint(N)mod(blocklen/taglen);c)padlen=blocklen-octetlength(PDFnonce)。e)K′=KDF(K,0,keylen)。f)T=Enc(K',PDFnonce)。Y=T[(index*taglen)+1…(index*taglen)+taglen]。i)輸出Y。注:若使用的臨時(shí)值只有最后一個(gè)比特(當(dāng)生成長(zhǎng)度為8字節(jié)的填充時(shí))或最后兩個(gè)比特(當(dāng)生成長(zhǎng)度為4字節(jié)的一次分組密碼調(diào)用生成填充序列。輔助函數(shù)NH輸入:Key(長(zhǎng)度為1024字節(jié)的比特串)Msg(字節(jié)串,其長(zhǎng)度是32的倍數(shù)并且小于或等于1024)輸出:Y(長(zhǎng)度為8字節(jié)的比特串)將Msg和Key分割成長(zhǎng)度為4的字節(jié)分組:a)t=octetlength(Msg)/4。b)將Msg分割成長(zhǎng)度為4的字節(jié)串M?,M?,…,M,,從而Msg=M?ⅡM?|…|M?。c)令K?,K?,…,K,為長(zhǎng)度為4的字節(jié)串,即K?|K?Ⅱ…|K,是Key的一個(gè)前綴(Key最左側(cè)的4t個(gè)字節(jié))。7GB/T15852.3—20191)Y=Y+64[(Mi+o十?2Ki+0)*64(M;+4十?2Ki+4)];2)Y=Y+61[(M;+1+?2Ki+1)*6(M;+5十??Ki+5)];3)Y=Y+64[(Mi+2十?2K;+2)*64(M;+6十?2Ki+6)];4)Y=Y+64[(M;+3十32Ki+3)*64(M;+7+32Ki+7)];注2:這一程序直接作用于輸入數(shù)據(jù)的每一個(gè)比特,所以對(duì)該程序的優(yōu)化實(shí)現(xiàn)將產(chǎn)生極大的效益。該程序可作用于長(zhǎng)度為4的字節(jié)分組,也可以作用于乘法中的兩個(gè)字,這兩個(gè)字宜各分為4個(gè)部分以便于向量并行化操作。輔助函數(shù)ENDIAN-SWAP函數(shù)ENDIAN-SWAP將一個(gè)長(zhǎng)度為4的字節(jié)串從按低位排序轉(zhuǎn)換為按高位排序,或反之。輸入:S(長(zhǎng)度可被4個(gè)字節(jié)整除的比特串)輸出:T(每4個(gè)字節(jié)尾數(shù)逆轉(zhuǎn)的比特串S)a)n=octetlength(S)/4。b)令S?,S?,…,S,為長(zhǎng)度為4的字節(jié)串,滿足S?||S?||…|S,=S。c)將T設(shè)為空串。d)對(duì)于i=1到n:1)令W?,W?,W?,W?為字節(jié),滿足W?|W?||W?||W?=S;。2)SRersed=W?||W?|W?||W?。3)T=T||SReversed。e)輸出T。輔助雜湊函數(shù)POLY函數(shù)POLY是一個(gè)多項(xiàng)式雜湊函數(shù),于第二層雜湊函數(shù)L2-HASH中使用,參見(jiàn)。maxwordrange(小于2ordbis的正整數(shù))key[取值范圍為0…prime(wordbits)-1的整數(shù)]Msg[長(zhǎng)度可被(wordbits/8)個(gè)字節(jié)整除的比特串]輸出:y(取值范圍為0…prime(wordbits)-1的整數(shù))a)wordoctets=wordbits/8。b)p=prime(wordbits)。c)offset=2wordbis—p。d)marker=p-1。e)n=octetlength(Msg)/wordoctets。f)令M?,M?,…,M,為長(zhǎng)度為wordoctets的字節(jié)串,滿足Msg=M?|M?||…|M,。g)y=1。h)對(duì)于i=1到n:1)m=bitstr2uint(M?);2)若(m≥maxwordrange),則:i)y=(key*y+marker)modp;ii)y=(key*y+(m—offset))modp。8GB/T15852.3—2019y=(key*y+m)modp。i)輸出y。6.2.4密鑰預(yù)處理UMAC使用的分組密碼算法應(yīng)當(dāng)滿足其分組長(zhǎng)度blocklen至少為16,并且是2的方冪。輸入:主密鑰K(長(zhǎng)度為keylen字節(jié)的比特串)臨時(shí)值N(長(zhǎng)度介于1和blocklen之間的字節(jié)串)輸出:雜湊密鑰Kn=(L1Key,L2Key,L3Keyl,L3Key2)(任意長(zhǎng)度的比特加密密鑰KE(長(zhǎng)度為taglen字節(jié)的比特串)a)iters=taglen/4。b)L1Key=KDF[K,1,1024+(iters—1)*16]。d)L3Keyl=KDF(K,3,iters*64)。e)L3Key2=KDF(K,4,iters*4)。6.2.5消息預(yù)處理被視為字節(jié)串。6.2.6消息雜湊輸入:雜湊密鑰KH=(L1Key,L2Key,L3Keyl,L3Key2)(任意長(zhǎng)度的比特加密密鑰K(長(zhǎng)度為taglen字節(jié)的比特串)消息M(長(zhǎng)度小于267字節(jié)的比特串)輸出:標(biāo)簽H(長(zhǎng)度為taglen字節(jié)的比特串)b)對(duì)于i=1到(taglen/4),令:2)L2Key,=L2Key[(i-1)*24+1…i*24];3)L3Keyl;=L3Key1[(i—1)*64)L3Key2;=L3Key2[(i—1)*4+1…i*4];5)A=L1-HASH(L1Key;,M);6)若(bitlength(M)<=bitlength(L1Key;)),則:9GB/T15852.3—2019B=L2-HASH(L2Key;,A);8)C=L3-HASH(L3Keyl;,L3Key2;,B);9)H=H||C。第一層雜湊函數(shù)L1-HASH第一層雜湊將消息分割成長(zhǎng)度為1024的字節(jié)分組(按需填充最后一個(gè)分組),然后調(diào)整排序并用函數(shù)NH對(duì)每一個(gè)分組進(jìn)行雜湊。將結(jié)果串聯(lián)形成一個(gè)比特串,其長(zhǎng)度小于或等于128與一個(gè)小于原始值的值相乘。L1Key(長(zhǎng)度為1024字節(jié)的比特串)L1Msg(長(zhǎng)度小于267字節(jié)的比特串)H1(長(zhǎng)度為8*ceil(bitlength(L1Msg)/8192)字節(jié)的比特串)a)t=max(ceil(bitlength(L1Msg)/8192),1)。b)將L1Msg分割成比特串M?,M?,…,M,,滿足L1Msg=M?l|M?|…||M,并且對(duì)于所有的1≤i≤t-1都有octetlength(M)=1024成立。c)Len=uint2bitstr(1024*8,8)。d)H1=<emptystring>。1)ENDIAN-SWAP(M;);2)H1=H1|(NH(L1Key,M;)+64Len)。f)Len=uint2bitstr(bitlength(M?),8)。g)M,=zeropad(M,,32)。h)ENDIAN-SWAP(M?)。i)H1=H1||(NH(L1Key,M?)+64Len)。第二層雜湊函數(shù)L2-HASH第二層利用一個(gè)稱(chēng)為POLY的多項(xiàng)式雜湊函數(shù)將L1-HASH的輸出重新進(jìn)行雜湊。若L1-HASH的輸出較長(zhǎng),則對(duì)L1-HASH輸出的前綴調(diào)用一次POLY,再用不同的設(shè)置對(duì)其余部分調(diào)用。只有當(dāng)消息長(zhǎng)度大于16兆字節(jié)時(shí),才需要對(duì)L1-HASH的輸出執(zhí)行這兩步雜湊。注:對(duì)POLY的謹(jǐn)慎調(diào)用是必要的,用以避免可能的時(shí)間攻擊(更多信息參見(jiàn)[1])。L2Msg(長(zhǎng)度小于264字節(jié)的比特串)H2(長(zhǎng)度為16字節(jié)的比特串)Mask64=uint2bitstr(0x01FFFFFF01FFFFFF,8)。b)Mask128=uint2bitstr(0x01FFFFFF01FFFFFF01FFFFFF01FFFFFF,16)。c)k64=bitstr2uint(L2Key[1…8]AMask64)。d)k128=bitstr2uint(L2Key[9…24]AMask128)。e)若(octetlength(L2Msg)≤217),y=POLY(64,2??—232,k64,L2Msg)。GB/T15852.3—20192)M?=L2Msg[21?+1…octetlength(L2Msg)];3)M?=zeropad(M?I|uint2bitstr(0x80,1),16);4)y=POLY(64,2??—232,k64,M?);5)y=POLY(128,2128—2?6,k128,uint2bitstr(y,g)H2=uint2bitstr(y,16)。h)返回H2。L2-HASH的輸出是長(zhǎng)度為16的字節(jié)串。作為最后一層雜湊函數(shù),L3-HASH將長(zhǎng)度為16的字節(jié)串雜湊成一個(gè)固定長(zhǎng)度為4的字節(jié)串。輸入:K1(長(zhǎng)度為64字節(jié)的比特串)K2(長(zhǎng)度為4字節(jié)的比特串)Msg(長(zhǎng)度為16字節(jié)的比特串)輸出:H3(長(zhǎng)度為4字節(jié)的比特串)對(duì)于i=1~8:2)K;=K1[(i—1)*8+1…i*8];3)m;=bitstr2uint(M;);4)k;=bitstr2uint(K;)modprime(36)。c)內(nèi)積雜湊,提取最后32個(gè)比特做仿射變換:3)H3=uint2bitstr(y,4);4)H3=H3田K2。d)輸出H3。輸入:加密密鑰Kg(長(zhǎng)度為taglen字節(jié)的比特串)雜湊值H(長(zhǎng)度為taglen字節(jié)的比特串)a)MAC=Kg田H。b)輸出MAC。6.3.1Badger的描述一個(gè)長(zhǎng)度小于或等于26-1個(gè)字節(jié)的消息處理成一個(gè)長(zhǎng)度為taglen的鑒別標(biāo)簽,其中taglen可以取GB/T15852.3—2019是8的倍數(shù))。在使用Badger之前,需要首先協(xié)商以下參數(shù):——序列密碼算法或偽隨機(jī)生成器算法。ENH(增強(qiáng)的非線性雜湊函數(shù))是一個(gè)泛雜湊函數(shù)。NH應(yīng)用在UMAC中。輸入:密鑰LKey(長(zhǎng)度為8字節(jié)的比特串)消息Left(長(zhǎng)度為8字節(jié)的比特串)消息Right(長(zhǎng)度為8字節(jié)的比特串)輸出:雜湊值LHash(長(zhǎng)度為8字節(jié)的比特串)a)k?=octetstr2uint(LKey[0…3]),ku=octetstr2uint(LKey[4…7])。b)mlz=octetstr2uint(Right[0…3]),mlu=octetstr2uint(Right[4…7])。c)m2=octetstr2uint(Left[0…7])。e)hu=(mlu+ku)mod232。g)LHash=uint2octetstr(h',8)。時(shí)值,則其余的字節(jié)可以用零進(jìn)行填充。臨時(shí)值應(yīng)與全1向量的值不相同。假設(shè)該P(yáng)RG具有以下——PRG_Next(n)從PRG產(chǎn)生下一組長(zhǎng)度為n比特的輸出。輸入:主密鑰K(長(zhǎng)度為16字節(jié)的比特串)臨時(shí)值N(長(zhǎng)度為16字節(jié)的比特串)所有可能輸入的消息的最長(zhǎng)比特長(zhǎng)度maxlen,滿足0≤maxlen≤26?-8并且是8的整數(shù)倍8字節(jié)的比特串構(gòu)成的向量,kf是一個(gè)由長(zhǎng)度為4字節(jié)的整數(shù)構(gòu)成的向量)GB/T15852.3—2019加密密鑰Ke(長(zhǎng)度為taglen字節(jié)的比特串)a)PRG_Init(K,1128)。b)words_used=0。d)v=max{1,ceil(log?(maxlen))-6}。e)對(duì)于j=1到6:對(duì)于i=1到u:2)words_used=words_used+1。f)對(duì)于j=1到6:對(duì)于i=1到u:當(dāng)(kf;,≥prime(32))1)kfj,;=octetstr2uint(PRG_Ne2)words_used=words_used+1。1)拋棄PRG_Next(32);2)words_used=words_used+1。h)對(duì)于j=1到v:對(duì)于i=1到u:KL;,;=PRG_Next(64)。j)KE=PRG_Next(32*u)。k)輸出KH=(KL,kf),KE。輸入:雜湊密鑰KH=(KL,kf)(任意長(zhǎng)度的比特串)消息M(長(zhǎng)度至多為21—1字節(jié)的比特串)輸出:雜湊值H(長(zhǎng)度為taglen字節(jié)的比特串)a)len=bitlength(M)為64比特的整數(shù)。b)若len=0:1)若lenmod64≠0:在最高比特位添加零比特直到M的長(zhǎng)度len是64比特的整數(shù)倍。2)對(duì)于i=1到u:ii)v1=max{1,ceil(log?(len))—6};i)對(duì)于j=1到v':GB/T15852.3—2019I)t=octetlength(M;)/8;Ⅱ)將M;分割成長(zhǎng)度為8的字節(jié)分組B?,…,B,,滿足M;=B,|…|B?;M;=ENH(KL;,,B,,B?-1)|…||ENH(KL;,,B?,B?);M;=B,||ENH(KL;,;,B?-1,B?-2)||…||ENH(KL;,,B?,B?)。d)對(duì)于i=1到u:2)將Q;分割成長(zhǎng)度為27比特的分組B?,…,B?,滿足Q;=B?||…||B?;3)將每個(gè)分組B?,…,B?的最高比特位用零填4)對(duì)于j=1到5:b,=octetstr2uint(B;);5)s;=((b?*kf1,)十…十(b?*kfs,i)+kf?,i)modprime(32);e)H=S,…|S?。f)輸出H。輸入:加密密鑰K(長(zhǎng)度為taglen字節(jié)的比特串)雜湊值H(長(zhǎng)度為taglen字節(jié)的比特串)輸出:消息鑒別碼MAC(長(zhǎng)度為taglen字節(jié)的比特串)b)輸出MAC。6.4.1Poly1305的描述Poly1305是一個(gè)MAC算法,它使用一個(gè)256比特的密鑰K(其中有22比特設(shè)為零)和一個(gè)128比使用Poly1305無(wú)須協(xié)商任何額外參數(shù)?!狵[3],K[7],K[11],K[15]的最高4個(gè)比特位?!狵[4],K[8],K[12]的最低2個(gè)比特位。主密鑰之后直接分割成一個(gè)雜湊密鑰和一個(gè)加密密鑰,如下:輸入:主密鑰K(長(zhǎng)度為32字節(jié)的比特串)GB/T15852.3—2019輸出:雜湊密鑰Kn(長(zhǎng)度為16字節(jié)的比特串)加密密鑰KE(長(zhǎng)度為16字節(jié)的比特串)a)Ka=K[0…15]。b)KE=K[16…31]。輸入:消息M(長(zhǎng)度為l。字節(jié)的比特串)輸出:消息分組的個(gè)數(shù)s(整數(shù))經(jīng)過(guò)預(yù)處理的消息c1,…,c(長(zhǎng)度為17字節(jié)整數(shù)的序列)b)令s=ceil(l?/16)。d)對(duì)于i=0,…,t—1:2)c,=octetstr2uint(M[16t…l?—1])+28r。f)輸出s;c?,…,c?。輸入:雜湊密鑰Kn(長(zhǎng)度為16字節(jié)的比特串)消息分組的個(gè)數(shù)s(整數(shù))經(jīng)過(guò)預(yù)處理的消息c?,…,c(長(zhǎng)度為17字節(jié)整數(shù)的序列)輸出:雜湊值H(長(zhǎng)度為16字節(jié)的比特串)a)r=octetstr2uint(KH)。d)輸出H。輸入:雜湊值H(長(zhǎng)度為16字節(jié)的比特串)加密密鑰Kg(長(zhǎng)度為16字節(jié)的比特串)臨時(shí)值H(長(zhǎng)度為16字節(jié)的比特串)輸出:消息鑒別碼MAC(長(zhǎng)度為16字節(jié)的比特串)a)令S=Enc(Ke,N)。d)MAC=uint2octetstr(mac,16)。e)輸出MAC。GB/T15852.3—20196.5.1GMAC的描述GMAC與分組長(zhǎng)度為128比特的分組密碼算法配合使用,得到MAC的長(zhǎng)度為t比特,其中t是8的倍數(shù)并且滿足96≤t≤128(在特定場(chǎng)合下,t=32和t=64仍允許使用)。輸入消息的長(zhǎng)度應(yīng)小于或等于2?4分組。GMAC特指GB/T36624—2018中指定的GCM(指Galois/CounterMode)在沒(méi)有需要加密的數(shù)A.4中列舉了在底層采用SM4算法的GMAC所生成的測(cè)試向量。 分組長(zhǎng)度為128比特的分組密碼算法。分組密碼算法的選擇決定密鑰長(zhǎng)度|KI慎地參考文獻(xiàn)[10]的附錄C)。6.5.3輔助函數(shù)GHASH函數(shù)GHASH以長(zhǎng)度為128比特的分組H和兩個(gè)任意長(zhǎng)度的比特串W與Z為輸入,輸出一個(gè)長(zhǎng)度為128比特的分組。輸入:長(zhǎng)度為128比特的分組H任意長(zhǎng)度的比特串W和Z輸出:長(zhǎng)度為128比特的值X+1+W?,…,W。為分解W得到的長(zhǎng)度為128比特的分組序列(可能存在例外,即W,包含W的最后u比特)?!?Z?為分解Z得到的長(zhǎng)度為128比特的分組序列(可能存在例外,即Z?包含Z的最后v比c)依照以下遞歸計(jì)算長(zhǎng)度為128比特的值X+2+1:1≤i≤k—1(若k≤1則略去該步驟);3)X,=(Xk-1田(Wk||o128-“))·H(若k=0則略去該步驟);4)X,=(X;-1田Z;_k)·Hk+1≤i≤k+l-1(若l≤1則略5)Xk+1=(Xk+1-1+(Z,||o128-w))·H(若l=0則略去該步驟);6)Xk+1+1=(Xk+,田uint2bitstr(bitlength(W),8)||uint2bitstr(bitlength(Z),8))·H。d)輸出X+1+1通過(guò)如下方式,使用主密鑰K派生雜湊密鑰Kn和加密密鑰KE:輸入:主密鑰K輸出:雜湊密鑰KGB/T15852.3—2019加密密鑰KEa)KH=Enc(K,0128)。c)輸出KH,KE。GMAC中無(wú)需對(duì)消息進(jìn)行預(yù)處理。輸入:消息M雜湊密鑰K輸出:雜湊值Ha)H=GHASH(KH,M,{})。b)輸出H。接收方獲知。該值無(wú)需是不可預(yù)測(cè)或秘密的。輸入:雜湊值H加密密鑰KE臨時(shí)值N輸出:消息鑒別碼MAC(長(zhǎng)度為t位的比特串)b)令MAC=(H田Enc(KE,Y?))。c)輸出MAC。GB/T15852.3—2019(資料性附錄)測(cè)試向量本條包括若干UMAC的測(cè)試向量,這里使用GB/T32907—2016中規(guī)定的SM4算法作為其底層的分組密碼算法。表A.1列舉了使用16字節(jié)密鑰K和8字節(jié)臨時(shí)值N時(shí)UMAC生成的標(biāo)簽。K="abcdefghijklmnop"N="bcdefghi"表A.1UMAC測(cè)試向量消息UMAC-32UMAC-64UMAC-96UMAC-128<empty)330d0fde92a7ab5a4db035355e72819955fc948b79aa5ala5e72819955fc948b79aa5ala53d8fdf6a1*3e80d10e649a7b462dd82044685729ealc5cea5f8697120fb85729ealc5cea5f8697120fb46cb5ff4a′*21028e39d7f894939fbecda9bb5459c1338f4963a0bd1428ea6459c1338f4963a0bd1428ea69dad30f5a1×215d67dfc5a77d758de45be2be8bb02721d5df28a56401bef4bbb02721d5df28a56401bef4b9f308025本條包括若干Badger的測(cè)試向量,這里使用GB/T33133.1—2016中規(guī)定的ZUC算法作為其底層的序列密碼算法。表A.2列舉了使用以下密鑰K和IV時(shí)Badger生成的標(biāo)簽。表A.2Badger測(cè)試向量消息Badger標(biāo)簽7765d78f3a69abe3c0706003alc26a05e9le4268c5c59a6247169e6f39bbld9d4115b7a0e9ab560ab00010203040506070855ffebdf82279e74b9a717A.3Poly1305本條包括若干Poly1305的測(cè)試向量,這里使用GB/T32907—2016中規(guī)定的SM4算法作為其底層的分組密碼算法。參見(jiàn)表A.3。GB/T15852.3—2019測(cè)試向量輸入內(nèi)容測(cè)試向量#1消息加密密鑰KE雜湊密鑰KHa0f3080000f46400d0c7e9076c834403Poly1305標(biāo)簽1530557e5da6ad583e34cb測(cè)試向量#2消息加密密鑰KEec074c835580741701425b623235add6雜湊密鑰KH臨時(shí)值Nfb447350c4e868c52ac3275cf9d4327ePolyl305標(biāo)簽測(cè)試向量#3消息663cea190ffb83d89593fd7e679107ea26adb8caf6652d0656136加密密鑰KE雜湊密鑰KH48443dObb0d21109c89a100b5ce2c208ae212a55399729595dea458bc621ff0ePoly1305標(biāo)簽cObe415fb748be0796d0cb83a5c460e4測(cè)試向量#4消息36c6b8795d45b3819830f2c04491faf0加密密鑰KEela5668a4d5b66a5f68cc5424ed5982d雜湊密鑰KH12976a08c4426d0ce8a82407c4f48207臨時(shí)值N9ae831e743978d3a23527c7128149e3aPoly1305標(biāo)簽本條包括若干GMAC的測(cè)試向量,這里使用GB/T32907—2016中規(guī)定的SM4算法作為其底層的分組密碼算法。參見(jiàn)表A.4。GB/T15852.3—2019表A.4GMAC測(cè)試向量測(cè)試向量輸入內(nèi)容測(cè)試向量#1消息000000000000000000000000000000-00000000000000000000000000232f0cfe308b49ea6fc88229b5dc858d測(cè)試向量#2消息feffe9928665731c6d6a8f94673083089d632570f93064264a20918e3081b4cd測(cè)試向量#3消息abaddad24283lec2217774244b7221b7feffe9928665731c6d6a8f9467308308leeaeb669e96bd059bd9929123030e78GB/T15852.3—2019(資料性附錄)針對(duì)采用泛雜湊函數(shù)的MAC算法的若干攻擊在[5]中有描述。相對(duì)于其他類(lèi)型的MAC算法,極少量的偽造就可以構(gòu)成針對(duì)采用泛雜湊函數(shù)的MAC算法的密鑰恢復(fù)攻擊,并最終導(dǎo)致安全性完全a)增強(qiáng)安全性等級(jí)(例如,taglen),從而使得第一次偽造在實(shí)際應(yīng)用中是不可行的。b)有計(jì)劃地更新MAC算法使用的整個(gè)密鑰。如果可能,使用者甚至應(yīng)該為每個(gè)消息更新密鑰。和也應(yīng)該被限制。c)發(fā)送方與接收方需要保證/驗(yàn)證在相同的MAC密鑰下使用的臨時(shí)值是否唯一。當(dāng)臨時(shí)值重d)接收方應(yīng)該將大量的失敗的MAC鑒別作為一種攻擊企GB/T15852.3—2019(資料性附錄)ZUC和SM4算法的抗攻擊能力ZUC(祖沖之序列密碼算法)于2011年正式進(jìn)入3GPPLTE國(guó)際標(biāo)準(zhǔn),并于2012年成為國(guó)家密碼行業(yè)標(biāo)準(zhǔn)GM/T0001—2012,于2016年成為國(guó)家標(biāo)準(zhǔn)GB/T33133.1—2016。ZUC算法能夠抵抗常見(jiàn)SM4(原SMS4)分組密碼算法于2006年由國(guó)家商用密碼管理辦公室正式發(fā)布,并于2012年成為密碼行業(yè)標(biāo)準(zhǔn)GM/T0002—2012,于2016年成為國(guó)家標(biāo)準(zhǔn)GB/T32907—2016。自發(fā)布以來(lái),SM4的安全強(qiáng)度經(jīng)受住了實(shí)踐的考驗(yàn)。在密碼分析領(lǐng)域,目前對(duì)SM4最好的分析結(jié)果是23輪的差分分析(時(shí)到SM4全輪總共有32輪迭代,所以SM4尚有充足的安全冗余。本部分規(guī)定的4種采用泛雜湊函數(shù)的MAC算法:UMAC、Badger、Poly1305和GMAC,在附錄A中的測(cè)試向量分別使用了GB/T32907—2016中規(guī)定的分組密碼算法SM4和GB/T33133.1—2016中規(guī)定的序列密碼算法ZUC作為其底層的密碼算法。在其底層算法ZUC和SM4具備偽隨機(jī)特性的基礎(chǔ)上,本部分規(guī)定的4種采用泛雜湊函數(shù)的MAC算法都具備可證明安全的理論分析保障,能夠?yàn)楦鞣N現(xiàn)實(shí)應(yīng)用提供高效安全的消息鑒別服務(wù)。[1]Bernstein,D.J.,ThePolyl305-AESmessage-authenticationcode.ProceedingsofFastSoftwareEncryption2005,LNCS3557,pp.32-49,Springer-Verlag,2005.[2]Black,J.,Halevi,S.,Krawczyk,H.,Krovetz,T.andRogaway,P.UMAC:Fastandprovablysecuremessageauthenticati
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 皮草采購(gòu)合同的供應(yīng)鏈管理
- 電腦系統(tǒng)升級(jí)合同
- 工作服定做合同
- 網(wǎng)簽版房屋買(mǎi)賣(mài)合同模板
- 會(huì)場(chǎng)布置合同協(xié)議書(shū)執(zhí)行
- 工廠安全顧問(wèn)咨詢(xún)合同
- 個(gè)人健身指導(dǎo)合同格式
- 工程合同中的勞務(wù)分包問(wèn)題分析
- 飯?zhí)贸邪贤?guī)范版本
- 分期付款服務(wù)合同的簽訂合同注意事項(xiàng)
- 開(kāi)發(fā)商退房通知書(shū)
- (完整word版)首件檢驗(yàn)管理制度
- 線路工程灌注樁施工作業(yè)指導(dǎo)書(shū)施工方案
- 重力壩的分縫與止水
- 三重管高壓旋噴樁施工工藝規(guī)程與施工方案
- 個(gè)體診所藥品清單
- PFMEA的嚴(yán)重度SOD的評(píng)分和優(yōu)先級(jí)別
- 國(guó)網(wǎng)基建國(guó)家電網(wǎng)公司輸變電工程結(jié)算管理辦法
- 100道遞等式計(jì)算(能巧算得要巧算)
- 中國(guó)地圖含省份信息可編輯矢量圖
- 路政運(yùn)政交通運(yùn)輸執(zhí)法人員考試題庫(kù)
評(píng)論
0/150
提交評(píng)論