MAX #3 的隐藏秘密: MAX通信是一本公开的书

来源: https://pikabu.ru/story/chto_skryivaet_max_3_perepiska_v_max__otkryitaya_kniga_13877241

周期的第三部分

今天,我们将解答评论区里出现的所有问题:MAX 到底有没有加密功能?它与 Telegram、WhatsApp 和 Signal 相比如何?个人文件的安全性如何?


太长不看

正如一位“伟大”人士所说:你可以添加 加密,但为什么要添加呢?

  • MAX 不支持任何类型的通信(包括个人聊天、群组、通话、语音和文件)的端到端加密(用户到用户)。
  • 所有消息均以明文形式通过标准TLS传输——VK服务器可以看到每个字。
  • 相比之下:Telegram 有秘密聊天和端到端通话,WhatsApp 声称(并且已被研究人员证实)所有功能都支持端到端,而 Signal 则支持端到端通话和开源功能。
  • 在手机上,所有数据都存储在开放的 SQLite 数据库中。
  • 聊天记录中的照片无需授权即可通过直接链接查看,而且多年都不会过期。
  • 在四款产品中,只有 MAX 的用户可以看到 100% 的消息和文件。

第一部分:MAX 中的加密——它根本不存在

首先,我用简单的语言解释一下。

当你在即时通讯软件中发送消息时,消息会经过服务器。问题:服务器可以读取这条消息吗?

两种选择:

  • TLS (传输层安全协议)——消息在从您发送到服务器以及从服务器发送到收件人的过程中都会进行加密。但在服务器端, 消息仍然是明文的。服务器可以看到所有内容。这就像把信装进信封寄到邮局,然后在分拣站打开信封,阅读内容,再装进另一个信封,最后才寄给收件人一样。
  • 端到端加密 ( E2E )——消息使用只有您和收件人共享的密钥进行加密。服务器传输加密后的数据块,但****无法 读取其内容。这就像发送一个上锁的保险箱——邮件负责传输,但只有收件人拥有钥匙。

MAX 仅支持 TLS,不支持端到端加密。

检查了所有类型的通信方式。

我反编译了APK文件,查看了网络协议,并分析了流量。以下是我的结果:

私人消息 ——通过 TCP 协议以明文 MsgPack 格式传输。在一次 30 分钟的拦截中,我提取了 22 个电话号码和 6 条已读回执——全部都是明文。

群聊的 规则和格式与私人聊天相同,没有任何区别。

频道 类似。

语音通话 使用 DTLS-SRTP 加密,但加密仅限于您和 VK 服务器之间 ,不涉及您和通话对方。所有通话均通过 VK 的 TURN 服务器进行。VK 持有加密密钥。

视频通话 与语音通话相同。使用相同的TURN服务器,VK密钥也相同。

会议- 通过 OK.ru上的独立 vchat API ,采用与中继相同的方案。

语音消息 以未加密的形式上传到CDN。VK服务器还会将其翻译成文本(这是一项单独的功能)。

视频留言 与语音留言相同。

文件/照片 /音频和视频俱乐部——未加密,托管在 CDN 上。详情请见下文。

秘密聊天 ?根本不存在。我在代码里找到了一些类似 secret_mode_started 的 UI 资源,但它们背后没有任何加密代码。没有 DH 密钥交换,也没有单独的协议。

MAX 网站上关于加密方面是怎么说的?

我查阅了所有官方文件:

  • legal.max.ru/pp (隐私政策)——“加密”一词一次也没有出现。
  • legal.max.ru/ps (用户协议)- 无信息
  • help.max.ru/help/security (安全部分)——密码、会话、在线状态、家长控制。未提及加密。
  • “安全模式” - 隐藏搜索权限,仅允许联系人拨打电话,内容过滤 16+/18+。

相比之下,Telegram 有一个专门介绍MTProto加密的页面。WhatsApp 有一份安全白皮书。Signal 有完整的协议文档源代码。MAX 则没有任何相关内容,因为它没有什么可描述的。

第二部分:MAX vs. Telegram vs. WhatsApp vs. Signal

评论中最常见的问题是:“Telegram 也支持这个功能吗?”和“看看 WhatsApp”。

我整理了一份表格,按安全性从低到高排列。MAX 的数据来自我的代码分析。Telegram 的数据来自官方文档和开源客户端。WhatsApp 的数据来自其白皮书和外部审计(代码是闭源的)。Signal 的数据来自开源软件和审计报告。


MAX 是这四个版本中唯一一个:代码是封闭的 + 没有任何端到端测试 + 服务器可以查看 100% 的内容 + 未经授权的媒体 + 没有进行任何审计。

资料来源:

第三部分:媒体文件对所有人开放,删除并不会真正删除文件。

其他研究已经提到过这个信息,但我还是想补充一点。我通过聊天发送了一张照片,然后删除了消息,接着在另一个未登录的浏览器中打开了照片链接,照片仍然能够加载。之后,我对一条语音消息也做了同样的操作。即使消息被删除,音频仍然可以收听。

照片——未经授权,永久有效。

每张照片都存储在 CDN 上,URL 类似于i.oneme.ru/i?r=%3C%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%3E。令牌是由服务器生成的签名字符串。

  • 无需授权。 在任何浏览器中打开链接,无需登录,照片即可加载。
  • 链接永不过期。
  • CORS 已开放: Access-Control-Allow-Origin: * - 任何站点都可以加载图像
  • 我删除了信息,但照片还在。 我检查了一下:我发送了照片,删除了信息,打开链接后,看到了我“已删除”的图片。

令牌是唯一的,任何修改后的令牌都会返回 400 响应。然而,令牌本身是通过网络协议以明文形式分发给所有聊天参与者的。如果有人转发了一张照片,那么这个人就永远拥有一个有效的链接。该链接无法撤销;用户没有撤​​销机制,只有服务器可以撤销。

以下是一个发送到聊天窗口的照片示例,但后来照片中的链接被删除了:

https://i.oneme.ru/i?r=BTExG6MjcZqk1JkYftXzTuS6B5wJnWe_slW64…


你也可以通过上传一张大图片,删除后再重新上传来轻松验证这一点,图片会立即加载,因为文件已经存在……

语音留言 - 无需授权,24 小时

语音留言存储在 maxvd*.okcdn.ru。这比之前好一些——URL 经过签名,有效期为 24 小时。但是:

  • 无需授权。 与照片处理相同。
  • 我删除了信息,但录音还在。 我验证了一下:我发送了一张照片,删除后打开链接,听到了我“已删除”的录音。你也可以很容易地验证这一点。
  • 有效期为24小时 (URL中的过期字段)。音频在24小时内对所有人开放。
  • 所有 URL 参数都已签名 ;srcIp、id 和 sig 不可替换(返回 400 错误)。但凭借完整链接,任何人都可以下载。

音频 URL 以纯文本形式包含 IP 地址 (srcIp=146.70.231.14) 和用户 ID (userId=125915255)。链接

https://maxvd177.okcdn.ru/?expires=1776129938878&srcIp=1…


第四部分:评论区常见问题解答

“TLS也是加密协议,有什么问题吗?”

TLS 会对您和服务器之间的通信通道进行加密。任何中间方(例如您的网络服务提供商、邻居的 Wi-Fi 连接)都无法读取加密内容,但服务器 可以。而 MAX 服务器是 VK 服务器。VK 已注册为“信息传播组织者”,并依法有义务存储您的通信记录,并在您提出请求时提供给您。

端到端加密解决了这个问题——即使是服务器所有者也无法读取消息。MAX 没有这项功能。

我没有什么好隐瞒的。

关键不在于你是否有不可告人的秘密,而在于谁掌控着 你的数据。

不含端到端:

  • 服务器被黑,所有信息泄露。
  • 依法提出的请求 = 所有信息均已发出。
  • 公司内部人员 = 所有消息/联系人/文件均可访问(考虑到目前电话号码查询和其他“服务”的费用,一项新服务即将推出)。

采用端到端加密:即使服务器被黑客攻击,数据也会使用只有您拥有的密钥进行加密。

“VK或许以后会添加加密功能?”

为现有即时通讯软件添加端到端功能并非像在服务器上切换标志位那样简单。您需要:

  • 实施密钥交换协议(DH/X3DH)
  • 每个聊天窗口都应添加双棘轮或类似装置。
  • 覆盖消息存储(服务器将无法再读取它们)
  • 重新设计搜索、预览和推送通知功能(目前所有功能都能正常工作,因为服务器能够接收到文本)。

MAX 代码中不包含任何与端到端 (E2E) 相关的类——没有数据寻址 (DH),没有预密钥,也没有会话密钥。该架构的设计之初并未考虑这一点。

“在 Telegram 中,普通聊天也不是端到端的——所以这两者是一样的吗?”

不完全是。Telegram 有另一种选择:

  • 有秘密聊天功能——真正的端到端(但仅限一对一,且仅限移动设备)。
  • 端到端通话及表情符号验证
  • CDN 文件需要授权,并使用 AES-256-CTR 加密。
  • 证书已固定

MAX 完全不具备这些功能。对于想要保护隐私的用户来说,没有其他选择。

Telegram 并非完美无缺——服务器可以读取和查看普通聊天记录。但用户可以选择公开聊天或私密聊天。而在 MAX 中,用户没有这种选择。

如果您需要对所有聊天(不仅仅是私密聊天)进行端到端加密,请使用 WhatsApp 或 Signal。WhatsApp 默认对所有聊天启用端到端加密。Signal 提供端到端加密、开源和独立审计服务。您也可以考虑使用 Threema。

第五部分:证据

5.1 纯文本消息包 - 流量拦截

我使用 Frida 的 SSL_read/SSL_write 钩子拦截了解密的 MAX 流量。流量格式为 MsgPack(二进制 JSON)。解码器是我自己编写的。

应用程序运行 30 分钟后,共拦截了 85 帧数据。其中:

  • 操作码 0x80 (INCOMING_MESSAGE_PUSH) - 接收消息,纯文本,可见文本内容和发件人。
  • 操作码 0x40 (SEND_MESSAGE_NEW) - 发送明文消息
  • 操作码 0x23 (SUBSCRIBE_PRESENCE) - 谁在线?

最大限度:

  • 格式:精确时间戳 + 状态(1=在线,2=离线)
  • 最大精度:秒。Unix 时间戳:1776043570 = 2026-04-13 01:26:10 UTC

Telegram:

准确度不一:它最近在那里,这周在那里……

  • 操作码 0x84 (REPORT_READ_RECEIPT) - 谁读取了它
  • 22 个纯文本电话号码

所有这些操作都在TLS协议下进行。VK服务器看到的是相同的明文。

5.2 Protos.java - 无加密字段

文件:ru/ok/tamtam/nano/ Protos.java

音频类(语音留言):

  • url、令牌、audioId、持续时间、转录
  • IV、密钥、密码、加密字段 -


视频类(视频消息):

  • URL、令牌、视频ID、时长、缩略图、转录
  • IV、密钥、密码、加密字段 -

相比之下,在信号协议中,每条消息都包含一个棘轮密钥、计数器和密码头。而在 MAX 协议中,它只是一段文本。

5.3 network_security_config.xml - 无证书绑定

文件:res/xml/network_security_config.xml

元素为零。然而,有五个域名设置了 cleartextTrafficPermitted=“true”,它们使用的是完全未加密的 HTTP 协议(​​用于俄罗斯运营商的 MobileID)。

证书绑定是一种防御中间人攻击(在 ISP 或 Wi-Fi 层进行证书替换)的手段。Telegram、WhatsApp 和 Signal 都使用了这项技术,而 MAX 没有。

5.4 设备上的存储空间

所有通信均以未加密的 SQLite 格式存储:

  • 无需 SQLCipher - 数据库可以使用任何 SQLite 查看器打开。
  • 未加密共享首选项 - 明文身份验证令牌
  • AndroidKeyStore 仅用于生物识别认证,不用于消息传递。

结论

MAX 是一款不加密任何内容的即时通讯软件。无论是消息、通话、文件还是照片,VK 服务器都能看到所有内容。所有数据都以明文形式存储在设备上。照片可以通过链接永久访问,无需登录或验证访问权限。

VK在任何地方都没有承诺提供加密服务——无论是在其网站上还是在其文档中。因为它根本不提供加密服务。

下一节将介绍实用的保护措施:如果您必须使用 MAX,可以采取哪些实际措施。例如 Split VPN、Knox、Frida、虚拟设备等等。