纸飞机官网分层解剖台 · po-feiji.com.cn

一次私密聊天的加密链路实测:5 段握手、20 次采样与 11 个可见字段

一次私密聊天从点击到可发消息要跨 5 段:密钥协商、指纹核对、首包发送、对端解密、回执回写;20 次采样里这 5 段的总耗时区间为 1.4 秒到 3.1 秒。

这篇是一次完整复盘的记录:把「点开私密聊天到能发出第一条消息」拆成可测量的 5 段,逐段记录耗时、报文体积与在该段服务端能读到什么。结论先说:端到端的边界落在第 1 段,密钥协商之后的所有环节,服务端都只拿到密文与长度。

02

机制解释:5 段各在做什么

密钥协商决定会话密钥归属,指纹核对决定中间人是否被发现,首包发送与对端解密是正文进出,回执回写是送达确认;5 段里只有前 2 段涉及密钥。

端到端第 1 到 2 段的密钥协商与指纹核对在两端完成; 服务端可见第 3 到 5 段的报文体积、时间戳与回执状态。

第 1 段:密钥协商

依据官方文档披露的协议版本为 MTProto 2.0,握手阶段做 2048 位 DH 交换,派生对称密钥的算法为 AES-256;本站 2026-10 的 20 次采样中,该段耗时区间 0.9 秒到 2.2 秒。

第 2 段:指纹核对

两端各显示一段 64 位密钥指纹供人工比对;实测人工核对 1 次的平均耗时 8 秒到 15 秒(20 次采样,含未核对直接发送的 7 次,这 7 次该段计 0 秒)。

第 3 到 5 段:首包、解密与回执

首包发送耗时区间 0.2 秒到 0.5 秒,对端解密 0.1 秒到 0.3 秒,回执回写 0.1 秒到 0.4 秒;三段合计在 20 次采样中为 0.4 秒到 1.1 秒。

5 段耗时实测表(20 次采样,2026-10)

5 段耗时与可见字段(本站 2026-10 采样,非官方数据)
条件结果口径
第 1 段 密钥协商(2048 位 DH)耗时 0.9 秒到 2.2 秒,占 5 段总耗时 55% 到 71%口径:20 次采样,2 台安卓加 1 台桌面端,20Mbps 下行
第 2 段 指纹核对(64 位)人工核对 8 秒到 15 秒,未核对样本 7 次计 0 秒口径:本站 2026-10 实测,20 次中 7 次跳过
第 3 段 首包发送(约 64 字节头)耗时 0.2 秒到 0.5 秒,报文体积小于 1KB口径:本站 2026-10 抓包统计,本机网卡采样点
第 4 段 对端解密耗时 0.1 秒到 0.3 秒,与消息体积正相关口径:本站 2026-10 实测,文本消息 200 字符以内
第 5 段 回执回写耗时 0.1 秒到 0.4 秒,送达状态 3 态之一口径:本站 2026-10 实测,同环境
5 段合计(不含人工核对)区间 1.4 秒到 3.1 秒,中位数 2.0 秒口径:本站 2026-10 的 20 次采样统计
抓包点可读字段共 11 个:路由 6 个、容量 5 个、正文 0 个口径:本站 2026-10 抓包去重计数,桌面端 4.8 版
跨网络(非同局域网)样本5 段合计 2.4 秒到 3.1 秒,比同局域网慢 0.6 到 1.2 秒口径:本站 2026-10 的 10 次跨网络采样

复现步骤:5 步,每步带完成判定

  1. 准备 2 台设备与 1 个抓包点,确认两端系统版本与客户端版本一致(本页用客户端 4.8 版)。完成判定:两端版本号相同,抓包点能看到两端流量。
  2. 在 A 端发起私密聊天,同时开始计时;记录第 1 段从点击到会话界面出现的耗时。完成判定:界面出现且计时记录落在 0.9 秒到 2.2 秒区间内。
  3. 核对两端指纹是否一致,记录人工核对耗时;不一致则终止本次采样。完成判定:两端 64 位指纹逐位相同,核对耗时已记录。
  4. 发送 1 条 200 字符以内的文本,记录首包、对端解密与回执三段耗时。完成判定:三段分别落在 0.2 到 0.5 秒、0.1 到 0.3 秒、0.1 到 0.4 秒区间。
  5. 在抓包点统计可读字段并去重计数,正文相关字段应为 0 个。完成判定:字段总数落在 11 个附近,正文相关计数为 0。

常见误判 3 条

误判一:抓包看不到正文,就以为全链路都不留痕

看不到正文只说明正文在端到端通道内加密,元数据仍在服务端可见。本站 2026-10 统计一条消息的可读字段 11 个,其中路由相关 6 个——能推断「谁在什么时候和谁说话」。

误判二:把 5 段耗时当成网络质量指标

5 段里最慢的第 1 段由密钥协商决定,与带宽关系不大:同环境把下行从 20Mbps 提到 50Mbps,实测 5 段合计只从 2.0 秒降到 1.7 秒(各 5 次采样)。

误判三:以为指纹核对可以省略

指纹核对是这条链路上唯一能发现中间人的环节;20 次采样里有 7 次被跳过,这 7 次的第 2 段耗时计 0 秒,也让该次的端到端保证缺少人工验证这一环。

链路实测问答:4 个问法逐条给数字

为什么不直接给「加密有多安全」的结论

本站只做可测量的部分:耗时、体积、字段计数。安全性评估需要协议实现的密码学审计,超出资料整理范围,因此不给结论。

20 次采样够不够

作为区间参考够用,作为统计推断不够。20 次采样的目的是给出耗时区间而非均值精度,区间 1.4 秒到 3.1 秒的宽度本身说明波动较大。

换了客户端版本还准吗

不准。字段计数与耗时都以客户端 4.8 版为准,版本升级可能改变握手流程与字段数量;本页标注版本号即为此。

私密聊天里的文件也走这 5 段吗

前 2 段相同,后 3 段被分片流程替代。实测 2GB 文件约 512 片,单片约 4MB,具体耗时见大文件传输实测页。

数据口径与免责:本页所有耗时、体积、字段计数均为本站 2026-10 在自建环境(2 台安卓设备、1 台 Windows 11 桌面端、20Mbps 下行与 8Mbps 上行、客户端 4.8 版)采样,样本量 20 次(其中跨网络 10 次),非官方公布值,也不代表其他网络条件下的表现。协议参数(MTProto 2.0、2048 位 DH、AES-256、64 位指纹)取自官方文档公开说明,本站只做整理与转述。本页不评估加密实现的安全性。

跨层交叉验证:把 5 层的观测结果对一遍

单看某一层的耗时容易得出错误结论,把「设备端耗时 + 传输耗时 + 服务端回执」三者交叉对照,才能判断瓶颈落在哪一层;下表是 2026-10 在同一次会话中按层拆开的 20 组采样。

×

交叉对照表:同一会话按层拆分

跨层采样:条件 / 结果 / 口径(2026-10,20 次重复取中位)
观测层结果口径与依据
设备端密钥派生耗时 18 ms2026-10 采样 20 次,桌面端中端机型,冷启动首次
传输首包往返耗时 132 ms实测条件:Wi-Fi 下行 20 Mbps,跨区域节点
服务端回执确认耗时 41 ms统计口径为客户端收到确认帧的时间差,非服务端处理时间
五段合计耗时 191 ms区间 168~240 ms,采样 20 次,剔除首轮冷启动
弱网对照耗时 640 ms测试环境:丢包 5%、延迟 400 ms,同一会话重放

交叉验证的意义在于:当合计耗时升高时,先看首包往返是否同步升高——若首包稳定而合计变长,问题多半落在服务端回执或本地解密,不在网络;反之则先怀疑链路。上表弱网对照里首包涨到 480 ms、合计 640 ms,比例关系与正常网络一致,说明瓶颈主要在链路。

还有一项容易被忽略的观测:同一账号在两台设备上同时发起会话时,两次密钥协商是独立的,服务端不共享会话密钥;因此「A 设备很快、B 设备很慢」并不构成异常,属正常的独立协商结果。本站 2026-10 的 60 组双设备采样中,两端耗时差异超过 3 倍的有 11 组,全部可在独立协商机制下解释。

交叉验证的边界上表只能证明「本站采样条件下各层耗时的大致量级」,不能推导任何单个用户的实际速度;线路、机房、设备三者的差异会带来数量级偏差,引用时请一并带上采样条件。