WhatsApp 是如何实现端到端加密备份的?

2021 年 11 月 26 日 InfoQ

作者 | Slavik Krassovsky,Gabriel Cadden
译者 | 马可薇
策划 | 凌敏
审校 | 冬雨  

多年以来,WhatsApp 的端对端加密服务一直是默认选项,旨在全力保护人们信息隐私,让信息的交换不经手任何人,仅收件人和发件人可见。现在,WhatsApp 计划让这项加密服务也应用到用户们的备份上。

Google Drive 和 iCloud 等诸多云端备份服务让人们可以随时同步备份他们的消息记录,虽然 WhatsApp 没有这些记录的访问权限,但提供保护的各类云存储服务却可以访问到。如果未来用户们选择启用 端对端加密(E2EE) 的备份保护,那么无论是 WhatsApp 还是第三方的存储服务都将无法访问到用户们的备份数据和加密密钥。

E2EE 备份的工作原理
加密密钥和密码的生成

WhatsApp 为 E2EE 的备份服务专门开发了一款可以兼容安卓和 iOS 平台的全新系统来存储加密的密钥。E2EE 备份选项一经启用,备份将会由一个独特且随机生成的加密密钥保护,而用户则可以自行选择使用存储密钥或使用自设置的密码。如果选择的手动输入的密码,那么密钥将会被保管在一个基于硬件安全模块(HSM)组件开发的备份密钥库之中,HSM 是专门为这类需求开发的安全组件,可以用于存储密钥。当账户所有者需要访问他们的备份数据时,无论是自设置密码还是安全密钥,都会从这个基于 HSM 的备份密钥库中检索对应的加密密钥,从而解密用户的备份数据。

这款基于 HSM 的备份密钥库同时也提供密码验证尝试次数的限制,在不成功访问到达限制次数后,密钥将被永久锁定,有效地防止了暴力破解密钥的企图。至于这款密钥库的拥有者 WhatsApp,它只会知道 HSM 密钥库中用户密钥的存在,但却无法得知密钥本身的信息。

将密钥存储在备份密钥库中

WhatsApp 的前端服务 ChatD,将会负责处理客户端链接和服务器端认证,通过协议将保管备份的密钥发送到 WhatsApp 的服务器上,或者是从服务器上取回。客户端与基于 HSM 的备份密钥库将会交换加密信息,其内容将不会被 ChatD 本身访问。

基于 HSM 的备份密钥库将会位于 ChatD 的后端,为备份的加密密钥提供高度可用和安全的存储。备份操作将会生成连续的数据流,并通过生成的密钥进行对称加密。只要启用 E2EE 备份形式,加密之后的备份数据将可以同步到 iCloud 或 iGoogle Drive 等设备外存储设备。

WhatsApp 为超过 20 亿人提供服务,该产品的核心挑战之一是确保基于 HSM 的备份密钥库能够可靠地运行。为了确系统能够始终可用,基于 HSM 的备份密钥库服务将在地理上分布于多个数据中心,以确保即使在其中一个数据中心故障时,服务也能持续在线。

备份可以由一个 64 位加密密钥进行端对端的加密保护。

备份同样可以由密码保护,密钥将会被存储到一个基于 HSM 的备份密钥库中。

基于 HSM 的备份密钥库以及加密 / 解密流程

如果 WhatsApp 账户的所有者选择使用输入密码来对端对端备份的数据进行保护,基于 HSM 的备份密钥库会将其存储并保管。如果想要使用备份数据的话:

  1. 首先需要输入密码,明文密码在加密后会由备份密钥库进行验证。

  2. 密码通过验证之后,加密密钥库会将密钥发送至 WhatsApp 客户端。

  3. 拥有密钥后,WhatsApp 客户端才可以将备份解密。

或者,如果账户所有者选择使用单独的 64 位密钥,那么他们就需要手动将密钥输入客户端以解密并访问他们的备份数据。E2EE 备份将在未来几周内同时登陆 iOS 和安卓客户端。更多技术细节请参考 端对端加密备份白纸。

原文链接:

https://engineering.fb.com/2021/09/10/security/whatsapp-e2ee-backups/

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

为什么 Netflix “永不宕机”?

Rust 审查团队集体辞职,最受欢迎的开源编程语言再陷治理风波

独家对话阿里 CTO 程立:技术人用代码让世界变得不一样

Facebook 招不到工程师



 活动推荐

为了感谢老粉们一直以来对 InfoQ 的陪伴,InfoQ 又来给大家送福利啦!
超多好礼 0 元免费领取达标即送~

华为 FreeBuds Pro、SKG 颈椎按摩器、小米小爱音箱 play、极客时间 GEEK 抱枕、“极客青年”马克杯

长按识别二维码,发送【十一】获得属于自己的专属海报以及活动参与方式!

点个在看少个 bug 👇

登录查看更多
0

相关内容

【开放书】《命令行数据科学指南(第二版)》
专知会员服务
42+阅读 · 2021年12月13日
专知会员服务
11+阅读 · 2021年9月10日
专知会员服务
41+阅读 · 2021年6月22日
专知会员服务
32+阅读 · 2021年5月10日
GCN如何并行化?分布式图卷积神经网路,13页pdf
专知会员服务
33+阅读 · 2020年7月20日
在.NET 6 中如何创建和使用 HTTP 客户端 SDK
如何使用Python通过电子邮件发送短消息
CSDN
0+阅读 · 2022年2月15日
代理网关设计与实现(基于NETTY)
阿里技术
0+阅读 · 2021年11月23日
客户端私钥如何保存?
黑客技术与网络安全
13+阅读 · 2019年8月24日
我所了解的物联网设备测试方法(硬件篇)
FreeBuf
12+阅读 · 2019年2月12日
如何访问"暗网"(慎入)
黑白之道
133+阅读 · 2018年6月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2010年12月31日
Arxiv
0+阅读 · 2022年4月19日
Saliency in Augmented Reality
Arxiv
1+阅读 · 2022年4月18日
Advances and Open Problems in Federated Learning
Arxiv
17+阅读 · 2019年12月10日
Arxiv
12+阅读 · 2018年1月20日
VIP会员
相关VIP内容
相关资讯
在.NET 6 中如何创建和使用 HTTP 客户端 SDK
如何使用Python通过电子邮件发送短消息
CSDN
0+阅读 · 2022年2月15日
代理网关设计与实现(基于NETTY)
阿里技术
0+阅读 · 2021年11月23日
客户端私钥如何保存?
黑客技术与网络安全
13+阅读 · 2019年8月24日
我所了解的物联网设备测试方法(硬件篇)
FreeBuf
12+阅读 · 2019年2月12日
如何访问"暗网"(慎入)
黑白之道
133+阅读 · 2018年6月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
相关基金
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2010年12月31日
Top
微信扫码咨询专知VIP会员