2025年消息认证码(消息认证码攻击)

消息认证码(消息认证码攻击)消息认证码的输入包含 任意长度的消息 密钥 发送者和接收者共享 输出 固定长度的密钥 消息认证码的主要功能 数据完整性 计算 MAC 时 将消息和密钥进行计算产生 MAC 值 若数据被第三方攻击者修改则计算的 MAC 值并不相同 这保证了数据的完整性 数据真实性 计算 MAC 时 由于密钥只有发送者和接收者共享 则保证了数据的真实性 若密钥被第三方攻击这窃取则就无法保障数据的真实性 密码验证

大家好,我是讯享网,很高兴认识大家。



消息认证码的输入包含:任意长度的消息,密钥(发送者和接收者共享).输出:固定长度的密钥。

消息认证码的主要功能:

  • 数据完整性:计算MAC时,将消息和密钥进行计算产生MAC值,若数据被第三方攻击者修改则计算的MAC值并不相同,这保证了数据的完整性。
  • 数据真实性:计算MAC时,由于密钥只有发送者和接收者共享,则保证了数据的真实性。若密钥被第三方攻击这窃取则就无法保障数据的真实性。
  • 密码验证:在某些情况下,MAC还可以用作用户密码的验证机制,当合法的用户数据正确密码时,系统可以提取正确的MAC,使用正确的密码和API key所所生成的MAC与存储在服务器上的MAC进行比较,就可以完成密码验证工作。

image-20230303171326746
讯享网

  • 重放攻击

    攻击者截获网络上的MAC数据包,并将其重新发送到目标用户,欺骗目标用户相信这是合法的通信。比如:


    讯享网

    实验:

    讯享网

    在上面的代码中,使用了ARP,ICMP和TCP三种不同类型的数据包的处理函数。每种函数根据接收到的数据包构建新的数据包,并使用send或者sendp函数将其发送回网络中。在主程序中执行sniff函数捕获10个数据包,然后对每个数据包进行重放攻击,既实现的三个函数。

  • 中间人攻击

    攻击者伪装为合法的通信方,并试图截获或篡改数据包。

    下面这个实验使用scapy实现消息认证码的中间人攻击的一个简单案例,该脚本将获取网络上的数据包,篡改身份验证并重放。

     
  • 内部攻击

    当攻击者拿到系统内部权限时,攻击者获取到密钥,从而达到攻击的目的。

  • 差分攻击

    攻击者拥有2个或者多个有效的MAC输入,并试图推测出正确结果。这种攻击需要针对具体实现的算法进行分析。

    差分攻击需要对加密算法进行分析,在python中有HMAC库支持差分攻击,下面是一个简单的案例:

    讯享网

    上面的代码使用hmac库来计算SHA-256 HMAC,并通过枚举查找与给定输出匹配的密钥字节。

    • 密钥生成算法(Gen):

      输入:安全参数n, 输出: 满足特定分布的密钥k

    • 消息验证码子算法(Mac)

      输入:密钥k, 消息m; 输出:MAC标签t,

    • 验证子算法(Vrfy)

      输入: 密钥k, 消息m, 标签t; 输出:

      其中b=1则认证成功,否则失败

    消息认证码的消息验证码子算法有两个方法:

    • 单向散列函数()的实现
    • 分组密码

单向散列函数HMAC

其中:k是密钥,m是认证消息,XOR是异或运算,opad是外部的填充常数,ipad是内部的填充常数,“+”是连接, H()是哈希函数,比如MD5,SHA1,SHA256等。

 
  • MD5-MAC
    讯享网
  • SHA1-MAC
     
  • SHA256-MAC

分组密码

  • CBC-MAC

    加密过程:

    image-20230304094559363

    解密过程:

    image-20230304094630363

    CBC-MAC的消息认证公式如下:

    实验:

    讯享网

    我们需将此消息进行cbc-mac计算。在发送之前,需要对其进行填充以确保其长度是AES块大小的倍数(在本例中为16字节)。代码如下:

     

    使用pyaes库来计算经过CBC-MAC处理后的数据块,利用循环使整个信息经过处理:

    讯享网

参考博客

小讯
上一篇 2025-04-16 17:55
下一篇 2025-06-12 13:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/147289.html