网站首页 > 技术文章 正文
多年以来,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 的备份密钥库会将其存储并保管。如果想要使用备份数据的话:
- 首先需要输入密码,明文密码在加密后会由备份密钥库进行验证。
- 密码通过验证之后,加密密钥库会将密钥发送至 WhatsApp 客户端。
- 拥有密钥后,WhatsApp 客户端才可以将备份解密。
或者,如果账户所有者选择使用单独的 64 位密钥,那么他们就需要手动将密钥输入客户端以解密并访问他们的备份数据。E2EE 备份将在未来几周内同时登陆 iOS 和安卓客户端。更多技术细节请参考端对端加密备份白纸。
原文链接:https://engineering.fb.com/2021/09/10/security/whatsapp-e2ee-backups/
猜你喜欢
- 2025-07-07 bitlocker 太恶心了(bitlocker manage)
- 2025-07-07 前后端安全机制(前后端安全机制有哪些)
- 2025-07-07 SpringBoot 接口加解密全过程详解
- 2025-07-07 加密算法的分类与应用(加密算法的种类)
- 2025-07-07 SpringBoot项目快速开发框架JeecgBoot——Web处理!
- 2025-07-07 网页端到端加密聊天系统(网页加密技术)
- 2024-10-10 简述无线网桥的主要加密方式 网桥怎么加密
- 2024-10-10 jsjiami.com.v7加密混淆文件隐藏关键代码的方法
- 2024-10-10 想不到一句”MD5加密“,竟然惨遭大量程序员的嘲笑!
- 2024-10-10 国内首个开源国密前后端分离快速开发平台,追求简洁至上大道至简
你 发表评论:
欢迎- 07-07使用AI开发招聘网站(100天AI编程实验)
- 07-07Tailwindcss 入门(tailwindcss中文文档)
- 07-07CSS 单位指南(css计量单位)
- 07-07CSS 定位详解(css定位属性的运用)
- 07-07程序员可以作为终身职业吗?什么情况下程序员会开始考虑转行?
- 07-07云和学员有话说:国企转行前端开发,斩获13K高薪!
- 07-0791年转行前端开发,是不是不该转,有啥风险?
- 07-07计算机图形学:变换矩阵(图形学 矩阵变换)
- 595℃几个Oracle空值处理函数 oracle处理null值的函数
- 587℃Oracle分析函数之Lag和Lead()使用
- 575℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 572℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 568℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 561℃【数据统计分析】详解Oracle分组函数之CUBE
- 548℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 541℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)