WhatsApp 如何启用端到端加密备份数据

翻译自Facebook Engineering https://engineering.fb.com/2021/09/10/security/whatsapp-e2ee-backups/

在这里插入图片描述

多年来,为了保护人们的隐私信息,WhatsApp默认提供了端到端加密,只有发送者和接收者才能看到消息,传输中间其他人无法看到。现在,我们计划同样提供这种端到端加密来保护他们的 WhatsApp 备份。

人们已经可以通过现有的Google Drive 和 iCloud 等基于云的服务来备份他们的 WhatsApp 历史消息记录。WhatsApp无权访问这些备份,它们由单独的基于云的存储服务保护。

但是现在,如果人们选择启用端到端加密 (E2EE) 备份一旦可用,WhatsApp 和备份服务提供商(云)都将无法访问他们的备份或备份加密密钥。

E2EE 备份的工作原理

生成加密密钥和密码

为了启用 E2EE 备份,我们开发了一个全新的加密密钥存储系统,适用于 iOS 和 Android。启用 E2EE 备份后,备份将使用唯一的、随机生成的加密密钥进行加密。人们可以选择手动或使用用户密码来保护密钥。当有人选择密码时,密钥存储在备份密钥保管库中,该密钥保管库基于称为硬件安全模块 (HSM) 的组件构建-可用于安全存储加密密钥的专用安全硬件。当帐户所有者需要访问他们的备份时,他们可以使用他们的加密密钥访问它,或者他们可以使用他们的个人密码从基于 HSM 的备份密钥库中检索他们的加密密钥并解密他们的备份。

基于 HSM 的备份密钥保管库将负责强制执行密码验证尝试,并在尝试访问密钥失败的次数有限后使密钥永久无法访问。这些安全措施可防止暴力尝试检索密钥。WhatsApp 只会知道 HSM 中存在一个密钥。它不会知道密钥本身。

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

WhatsApp 的前端服务 ChatD 处理客户端连接和客户端-服务器身份验证,并将实施一个协议,将密钥发送到 WhatsApp 的服务器和从 WhatsApp 的服务器发送的备份。客户端和基于 HSM 的 Backup Key Vault 将交换加密消息,ChatD 本身无法访问其内容。\

基于 HSM 的备份密钥保管库将位于 ChatD 之后,并为备份的加密密钥提供高度可用和安全的存储。备份本身将作为连续数据流生成,并使用生成的密钥使用对称加密进行加密。启用 E2EE 备份后,在加密后,可以将备份存储在设备之外(例如,存储到 iCloud 或 Google Drive)。

WhatsApp 为超过 20 亿人提供服务,该产品的核心挑战之一是确保基于 HSM 的备份密钥库可靠运行。为帮助确保系统始终可用,基于 HSM 的 Backup Key Vault 服务将在地理上分布在多个数据中心,以在数据中心中断时保持其正常运行。

WhatsApp 端到端加密备份

备份可以使用 64 位加密密钥进行端到端加密。

WhatsApp 端到端加密备份

还可以使用密码保护备份,在这种情况下,加密密钥将保存到基于 HSM 的备份密钥库。

基于 HSM 的 Backup Key Vault 和加密解密过程

当帐户所有者使用个人密码来保护其端到端加密备份时,基于 HSM 的备份密钥保管库将对其进行存储和保护。

当有人想要检索他们的备份时:

  1. 他们输入自己的密码,该密码经过加密,然后由 Backup Key Vault 进行验证。
  2. 验证密码后,Backup Key Vault 会将加密密钥发送回 WhatsApp 客户端。
  3. 有了密钥,WhatsApp 客户端就可以解密备份。

或者,如果帐户所有者选择单独使用 64 位密钥,他们将必须自己手动输入密钥以解密和访问他们的备份。

E2EE 备份将在未来几周内在 iOS 和 Android 上可用。查看端到端加密备份白皮书,了解有关技术细节的更多信息。

### 使用 WhatsApp API 进行应用开发 #### 准备工作 为了成功利用WhatsApp API进行应用开发,开发者需先理解所选API的具体特性及其适用场景。对于企业级解决方案而言,通常会选择使用WhatsApp Business API或WhatsApp Cloud API[^2]。 #### 开发环境搭建 确保拥有稳定的网络环境至关重要,因为这直接影响到API请求的成功率和响应时间。建议参考官方文档来配置必要的代理服务或其他中间件以优化网络性能[^1]。 #### 应用程序创建 无论是选择哪种类型的API接口,在正式接入前都需要完成一系列初始化设置: - 注册成为开发者并获取相应权限; - 创建项目并通过认证流程获得访问令牌; - 配置Webhook用于接收来自WhatsApp的消息通知; ```json { "webhooks": { "url": "https://yourdomain.com/webhook", "verify_token": "YOUR_VERIFY_TOKEN" } } ``` #### 发送消息示例 下面是一个简单的Python脚本例子,展示了如何向指定联系人发送文本消息: ```python import requests def send_message(phone_number, message_text): url = 'https://graph.facebook.com/v13.0/WHATSAPP_API_PHONE_NUMBER_ID/messages' headers = {'Authorization': f'Bearer YOUR_ACCESS_TOKEN'} payload = { "messaging_product": "whatsapp", "recipient_type": "individual", "to": phone_number, "type": "text", "text": {"body": message_text} } response = requests.post(url=url, json=payload, headers=headers) if __name__ == '__main__': send_message('123456789', 'Hello from your app!') ``` 此代码片段假设读者已经获得了有效的`ACCESS_TOKEN`以及正确的`PHONE_NUMBER_ID`参数值,并将其替换为实际使用的凭证信息。 #### 数据安全与隐私保护 在整个过程中始终重视数据的安全性和用户的隐私权。遵循GDPR等相关法律法规的要求,妥善保管用户个人信息,避免泄露风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值