受信任设备 SSO 允许用户使用 SSO 进行身份验证,并使用设备存储的加密密钥解密其密码库,而无需输入主密码。受信任设备必须在登录尝试前注册,或通过几种不同的方法获得批准。
受信任设备 SSO 可为企业终端用户提供零知识和端到端加密的无密码体验。这可以防止用户因忘记主密码而被锁定,让他们享受简化的登录体验。
受信任设备 SSO 适用于云组织,未来版本将支持自托管组织。
开始使用受信任设备
要开始使用受信任设备 SSO:
工作原理
当某个新用户加入组织时,组织会使用公钥对其账户加密密钥进行加密,从而创建账户恢复密钥(了解更多)。账户恢复是启用受信任设备 SSO 的先决条件。
然后询问用户是否想要记住或信任此设备。当他们选择这样做时:
客户端生成新的设备密钥。该密钥永远不会离开客户端。
客户端生成新的 RSA 密钥对:设备私钥和设备公钥。
用户的账户加密密钥使用未加密的设备公钥进行加密,然后将结果值作为公钥-已加密的用户密钥发送到服务器。
设备公钥使用用户的账户加密密钥进行加密,然后将结果值作为用户密钥-已加密的公钥发送到服务器。
设备私钥使用第一个设备密钥进行加密,然后将结果值作为设备密钥-已加密的私钥发送到服务器。
最重要的是,当用户开始登录时,公钥-已加密的用户密钥和设备密钥-已加密的私钥将从服务器发送到客户端。
如果用户需要轮换其账户加密密钥,将使用用户密钥-已加密的公钥。
当某个用户在已受信任的设备上使用 SSO 进行身份验证时:
用户的公钥-已加密的用户密钥(用于解密密码库数据的账户加密密钥的加密版本)从服务器发送到客户端。
用户的设备密钥-已加密的私钥(解密公钥-已加密的用户密钥所需的未加密版本)从服务器发送到客户端。
客户端使用设备密钥对设备密钥-已加密的私钥进行解密,设备密钥从未离开过客户端。
现在未加密的设备私钥用于解密公钥-已加密的用户密钥,从而产生用户的账户加密密钥。
当某个用户使用 SSO 进行身份验证,并选择使用未受信任的设备(即设备对称密钥不存在于该设备上)解密其密码库时,他们需要选择一种方法来批准该设备,并选择信任该设备,以便将来无需进一步批准即可使用。接下来会发生什么取决于所选的选项:
从其他设备批准:
触发此处记录的流程后,客户端就获得并解密了账户加密密钥。
用户现在可以使用解密后的账户加密密钥解密其密码库数据。如果用户选择信任该设备,则会按照入职选项卡中的说明与客户端建立信任。
请求管理员批准:
发起请求的客户端向 Bitwarden 数据库中的验证请求表 POST 一个请求,其中包括账户电子邮件地址、唯一的身份验证请求公钥ª 和访问代码。
请求获得管理员批准后,被批准客户端会使用请求中包含的身份验证请求公钥对用户的账户加密密钥进行加密。
然后,被批准客户端将加密后的账户加密密钥 PUT 到验证请求记录,并标记为请求已完成。
发起请求的客户端 GET 到加密后的账户加密密钥,然后使用身份验证请求私钥ª 对它进行本地解密。
使用解密后的账户加密密钥,与客户端建立信任关系,详见入职选项卡。
ª - 身份验证请求公钥和私钥是为每一个无密码登录请求生成的唯一密钥,其存在时间与请求的存在时间相同。如果请求未被批准或被拒绝,请求将在 15 分钟后过期并从数据库中清除。
使用主密码批准:
按照安全白皮书中「用户登录」部分的记录,获取并解密用户的账户加密密钥。
使用解密后的账户加密密钥,按照入职选项卡中的说明与客户建立信任。
当某个用户轮换其账户加密密钥时,正常轮换过程如下:
用户密钥-已加密的公钥从服务器发送到客户端,然后使用旧的账户加密密钥(又称用户密钥)对其解密,得到设备公钥。
使用未加密的设备公钥对用户的新的账户加密密钥进行加密,然后将结果值作为新的公钥-已加密的用户密钥发送到服务器。
使用用户的新的账户加密密钥对设备公钥进行加密,然后将结果值作为新的用户密钥-已加密的公钥发送到服务器。
为此用户持久保存在服务器上的所有其他设备的受信任设备加密密钥都会被清除。这样,服务器上就只保留该单个设备所需的三个密钥(公钥-已加密的用户密钥、用户密钥-已加密的公钥和在此过程中未被更改的设备密钥-已加密的私钥)。
任何现在未受信任的客户端都必须通过批准选项卡中说明的方法之一重新建立信任。
对主密码的影响
虽然使用受信任设备 SSO 可以消除对主密码的需求,但并非在所有情况下都能消除主密码本身:
如果用户是在受信任设备 SSO 激活之前入职的,或者如果他们从组织邀请中选择了创建账户,则他们的账户将保留其主密码。
如果用户是在受信任设备 SSO 激活之后入职的,并从组织邀请中选择登录 → 企业 SSO 进行 JIT 配置,则他们的账户将无需拥有主密码。如果您更改为主密码成员解密选项,只要这些用户仍然是组织的成员,系统就会在他们登录时提示创建一个主密码(了解更多)。
对于那些因使用受信任设备 SSO 而没有主密码的账户,将其从您的组织中移除或撤销其访问权限将切断其对 Bitwarden 账户的所有访问权限,除非:
用户在账户恢复后至少登录一次,以便完全完成账户恢复流程。
此外,除非在将用户从组织中删除之前执行上述步骤,否则用户将无法重新加入您的组织。在这种情况下,用户将需要删除其账户,并接收一个新的邀请以创建账户并加入您的组织。
对其它功能的影响
根据您的客户端内存中是否有主密码哈希(由客户端应用程序最初被访问的方式决定),它可能会表现出以下行为变化:
Bitwarden 客户端应用程序中有许多功能通常需要输入主密码才能使用,包括导出密码库数据、更改两步登录设置、检索 API 密钥等。
如果用户不使用主密码访问客户端,所有这些功能都将使用基于电子邮件的 TOTP 验证来取代主密码确认。
一般情况下,被锁定的密码库可以使用主密码解锁。如果用户不使用主密码访问客户端,则被锁定的客户端应用程序只能使用 PIN 或生物识别解锁。
如果客户端应用程序既没有启用 PIN 也没有启用生物识别,则密码库将始终注销而不是锁定。解锁和登录始终需要互联网连接。