我可以使用 WhatsApp 安全地发送公钥、对称密钥和私钥吗?

信息安全 加密 whatsapp 即时通讯 秘密分享 端到端加密
2021-08-09 00:58:43

我问这个是因为 WhatsApp 说它是端到端加密的。

  1. 通过 WhatsApp 发送公钥是否有任何问题?

  2. 发送对称密钥和私钥可能会有一些反对意见。

在什么情况下可以发送对称密钥和私钥?

3个回答

E2EE 不保护静态数据。与 Signal 不同,WhatsApp 不加密内部消息数据库。如果加密用户和应用程序数据的数据加密密钥被泄露,取证分析可以解密已删除的消息。这似乎不切实际,但这就是间谍软件机构现在正在做的事情。

根据这篇研究论文:移动设备上的数据安全:现有技术、未解决的问题和建议的解决方案(pdf),《连线》也涵盖了该论文:执法部门如何绕过智能手机的加密讨论了数据加密中的设计缺陷安卓和iOS。它的一位作者对 iOS 做了简要的解释,尽管利用方法对于 android 也是相同的。

一旦用户自上次重启后首次解锁设备,Android 和 iOS 就会将数据加密密钥保存在内存中。这称为首次解锁后(AFU) 状态。即使设备再次重新锁定,密钥仍保留在内存中。这样做的目的是为了保持用户体验,并使以用户为中心的应用程序在锁定屏幕上保持功能,包括消息应用程序、联系人、歌曲、笔记、提醒等。大多数情况下,您的设备仍处于 AFU 状态。如果您重新启动设备但尚未解锁,则您的设备状态处于首次解锁前(BFU) 状态。在 BFU 状态下,用户和应用数据仍然是加密的。要解密它们,您的设备会提示您使用屏幕锁定密码解锁屏幕,然后将该密码输入密钥派生以派生密钥加密密钥解密数据加密密钥。这就是为什么生物识别解锁屏幕在重启后第一次不起作用的原因。

一旦从内存中提取数据加密密钥,直接篡改 SoC 而无需断开电池或使用零日漏洞,间谍软件机构就可以解密数据子集。密钥可以基于每个文件,但这些密钥是从数据加密密钥派生的,这意味着即使文件已被删除,也可以重新派生其密钥,并且可以从 NAND 闪存中恢复已删除的文件本身。

WhatsApp 每日聊天备份使用AES-GCM-256WhatsApp 服务已知的密钥加密消息数据库(请参阅WhatsApp 如何恢复本地或 Google Drive Backups?)。虽然,WhatsApp 服务不拥有聊天备份,但如果大多数用户都启用了 Google Drive 备份,Google Drive 就会拥有。在那里,您无法控制间谍软件机构如何使用它。

通过 Signal 发送密码比 WhatsApp 更安全,但并非完全如此。Signal 使用数据库加密密钥加密消息数据库,该密钥本身使用存储在可信执行环境(TEE) (android 7+) 中的密钥进行加密。其消息数据库的页面大小为 4096 字节,每页的 IV 存储在页脚中。修改现有页面(例如删除消息)会更改 IV,并且使用数据库加密密钥重新加密整个页面。如果该页面的 IV 已更改并且可能被新 IV 覆盖,则无法恢复已删除的消息。

完全卸载 Signal 还会清除 TEE 中的密钥,这使得其数据库加密密钥无法解密,其数据也是如此。但上述设计缺陷也会影响 Signal 现有的消息。由于数据库加密密钥必须在内存中才能在锁定屏幕时服务消息,因此可以提取它。这就是 FBI 可能如何侵入锁定 iPhone 上的私人信号信息

此外,具有可访问性权限的应用程序可以看到您屏幕上的内容,如果您信任的应用程序实际上是恶意的,这是破坏消息的最简单方法。谷歌和苹果对其应用商店中的哪些应用可以有代码来请求用户的许可非常严格。

至于私钥,我认为它甚至不应该供您共享。

不不不!

不要将您的安全性建立在信号协议的残缺版本的程序上。

  • 公钥

    它是公开的,通常会在网上发布,并通过 Signal 等其他渠道进行验证,或者打电话给你的朋友并使用你的声音!这些有正式的解决方案,证书颁发机构

  • 私钥

    这是您的私人信息,请妥善保管,是您最宝贵的数字机密如果一直隐藏在所有人的视线中!

  • 对称密钥

    为什么需要它来发送它?它们是在短期内生成的,也可以保证它们的安全。

对此有经过充分研究的密码学方法。

  • 使用 Diffie-Hellman 密钥交换建立密钥并

  • 使用 HKDF 从中派生密钥,用于经过身份验证的加密模式,如 AES256-GCM 或更好的 ChaCha20-Poly1305。

    如果您在阅读后删除生成的密钥和消息,您将获得前向保密

    您将获得机密性、完整性和经过身份验证的加密你还想要什么?

您的公钥是公开的。您可以在没有保护的情况下发布或发送它。除非您有非常特殊的需要,即您的身份不得与您的公钥相关联。

您的私有(或对称)密钥是私有的。你不应该发送或传输它。如果需要在其他设备上传输给自己,可以使用接收设备的公钥加密后再发送。

无论哪种情况,您都会注意到“Whatsapp”与此答案无关。这个答案适用于任何通信应用程序或协议。