GB/T 15852.1-2008 信息技术 安全技术 消息鉴别码 第1部分:采用分组密码的机制
GB/T 15852.1-2008 Information technology—Security techniques—Message Authentication Codes(MACs)—Part 1:Mechanisms using a block cipher
基本信息
发布历史
-
2008年07月
-
2020年12月
研制信息
- 起草单位:
- 中国科学院软件研究所、信息安全国家重点实验室
- 起草人:
- 吴文玲、王鹏、张立廷、陈华
- 出版信息:
- 页数:26页 | 字数:44 千字 | 开本: 大16开
内容描述
ICS35.040
L80
中华人民共和国国家标准
GB/T15852.1—XXXX
代替GB/T15852.1-2008
信息技术安全技术消息鉴别码
第1部分:采用分组密码的机制
Informationtechnology—Securitytechniques—MessageAuthentication
Codes(MACs)—Part1:Mechanismsusingablockcipher
(ISO/IEC9797-1:2011,MOD)
XXXX-XX-XX发布XXXX-XX-XX实施
国家市场监督管理总局发布
中国国家标准化管理委员
GB/T15852.1—XXXX
目次
前言III
引言V
1范围1
2规范性引用文件1
3术语和定义1
4符号、代号和缩略语3
4.1符号和代号3
4.2缩略语4
5用户要求5
6MAC算法的模型5
6.1一般模型5
6.2密钥诱导(第1步)6
6.2.1概述6
6.2.2密钥诱导方法16
6.2.3密钥诱导方法26
6.3消息填充(第2步)7
6.3.1概述7
6.3.2填充方法17
6.3.3填充方法27
6.3.4填充方法37
6.3.5填充方法47
6.4数据分割(第3步)7
6.5初始变换(第4步)7
6.5.1概述8
6.5.2初始变换18
6.5.3初始变换28
6.5.4初始变换38
6.6迭代应用分组密码(第5步)8
6.7最终迭代(第6步)8
6.7.1概述8
6.7.2最终迭代18
6.7.3最终迭代28
6.7.4最终迭代39
6.7.5最终迭代49
6.8输出变换(第7步)9
I
GB/T15852.1—XXXX
6.8.1概述9
6.8.2输出变换19
6.8.3输出变换29
6.8.4输出变换39
6.9截断操作(第8步)10
6.9.1概述10
6.9.2截断操作110
6.9.3截断操作210
7MAC算法10
7.1概述10
7.2MAC算法1(CBC-MAC)10
7.3MAC算法2(EMAC)11
7.4MAC算法3(ANSIretailMAC)12
7.5MAC算法4(MacDES)13
7.6MAC算法5(CMAC)14
7.7MAC算法6(LMAC)15
7.8MAC算法7(TrCBC)15
7.9MAC算法8(CBCR)16
附录A(资料性附录)测试向量17
A.1概述17
A.2MAC算法1(CBC-MAC)18
A.3MAC算法2(EMAC)19
A.4MAC算法3(ANSIretailMAC)20
A.5MAC算法4(MacDES)21
A.6MAC算法5(CMAC)23
A.7MAC算法6(LMAC)23
A.8MAC算法7(TrCBC)25
A.9MAC算法8(CBCR)25
附录B(资料性附录)MAC算法的安全性分析27
参考文献33
II
GB/T15852.1—XXXX
前言
GB/T15852《信息技术安全技术消息鉴别码》分为三个部分:
——第1部分:采用分组密码的机制;
——第2部分:采用专用杂凑函数的机制;
——第3部分:采用泛杂凑函数的机制。
本部分是GB/T15852的第1部分。
本部分按照GB/T1.1-2009《标准化工作导则第1部分:标准的结构和编写》和GB/T20000.2《标
准化工作指南第2部分:采用国际标准》给出的规则起草。
本部分代替GB/T15852.1-2008。
本部分与GB/T15852.1-2008相比,主要技术变化如下:
——删除了消息鉴别码算法用途的说明(见GB/T15852.1-2008的第1章);
——增加了MAC算法的常用名称指代(见引言、第5章、第7章,参见附录A、附录B);
——增加了规范性引用文件GB/T32907-2016(见第2章);
——修改了“术语和定义”的条目顺序(见第3章,GB/T15852.1-2008的第3章);
——增加了16个符号,修改了3个符号(见4.1,GB/T15852.1-2008的第4章);增加了“缩略
语”(见4.2);
——修改了第5章的标题,将“要求”改为“用户要求”;修改了用户选择密钥诱导方法的要求(见
第5章,GB/T15852.1-2008的第5章);
——增加了使用MAC算法4时数据串长度的要求;增加了使用MAC算法7时MAC的长度要求(见第
5章);
——修改了MAC算法的一般模型,增加了密钥诱导和最终迭代操作,并修改了“MAC算法模型”图
(见6.1,GB/T15852.1-2008的第6章);
——增加了密钥诱导操作的概述与方法、最终迭代操作的概述与方法(见6.2、6.7);增加了填
充方法4、初始变换3(见6.3.5、6.5.4);修改了迭代应用分组密码操作(见6.4);增加
了截断操作的概述和截断操作2(见6.9);
——修改了MAC算法5,替换为CMAC(见7.6,GB/T15852.1-2008的7.5);修改了MAC算法6,
替换为LMAC(见7.7,GB/T15852.1-2008的7.6);
——增加了MAC算法7(TrCBC)和8(CBCR)(见7.8、7.9);
——修改了附录“例子”的标题为“测试向量”;修改了使用的分组密码算法,将DEA修改为SM4
分组密码算法;修改了明文、密钥、结果(参见附录A,GB/T15852.1-2008的附录A);增
加了MAC算法7和8的测试向量(参见A.7、A.8);
——修改了表B.1中序号为1.2和4.2的算法效率;增加了MAC算法7和8的安全性说明、算法的
特性、安全强度估计(参见附录B)。
本部分修改采用ISO/IEC9797-1:2011《信息技术安全技术消息鉴别码第1部分:采用分组密码
的机制》。
本部分与国际标准ISO/IEC9797-1:2011的主要技术差异如下:
——增加了MAC算法的常用名称指代(见引言、第5章、第7章,参见附录A、附录B);
——删除了密钥管理机制和对象标识符的说明(见ISO/IEC9797-1:2011的第1章);
III
GB/T15852.1—XXXX
——增加了规范性引用文件GB/T9387.2-1995、GB/T15843.1-2017、GB/T17964-2008,将ISO/IEC
18033-3替换为GB/T32907-2016(见第2章,ISO/IEC9797-1:2011的第2章);
——增加了初始变换等4个符号和代号(见4.1);增加了“缩略语”(见4.2);
——修改了用户选择密钥诱导方法的要求(见第5章,ISO/IEC9797-1:2011的第5章);
——修改了MAC算法的一般模型,增加了初始变换操作,并修改了“MAC算法模型”图(见6.1,
ISO/IEC9797-1:2011的6.1);
——增加了填充方法4、初始变换3(见6.3.5、6.5.4);修改了迭代应用分组密码操作(见6.4,
ISO/IEC9797-1:2011的6.5);增加了截断操作的概述和截断操作2(见6.9);
——增加了MAC算法7(TrCBC)和8(CBCR)(见7.8、7.9);
——删除了附录“对象标识符”(参见ISO/IEC9797-1:2011的附录A);
——修改了附录“例子”的标题为“测试向量”;修改了使用的分组密码算法、明文、密钥、结果
(参见附录A,ISO/IEC9797-1:2011的附录B);增加了MAC算法7和8的测试向量(参见
A.7、A.8);
——修改了表B.1中序号为1.2和4.2的算法效率(参见附录B,ISO/IEC9797-1:2011的附录C);
增加了MAC算法7和8的安全性说明、算法的特性、安全强度估计(参见附录B);
——删除了获得高安全性强度的MAC算法的方法及建议(参见ISO/IEC9797-1:2011的C.2);
删除了附录“与以前的MAC算法标准的比较”(参见ISO/IEC97971:2011的附录D)。
IV
GB/T15852.1—XXXX
引言
本部分定义了八种采用比特分组密码的消息鉴别码算法(MAC算法):CBC-MAC、EMAC、ANSIretail
n
MAC、MacDES、CMAC、LMAC、TrCBC、CBCR。
本部分定义的第一个MAC算法通常被称作CBC-MAC。其余七个MAC算法是CBC-MAC的变种。MAC算
法2、3、5、6和8在操作的末尾应用了特殊的变换。MAC算法4在操作的起始和末尾各应用了一个特
殊的变换。MAC算法7在截取MAC值时使用特殊的规则。当MAC算法的密钥长度是分组密码密钥长度的
两倍的时候,建议使用MAC算法4。MAC算法5和7使用加密的次数最少。MAC算法5只需要一次分组
密码密钥设置,但需要一个较长的中间密钥。MAC算法6是MAC算法2的可选变种。MAC算法7和8不
需要中间密钥和密钥设置,当存储空间受限时,建议使用MAC算法7和8。
本部分凡涉及密码算法的相关内容,按国家有关法规实施;凡涉及到采用密码技术解决保密性、完
整性、真实性、抗抵赖性需求的须遵循密码相关国家标准和行业标准。
V
GB/T15852.1—XXXX
信息技术安全技术消息鉴别码
第1部分:采用分组密码的机制
1范围
GB/T15852的本部分定义了八种采用分组密码的消息鉴别码(MAC)算法,规定了这八种MAC算法的
用户使用要求和一般模型,提供了测试向量和安全性分析。
本部分适用于安全体系结构、过程及应用的安全服务。
2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T9387.2-1995信息处理系统开放系统互联基本参考模型第2部分:安全体系结构
GB/T15843.1-2017信息技术安全技术实体鉴别第1部分:总则
GB/T17964-2008信息安全技术分组密码算法的工作模式
GB/T32907-2016信息安全技术SM4分组密码算法
3术语和定义
下列术语和定义适用于本文件。
3.1
分组block
长度为的比特串。
n
3.2
密钥key
控制密码变换操作的符号序列。
注:密码变换操作,如加密、解密、密码校验函数计算、签名生成、签名验证。
[GB/T15843.1-2017,定义3.16]
3.3
明文plaintext
未加密的信息。
3.4
密文ciphertext
为隐藏信息内容进行变换后的数据。
1
GB/T15852.1—XXXX
[GB/T15843.1-2017,定义3.7]
3.5
分组密码密钥blockcipherkey
控制分组密码运算的密钥。
3.6
比特分组密码-bitblockcipher
nn
分组长度为比特的分组密码。
n
3.7
加密encryption
为隐藏数据信息,通过密码算法对数据进行的一种可逆变换过程,并产生密文。
[GB/T15843.1-2017,定义3.13]
3.8
解密decryption
一个相应的加密过程的逆过程。
[GB/T15843.1-2017,定义3.10]
3.9
数据完整性dataintegrity
数据未被非授权地修改或破坏的性质。
[GB/T9387.2-1995,定义3.3.21]
3.10
消息鉴别码MessageAuthenticationCode
利用对称密码技术,以密钥为参数,由消息导出的数据项。任何持有这一密钥的实体,都可利用消
息鉴别码检查消息的完整性和始发者。
注:一个MAC有时也称作一个密码校验值。
3.11
消息鉴别码算法MessageAuthenticationCodealgorithm
消息鉴别码算法简称MAC算法,其输入为密钥和消息,输出为一个固定长度的比特串,满足下面两
个性质:
——对于任何密钥和消息,MAC算法都能够快速有效地计算。
——对于任何固定的密钥,攻击者在没有获得密钥信息的情况下,即使获得了一些(消息,MAC)
对,对任何新的消息预测其MAC在计算上是不可行的。
注1:一个MAC算法有时也称作一个密码校验函数。
注2:计算不可行性依赖于使用者具体的安全要求及其环境。
3.12
消息鉴别码算法密钥MessageAuthenticationCodealgorithmkey
2
GB/T15852.1—XXXX
用于控制消息鉴别码算法运算的密钥。
3.13
初始变换initialtransformation
消息鉴别码算法起始时所应用的函数。
3.14
输出变换outputtransformation
应用在算法中,对迭代操作的输出所进行的变换。
4符号、代号和缩略语
4.1符号和代号
本部分使用下列符号约定:
整数的比特的二进制表示。
CTin
i
D输入MAC算法的数据比特串。
D填充和分割操作后,分割自数据比特串的分组。
D
j
C
使用分组密码和密钥对密文进行解密。
dK(C)eK
使用分组密码和密钥对明文进行加密。
eK(P)eKP
F最终迭代。
G输出变换的结果。
HG
g输出变换,将分组映射到分组。
q
n2n
GF(2)元素个数为的有限域。
H,H,...,HMAC算法运算中的中间变量。
01q
I初始变换。
K,K',K"k
分组密码的秘密密钥,长度为比特。
秘密掩码密钥,长度为比特。
K,Kn
12
k分组密码密钥的比特长度。
k*MAC算法密钥的比特长度。
L填充方法3中表示长度的分组,等价于输入消息长度的二进制
表示经左侧填充得到比特分组。
n
数据比特串的比特长度。
LD
D
mMAC值的比特长度。
n分组密码的分组长度。
3
GB/T15852.1—XXXX
上的次不可约多项式,即:没有非平凡因子的多项式。
pn(x)GF(2)n
长度为的比特串,包含不可约多项式p(x)最右侧的个系数
°nn
pnn
(对应于n1n20)。
x,x,...,x,x1
12872120
对于n128,,°。
pn(x)xxxx1p128010000111
644359
对于n64,,°。
pn(x)xxxx1p64011011
经过填充和分割操作之后,数据比特串的分组个数。
qD
S长度为的秘密比特串。
n
tn
S,S长度为的秘密比特串。
12
t不小于的最小整数。
kn
LSB(X)j
比特串最右侧比特串。
X
j
MSB(X)j
比特串最左侧比特串。
X
j
长度为的比特串上的操作,记作Tx,其中是有限域
multx(T)nTT
n上的元素,将与n的单项式相乘。计算如下,
GF(2)TGF(2)x
其中表示的最左侧的比特:
TT
n1
T=1当T0时
n1
multx(T)°。
(T=1)p当T1时
nn1
XY比特串和的异或值。
XY
按顺序将比特串和连接所构成的比特串。
X||YXY
0nn个零比特组成的比特串。
:MAC算法定义中使用的赋值符号。
有限域乘法。在多项式表达式中,n的每个元素可由次数
*GF(2)
小于的二进制多项式表示。更明确地,比特串Aa...aaa
n
n1210
映射到二进制多项式a(x)axn1...ax2axa。有限域
n1210
n中的乘法,记作AB,等价于两个多项式的乘积
GF(2)
模一个次不可约多项式。即:是经和
a(x)b(x)npn(x)ABa(x)
b(x)相乘后,除以pn(x)所得的次数不大于n1的余式。其中
p(x)选具有最少非零系数的次不可约多项式中按字典序排
n
n
列的第一个多项式。对于n128,12872。
pn(x)xxxx1
X=1比特串左移1位得到的比特串;如果的长度是比特,则
XXn
X=1表示的最右侧比特。
X||0n
XŒ1X
比特串循环左移1位得到的比特串。
X?1X
比特串循环右移1位得到的比特串。
4.2缩略语
下列缩略语适用于本文件。
4
GB/T15852.1—XXXX
CBC分组密码链接(CipherBlockChaining)
CTR计数器模式(CounterOperationMode)
MAC消息鉴别码(MessageAuthenticationCode)
5用户要求
使用本部分中给出的MAC算法的用户需要选择:
——符合国家管理要求的分组密码算法;
e
——从6.3中选取一种填充方法;
——从7中选取一个MAC算法;
——MAC的比特长度;
m
——一个通用的密钥诱导方法;MAC算法5需要此方法,MAC算法2、4和6也可能需要。
MAC的比特长度应是一个正整数并且不大于分组长度。
mn
2n
如果使用填充方法3,那么数据串的比特长度应小于。
D
如果使用MAC算法4,那么数据串填充中的分组数应不小于2,即:q2。
如果使用MAC算法7,那么MAC的比特长度应小于n/2。
m
对于具体分组密码、填充方法、MAC算法、的值以及密钥诱导方法(如果需要)的选择超出了
em
本部分所规定的范围。
注1:上述选择影响MAC算法的安全强度。具体参见附录B。
生成MAC和验证MAC应使用相同的密钥。当数据比特串也被加密,则MAC算法使用的密钥应不同于用
作加密的密钥。
注2:关于密钥管理的信息参见GB/T17901.1-1999。
本部分中给出的MAC算法的安全性严重依赖于管理密钥所遵循的程序和方法。
MAC算法计算过程中泄露中间值可能造成伪造和(或)密钥恢复攻击(参见附录B)。
6MAC算法的模型
6.1一般模型
MAC算法的应用需要如下八步操作:
——第1步:密钥诱导(可选);
——第2步:消息填充;
——第3步:数据分割;
I
——第4步:初始变换;
——第5步:迭代应用分组密码;
——第6步:最终迭代;
F
——第7步:输出变换;
g
——第8步:截断操作。
其中,第4步至第8步如图1所示。
5
GB/T15852.1—XXXX
图1MAC算法的第4、5、6、7和8步操作
6.2密钥诱导(第1步)
6.2.1概述
MAC算法5使用密钥诱导算法,由一个分组密码密钥诱导得到两个掩码密钥。MAC算法2、4和6可能需
要使用密钥诱导算法,由一个分组密码密钥诱导得到两个分组密码密钥。
本部分规定了两种密钥诱导算法。密钥诱导算法1可被用在本部分所规定的MAC算法2、4和6中。密
钥诱导算法2被用在本部分所规定的MAC算法5中。
6.2.2密钥诱导方法1
k
密钥诱导方法1由一个分组密码密钥计算得到两个比特的分组密码密钥和。
KK'K"
密钥诱导方法使用GB/T17964中定义的计数器模式(CTR)。操作如下:
t
——定义整数为不小于的最小正整数。
kn
1i2t
——定义计数器CT()为在整数的二进制表示左侧填充“0”得到的比特分组,尽可
in
i
能少填充(甚至不填充)。
tn
——计算长度为的比特串,使其等于e(CT)||e(CT)||...||e(CT),并定义K':MSB(S)。
S
1K1K2Ktk1
tn
——计算长度为的比特串,使其等于e(CT)||e(CT)||...||e(CT),并定义
S
2Kt1Kt2K2t
K":MSB(S)。
k2
6.2.3密钥诱导方法2
密钥诱导方法2由一个分组密码密钥计算得到两个比特的掩码密钥和。操作如下:
KnKK
12
Sn
——计算比特的秘密比特串:S:e(0)。
n
K
6
GB/T15852.1—XXXX
——由计算得到掩码密钥:。
SK1K1:multx(S)
——由计算得到掩码密钥:。
KKK:multx(K)
1221
6.3消息填充(第2步)
6.3.1概述
在这一步骤中,用额外的比特串作为前缀或后缀对数据比特串进行填充,使得填充后的数据比
D
特串的长度是的整数倍。根据选择的填充方法,填充比特串只用来计算MAC,所以这些填充比特串不
n
必随原消息存储或发送。MAC的验证者应知道填充比特串是否已经被存储或发送,以及使用的是何种填
充方法。
本部分规定了四种填充方法。填充方法1、2和3可被用在本部分所规定的MAC算法1、2、3、4和6中。
填充方法4被用在本部分所规定的MAC算法5、7和8中。
6.3.2填充方法1
在数据比特串的右侧填充“0”,尽可能少填充(甚至不填充),使填充后比特串的长度是的
Dn
正整数倍。
注1:面对简单伪造攻击,使用填充方法1的MAC算法可能是不安全的。具体参见附录B。
注2:如果数据比特串是空串,那么填充方法1规定对其填充个“0”。
n
6.3.3填充方法2
在数据比特串的右侧填充一个比特“1”,然后在所得到的比特串右侧填充“0”,尽可能少填
D
充(甚至不填充),使填充后的比特串的长度是的正整数倍。
n
注:如果数据比特串是空串,那么填充方法2规定对其填充一个“1”,然后在其右侧填充n1个“0”。
6.3.4填充方法3
在数据比特串的右侧填充“0”,尽可能少填充(甚至不填充),使填充后比特串的长度是的
Dn
正整数倍。然后在所得到的数据比特串左侧填充一个分组。分组由尽可能少的“0”和数据比特串
LLD
的长度的二进制表示组成,其中位于二进制表示的左侧的“0”尽可能少,且使的长度为比特。
LLLn
DD
L最右端的比特和的二进制表示中的最低位相对应。
L
D
注1:如果在计算MAC之前不知数据比特串的长度,则填充方法3不适用。
注2:如果数据比特串是空串,那么填充方法3规定对其填充个“0”,然后在其左侧填充一个由个“0”组成
nn
的分组。
L
6.3.5填充方法4
如果输入MAC算法的数据比特串的比特长度是的正整数倍,则不需要填充。否则,在数据比特
Dn
串的右侧填充一个“1”比特,然后在所得到的比特串右侧填充“0”,尽可能少填充(甚至不填充),
D
使填充后的比特串的长度是的正整数倍。
n
注:如果数据比特串是空串,那么填充方法4规定对其填充一个“1”,然后在其左侧填充n1个“0”。
6.4数据分割(第3步)
qD,D,...,D
把填充后的数据比特串分割成个比特的分组。这里表示填充后比特串的第一个
nD
推荐标准
- DB36/T 1535-2021 野生西瓜嫁接育苗技术规程 2021-12-14
- DB36/T 1524-2021 狗牯脑红茶加工技术规程 2021-12-14
- DB36/T 1530-2021 油菜冻害气象等级 2021-12-14
- DB36/T 1527-2021 常见作物寄生线虫形态学鉴定方法 2021-12-14
- DB36/T 1528-2021 泰和竹篙薯浅生槽栽培技术规程 2021-12-14
- DB36/T 1534-2021 香菇熟料袋式栽培技术规程 2021-12-14
- DB36/T 1532-2021 百香果栽培技术规程 2021-12-14
- DB36/T 1525-2021 甘薯对主要食叶性害虫抗性鉴定技术规程 2021-12-14
- DB36/T 1533-2021 商品番鸭网床垫料养殖技术 2021-12-14
- DB36/T 1529-2021 水稻“三控”栽培技术规程 2021-12-14