[发明专利]用于生成基于密码的消息认证码的方法有效
申请号: | 201310473222.0 | 申请日: | 2009-08-12 |
公开(公告)号: | CN103560880B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 布鲁斯·默里;马蒂亚斯·瓦格纳 | 申请(专利权)人: | NXP股份有限公司 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/06 |
代理公司: | 中科专利商标代理有限责任公司11021 | 代理人: | 潘剑颖 |
地址: | 荷兰艾*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 生成 基于 密码 消息 认证 方法 | ||
本申请为下述申请的分案申请:
原申请的申请日(国际申请日):2009年8月12日,
原申请的申请号:200980131963,2(国际申请号:PCT/IB2009/053556),
原申请的发明名称:用于生成基于密码的消息认证码的方法。
技术领域
本发明涉及用于生成基于密码的消息认证码的方法。
背景技术
消息认证码(MAC)是用于认证消息的信息片段。生成MAC的算法的输入是密钥和要认证的消息。基于密码的MAC(CMAC)是基于块密码的消息认证码,并且在例如NIST(国家标准和技术研究所)特殊公开800-38B,2005年5月中对其加以描述。
通过将消息分为大小等于底层密码的块大小的块,来构建与该消息相关的CMAC,例如在高级加密标准(AES)的情况中是128比特,对消息进行密码块链(CBC)加密(如果需要,则对最后一块进行填充),并且保留最后一块加密的结果(全部或部分的)作为计算出的MAC值。
为了避免特定的攻击类型,在加密之前,让最后一块与从当前使用的密钥下的零向量的加密中获取到的两个可能的“子密钥”值之一(通常表示为K1或K2)进行互斥析取(异或)。由最后一个消息块是否包含填充来确定要使用哪个子密钥的选择。仅可以由知晓正在使用中的密码密钥的参与者来计算该子密钥值。
如果MAC短于密码块大小,则标准规定应当通过保留所需数量的最高有效位来截断计算出的MAC。
如果对大小小于或等于密码块大小的消息来计算MAC,则最后一块也是第一块,因此对该单块执行子密钥异或的修改。这意味着在该MAC计算期间,外部观察者无法知晓对密码的块运算的直接输入。
图1示出了状态阵列1及其依照于Federal Information Standard(FIPS)publication197,November26,2001中公开的AES的字节编号。
AES密码在状态阵列1上对字节进行运算,该状态阵列1具有4字节乘4字节的大小,并且具有字节项Sr,c,其中索引“r”指示状态阵列1的相应行,并且索引“c”指示状态阵列1的相应列。当将AES密码运算的输出表示为比特串时,字节排序如下:
S0,0S1,0S2,0S3,0S0,1S1,1S2,1S3,1S0,2S1,282,2S3,2S0,3S1,3S2,3S3,3
随后,根据习惯来对该比特串的字节进行编号,其中s15是最左或最高有效字节,并且s0是最右或最低有效字节,使得
sr,c=s15(4c+r)
依照前述NIST标准用于截断MAC的标准方法是保留所需数量的最高有效比特。相应的,将基于AES的MAC截断为8字节对应于保留最终状态字节s15至s8(包含)。
图2示出了在根据标准的MAC计算的最后一回合期间的16字节AES状态的示例。在所谓密码的开始处,向图1的状态阵列1添加初始回合密钥21,以生成状态阵列22(AddRoundKey运算)。对状态阵列22进行ShiftBytes变换,以生成第一变换后状态阵列23,对其进行ShiftRow变换,以生成第二变换后状态阵列24。然后,通过将第二变换后状态阵列24的状态的每一列与来自密钥调度的字(word)进行异或,来向第二变换后状态阵列24添加另一回合密钥26,以生成由行31-34和列41-44所构成的输出状态阵列25。使用状态阵列25,依照于标准,通过在截断之后保留8个最高有效字节s15到s8,并且丢弃剩余字节,来计算CMAC。以阴影示出了8个最高有效字节27s15到s8。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于NXP股份有限公司,未经NXP股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310473222.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:枣烘干机
- 下一篇:多子载波系统中多光源的频率稳定系统及方法