参考 / 收集
Telegram · 秘密聊天:实现与演示
了解独立的秘密聊天实现方式,试用虚构的界面,并审查未解决的缺陷。
2026年11月6日状态核查:目前正在开发一个独立的秘密聊天实现
。该实现尚未合并到已发布的main分支(版本号为3d23e52b647b)。
普通收集器和Takeout导出功能不收集秘密聊天数据。
交互式网站演示场景使用虚构数据展示界面;
该演示不支持Telegram通信。
实现位置#
提交 0e60f88e 在本地开发分支
fix/panel-routes-sessions 中添加了Sources → Pseudo-secret。已检查的快照为 bb8788fb685c。
其实现包括 tgwitness/secret_chats.py、应用程序路由、
tgwitness/static/views/secret-chats.js 以及专用测试。
该分支中的可选组件 secret-chats 使用
KiaroSama/Telethon-Secret-Chat,
并已固定到 d87bf037b90060383c7b704d8a06ebb98c621c6f。该库基于账户现有的 Telethon 授权,
实现了 Telegram 的端到端聊天协议。
仅安装该库并不会为 main 添加缺失的集成功能。
开发接口的功能#
| 操作 | 记录的行为 |
|---|---|
| 通过用户名或用户 ID 发起聊天 | 发送请求;另一位参与者必须接受该请求。 |
| 接受传入请求 | TgWitness将成为该聊天的接收端点。自动接受是一项独立设置,默认处于关闭状态。 |
| 发送或接收消息 | 添加一条发出的或收到的secret_chat.message记录,并在对话中显示该记录。 |
| 接收附件 | 对其进行解密,按 SHA-256 存储其字节,并记录 secret_chat.file。 |
| 接收计时器或删除通知 | 记录该通知并保留先前捕获的内容。 |
| 审查对话内容 | 展示消息、文件、通知以及密钥可视化图表。打开的标签页每四秒刷新一次。 |
在包含该集成的开发版本中,操作员需为所选账户启用该模块 并建立连接。发起、接受和发送操作均需 获得交互权限,且该账户的只读保护必须处于关闭状态。另一位 参与者必须接受新的外发聊天。在上述版本的 已发布应用程序中,这些控制功能尚不存在。
仅涵盖由本次 TgWitness 会话创建或接受的聊天。手机上现有的 秘密聊天仍保留在该设备上。会话导入不会提供 其独立的加密密钥。秘密聊天的密钥素材和计数器存储 在工作区保险库中;保留的消息和解密后的文件遵循常规 的工作区存储保护机制。
网站演示#
该网站的“ 尝试秘密聊天”场景展示了一段虚构的对话。它允许 读者发起请求、模拟请求的接受、发送示例消息、接收 预设的回复和文件,并查看计时器和删除通知。还可以接受 传入的请求。控制项会明确标注模拟的对等方操作。
该场景在浏览器内存中运行。重置或刷新页面将清除其内容。它不会登录、 联系 Telegram、生成真实的加密密钥,也不会修改已签名的样本下载文件。 其显示的消息并非经过签名的证据。该场景旨在演示预期 的交互方式;并不证明开发实现已准备就绪。
检查项与未解决的缺陷#
现有的五项测试涵盖了加密密钥的持久性、生命周期和消息 记录、传入消息接受策略、只读发送以及附件导出。 在 11 月 6 日的审查中,这些测试针对固定库均通过了验证。另外三项 合成检查在同一快照中重现了缺陷:
| 发现 | 后果 |
|---|---|
关闭时绕过read_only |
当需要阻止交互时,关闭路径可执行远程操作。 |
| 重复检测仅搜索最近的500条记录 | 较早的重放数据在重启后可能会生成重复项。 |
| 附件下载失败将删除其待处理条目 | 短暂故障会导致重试任务丢失。 |
这些是已知的缺陷,在 已发布的审计报告中亦有记录。五项通过的测试并未 涵盖这些缺陷。本次审查使用了合成工作区并模拟了 Telegram 的操作;并未重复实际的握手过程,也未验证生产环境部署情况。