读书笔记-《第三章-消息认证码》

书籍信息

书名:《深入浅出密码学》

作者:[ 美 ] 戴维 • 王(David Wong)

译者:韩露露 ,谢文丽 ,杨雅希


第三章:消息认证码

  1. 密钥是安全的基础:没有密钥就无法保证机密性,也无法实现认证性;

  2. 把第二章(哈希函数)和密钥结合起来,就可以得到一个新的保护数据完整性的密码学原语——消息认证码(Message Authentication Code, MAC);

  3. 虽然哈希函数可以为任意数据提供认证性或完整性,但它需要依赖一个可信信道。可以使用消息认证码(Message Authentication Code, MAC)算法创建可信信道,当然消息认证码算法还有其他功能。

  4. MAC的安全属性:和所有的密码学原语一样,消息认证码算法自身也有缺点。在继续后续学习之前,有必要对消息认证码算法提供的安全属性及其正确使用方法进行解释

    • 消息认证码算法可以防止伪造认证标签;只要消息认证码算法的密钥是保密的,就可以防止认证标签伪造,这就意味着密钥必须足够随机并且足够长,通常为16字节,即128比特;此外,在第2章中的模糊攻击页同样适用于攻击消息认证算法,如果想计算某种结构体的认证标签,需要在使用消息认证码算法之前将其序列化,否则敌手也许可以轻而易举伪造认证标签】

    • 认证标签的长度不应该小于128比特,避免出现认证标签出现碰撞和伪造的问题;

    • 如果只想使用消息认证码对消息进行简单的认证,那么无法检测重放的消息;解决办法:在消息认证码算法的输入中增加递增计数器的值

    • 认证标签在验证过程中容易遭到攻击解决办法:在固定时间内验证认证标签,实现在恒定时间内比较认证标签的诀窍是永远不要出现分支。

  5. 消息认证码的概念和哈希函数很类似。消息认证码算法属于一种密钥算法(或对称密钥原语),它与哈希函数的相同之处在于将消息作为输入,不同之处在于消息认证码算法还需要输入密钥,最后算法会输出一个唯一的认证标签。这个算法是确定性的,即给定相同的密钥和消息,将产生相同的认证标签。

  6. 消息认证码就像一个私有的哈希函数,只有拥有密钥的人才能计算该消息在该密钥下对应的哈希值,从某种意义上来说,使用密钥相当于对哈希函数进行个性化设置,但消息认证码算法与哈希函数的关系并不止于此,大多数消息认证码算法都是基于哈希函数构造的。

  7. 现实世界中使用MAC的方法

    • 许多场景都会使用MAC来确保两台机器或两个用户之间的消息完整性。确保消息完整性在明文通信和加密通信两种情况下都是必要的。【第三章:可以了解明文通信时使用MAC来确保消息完整性的方法,第四章:可以了解加密通信时使用MAC确保消息完整性的方法。】

    • 【3.4.2密钥派生】消息认证码算法是一种生成一些看似随机字节(就像哈希函数一样)的算法。利用这种属性,我们可以用一个密钥来生成看似随机的数字或更多密钥。在第8章中可以学习基于HMAC的密钥派生函数(HKDF),它使用HMAC实现密钥派生,其中HMAC是第三章中讨论的消息认证码算法之一。

    • 【cookie完整性】(请阅读3.4.3消息)

    • 【哈希表】SipHash消息认证码算法(请阅读3.4.4消息)

  8.  实际应用中的消息认证码
    • 消息认证码算法是在一方或多方通信中用来保护信息的完整性和真实性的密码算法,而由于主流的消息认证码算法还表现出良好的随机性,因此它还经常在其他算法(如本书第11章中基于时间的一次性密码[TOTP]算法)中用来生成随机数。

    • 3.5小节可以学习两种标准化的消息认证码算法:HMAC(一个基于哈希函数的消息认证码算法)和KMAC(基于cSHAKE的消息认证码算法)

    • 由于SHA-2不能抵抗长度扩展攻击,所以SHA-2不能被直接用来计算秘密消息的哈希值,那么如何将哈希函数转换为密钥算法呢?这正是HMAC为我们解决的问题。HAMC算法的底层运行步骤请看P52页。

    • HMAC算法(顾名思义,HMAC算法是一种将密钥和哈希函数结合使用的算法,利用哈希函数来构建消息认证码算法是一种流行的做法,因为哈希函数拥有如下优点:存在被广泛接受的实现方式、在软件上运行速度块、大多数系统硬件都支持)允许定制所使用的哈希函数,因此其认证标签的大小由算法使用的哈希函数决定。例如,HMAC-SHA256使用SHA-256函数产生256位的认证标签,而HMAC-SHA512算法产生512位认证标签。

    • 可以将HMAC算法与许多哈希函数结合使用。不过,目前HMAC算法主要与SHA-2函数结合使用。

    • 由于SHA-3不易遭受长度扩展攻击(这是SHA-3竞赛中的要求),所以使用SHA-3来构造HMAC算法还不如直接使用SHA-3-256(key||message)。而这正式KMAC算法的做法。KMAC算法使用了cSHAKE来构造消息认证码算法,其中的cSHAKE是第二章介绍的SHAKE可扩展输出函数(XOF)的自定义版本。

    • HMAC: Hash-based Message Authentication Code, 基于哈希函数的MAC算法,HMAC技术可以说是MAC技术的一种,此外还有KMAC算法【KMAC算法使用cSHAKE来构造消息认证码算法,其中cSHAKE是可扩展输出函数(XOF)的自定义版本,再详细说就是:(1)SHAKE是一个可扩展输出函数,即XOF,其作用类似于哈希函数,但可以输出任意长度的摘要;(2)cSHAKE,即customizable SHAKE)允许人们轻松创建SHAKE算法的实例,这些实例就像许多个XOF函数一样,这就是所谓的域隔离】

    • 个人的一些其他理解:(1)消息认证码(MAC)算法主要用于验证消息的完整性和真实性,而并非提供机密性。MAC算法通常使用密钥和消息内容来生成一个固定长度的认证标签,用于验证消息在传输过程中是否被篡改。它不涉及加密和解密消息内容,因此并不提供机密性保护。(2)如果你需要同时验证消息的完整性和提供机密性保护,可以考虑使用带有机密性保护功能的加密算法,如对称加密算法(如AES)或者具有认证功能的加密模式(如GCM模式)。这些算法可以在提供加密的同时,确保消息的完整性和真实性。(3)因此,消息认证码算法是用于验证消息完整性和真实性的,而不是提供机密性保护的工具。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值