Telegram 的密聊(Secret Chat)使用端到端加密 (E2EE) 来保护消息的隐私。
这种加密确保消息内容只能由参与密聊的两方解密,即使是 Telegram 服务器也无法读取内容。以下是密聊的工作过程,分步说明:
图片
第一步:创建密聊会话
Bob 向 Peter 发起密聊请求。
Telegram 客户端生成会话请求,并通知 Peter。
第二步:Diffie-Hellman 密钥交换
目的:在两台设备之间安全地共享一个对称加密密钥,用于加密后续消息。
步骤:
- Bob 和 Peter 的客户端各自生成一对 Diffie-Hellman 密钥对(公钥和私钥)。
- Bob 将自己的公钥发送给 Peter,Peter 将自己的公钥发送给 Bob。
- 两端通过各自的私钥和对方的公钥计算共享密钥(Session Key)。由于 Diffie-Hellman 算法的数学特性,计算结果一致。
- 此共享密钥随后用于对消息加密。
第三步:验证共享密钥
- 双方通过共享密钥生成一个指纹(例如,通过哈希算法)。
- Telegram 会将该指纹以二维码或字符串形式展示,双方用户可以手动验证指纹是否一致,确保没有中间人攻击(MITM)。
第四步:端到端加密消息传递
加密发送
- Bob 使用共享密钥对消息进行对称加密(通常使用 AES-256-CBC 等算法)。
- 加密后的消息通过 Telegram 服务器传输给 Peter。
解密接收
- Peter 接收到密聊消息后,用共享密钥解密。
- 解密后的消息仅在 Peter 的设备上可见。
安全性分析
安全特性支持
- 消息定时器:支持“阅后即焚”功能,用户可以设置消息的存活时间,时间到期后消息会自动从两端设备上删除。
- 设备绑定:密聊会话与发起时的设备绑定,不会同步到其他设备。
- 不可转发:密聊中的消息无法被转发。
- 截图警告:部分平台会提示对方截图行为。
密聊会话终止
- 如果用户主动删除密聊会话或消息,数据会从两端设备上清除。
- 共享密钥失效,无法再用来加密或解密新的消息。
服务器角色
- Telegram 服务器只负责转发加密后的数据包,不存储解密密钥。
- 由于消息在传输和存储过程中都是加密状态,Telegram 服务器无法读取内容。