安全

经得起推敲的安全。

UniPass 的设计,让最重要的东西——主密码、Secret Key 和加密密钥——永远不离开你的 Mac。下面是它具体如何工作,以及它的边界在哪里。

安全是我们的第一优先级。欢迎负责任的漏洞披露。

密钥体系

每一把密钥,都在你的 Mac 上派生或解开。

只有你掌握的两个秘密,被拉伸成一把主密钥;其余一切都由它逐层解开。

主密码 只存在于你的记忆中
Secret Key 128 位 · 存于钥匙串
账户邮箱 参与构成盐值
Argon2id · 64 MiB · 3 轮 · 4 通道
主密钥 256 位 · 仅在解锁期间存在于内存
HKDF‑SHA256
密码库密钥 随机 256 位 · 只以包装形态存储
条目密钥 每个条目一把随机 256 位密钥
XChaCha20‑Poly1305 · 192 位 nonce
加密条目 不透明、可检测篡改
PBKDF2‑SHA256 · 600,000 次
认证哈希 证明是你,但不泄露任何内容
永不离开你的 Mac 发送给 UniPass
密码学原语

只用久经检验的密码学。

用途算法参数
密钥派生 Argon2id 64 MiB 内存、3 次迭代、4 通道;盐值 = SHA‑256(邮箱 ‖ Secret Key)
第二秘密 Secret Key 由系统安全随机数生成的 128 位,在你的 Mac 上创建
条目加密 XChaCha20‑Poly1305 每个条目独立的随机 256 位密钥、192 位随机 nonce、带版本的封装格式
密钥包装 HKDF‑SHA256 + XChaCha20‑Poly1305 密码库密钥由主密钥派生的密钥包装;条目密钥由密码库密钥包装
登录凭证 PBKDF2‑HMAC‑SHA256 对主密钥做 600,000 次迭代;服务器只保存再次哈希后的结果
本地数据库 SQLCipher 整库加密,密钥由主密码与 Secret Key 派生
内存 清零 UniPass 锁定时,主密钥会从内存中抹除
可见性

我们能看到什么,不能看到什么。

开启同步后,服务器能看到

  • 你的账户邮箱和设备名称
  • 加密数据块及其大小、版本号
  • 时间戳、删除与收藏标记、文件夹 ID
  • 你的 IP 地址(仅短暂留存在访问日志中)

我们永远看不到

  • 你的主密码或 Secret Key
  • 你的恢复码或任何加密密钥
  • 条目标题、网址、用户名、密码和笔记
  • 附件、文件夹名称和一次性验证码密钥

不开启同步时,密码库中的任何内容都不会发送给 UniPass。

政策

威胁模型与漏洞披露

UniPass 如何保护你的数据

  • 静态加密:本地数据库用 SQLCipher 加密,单条 vault 记录用 XChaCha20-Poly1305;密钥由主密码经 Argon2id 派生。
  • 零知识同步:可选云同步只上传不透明密文,服务端不存密钥,无法解密你的密码库。
  • 凭据留在本地:浏览器扩展只通过桌面端经操作系统 Native Messaging 取用密码库——绝不经我们的网络。
  • 反钓鱼自动填充:按注册域(eTLD+1)匹配,仿冒域名拿不到你的凭据。
  • 抗暴力破解:Argon2id KDF,叠加按 IP 与账户的限流与渐进式锁定。
  • 供应链完整性:macOS 发布构建经代码签名与 Apple 公证;扩展通过 Chrome Web Store 分发。

威胁模型

我们防御的威胁

  • 攻击者获取了你的设备文件(云备份、失窃硬盘)——vault 数据库已加密。
  • 攻击者监听同步的网络流量——端到端加密 + TLS。
  • 攻击者控制同步服务端——服务端无法解密任何 vault 内容(零知识)。
  • 同机其他本地用户——无权访问 vault 的加密密钥。
  • 在线暴力破解登录——Argon2id KDF、双维度限流、渐进式锁定。

我们无法防御的威胁

  • 你的主密码本身被泄漏(社会工程、肩窥、键盘记录器)。
  • 设备上运行有管理员/root 权限的恶意软件——任何密码管理器都无法防御。
  • 操作系统零日漏洞——我们只能尽力缩小攻击面。

报告漏洞

请不要通过公开的 GitLab/GitHub Issue 报告安全漏洞。请私密披露:

  • 邮箱:business@loxnet.io
  • 主题前缀:[SECURITY]
  • 请包含:受影响版本/平台、漏洞类型、复现步骤(欢迎 PoC)、潜在影响,以及可能的修复建议。

我们的承诺

  • 24 小时内确认收到报告。
  • 72 小时内给出初步评估(是否复现 / 严重程度)。
  • CRITICAL/HIGH 级漏洞将在工程允许的最短时间内修复并发布补丁版本。
  • 补丁发布后在发布说明中致谢报告者(除非你选择匿名)。
  • 不追究善意安全研究行为。

常见问题

我忘记了主密码怎么办?

我们无法找回你原来的主密码。如果你在失去访问权限前已启用 Recovery Code,它可以把同一组本地加密密钥重新封装到新的主密码与 Secret Key 下,从而保留原有加密密码库。Recovery Code 与明文密钥都不会发送给我们。

没有有效 Recovery Code 时,邮箱重置会创建新的加密身份与空密码库,并永久删除旧密码库及相关服务端数据;账户已启用 2FA 时仍须通过 2FA。UniPass 与支持人员都无法解密或恢复被删除的数据。

你们会收集使用数据吗?

不收集任何遥测、崩溃报告或使用统计。启用云同步时会上传 vault 密文与同步元数据(账户邮箱、设备标识、版本号),其余一律不上传。详见隐私政策。