点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

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

  • 2021-11-19
  • 本文字数:1318 字

    阅读完需:约 4 分钟

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

多年以来,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/

2021-11-19 09:551745

评论

发布
暂无评论
发现更多内容

【Python】:如何处理异常报错?

翼同学

Python 编程语言 异常处理 8月月更 入门学习

【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点

华为云开发者联盟

云计算 华为云 开发者大赛

开源星「001 号」落地 FlyFish,欢迎登陆赢神秘大礼包!

云智慧AIOps社区

大前端 低代码 开源项目 数据可视化 大屏可视化

视频聊天源码——一对一直播如何提高直播质量?

开源直播系统源码

软件开发 直播系统源码 开源源码 语音聊天 视频聊天源码

2022年中国第三方证券APP创新专题分析

易观分析

App 金融 证券

如何通过 open-local 玩转容器本地存储? | 龙蜥技术

OpenAnolis小助手

开源 云原生 分布式存储 龙蜥技术 open-local

uniapp电影购票选座系统源码

清风

源码 计算机毕业设计

NFT+IDO预售代币合约模式系统开发

l8l259l3365

融云 x N 世界:构建无限用户实时交互的「元宇宙会场」

融云 RongCloud

isc 元宇宙

43%非常看好TypeScript…解读“2022前端开发者现状报告”

华为云开发者联盟

typescript 开发者 前端

华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款

华为云开发者联盟

云计算 后端 华为云 流浪方舟

怎样选择一个好的SaaS知识库工具?

Geek_da0866

【Python】:如何利用Python实现文件操作

翼同学

Python 编程语言 文件操作 8月日更 入门学习

SpringBatch入门

五毛

sping ETL

新思科技推动产业革新 为智能网联车系好“安全带”

InfoQ_434670063458

软件 车联网 新思科技

现在,怎么挑选舞台租赁LED显示屏?

Dylan

LED LED显示屏

【活动报名】8月13日杭州站-开源遇上大数据

亚马逊云科技 (Amazon Web Services)

大数据 开源

crm系统哪家好?好用的crm管理系统推荐

优秀

CRM系统

Python语言基本语法元素

北极的三哈

Python 学习 开发语言

开源一夏 | 使用 HTML、CSS 和 JS 制作一个中国象棋

海拥(haiyong.site)

开源 前端 8月月更

[ Kitex 源码解读 ] Kitex 请求重试的分类及实现原理

baiyutang

Go 微服务架构 云原生 kitex CloudWeGo

用Python自动生成 图文并茂的数据分析 报告

兆锋

Python pip Office 自动化办公

Substrate 源码更新导读八月第1周: 新版事务化存储层启用默认模式, Polkadot v0.9.27发布

彭亚伦

Substrate polkadot 波卡

WhatsApp是如何实现端到端加密备份的?_文化 & 方法_Slavik Krassovsky_InfoQ精选文章