微信安全吗?微信MMTLS加密协议安全性分析

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

如安在对峙原创、国产替代的同时,保持技术领先,以及​遵循国际上最佳实践?
该文重要贡献(点击标题)


  • 我们初次公开分析了 MMTLS 的安全性和隐私属性,MMTLS 是微信使用的重要网络协议,微信是一款每月活跃用户超过 10 亿的应用程序。
  • 我们发现 MMTLS 是 TLS 1.3 的修改版本,微信开发人员对加密技术所做的很多修改都引入了缺点
  • 进一步分析发现,早期版本的微信使用了一种安全性较低、定制计划的协议,其中包含多个漏洞,我们将其描述为“业务层加密”。在现代微信版本中,除了 MMTLS 之外,仍使用这一层加密
  • 虽然我们无法开发出一种能够完全破解微信加密的攻击方式,但其实现方式与十亿用户使用的应用程序中所期望的加密级别不一致,比方其使用确定性 IV 和缺乏前向保密性
  • 这些发现有助于进一步研究中国生态体系中的应用程序未能采用最佳加密实践,而是选择发明自己的、往往存在问题的体系。
  • 我们将在配套的Github 存储库中发布技术工具和有关我们技术方法的进一步文档。这些工具和文档以及本重要陈诉将资助未来的研究人员研究微信的内部工作原理。
MMTLS 加密问题
1、确定性 IV
MMTLS 加密过程每次连接生成一个 IV。然后,它们会为该连接中加密的每个后续记载增加 IV。通常,NIST建议不要在 AES-GCM 中使用完全确定性的 IV 派生,因为很容易不测重复使用 IV。在 AES-GCM 的情况下,重复使用 (key, IV) 元组是灾难性的,因为它允许从 AES-GCM 身份验证标签中恢复密钥。由于这些标签附加到 AES-GCM 密文以举行身份​​验证,因此可以从使用相同密钥和 IV 对加密的少至 2 个密文中恢复明文。
此外,Bellare 和 Tackmann还表明,使用确定性 IV 可以让强盛的对手暴力破解特定的 (密钥,IV) 组合。假如加密体系摆设到非常大的(即互联网大小)所选 (密钥,IV) 组合池中,则这种类型的攻击适用于强盛的对手。由于微信拥有超过 10 亿用户,因此这种数目级使这种攻击处于可行性范围内。
2、缺乏前向保密
现代通信协议通常都要求具有前向保密性,以低落会话密钥的紧张性。一样平常来说,TLS 自己在计划上就是前向保密性的,但“恢复”会话的第一个数据包除外。第一个数据包使用“预共享密钥”或上次握手期间创建的 PSK 举行加密。
MMTLS 在计划上大量使用 PSK。由于 Shortlink 传输格式仅支持单次往返通信(通过单个 HTTP POST 哀求和相应),因此通过传输格式发送的任何加密数据都使用预共享密钥加密。由于泄漏共享的 `PSK_ACCESS` 密钥将使第三方能够解密通过多个 MMTLS 连接发送的任何 EarlyData,因此使用预共享密钥加密的数据不是前向秘密。通过 MMTLS 加密的绝大多数记载都是通过 Shortlink 传输发送的,这意味着微信发送的大多数网络数据在连接之间不是前向秘密。此外,在打开应用程序时,微信会创建一个长命命的 Longlink 连接。这个长命命的 Longlink 连接在微信应用程序的持续时间内都是打开的,任何需要发送的加密数据都通过同连续接发送。由于大多数微信哀求要么使用(A)会话恢复 PSK 或(B)长命命 Longlink 连接的应用程序数据密钥加密,因此微信的网络流量通常不会在网络哀求之间保存前向保密性。
3、业务层加密问题
业务层加密结构,尤其是对称模式 AES-CBC 结构自己存在很多严重问题。由于微信发出的哀求是双重加密的,这些问题只影响内部业务层加密,因此我们没有找到立即利用它们的方法。然而,在仅使用业务层加密的旧版微信中,这些问题是可以被利用的。


  • **元数据泄漏:**业务层加密不会对用户ID、哀求URI等元数据举行加密,具体细节在“业务层哀求”一节中提到。这个问题也被微信开发者们自己承认,也是开发MMTLS加密的动机之一。
  • **可伪造的 genSignature 完整性检查:**可以伪造长度为evil_sig的签名
  • 分组密码模式下密钥、IV 重复使用:重复使用两者意味着假如两个明文相同,它们将加密为相同的密文。
  • 加密密钥问题:服务器选择客户端使用的加密密钥是非常不合常规的。究竟上,我们注意到服务器生成的加密密钥(“会话密钥”)仅使用可打印的 ASCII 字符。因此,纵然密钥长度为 128 位,该密钥的熵也最多为 106 位。
为什么业务层加密很紧张?
既然业务层加密被包裹在 MMTLS 中,那么它是否安全又有什么关系呢?起首,从我们对微信早期版本的研究来看,业务层加密是微信网络哀求的唯一加密层,直到 2016 年。
其次,从业务层加密暴露未加密的内部哀求 URI 的究竟来看,微信的大概架构之一是托管差别的内部服务器来处置惩罚差别类型的网络哀求(对应差别的“requestType”值和差别的 cgi-bin 哀求 URL)。
比方,在前端微信服务器(处置惩罚 MMTLS 解密)停止 MMTLS 后,转发到相应内部微信服务器的内部微信哀求不会被重新加密,因此仅使用业务层加密举行加密。微信内联网中的网络窃听者或网络分路器大概会攻击这些转发哀求上的业务层加密。
然而,这种情况纯粹是推测性的。腾讯对我们披露的回应涉及业务层加密中的问题,并暗示他们正在逐步从问题更大的 AES-CBC 迁移到 AES-GCM,因此腾讯也对此感到担忧。
建议微信迁移到标准 QUIC 实现
TCP 和 TLS 握手都需要一次往返,这意味着发送的每个新数据包都需要两次往返。如今,TLS-over-QUIC 结合了传输层和加密层握手,只需要一次握手。QUIC 兼具一箭双雕的优势,既提供了强盛的前向秘密加密,又将安全通信所需的往返次数减少了一半。
除了网络性能之外,另有客户端性能的问题。由于微信的加密方案对每个哀求实行两层加密,因此客户端加密数据的工作量是使用单一标准化密码体系的两倍。
国产密码技术在中国的应用趋势
避免使用 TLS 并偏爱专有和非标准加密技术背离了加密最佳实践。
随着环球互联网逐渐转向使用 QUIC 或 TLS 等技术保护传输中的数据,这是一种日益增长且令人担忧的趋势,仅出现在中国安全范畴。
反DNS劫持机制
和腾讯编写自己的加密体系雷同,我们发现在 Mars 中腾讯也编写了一个专有的域名查找体系。这个功能在 Mars 中被称为“NewDNS”。根据我们的动态分析,这个功能在微信中常常使用。乍一看,NewDNS 重复了 DNS(域名体系)已经提供的功能,而 DNS 已经内置在几乎全部联网设备中。
微信并不是中国唯一一款使用此类体系的应用程序。中国的重要云计算提供商(如阿里云和腾讯云)都提供自己的 DNS over HTTP 服务。
采用这种体系的一个大概原因是,中国的 ISP 常常实行DNS 劫持来插入广告并重定向网络流量以举行广告敲诈。这个问题非常严重,以至于六家中国互联网巨头于 2015 年发表联合声明,敦促 ISP 改进。
与 MMTLS 加密体系雷同,腾讯的 NewDNS 域名查询体系旨在满足中国网络环境的需求。多年来,DNS 自己已被证明存在多个安全和隐私问题。
与 DNS 自己相比,NewDNS 是否存在更多或更少的问题仍是一个悬而未决的问题。我们将这个问题留待未来研究。
Mars STN 在微信之外的使用
微信之外对 Mars 的采用令人担忧,因为 Mars 默认不提供任何传输加密
基于以下观察,我们推测 Mars(mars-open)在微信之外也有广泛的应用:


  • Mars GitHub 存储库中存在很多问题。
  • 有大量 技术概述了怎样使用 Mars 构建即时通讯体系。
  • 现在已经有基于Mars的白标即时通讯体系产物。
Mars 的文档也比较缺乏。官方wiki上只有几篇关于怎样与 Mars 集成的旧文章。使用 Mars 的开发人员通常告急于在 GitHub 上提问。缺乏文档意味着开发人员更容易犯错,最终低落安全性。
背景
公民实行室是位于加拿大多伦多的多伦多大学蒙克环球事务与公共政策学院的一个学术研究小组。


  • 该小组2024 年 4 月 24 日披露了微信的专有网络加密协议 MMTLS 与现代网络加密协议(如 TLS 或 QUIC+TLS)相比存在缺点。
  • 2024 年 5 月 17 日——腾讯的回应:微信的安全协议核心是外层mmtls加密,现在确保外层mmtls加密是安全的。另一方面,内层的加密问题处置惩罚如下:核心数据流量已切换到AES-GCM加密,其他流量正在逐步从AES-CBC切换到AES-GCM。
原文点击标题。https://www.jdon.com/75955.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表