Keybase 账户边缘情况(计划)
本文档涵盖涉及设备丢失、设备吊销、密码重置和账户重置的边缘情况。这些问题密切相关,我们将一并讨论。
我们将各种重置机制称为“边缘情况”,因为它们很少发生,但不幸的是,它们需要大量工作才能正确处理。
重要提示! 本文档的大部分内容尚未实现。我们非常忙,尚未完成系统的所有方面。但是,标准和强制密码更改机制确实有效。在此期间,偷走未锁定手机的坏人可能会造成很大破坏。
账户观察期(Probation)
账户观察期的目的是防止坏人偷走一台设备,然后利用优势获得对账户的完全控制。例如,使用未锁定的手机,攻击者可以更改口令、吊销旧设备并添加新设备。
进入观察期。当用户从已配置的设备“强制重置”其口令,并且他们拥有多个当前已配置的设备时,用户进入观察期。服务器在此转换时发送电子邮件和推送通知,提醒用户为什么开始观察期、持续多长时间以及如何提前结束它。
观察期期间。观察期持续 5 天,在此期间,用户无法吊销设备(即,他们无法吊销 sibkey 或 subkey 签名),无法重置其账户,也无法更改其电子邮件地址。
离开观察期。如果发生以下情况,用户账户将离开观察期:
- 指定的超时时间已过;
- 在观察期开始之前授权的设备签署了“提前释放”声明;
- 或者如果用户证明了对观察期开始前使用的口令的知悉。
如果用户在超时之前离开观察期,他/她可以选择同时吊销导致进入观察期的设备(假设它被盗并由对手控制)。
口令更改
Keybase 上的口令并不常用,但它们具有以下重要作用:
- 本地密钥安全 (LKS)。口令锁定桌面机器上的本地密钥。因此,要“解锁”密钥,用户需要输入他/她的 Keybase 口令。用户可以勾选“记住我的口令”框,以便这种解锁可能只发生一次。
- 登录。虽然登录通常通过公钥身份验证进行,但也可能通过口令进行。
- 签名吊销。每当用户想要吊销签名时,他/她都需要证明知道当前的口令。这是为了防止刚刚偷走用户手机的攻击者取消授权用户的其他设备。
- 账户重置。口令知识证明是账户重置所需的两个因素之一。
- 标准口令更新。如果用户知道他/她当前的口令,他/她可以在不受太多干扰的情况下更新为新口令。
- 更改电子邮件地址。用户需要证明知道当前的口令,然后才能更改电子邮件地址(这是一个通常的要求)。
- 擦除 KBFS 历史记录。永久擦除 KBFS 历史记录需要口令。仅仅
rm一个文件是不行的,因为仍然存在该文件的快照。
标准口令更改
在标准口令重置中,用户证明知道旧口令并设置新口令。用户账户的许多内容都会发生变化,例如:LKS 服务器半部分;加密的 LKS 客户端半部分;以及用户在服务器存储的口令哈希。但是,账户不会进入观察期模式。
强制口令更改
在强制口令更新中,用户忘记了他/她的口令,必须将其替换为新口令。如果她可以访问未锁定的签名密钥,她就可以这样做。同样的服务器端更改需要发生,但此外,账户进入观察期模式。
更改电子邮件地址
如果用户证明知道当前的口令,并且不在观察期内,则可以更改其电子邮件地址。
设备吊销
要吊销设备,用户必须吊销最初配置该设备的签名。要吊销签名,用户必须:
- 有权访问有效的签名 sibkey 密钥(可以是设备密钥或备份密钥)
- 拥有有效的会话
- 证明知道当前的口令哈希
- 不处于观察期状态
最后两点结合起来,保护用户免受攻击,即爱丽丝(Alice)恢复了鲍勃(Bob)的设备,然后开始吊销(立即)鲍勃的其他设备,将他锁定在他的账户之外。爱丽丝必须在约 5 天的观察期等待期内持续进行此攻击。
备份密钥
每个用户都应该为其账户配置一对备份密钥。当他们首次注册时不会被要求这样做,但在使用系统一段时间后应该这样做。预期的用途是将备份密钥写在一张纸上,然后藏在抽屉或保险箱中。实际上,11 个随机生成的单词序列可以扩展为所需的备份密钥,但至关重要的是,该口令至少具有 128 位的真实熵,因此不应信任弱的人工生成的熵。
备份密钥与设备密钥的不同之处在于它们不受本地密钥安全的保护。只要能拿到写有备份密钥的纸张,就足以使用该密钥。
除此之外,备份密钥的行为类似于常规密钥。
实现
备份密钥生成如下:
- 从 BIP0039 字典中挑选 11 个随机单词。
- 通过 scrypt(使用空盐)扩展密钥
- 使用 32 字节作为秘密 EdDSA 密钥,使用 32 字节作为秘密 Curve25519 DH 密钥。
- 将相应的公钥签署到签名链中。
因此,拥有步骤 1 中的 11 个秘密单词足以重新生成步骤 3 中的签名和加密密钥。
账户重置
在账户重置中,用户必须从头开始。她必须重新配置所有设备;重新证明所有身份;并将数据重新上传到 KBFS。这显然是不惜一切代价要避免的情况,我们不希望攻击者能够为受害者发起这种情况。
简易重置
如果用户:(1) 丢失了所有活动设备;(2) 没有备份密钥,但 (3) 确实记得他们的口令,那么他们可能会发现自己处于可重置的位置。在这种情况下,如果用户:(1) 可以证明知道当前活动的口令;(2) 可以证明拥有电子邮件账户(通过点击链接);并且 (3) 不在观察期内,那么他们可以立即重置其账户。
绝境重置
在绝境重置中,用户唯一拥有的就是对其电子邮件账户的访问权限。在这种情况下,我们能做的最好的事情就是让他们点击并通过请求访问核按钮。这是一个糟糕的情况。我能想到的最好的回应是:
- 用户点击“绝境账户重置”
- 如果他们有 twitter 证明
- 发送推文:“@bob 我们将按照您的指示在 7 天内重置您的 Keybase 账户。如果这是错误的,请访问您的设置页面。”
- 当日期临近时发送类似的警告。
- 在接下来的一周里,每天向用户发送一封电子邮件:
- 如果他们点击所有 7 次的“继续”链接,那么就继续并清除它。
- 否则,放弃清除协议。
用户通过此协议受到攻击的唯一方式是用户将对其电子邮件账户的控制权丢失给攻击者 7 天或更长时间。攻击者需要向用户隐藏这些电子邮件,并在用户点击“取消”链接之前点击“继续”链接。