TgWitness / 文档

已测试的内容 →

参考 / 收集

Telegram · 秘密聊天:实现与演示

了解独立的秘密聊天实现方式,试用虚构的界面,并审查未解决的缺陷。

TgWitness / 文档

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 的操作;并未重复实际的握手过程,也未验证生产环境部署情况。