国密消息鉴别码学习笔记 ——含GB/T 15852和HMAC(第3章 采用HASH算法的MAC)

本文介绍了国密标准中的消息鉴别码(MAC)算法,包括基于专用杂凑函数的MAC算法2及其与HMAC的区别,重点说明了密钥长度限制等关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国密消息鉴别码

 ——含GB/T 15852和HMAC

摘要:本文档对我国标准规定的消息鉴别码的生成算法进行了简要介绍,包括算法生成步骤,注意事项等。我国的相关标准包括GB/T 15852.1-2008、GB/T 15852.2-2012、GB/T15852.3(目前为草稿)。

关键词:消息鉴别码,MAC,HMAC,杂凑算法,哈希算法,HASH,分组密码,消息填充。

3. 基于专用杂凑函数的MAC

3.1 三种算法基本情况介绍

标准规定了三种MAC算法:

算法1和算法3要求修改底层的HASH算法(如修改HASH算法的轮常数等),这在很有应用中无法实现,因此强烈建议舍弃这两者算法。

l  算法2为HMAC算法的微调版。可以使用。

3.2 算法2和HMAC区别

仅存在密钥长度的限制

l HMAC:未限制密钥长度。

l 算法2:严格限制密钥长度为 L<= Len(K)<= B

这里B是HASH函数的分组大小,L是HASH函数的输出杂凑值长度。

以SM3为例,算法2要求密钥长度为256~512比特,而HMAC无此要求。

3.3 HMAC (FIPS PUB 198-1)

参见FIPS PUB 198-1, The Keyed-Hash MessageAuthentication Code (HMAC). 2008-07.

3.3.1 记号

B:HASH函数的分组大小,单位字节。

L:HASH函数的输出杂凑值长度,单位字节。

ipad:每个字节都为0x36的数据串,B字节长。

opad:每个字节都为0x5c的数据串,B字节长。

算法表达式

HMAC(K, text) = H((K0⊕opad )|| H((K0 ⊕ipad) || text))

3.3.2 HMAC算法流程

算法:HMAC(K, text)

输入:密钥K和消息text

输出:MAC值

步骤:

步骤 1. 生成K0,长度为B。

n 若Len(K)=BK0 = K

n 若Len(K)>BK0 = HASH(K)|| 00...0。

n 若Len(K)<BK0 = K || 00...0。

步骤 2. H* = HASH( ( K0 ⊕ ipad) || text ) 。

步骤 3. H = HASH(( K0 ⊕ opad) || H* ) 。

步骤4. 返回H

图3.1 HMAC算法流程图

4. 基于泛杂凑函数的MAC

标准文档尚在设计中。略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值