当前位置:网站首页 > 编程语言 > 正文

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



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

消息认证码的主要功能:

  • 数据完整性:计算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处理后的数据块,利用循环使整个信息经过处理:

     

参考博客

到此这篇消息认证码(消息认证码攻击)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • junit testng区别(junit和testng)2026-03-03 08:00:09
  • 国内开源代码平台(源代码开放平台)2026-03-03 08:00:09
  • 《linux就该这么学》(linux就该这么学电子版)2026-03-03 08:00:09
  • 时钟代码是什么(时钟的代码)2026-03-03 08:00:09
  • U盘制作工具哪个好用?(u盘制作工具哪个最好用)2026-03-03 08:00:09
  • ngff接口和m2一样吗(ngff和nvme的m2接口通用吗)2026-03-03 08:00:09
  • max3096中文手册(max3082中文资料)2026-03-03 08:00:09
  • 反编译exe为vb源码(反编译exe源代码)2026-03-03 08:00:09
  • ipv6全球单播地址有哪些(ipv6全球单播地址范围)2026-03-03 08:00:09
  • Seatel卡没网络(mytel卡没有网络)2026-03-03 08:00:09
  • 全屏图片