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 密钥链,并在磁盘上保留加密负载。目标是根密钥移出普通文件并进入平台凭证存储,而无需用户手动重新输入每个密钥。