当前位置: 首页 > news >正文

SSL和TLS协议的消息认证码(MAC)

文章目录

      • 一、MAC在SSL/TLS中的核心作用
      • 二、SSL/TLS中MAC的实现方式
        • 1. 早期SSL和TLS 1.2及之前版本的MAC机制
        • 2. TLS 1.3中的MAC机制变革
      • 三、MAC与SSL/TLS密钥的关系
      • 四、MAC与重放攻击防护
      • 五、历史安全问题与改进
      • 总结

在SSL和TLS协议中,消息认证码(MAC,Message Authentication Code)是保障数据完整性和真实性的核心机制之一。它通过对传输的数据进行计算生成一个固定长度的校验值,确保数据在传输过程中未被篡改,同时验证发送方的身份合法性。

一、MAC在SSL/TLS中的核心作用

  1. 完整性校验:接收方通过验证MAC,确认数据在传输中未被恶意篡改或意外损坏。
  2. 数据源认证:确保数据确实确实确实来自预期的发送方(防止伪装攻击)。

在SSL/TLS中,MAC与加密算法配合工作:

  • 数据先通过MAC算法生成校验值,再与数据一起被加密传输;
  • 接收方解密后,重新计算MAC并与收到的校验值比对,若一致则认为数据完整且来源可信。

二、SSL/TLS中MAC的实现方式

1. 早期SSL和TLS 1.2及之前版本的MAC机制

在TLS 1.2及更早版本(包括SSL 3.0)中,MAC通常基于HMAC(Hash-based MAC,哈希消息认证码) 实现,流程如下:

  • 输入:待传输的明文数据、MAC密钥(由握手阶段协商的会话密钥派生)、序列号(防止重放攻击)、消息类型、消息长度等。
  • 计算过程
    1. 发送方将上述输入拼接后,通过HMAC算法(如HMAC-MD5、HMAC-SHA1、HMAC-SHA256等)计算出MAC值;
    2. MAC值与明文数据一起被加密(对称加密算法,如AES),形成最终传输的密文。
  • 验证过程
    接收方解密后,提取明文和MAC值,使用相同的密钥和参数重新计算MAC,若与收到的MAC一致,则验证通过。

示例:TLS 1.2中常用的加密套件如TLS_RSA_WITH_AES_256_CBC_SHA256,其中SHA256即表示MAC基于HMAC-SHA256实现。

2. TLS 1.3中的MAC机制变革

TLS 1.3对MAC机制进行了简化和强化,主要变化如下:

  • 移除独立MAC步骤:TLS 1.3采用AEAD(Authenticated Encryption with Associated Data,带关联数据的认证加密) 算法(如AES-GCM、ChaCha20-Poly1305),将加密和认证(含MAC功能)合并为一个步骤,效率更高。
  • 整合性更强:AEAD算法在加密过程中同时生成认证标签(类似MAC值),接收方解密时自动验证标签,若验证失败则拒绝接收数据。
  • 安全性提升:AEAD避免了传统“先加密后计算MAC”可能存在的安全漏洞(如padding oracle攻击),且强制使用更安全的哈希算法(如SHA-256及以上)。

三、MAC与SSL/TLS密钥的关系

MAC的安全性依赖于MAC密钥的保密性,该密钥由SSL/TLS握手阶段生成的主密钥(Master Secret) 派生而来:

  1. 握手阶段,客户端和服务器通过密钥交换算法(如RSA、ECDHE)协商生成主密钥;
  2. 主密钥通过伪随机函数(PRF,Pseudorandom Function)派生出多个子密钥,包括:
    • 客户端和服务器的MAC密钥(用于各自计算和验证MAC);
    • 加密密钥(用于对称加密);
    • IV(初始向量,用于加密算法)。

这种密钥派生机制确保了MAC密钥的随机性和保密性,即使某一子密钥泄露,也不会影响主密钥或其他子密钥的安全。

四、MAC与重放攻击防护

SSL/TLS通过序列号(Sequence Number) 增强MAC的安全性,防止重放攻击(攻击者重复发送截获的合法数据):

  • 每一个传输的消息都包含一个单调递增的序列号(客户端和服务器各自维护独立的序列号);
  • 序列号作为MAC计算的输入之一,接收方会检查序列号的连续性,若发现重复或异常的序列号,即使MAC验证通过,也会拒绝该消息。

五、历史安全问题与改进

  1. SSL 3.0的MAC漏洞:SSL 3.0的MAC计算未包含填充数据(padding),导致“POODLE攻击”(攻击者通过篡改填充数据窃取明文),这也是SSL 3.0被淘汰的重要原因。
  2. SHA-1的弃用:早期TLS版本支持HMAC-SHA1,但SHA-1哈希算法存在碰撞漏洞,TLS 1.2及以上版本逐渐弃用,推荐使用SHA-256及更高强度的哈希算法。
  3. TLS 1.3的彻底革新:通过AEAD算法替代传统的“加密+MAC”分离模式,从根本上避免了多个历史漏洞(如BEAST攻击、Lucky 13攻击等)。

总结

MAC是SSL/TLS协议保障数据完整性和真实性的关键机制:

  • 早期版本(SSL 3.0、TLS 1.0-1.2)基于HMAC实现,与加密步骤分离;
  • 最新的TLS 1.3采用AEAD算法,将加密与认证整合,安全性和效率更高。

MAC的安全性依赖于密钥的保密性、算法强度及序列号机制,其设计迭代直接反映了SSL/TLS协议对抗新兴安全威胁的持续改进。

http://www.xdnf.cn/news/1302553.html

相关文章:

  • Android RxJava变换操作符详解
  • 使用SQLALCHEMY的outerjoin时的bug
  • 训练大模型的前提:数据治理工程:从原始数据到高质量语料的系统化治理实践
  • vector接口模拟实现及其原理
  • Redis 官方提供免费的 30 MB 云数据库
  • 阿里云出里两款新的云服务器
  • Uniapp之微信小程序自定义底部导航栏形态
  • 订单簿数据智能解析深度学习算法筛选大单并预测即时价格变动
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • 云原生俱乐部-k8s知识点归纳(3)
  • 【计算机视觉与深度学习实战】02基于形态学的权重自适应图像去噪系统
  • 自学大语言模型之Transformer的Tokenizer
  • Android 欧盟网络安全EN18031 要求对应的基本表格填写
  • 对抗损失(GAN)【生成器+判断器】
  • HarmonyOS 实战:用 List 与 AlphabetIndexer 打造高效城市选择功能
  • 【Java】HashMap的详细介绍
  • PCA降维全解析:从原理到实战
  • JAVA文件管理系统:如何玩转文件操作
  • CUDA中的基本概念
  • Scikit-learn (sklearn) 库详细介绍
  • 869. 重新排序得到 2 的幂
  • iSCSI 服务详解:配置与远程存储
  • 「iOS」————UITableView性能优化
  • PaddleOCR从小红书视频中提取字幕并生成思维导图
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-一分钟音频转文字
  • Spring WebFlux 性能优化实践指南
  • 金融项目高可用分布式TCC-Transaction(开源框架)
  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • 力扣 —— 二分查找