Page 1 of 1

如何支持消息撤回功能?

Posted: Wed May 21, 2025 4:11 am
by muskanislam99
WhatsApp 的消息撤回功能,即“删除所有人”(Delete for Everyone)功能,是在其端到端加密(End-to-End Encryption, E2EE)架构下实现的一个复杂特性。由于消息内容只存在于发送方和接收方的设备上,WhatsApp 服务器本身无法直接访问或删除已送达的消息,因此,这项功能并不是真正的“删除”,而是一种删除请求。

WhatsApp 消息撤回功能的实现机制
WhatsApp 消息撤回功能的实现依赖于发送方和接收方的客户端应用程序之间的协同工作,以及 WhatsApp 服务器作为这些请求的可靠中转站。

发送方发起删除请求:

当发送方选择一条已发送的消息并点击“删除所有人”时,发送方的 WhatsApp 客户端会生成一个特殊的**“撤回消息”或“删除指令”**。
这个“撤回消息”包含了一个唯一的标识符,用于指向要删除的原始消息的 ID。
这个“撤回消息”本身也像普通消息一样,是端到端加密的。
服务器的角色(作为中转站):

发送方的客户端将这个加密的“撤回消息”发送到 WhatsApp 服务器。
WhatsApp 服务器接收到这个“撤回消息”后,会将其转发给所有原始消息的接收方(包括群聊中的所有成员)。
关键点: WhatsApp 服务器本身不会解密、删除或修 哈萨克斯坦 whatsapp 数据库 改原始消息内容。事实上,对于已送达的 E2EE 消息,其在服务器上的加密副本通常在很短的缓冲期后就会被自动清除,所以服务器上可能已经没有原始消息的副本。服务器只负责传递这个“删除指令”。
接收方设备的处理:

接收方的 WhatsApp 客户端收到这个加密的“撤回消息”后,会使用其本地密钥进行解密。
客户端会根据“撤回消息”中包含的原始消息 ID,在自己的本地数据库中查找并尝试删除对应的原始消息。
如果成功找到并删除原始消息,接收方的客户端会用一个占位符文本(例如,“此消息已删除”或“This message was deleted”)替换掉原始消息的显示内容。
接收方设备上不会留下原始消息的任何可读痕迹。
消息撤回的限制与条件
由于 E2EE 和分布式特性,消息撤回功能存在一些固有限制:

时间限制: WhatsApp 对消息撤回设置了时间限制(例如,通常是发送消息后的 2 天 12 小时内)。超过这个时间,发送方将无法发起“删除所有人”的请求。这可能是为了平衡用户对撤回的需求和避免滥用。
接收方状态:
在线状态: 接收方必须在时间限制内在线,并且他们的 WhatsApp 客户端能够成功接收并处理这个“撤回消息”。如果接收方长期离线(例如超过时间限制),或“撤回消息”由于网络问题未能送达,那么原始消息将不会被删除。
应用程序版本: 接收方必须使用支持消息撤回功能的 WhatsApp 客户端版本。如果接收方使用的是旧版本,他们可能无法识别并处理“撤回消息”,导致原始消息仍然显示。
通知机制:
撤回成功: 如果撤回请求成功送达并被处理,发送方会看到消息被替换为“此消息已删除”。
撤回失败: WhatsApp 可能会在某些情况下通知发送方,如果他们的撤回请求未能成功送达或处理(例如,接收方未能在规定时间内收到删除指令)。
云端备份的影响:
这是最常见的误解之一。如果接收方在收到原始消息后、但在收到并处理“撤回消息”之前,将他们的 WhatsApp 聊天记录备份到了云服务(如 Google Drive 或 iCloud),那么原始消息可能会仍然存在于云备份中。
当接收方从这样的云备份恢复聊天记录时,原始消息可能会再次出现。这是因为“撤回消息”是对当前客户端的指令,而不是对云备份的指令,WhatsApp 无法直接控制和修改用户的云备份内容。
隐私与安全考量
端到端加密: 撤回机制本身也是在 E2EE 的框架下运作的,WhatsApp 无法在任何时候解密或查看原始消息的内容。
最佳努力: 消息撤回是一个“尽力而为”的删除过程。由于数据已在接收方设备上解密并存储,WhatsApp 无法保证在所有极端情况下(如接收方使用特殊修改版客户端、故意截留数据或在撤回前已备份到不受控的外部存储)消息被彻底清除。
总之,WhatsApp 的消息撤回功能是一个巧妙的“删除指令”传递机制,在保持端到端加密的核心原则下,为用户提供了有限的消息控制能力。