whatsapp 新版 web 实现多设备独立运行,其核心在于端到端加密的“状态同步”而非消息中转——服务器仅暂存加密后的设备状态快照,不存储明文消息;手机离线时,已配对设备仍可收发新消息,依赖的是分布式密钥管理和本地消息缓存。
WhatsApp 自 2021 年起全面升级为 Multi-Device 架构,彻底改变了旧版“Web 仅为手机镜像”的依赖模式。其关键突破在于:允许最多 4 台非手机设备(如 Web、桌面 App)在无持续手机联网状态下独立收发消息。这并非靠服务器长期保存用户消息,而是通过一套精密的端到端加密协同机制实现。
核心机制解析
-
初始同步:加密消息历史迁移
当首次将 Web 端作为“伴生设备(Companion Device)”链接时,手机(主设备)会执行以下操作:- 从本地数据库提取近期聊天记录(通常为最近数月的未删除消息);
- 使用仅该 Web 设备可解密的密钥,对整段消息历史进行一次性端到端加密,生成加密数据块(blob);
- 将加密 blob 上传至 WhatsApp 服务器,并通过一条独立的端到端加密信道,将解密密钥发送给 Web 设备;
- Web 设备下载 blob 后完成解密、解析并持久化存储于本地 IndexedDB;
- 密钥与原始加密 blob 在传输完成后即被服务器和手机端安全清除。
// 示例:简化逻辑示意(非实际 WhatsApp 代码) const encryptedHistory = await primaryDevice.encryptHistory( recentMessages, companionDevicePublicKey ); await server.uploadEncryptedBlob(encryptedHistory); await primaryDevice.sendDecryptionKeyViaE2EE(encryptedHistory.id, key);
-
实时消息同步:状态广播 + 本地处理