Skip to content

安全设计 ​

本文描述 Persona 当前实现应遵循的安全设计约束。更完整的资产、信任边界和 STRIDE 分析见 威胁模型与周期性安全审查。

分层安全边界 ​

层责任关键控制
客户端入口CLI、桌面端、浏览器扩展、SSH Agent 只负责交互和请求路由不直接绕过 core 读写敏感明文
核心服务身份、凭据、解锁、审计和策略统一入口自动锁、敏感操作再认证、审计日志
加密层主密钥派生、item key 包裹、AES-GCM 加解密每项凭据独立 key,认证加密防篡改
存储层SQLite、附件、迁移和配置schema 迁移、wrapped_item_key 兼容、最小明文元数据
外部接口Native Messaging、SSH Agent socket/pipe、可选 server配对/HMAC、origin binding、known_hosts、只传密文或摘要

敏感操作授权 ​

敏感操作必须显式经过授权路径,不能只依赖调用方 UI:

  • 凭据 reveal、copy、fill、TOTP 获取必须验证解锁态,并尽量绑定 active identity。
  • 浏览器 fill/copy/TOTP 必须要求 user gesture;有 URL 的凭据必须做 origin binding。
  • SSH 签名必须经过 agent 策略检查;默认不得导出私钥。
  • 导出包含敏感内容时必须确认解锁态和目标加密策略。
  • 非交互模式必须由 PERSONA_NON_INTERACTIVE 和相关环境变量显式启用。

密钥与数据处理 ​

  • 新写入凭据使用随机 item key 加密明文,再用主密钥包裹 item key。
  • 解锁后的主密钥服务只应保存在内存中,锁定时清理服务状态。
  • 备份、导入导出和附件加密必须使用随机 salt/nonce,并验证解密失败路径。
  • 审计日志可以记录资源 ID、动作、时间和摘要,不能记录明文密码、TOTP secret、SSH 私钥或完整待签名 payload。

设计约束 ​

  • 不新增绕过核心服务层的直接存储访问路径。
  • 不把云端、server 或浏览器扩展作为明文信任根。
  • 不为未来功能预留宽权限接口;新增能力必须先定义资产、授权条件和审计事件。
  • 不在日志、错误消息、测试快照或 CI 输出中写入真实 secret。

Released under the MIT License.