
whatsapp 新版 web 采用多设备架构,支持手机离线时 web 端仍可收发消息;其核心在于本地密钥管理、端到端加密的消息历史同步,以及服务器仅临时缓存加密状态——消息内容本身从不以明文形式留存于 whatsapp 服务器。
WhatsApp 自 2021 年起全面升级为 Multi-Device Architecture(多设备架构),彻底改变了旧版“手机作为唯一主节点、Web 仅为镜像”的依赖模式。新架构下,最多可同时激活 4 台独立可信设备(如手机、Windows/macOS 桌面客户端、Web、平板),每台设备均拥有:
- 独立的长期密钥对(Identity Key)
- 独立的会话密钥(用于 Signal 协议中的双棘轮加密)
- 本地存储的加密消息数据库
? 消息同步机制详解
当首次将 Web 端作为“伴生设备”(companion device)链接时,手机(主设备)并不会实时转发每条新消息,而是执行一次性的安全迁移:
- 加密消息快照传输:手机打包最近聊天记录(默认约 3–6 个月,取决于本地存储策略),使用 AES-256 加密为二进制 blob;
- 密钥安全分发:解密该 blob 所需的密钥,通过一条端到端加密的 WhatsApp 消息(走 Signal 协议)发送至 Web 端;
- 本地持久化:Web 端下载 blob → 解密 → 解包 → 将消息写入 IndexedDB(浏览器本地加密存储),随后立即丢弃密钥;
- 后续独立运行:此后 Web 端可直连 WhatsApp 服务器,接收新消息(含加密元数据与密文),并利用自身密钥完成解密与渲染。
// 示例:Web 端本地消息存储示意(简化逻辑)
const encryptedBlob = await fetch('/api/v1/history-bundle');
const key = await receiveKeyViaE2EEMessage(); // 通过 E2EE 消息获取
const messages = await decryptAndParse(encryptedBlob, key);
await saveToIndexedDB(messages); // 存入浏览器本地数据库
clearMemory(key); // 密钥即时清除,不留痕⚠️ 关键事实澄清
- ❌ WhatsApp 服务器不存储用户消息明文:所有消息体(text/media)在发送前已在客户端完成端到端加密(E2EE),服务器仅中转密文及元数据(如时间戳、发送者 ID、设备路由信息);
- ✅ 服务器暂存加密状态:为支持设备离线期间的消息可达性,服务器会临时缓存已加密的未送达消息(up to 30 days),但一旦所有目标设备确认接收,即自动删除;
- ✅ 无中央消息库:不存在“云端聊天记录备份”——消息历史完全由各设备本地持有,跨设备同步仅发生在初始链接与增量更新(如新消息抵达)阶段;
- ? 隐私保障前提:所有密钥生成、存储、解密均在设备本地完成,WhatsApp 无法访问私钥,也无法解密任何消息。
? 总结:为什么手机离线后 Web 还能收消息?
因为 Web 端已具备:
- 独立的身份认证能力(可向服务器证明自己是合法设备);
- 完整的本地消息数据库(历史 + 已缓存的新消息密文);
- 实时解密能力(自有密钥链 + Signal 协议实现);
- 与服务器直接通信的加密信道(基于 TLS + E2EE 元数据封装)。
简言之:手机不再是“网关”,而只是“同级节点之一”。这种去中心化的多设备设计,在保障端到端加密强度的同时,显著提升了可用性与用户体验。










