跳到主要内容

OS 密钥链与密钥存储

OpenHuman 使用 操作系统安全凭证存储 来保护必须保存在您设备上的密钥。

在桌面构建上,这意味着:

  • macOS: Keychain
  • Windows: Credential Manager
  • Linux: Secret Service / libsecret

这是本地密钥素材的信任根。OpenHuman 不依赖纯文本 .env 文件或纯文本本地配置文件来存储用户凭证。

什么进入 OS 密钥链

OpenHuman 将两种本地密钥素材用于 OS 密钥链:

1. 凭证条目

当功能需要本地凭证槽时,OpenHuman 将其存储在平台密钥链中,而不是写入普通配置文件中的原始密钥。

示例:

  • 本地存储的提供者 API 密钥
  • 必须保留在设备上的会话和 bearer token
  • 适用的钱包密钥素材

这些条目在 OpenHuman 自己的密钥命名空间下划分范围,不会与其他无关应用冲突。

2. 主加密密钥

某些敏感值仍需要生活在文件内部,因为应用程序配置本身是基于文件的。

OpenHuman 通过以下方式处理这种分离:

  • 磁盘上的密钥值存储为加密密文
  • 用于解密的主密钥存在于 OS 密钥链中

这意味着您的本地配置和状态文件可以包含加密值,而解密密钥不以纯文本形式放在它们旁边。

什么在磁盘上保持加密

当 OpenHuman 需要在本地持久化敏感应用设置时,它将密文写入磁盘,将密钥保存在 OS 密钥链中。

涵盖的本地密钥:

  • BYO API 密钥以支持提供者
  • 存储在本地配置中的频道和 webhook 密钥
  • 桌面功能所需的其他本地持久化密钥设置

加密格式是经过身份验证的,因此 OpenHuman 可以检测篡改而不是静默接受修改的密文。

实际上,安全模型是:

  • 密钥在密钥链中
  • 密文在文件中
  • 仅在需要时在内存中解密

为什么这比纯文本配置更好

如果您的机器有本地工作区备份、同步文件夹或支持包,纯文本配置文件中的密钥是一个负担。

使用 OS 密钥链作为根密钥存储为 OpenHuman 提供了更安全的分离:

  • 配置文件可以复制而不会暴露原始凭证
  • 意外的日志或文件检查不太可能泄露密钥
  • 解密密钥被委托给平台凭证系统而不是应用管理的纯文本文件

受管集成与本地密钥

并非每个密钥都遵循相同的路径。

受管集成

对于默认的受管集成流程,第三方 OAuth token 由 OpenHuman 后端处理。您的本地应用不需要将这些提供者 token 以纯文本形式保存在您机器上。

本地 BYO 凭证

当您选择自备密钥或直接模式路径时,OpenHuman 将这些凭证视为本地密钥,并使用 OS 密钥链和在需要时加密磁盘上的本地存储来保护它们。

从旧版本迁移

旧版本可能将本地加密素材保存在基于文件的形式中。

当前桌面构建将该素材迁移到 OS 密钥链,并在磁盘上保留加密负载。目标是根密钥移出普通文件并进入平台凭证存储,而无需用户手动重新输入每个密钥。

下一步