Keyvaci

安全架构

别信我们。去核查我们。

本页的每一条说法都是设计本身的性质,而不是我们承诺去遵守的一项政策。政策会随管理层变动,数学不会。下面是你存进 Keyvaci 的一个机密,究竟经历了什么。

核心机制

一个机密的全程旅途

密钥诞生在你的设备上

初次设置时,你的主密码会经过 Argon2id(64 MiB 内存,刻意让暴力破解代价高昂)派生出主密钥,主密钥再保护你个人的 X25519 加密密钥对和 Ed25519 签名密钥对。主密码和主密钥都不会离开浏览器。

组织为你副署

管理员通过另一条渠道与你核对密钥的校验码,再用组织签名密钥为它副署。此后,组织中的每一台设备在把任何东西托付给你的密钥之前,都能先验证这把密钥确实是你的。

条目在客户端封存

每个保管库都有自己的密钥。包括保管库名称在内的每一个条目,都在你的机器上用 XChaCha20-Poly1305 认证加密封好。传到我们这里、并被我们保存下来的,是密文。

共享是带签名的密码学操作

共享保管库时,会在通过副署校验之后,用接收人的公钥加密保管库密钥,并对这次授权签名,使它无法被改指向另一把密钥。撤销则会用一把新密钥重新加密整个保管库。

诚实的清单

我们的服务器上都有什么

一个零知识的说法,可信度取决于它的清单。这是我们的。

数据我们实际保存的内容Keyvaci 能读到吗?
保管库条目(密码、备注)XChaCha20-Poly1305 密文不能
保管库名称密文,与条目同样加密不能
你的主密码什么都没有。它从不被发送不能
私钥由你的主密钥封存的密文不能
组织恢复密钥与签名密钥什么都没有。在你这一侧生成并保管不能
公钥与副署签名明文(它们本来就是公开的)
成员的姓名和邮箱明文,运行账户所必需
审计事件(谁在何时做了什么)明文元数据,只可追加
登录链接(仅限邮箱登录)仅存储 SHA-256 摘要,只能用一次,发出后 5 分钟即失效。没有需要持有的登录密码仅摘要

直白地说明后果:Keyvaci 的数据库即便被完全攻破,拿到的也只是密文、公钥和元数据。解密你的保管库所需的材料,根本不在那里可供窃取。

纵深防御

密码学之外的一圈

显示前的二次验证

读取一条凭据需要近期完成过验证,还可选启用 TOTP。仅凭会话令牌,永远打不开保管库中的条目。

有目的的速率限制

显示和打开保管库按用户限速,因此即便会话被劫持并已完成二次验证,也无法批量导出一个组织的机密。

边缘防护

所有流量都要经过 API 前面的 WAF(托管规则集、IP 信誉、限速规则),而 API 源站会拒绝任何未经它转发的请求。

租户隔离

每条记录都以组织为键,每次请求都做检查,并由在 CI 中运行的跨租户隔离测试覆盖。

只可追加的审计

审计服务自身的数据库权限只允许写入新事件,别的都不行。篡改在这里不是违反政策,而是一个权限错误。

严格的会话

解密密钥只存在于内存中,锁定时、空闲 15 分钟后或标签页被隐藏时即被清除。每次请求都会用 IdP 的密钥校验登录的新鲜度与受众。

客户端更多,规矩不变

扩展与手机不被允许做的事

增加浏览器扩展和移动应用,正是多数保管库悄悄放宽自家规矩的地方,因为只要有什么东西替你握着一把钥匙,填密码就会方便得多。以下是我们拒绝放宽的地方,以及每一次拒绝所付出的代价。

规矩如何强制执行
只有一份加密实现扩展与手机以源码方式使用与网页应用相同的加密和相同的验证链。不存在会各自漂移的第二份副本,也没有参数更弱的客户端。手机上密钥派生之所以按完整的 64 MiB 原生运行,原因正在于此
通不过签名校验的条目直接丢弃网页应用还有余裕在可疑条目旁边给出警告。自动填充菜单没有进行这种对话的地方,因此凡是通不过组织签名、授权签名或作者签名的条目一律丢弃,绝不呈现。从无法验证的来源填入密码,是这些客户端绝对不能做的唯一一件事
每一次查看都会被审计显示、复制与填充都要走与控制台相同的、带审计的查看流程,包括在手机上填入其他应用。第二个客户端不是绕开这款产品所依凭的日志的路
没有人在场,自动填充就不会运行iOS 提供方拒绝系统给出的无人值守路径,每次都在自己的进程中索要主密码。能够默默应答那个请求,就意味着某处存着一把钥匙
菜单只知道你正打开的这个站点匹配只按精确主机或真实的父子关系进行,绝不按子串;页面的来源取自浏览器,而不是页面自己的声明。在恶意站点上被诱导的一次点击,只能填入本来就属于它的凭据
密钥按期限过期,而不是按闲置时长解锁十分钟后,无论你是否回来,扩展与手机都会清除密钥。手机还会在应用离开屏幕的瞬间清除,因此应用切换器里永远不会留着一个打开的保管库
保管库永远看不到你的公司密码用 Microsoft 登录时,窗口由浏览器或操作系统持有,扩展既无法脚本操作也无法读取

有一个诚实的例外,而且决定权在读者手上:开启 Face ID 意味着你的主密码被保存在那一台设备上,由设备的安全硬件看管,并在生物特征集合变动时自动失效。它默认关闭,应用会在你做决定的那个界面上把这笔交易讲清楚,主密码仍会每 30 天以及任何一次密码变更之后立即被重新索要,而且绝不会出现只能靠生物识别进入的状态。

把限制说明白

零知识做不到什么

只罗列优点的安全页面就是营销。以下是这个模型的边界,以及我们针对每一条做了什么。

你的设备要靠你自己守住

解密发生在你的机器上,因此某位成员设备上的恶意软件能看到这位成员看到的内容。自动锁定、自动隐藏、清除剪贴板和显示审计能缩小这个窗口,但无法消除它。

恢复是一项实打实的权力

组织恢复密钥可以还原任何成员的密钥,也就意味着它能读到这些成员的保管库。我们在每位成员初次设置时就用大白话讲清这一点,而且每一次恢复都会被审计。请把这个密钥包当作它本身的分量来保管。

密钥丢了,数据就没了

如果一位成员忘记主密码,而组织又弄丢了恢复密钥包,那份数据就没有了。没有任何人能把它找回来,包括我们。我们在注册时反复重申这条警告,因为这是“服务器读不到你的数据”所对应的、诚实的代价。

已认证的运营。 Keyvaci 由 XNOR Group Pte. Ltd. 运营,其信息安全管理体系通过了 ISO/IEC 27001 认证。证书与适用范围声明可应你方采购或安全团队要求提供。Keyvaci 服务的 SOC 2 报告已在路线图上;在它出具之前,本页面和已公开的设计就是我们请你据以约束我们的全部主张。关于这两套标准的关系,详见:ISO 27001 与 SOC 2 的区别
负责任的漏洞披露。 发现了什么?我们希望知道。请写信到 keyvaci@xnorgroup.com,我们会尽快回复,如你愿意也会致谢,并且绝不对善意研究采取法律行动。

让这套架构真正跑起来

14 天,功能全开,不用刷卡。评估期间,欢迎你的安全团队把最难的问题发到 keyvaci@xnorgroup.com。