發(fā)布日期:2023-03-21 20:13 瀏覽次數(shù):
GB/T 15852的本部分規(guī)定了4種采用泛雜湊函數(shù)的消息鑒別碼算法:UMAC、Badger、Poly1305和GMAC。這些算法基于GB/T33133.1-2016中規(guī)定的序列密碼算法和GB/T 32907-2016中規(guī)定的分組密碼算法,或符合國(guó)家規(guī)定的其他序列密碼算法和分組密碼算法,使用一個(gè)密鑰和一個(gè)泛雜湊函數(shù)處理一個(gè)長(zhǎng)度為m位的比特串,輸出一個(gè)長(zhǎng)度為n位的比特串作為MAC。
本部分適用于安全體系結(jié)構(gòu)、進(jìn)程及應(yīng)用的安全服務(wù)。這些算法可以作為數(shù)據(jù)完整性機(jī)制,用于檢驗(yàn)數(shù)據(jù)是否在未經(jīng)授權(quán)的方式下被更改。也可以作為消息鑒別機(jī)制,確保消息來(lái)自于擁有密鑰的實(shí)體。數(shù)據(jù)完整性機(jī)制和消息鑒別機(jī)制的強(qiáng)度由以下指標(biāo)決定:密鑰的長(zhǎng)度(按比特)與保密性、泛雜湊函數(shù)產(chǎn)生的雜湊碼的長(zhǎng)度(按比特)、泛雜湊函數(shù)的強(qiáng)度、MAC的長(zhǎng)度(按比特),以及具體的機(jī)制。
注:提供完整性服務(wù)的一般框架在ISO/IEC 10181-6[1]中指定。
下列文件對(duì)于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。
GB/T 15852.1-2008 信息技術(shù) 安全技術(shù) 消息鑒別碼 第1部分:采用分組密碼的機(jī)制(ISO/IEC 9797-1:1999,IDT)
GB/T 32907-2016 信息安全技術(shù) SM4分組密碼算法
GB/T 33133.1-2016 信息安全技術(shù) 祖沖之序列密碼算法 第1部分:算法描述
GB/T 36624-2018 信息技術(shù) 安全技術(shù) 可鑒別的加密機(jī)制
GB/T 15852.1-2008界定的以及下列術(shù)語(yǔ)和定義適用于本文件。
3.1
空串 empty string
長(zhǎng)度為零的比特串。
3.2
臨時(shí)值 nonce
使用一次的值,用于向MAC算法提供新鮮輸入。
3.3
標(biāo)簽 tag
MAC算法的結(jié)果,附加一個(gè)可能的加密消息以提供完整性保護(hù)。
3.4
泛雜湊函數(shù) universal hash-function
由密鑰確立的映射,將一定范圍內(nèi)任意長(zhǎng)比特串映射到定長(zhǎng)比特串,滿足:對(duì)于所有不同的輸入,其輸出在密鑰均勻隨機(jī)的前提下發(fā)生碰撞的概率極小。
注:泛雜湊函數(shù)由Carter和 Wegman 提出出 ,其在MAC算法中的應(yīng)用最早由Wegman和Carter 描述[11]。
4.1 符號(hào)
下列符號(hào)適用于本文件。
bit(S,n) 若比特串S的第n個(gè)比特是1則輸出整數(shù)1,否則輸出整數(shù)0(索引從1開始)
bitlength(S) 比特串S的比特長(zhǎng)度
bitstr2uint(S) 一個(gè)非負(fù)整數(shù),其二進(jìn)制表示為比特串S。形式化地,若S的長(zhǎng)度為t比特,則bbitstr2uint(S)=2-1*bit(S,1)+2-2*bit(S,t)
注1:比特串是以高位順序排列的,也就是說(shuō),第一個(gè)比特為最高位。
blocklen 底層分組密碼的分組長(zhǎng)度(按字節(jié)計(jì))
ceil 向上取整操作,也就是說(shuō),若x是一個(gè)浮點(diǎn)數(shù),則 ceil(x)是滿足 n≥x的最小的整數(shù)n
Enc(K,X) 明文分組X在密鑰K的作用下通過(guò)分組密碼Enc進(jìn)行加密
floor 向下取整操作,也就是說(shuō),若x是一個(gè)浮點(diǎn)數(shù),則 floor(x)是滿足 n≤x的最大的整數(shù)n
H 雜湊值
K 主密鑰
Kg 加密密鑰
KH 雜湊密鑰
keylen 分組密碼的密鑰長(zhǎng)度(按字節(jié)計(jì))
log2 二進(jìn)制對(duì)數(shù)函數(shù)
M 消息
max 指定參數(shù)中的最大值
N 臨時(shí)值
octetlength(S) 比特串S按字節(jié)計(jì)的長(zhǎng)度(假定S的比特長(zhǎng)度是8的倍數(shù))
octetstr2uint(S) 定義為 S[0]+28*S[1]+216*S[2]+···+28n-8*S[n-1]的非負(fù)整數(shù),其中 n=octetlengtth(S)
注2:字節(jié)串是以低位順序排列的,即第一個(gè)字節(jié)為最低位
prime(n) 對(duì)任意正整數(shù)n,小于2n的最大素?cái)?shù)值
注3:本部分使用的素?cái)?shù)如表1所示。
表1 素?cái)?shù)值
n | prime(n) | prime(n)的十六進(jìn)制表示 |
32 | 232 - 5 | 0x FFFFFFFB |
36 | 236 - 5 | 0x 0000000F FFFFFFFB |
64 | 264 - 59 | Ox FFFFFFFF FFFFFFC5 |
128 | 2128-159 | 0x FFFFFFFF FFFFFFFF FFFFFFFF FFFFFF61 |
130 | 2130 - 5 | 0x00000003 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFB |
S[i] 比特串S的第i個(gè)字節(jié)(索引從0開始)
注4:6.2中關(guān)于UMAC的條款使用了一個(gè)起始為1而不是0的索引。
S[i…j] 由S的第i個(gè)到第j個(gè)字節(jié)組成的子串
taglen 標(biāo)簽的字節(jié)長(zhǎng)度
uint2bitstr(x,n) 長(zhǎng)度為n的字節(jié)串S,滿足 bitstr2uint(S)=x
uint2octetstr(x,n) 長(zhǎng)度為n的字節(jié)串S,滿足 x=octetstr2uint((S)
X|s 比特分組X的左截?cái)啵喝鬤的比特長(zhǎng)度大于或等于s,則X ,是由X最左側(cè)的s個(gè)比特組成的長(zhǎng)度為s位的比特分組
X|s 比特分組X的右截?cái)啵喝鬤的比特長(zhǎng)度大于或等于s,則X 是由X最右側(cè)的s個(gè)比特組成的長(zhǎng)度為s位的比特分組
X >>1比特分組X右移一位:Y=X>>1最左側(cè)的比特恒為0
|X| X的比特長(zhǎng)度
zeropad(S,n)
對(duì)于非負(fù)整數(shù)n,用零比特對(duì)比特串S進(jìn)行填充,直到其長(zhǎng)度是最接近的n個(gè)字節(jié)的整數(shù)倍。形式化地, ropad(S,n)=S||T ,其中T是滿足S||T非空并且n可以整除 octetlength(S||T)的最短的零比特串(T可能為空)
⊕ 比特串的比特級(jí)邏輯異或運(yùn)算。若A,B是長(zhǎng)度相等的比特串,則表示A和B的比特級(jí)邏輯異或所形成的比特串
∧比特串的比特級(jí)邏輯與運(yùn)算。若A,B是長(zhǎng)度相等的比特串,則A∧B表示A和B的比特級(jí)邏輯與所形成的比特串
+32 兩個(gè)32位的比特串的加法運(yùn)算,得到一個(gè)32位的比特串。形式化地,S+32T=uint2bitstr(bitstr2uint(S)+bitstr2uint(T)mod232,4)
+64 兩個(gè)64位的比特串的加法運(yùn)算,得到一個(gè)64位的比特串。形式化地,S+64T=uint2bitstr(bitstr2uint(S)+bitstr2uint(T)mod264,8)
* 整數(shù)的乘法運(yùn)算
*64 兩個(gè)64位的比特串的乘法運(yùn)算,得到一個(gè)64位的比特串。形式化地,S*64T=uint2bitstr(bitstr2uint(S) *bitstr2uint(T)mod264,8)
注5:+32,+64和 運(yùn)算與在現(xiàn)代計(jì)算機(jī)上可以高效執(zhí)行的加法和乘法運(yùn)算有著很好的對(duì)應(yīng)。
以上為標(biāo)準(zhǔn)部分內(nèi)容,如需看標(biāo)準(zhǔn)全文,請(qǐng)到相關(guān)授權(quán)網(wǎng)站購(gòu)買標(biāo)準(zhǔn)正版。