> For the complete documentation index, see [llms.txt](https://help.ppgg.in/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.ppgg.in/docs/admin-console/login-with-sso/trusted-devices/about-trusted-devices.md).

# 关于受信任设备

{% hint style="success" %}
对应的[官方文档地址](https://bitwarden.com/help/about-trusted-devices/)
{% endhint %}

受信任设备 SSO 允许用户[使用 SSO 进行身份验证](/docs/admin-console/login-with-sso/about-sso.md)，并使用设备存储的加密密钥解密其密码库，而无需输入主密码。受信任设备是指[经用户](/docs/account/log-in-and-unlock/using-single-sign-on/add-a-trusted-device.md)或[经管理员](/docs/admin-console/login-with-sso/trusted-devices/approve-a-trusted-device.md)批准的可用于无密码登录的 Bitwarden App，例如浏览器扩展或移动 App 的实例。即使位于同一台计算机或智能手机上，每个 Bitwarden App 都将作为独立的受信任设备，并拥有单独的批准权限。

受信任设备 SSO 可为企业终端用户提供零知识和端到端加密的无密码体验。这可以防止用户因忘记主密码而被锁定，让他们享受简化的登录体验。

## 开始使用受信任设备 <a href="#start-using-trusted-devices" id="start-using-trusted-devices"></a>

要开始使用受信任设备 SSO：

1. 为您的组织[设置受信任设备 SSO](/docs/admin-console/login-with-sso/trusted-devices/setup-sso-with-trusted-devices.md)。
2. 向管理员提供有关[如何批准设备请求](/docs/admin-console/login-with-sso/trusted-devices/approve-a-trusted-device.md)的信息。
3. 向最终用户提供有关[如何添加受信任设备](/docs/account/log-in-and-unlock/using-single-sign-on/add-a-trusted-device.md)的信息。

## 工作原理 <a href="#how-it-works" id="how-it-works"></a>

以下选项卡描述了不同的受信任设备程序中的加密过程和密钥交换：

{% tabs %}
{% tab title="入职" %}
当新用户加入组织时，会使用**组织公钥**对其账户加密密钥进行加密，从而创建**账户恢复密钥**（[了解更多](/docs/admin-console/manage-members/account-recovery/about-account-recovery.md)）。账户恢复是启用受信任设备 SSO 的先决条件。

然后询问用户是否想要记住或信任此设备。当用户选择信任时：

<div align="left" data-with-frame="true"><figure><img src="https://bitwarden.com/assets/2o9o8L0JZMvWZYJvfKGMzj/b7cab59682862c8e782331ed6a2ef9d9/td-create.png?w=960&#x26;fm=avif" alt=""><figcaption><p>创建受信任设备</p></figcaption></figure></div>

1. 客户端生成新的**设备密钥**。该密钥永远不会离开客户端。
2. 客户端生成新的 RSA 密钥对：**设备私钥**和**设备公钥**。
3. 用户的账户加密密钥使用未加密的设备公钥进行加密，然后将结果值作为**公钥-已加密的用户密钥**发送到服务器。
4. **设备公钥**使用用户的账户加密密钥进行加密，然后将结果值作为**用户密钥-已加密的公钥**发送到服务器。
5. **设备私钥**使用第一个设备密钥进行加密，然后将结果值作为**设备密钥-已加密的私钥**发送到服务器。

最重要的是，当用户开始登录时，**公钥-已加密的用户密钥**和**设备密钥-已加密的私钥**将从服务器发送到客户端。

如果用户需要轮换其账户加密密钥，将使用**用户密钥-已加密的公钥**。
{% endtab %}

{% tab title="登录" %}
当用户在已受信任的设备上使用 SSO 进行身份验证时：

<div align="left" data-with-frame="true"><figure><img src="https://bitwarden.com/assets/61SSa6ITlRaICIUoCzEiVp/746cf3ba3005b4118d20319e894c47c7/td-use.png?w=960&#x26;fm=avif" alt=""><figcaption><p>使用受信任设备</p></figcaption></figure></div>

1. 用户的**公钥-已加密的用户密钥**（用于解密密码库数据的账户加密密钥的加密版本）从服务器发送到客户端。
2. 用户的**设备密钥-已加密的私钥**（解密**公钥-已加密的用户密钥**所需的未加密版本）从服务器发送到客户端。
3. 客户端使用**设备密钥**对**设备密钥-已加密的私钥**进行解密，**设备密钥**从未离开过客户端。
4. 现在未加密的**设备私钥**用于解密**公钥-已加密的用户密钥**，从而产生用户的账户加密密钥。
5. 用户的账户加密密钥解密密码库数据。
   {% endtab %}

{% tab title="批准" %}
当用户使用 SSO 进行身份验证，并选择使用未受信任的设备（即**设备对称密钥**不存在于该设备上）解密其密码库时，他们需要选择一种方法来批准该设备，并选择信任该设备，以便将来无需进一步批准即可使用。接下来会发生什么取决于所选的选项：

* **从其他设备批准：**

1、触发[此处](/docs/account/log-in-and-unlock/more-log-in-unlock-options/log-in-with-device.md#how-it-works)记录的流程后，客户端就获得并解密了账户加密密钥。

2、用户现在可以使用解密后的账户加密密钥解密其密码库数据。如果用户选择信任该设备，则会按照**入职**选项卡中的说明与客户端建立信任。

* **请求管理员批准：**

1、发起请求的客户端向 Bitwarden 数据库中的验证请求表 POST 一个请求，其中包括账户电子邮件地址、唯一的**身份验证请求公钥**ª 和访问代码。

<div align="left" data-with-frame="true"><figure><img src="https://bitwarden.com/assets/1CgwXVCrjssDwsz2Aie4mV/aac6c3975c9a8d225074268c093cadc3/2025-04-30_09-33-37.png?w=1113&#x26;fm=avif" alt=""><figcaption><p>用户请求管理员批准（步骤 1）</p></figcaption></figure></div>

2、管理员可在设备批准页面上[批准或拒绝此请求](/docs/admin-console/login-with-sso/trusted-devices/approve-a-trusted-device.md)。

3、请求获得管理员批准后，被批准客户端会使用请求中包含的**身份验证请求公钥**对用户的账户加密密钥进行加密。

4、然后，被批准客户端将加密后的账户加密密钥 PUT 到验证请求记录，并标记为请求已完成。

<div align="left" data-with-frame="true"><figure><img src="https://bitwarden.com/assets/4Y9q6Y3KmLskDaqfF03YmJ/8a99742b2bf8e7394cb0988495dc13b0/2025-04-30_09-34-10.png?w=1110&#x26;fm=avif" alt=""><figcaption><p>管理员批准身份验证请求（步骤 3-4）</p></figcaption></figure></div>

5、发起请求的客户端 GET 到加密后的账户加密密钥，然后使用**身份验证请求私钥**<mark style="color:red;">**ª**</mark> 对它进行**本地**解密。

<div align="left" data-with-frame="true"><figure><img src="https://bitwarden.com/assets/7LNcFuhupPeR4DJhg2k4po/10ae5da219f1e5338e5cdf6554655e9f/2025-04-30_09-34-28.png?w=1114&#x26;fm=avif" alt=""><figcaption><p>用户收到管理员批准（步骤 5）</p></figcaption></figure></div>

6、使用解密后的账户加密密钥，与客户端建立信任关系，详见**入职**选项卡。

<mark style="color:red;">**ª**</mark> - **身份验证请求公钥**和**私钥**是为每一个无密码登录请求生成的唯一密钥，其存在时间与请求的存在时间相同。未被批准的请求，请求将在 1 周后过期。

* **使用主密码批准：**
  1. 按照安全白皮书中「[身份验证和解密](/docs/security/bitwarden-security-whitepaper.md#authentication-and-decryption)」部分的说明，获取并解密用户的账户加密密钥。
  2. 使用解密后的账户加密密钥，按照**入职**选项卡中的说明与客户建立信任。
     {% endtab %}

{% tab title="密钥轮换" %}
{% hint style="info" %}
只有拥有主密码的用户才能轮换其[账户加密密钥](/docs/security/encryption/encryption-key-rotation.md)。[了解更多](#impact-on-master-passwords)。
{% endhint %}

当用户轮换其[账户加密密钥](/docs/security/encryption/encryption-key-rotation.md)时，正常轮换过程如下：

1. **用户密钥-已加密的公钥**从服务器发送到客户端，然后使用旧的账户加密密钥（又称**用户密钥**）对其解密，得到**设备公钥**。
2. 使用未加密的**设备公钥**对用户的新的账户加密密钥进行加密，然后将结果值作为新的**公钥-已加密的用户密钥**发送到服务器。
3. 使用用户的新的账户加密密钥对**设备公钥**进行加密，然后将结果值作为新的**用户密钥-已加密的公钥**发送到服务器。
4. 随后，**公钥-已加密的用户密钥**会重新与每个受信任设备共享。
   {% endtab %}
   {% endtabs %}

### 受信设备使用的密钥 <a href="#keys-used-for-trusted-devices" id="keys-used-for-trusted-devices"></a>

本表格提供了有关上述过程中所使用的每一种密钥的更多信息：

| 密钥          | 详细信息                                                      |
| ----------- | --------------------------------------------------------- |
| 设备密钥        | AES-256 CBC HMAC SHA-256，长度为 512 位（其中密钥 256 位，HMAC 256 位） |
| 设备私钥和设备公钥   | RSA-2048 OAEP SHA1，长度为 2048 位                             |
| 公钥-已加密的用户密钥 | RSA-2048 OAEP SHA1                                        |
| 用户密钥-已加密的公钥 | AES-256 CBC HMAC SHA-256                                  |
| 设备密钥-已加密的私钥 | AES-256 CBC HMAC SHA-256                                  |

### 对主密码的影响 <a href="#impact-on-master-passwords" id="impact-on-master-passwords"></a>

虽然使用受信任设备 SSO 可以消除对主密码的需求，但并非在所有情况下都能消除主密码本身：

* 如果用户是在受信任设备 SSO 激活**之前**入职的，或者如果他们从组织邀请中选择了**创建账户**，则他们的账户将保留其主密码。
* 如果用户是在受信任设备 SSO 激活**之后**入职的，并从组织邀请中选择**登录** → **企业 SSO** 进行 [JIT 配置](/docs/admin-console/login-with-sso/login-with-sso-faqs.md#q-how-does-login-with-sso-work-for-new-users-just-in-time)，则他们的账户将无需拥有主密码。如果您更改为主密码[成员解密选项](/docs/admin-console/login-with-sso/sso-decryption-options.md)，只要这些用户仍然是组织的成员，系统就会在他们登录时提示创建一个主密码（[了解更多](/docs/admin-console/login-with-sso/trusted-devices/setup-sso-with-trusted-devices.md)）。

{% hint style="danger" %}
对于那些因使用受信任设备 SSO 而没有主密码的成员账户：

* [将其从您的组织中移除](/docs/admin-console/manage-members/user-management.md#offboard-users)将切断其对 Bitwarden 账户的所有访问权限，除非事先使用[账户恢复](/docs/admin-console/manage-members/account-recovery/about-account-recovery.md)功能为其分配了主密码，并且他们在被移除前至少使用该主密码登录过一次。

这些用户将无法重新加入您的组织，除非在将用户从组织中删除**之前**执行了上述步骤。如果未执行这些步骤，每个被移除的用户都需要[删除其账户](/docs/plans-and-pricing/delete-an-account-or-organization.md#delete-your-personal-account)，并接收新的邀请以创建账户并加入您的组织。

* 撤销对组织的访问权限，但不将其从组织中移除，仍允许他们登录 Bitwarden 并**只能**访问其个人密码库。
  {% endhint %}

* 如果使用账户恢复功能恢复了用户账户，就必须为其分配一个主密码。目前，有了主密码后，就无法将其从账户中移除，因此，为了避免出现这种结果，我们建议：(i) 指导用户将数据导出到备份；(ii) 彻底删除丢失的账户；(iii) 要求用户[使用受信任设备重新入职到您组织](/docs/account/log-in-and-unlock/using-single-sign-on/add-a-trusted-device.md)；(iv) 用户完成这些后，指导他们导入备份。

### 对其它功能的影响 <a href="#impact-on-other-features" id="impact-on-other-features"></a>

根据您的客户端内存中是否有主密码哈希（这取决于客户端应用程序最初被访问的方式），它可能会表现出以下行为变化：

<table><thead><tr><th width="193.199951171875">功能</th><th>影响</th></tr></thead><tbody><tr><td>验证</td><td><p>Bitwarden 客户端应用程序中有许多功能通常需要输入主密码才能使用，包括<a href="/pages/-M2Y4FOmBKYVlzD9lc3X">导出密码库数据</a>、更改<a href="/pages/-M2Y4kjP_eu7EbDQpAf7">两步登录设置</a>、检索 <a href="/pages/-MNXS6JdWzTcbyZ90wl1">API 密钥</a>等。</p><p></p><p>如果用户不使用主密码访问客户端，<strong>所有这些功能</strong>都将使用基于电子邮件的 TOTP 验证来取代主密码确认。</p></td></tr><tr><td>密码库锁定/解锁</td><td><p>一般情况下，被锁定的密码库可以使用主密码解锁。如果用户不使用主密码访问客户端，则被锁定的客户端应用程序只能使用 <a href="/pages/-MSVy8JVQI7l7YSVQu15">PIN</a> 或<a href="/pages/-MFThE99-hvAzcl1jj61">生物识别</a>解锁。</p><p></p><p>如果客户端应用程序既没有启用 PIN 也没有启用生物识别，则密码库将始终注销而不是锁定。解锁和登录<strong>始终</strong>需要互联网连接。</p></td></tr><tr><td>主密码二次验证</td><td>如果用户不使用主密码解锁其密码库，则<a href="/pages/-M8rzbXlTF4GL9Uyygb0#protect-individual-items">主密码二次验证</a>将被禁用。</td></tr><tr><td>更改电子邮箱地址</td><td><a href="#impact-on-master-passwords">没有主密码</a>的用户将<strong>无法</strong>更改他们的电子邮箱地址。</td></tr><tr><td>CLI</td><td><a href="#impact-on-master-passwords">没有主密码</a>的用户将<strong>无法</strong>访问密码管理器 CLI。</td></tr></tbody></table>
