在桌面上保护信号密钥

主要观点:Signal Desktop 存在密钥管理安全问题,攻击者可通过获取本地数据库加密密钥提取机密数据,而桌面平台缺乏安全的密钥管理能力。官方已修复数据库加密密钥存储方式,但在 Windows 和 Linux 上仍存在安全隐患。作者提出使用硬件安全模块(如 YubiKey)来增强密钥保护,通过将 Signal 身份密钥操作移植到 YubiKey 中,实现密钥隔离和用户同意机制,以提高 Signal Desktop 的安全性。

关键信息

  • Signal 是开源加密消息服务,其安全依赖于设备上的加密密钥,但桌面平台缺乏 OS 提供的安全密钥管理能力。
  • 攻击者可通过物理访问或恶意软件获取 Signal Desktop 的本地数据库加密密钥,进而提取数据、冒充受害者等。
  • 官方已将数据库加密密钥由明文存储改为使用 Electron safeStorage API 加密,但在 Windows 和 Linux 上仍可被攻击者获取。
  • 作者选择 YubiKey 系列 5 作为硬件安全模块,通过将密钥存储在 YubiKey 中并要求用户同意来增强密钥保护,还描述了如何使用 YubiKey 保护数据库加密密钥和身份密钥对。
  • 支持 XEd25519 存在挑战,Signal 可通过迁移到标准化加密原语或让手机应用生成签名预密钥等方式来改进。

重要细节

  • 详细介绍了各种密钥的作用和攻击场景,如身份密钥用于设置新会话、存储密钥用于加密同步非消息数据等。
  • 说明了不同操作系统的访问控制机制,如 MacOS 基于应用程序限制访问,Windows 和 Linux 基于用户限制访问。
  • 展示了在 Signal Desktop 中插入钩子以使用 YubiKey API 的过程,包括在 libsignal 中的操作和与 YubiKey 的交互方式。
  • 提及行业中其他关于保护加密材料的举措,如 Chrome 安全团队的更新。

总结:本文探讨了 Signal Desktop 的密钥管理安全问题及解决方案,强调了硬件安全模块在保护加密密钥方面的重要性,为提高 Signal Desktop 的安全性提供了思路和实践方法。

阅读 14
0 条评论