欢迎来到天天文库
浏览记录
ID:42106940
大小:480.56 KB
页数:31页
时间:2019-09-08
《现代密码学第六章:单向函数和散列函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、HASH函数和MAC(二)《现代密码学》第六讲1上节内容回顾单向函数Hash函数的定义hash函数的用途MD5算法SHA-256算法2本节主要内容消息鉴别码定义CBC-MACHMACCCT认证加密标准3消息鉴别码消息鉴别码又称为带密钥的hash4消息鉴别码消息认证码MAC(MessageAuthenticationCode)是一种消息认证技术。发送方A和接收方B共享密钥K,若A向B发送消息M,则A计算利用C=F(K,M)计算MAC值;然后将原始消息M和C一起发送给接收方。接收方B对收到的消息M用相同的密钥K进行相同的计算得出新的MAC值C’。并将接收到的C与其计算出的C’进
2、行比较,若相等,则:(1)接收方可以相信消息未被修改。(2)接收方可以确信消息来自真正的发送方。F是MAC函数,它利用密钥K和任意长度的消息M来生成一个固定长度的短数据块C。5消息鉴别码攻击目的1伪造攻击:攻击者在没有密钥K的情况下,伪造一个未经过认证的(M,Mac)对.存在性伪造:如果攻击者只能够对一个不由他控制的消息进行伪造,那么这种伪造攻击称为存在性伪造攻击.选择性伪造:如果攻击者能够对由他选择的消息进行伪造,那么这种伪造攻击称为选择性伪造攻击.2密钥恢复攻击:攻击者通过分析一系列(M,Mac)对,找到控制这些(M,Mac)对的密钥.非自适应选择明文攻击:敌手在使用M
3、ac设备之前,必须已经选定要测试的消息;自适应选择明文攻击:敌手可以根据Mac设备的输出,自行选择下一次要测试的消息.6消息鉴别码MAC的构造用hash函数构造MAC用分组密码构造MAC用伪随机函数构造MAC其他构造方法。。。7消息鉴别码研究进展1985年,基于DES的MAC,ISO8731-1/ANSIX9.92002年,NIST发布标准HMAC,ANSIX9.71NESSIE工程推荐使用的MAC算法有TTMAC,UMAC,CBC-MAC,HMAC8CBC-MAC美国国家标准技术研究所(NationalInstituteofStandardsandTechnology)于
4、1985年5月30日发布了《计算机信息认证标准》(FIPSPUB113FederalInformationProcessingStandardsPublication113),这个标准制定了一个基于DES数据认证算法(DataAuthenticationAlgorithm(DAA))。这个算法也被用在ISO8731-1和美国国家标准局(AmericanNationalStandardsInstitute(ANSI))发布的金融机构信息认证的标准ANSIX9.9中。910CBC-MAC基本思想是:首先,填充数据,形成一串n比特组;其次,使用CBC模式加密这些数据;对最后的输出
5、分组进行选择处理和截断(如果m<n)形成MAC.10设n比特数据组D1,D2,……,Dq,则MAC的具体计算过程如下:置I1=D1,计算O1=ek(I1)。对i=2,3,……,q,完成下列计算:Ii=DiOi-1Oi=ek(Ii)对Oq进行选择处理和截断,获得m比特MAC.其中ek表示分组密码的加密函数.11CBC-MAC11CBC-MAC若数据不是加密算法分组长度的整数倍,则需进行消息填充,填充方法有:方法1:对需要计算MAC的数据的右边填充若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串。方法2:对需要计算MAC的数据的右边先填充一个“1”比特,然后填充
6、若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串。方法3:首先对需要计算MAC的数据的右边填充若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串;其次,在所得到的数据串的左边填充一个n比特组,该组包含了未进行填充的数据的比特长度的二元表示,其左边用“0”补齐。如果验证者不知道数据的长度,则应选用填充方法2或3,因为这两种方法可使验证者查明所填充的那些“0”比特。1212CBC-MAC如果在计算CBC-MAC的过程中没有使用选择处理和截断过程,直接输出最后一步的输出密文作为最后MAC,是否安全?13CBC-MAC若消息恰好是分组的整数倍,不考虑填
7、充攻击一:假定MAC1=ek(D1),则MAC2是两个分组的消息(D1
8、
9、D2)的一个合法MAC值,其中,D2=D1^MAC1。这种攻击方法称为”cutandpaste”攻击。攻击二:攻击者想伪造消息D的合法MAC。首先,选择消息D1发送给认证者,认证者返回MAC1=ek(D1)然后计算D2=MAC1^D,把消息(D1
10、
11、D2)发送给认证者,认证者返回MAC2=ek(ek(D1)^D2)则MAC2是消息D的合法MAC值:MAC2=ek(D)14伪造攻击:攻击者在没有密钥K的情况下,伪造一个未经过认证的(M,Mac)
此文档下载收益归作者所有