Bitwarden 帮助中心中文版
⮐ Bitwarden Help Center个人主页联系我
  • 关于
  • 首页
  • 发行记录
  • 账户访问
    • 创建 Bitwarden 账户
    • 选择服务器
    • 登录 & 解锁
      • 主密码
      • 忘记主密码
      • 自动注销或锁定
      • 新设备登录保护
      • 使用单点登录
        • 使用 SSO 登录
        • 添加受信任设备
      • 更多登录选项
        • 登录到多个账户
        • 使用设备登录
        • 使用通行密钥登录
        • 使用紧急访问登录
      • 更多解锁选项
        • 使用生物识别解锁
        • 使用 PIN 码解锁
    • 两步登录
      • 为何要使用两步登录?
      • 设置两步登录
        • 两步登录方式
        • 两步登录 - 验证器
        • 两步登录 - 电子邮箱
        • 两步登录 - Duo
        • 两步登录 - YubiKey
        • 两步登录 - 通行密钥
      • 获取恢复代码
      • 无法访问两步登录
      • 两步登录 FAQ
  • Password Manager
    • Password Manager 概述
    • 入门
      • Password Manager 网页 App
      • Password Manager 浏览器扩展
      • Password Manager 移动 App
      • Password Manager 桌面 App
    • 密码库基础
      • 密码库项目
      • 用户名 & 密码生成器
      • 自定义字段
      • 集成的身份验证器
      • 文件附件
      • 共享
      • 集合
    • 密码库管理
      • 文件夹
      • 收藏
      • 同步密码库
      • 检索密码库
      • 密码库健康报告
    • 导入 & 导出
      • 导入数据到密码库
      • 导入指南
        • 从 LastPass 导入
        • 从 1Password 导入
        • 从 Keeper 导入
        • 从 Dashlane 导入
        • 从 Google Chrome 导入
        • 从 macOS & Safari 导入
        • 从 Firefox 导入
        • 从 Password Safe 导入
        • 从 Myki 导入
      • 导出密码库数据
      • 加密导出
      • 调整 Bitwarden .csv 或 .json
      • *Bitwarden 导入器工具
      • 导入 & 导出 FAQ
    • 自动填充
      • 从 ... 自动填充
        • 从浏览器扩展自动填充
        • 从浏览器扩展自动保存
        • 从 iOS App 自动填充
        • 从 Android App 自动填充
      • 更多自动填充选项
        • 自动填充通行密钥
        • 自动填充支付卡 & 身份
        • 自动填充自定义字段
        • 自动填充基本验证提示
        • 对指定网站屏蔽自动填充
        • 对指定网站屏蔽自动保存
        • 键盘快捷键
      • 自动填充故障排除
        • 用于自动填充的 URI
        • 禁用浏览器的内置密码管理器
        • Android 自动填充故障排除
      • 自动填充 FAQ
    • Bitwarden Send
      • 关于 Send
      • 创建 Send
      • 接收 Send
      • Send 生命周期
      • Send 隐私
      • CLI 上的 Send
      • Send 加密
      • Send FAQ
    • 开发者工具
      • Password Manager API
      • Password Manager CLI
      • CLI 身份验证挑战
      • 用于 CLI 验证的个人 API 密钥
      • SSH 代理
    • 更多
      • Password Manager FAQ
      • 更改 App 主题
      • 本地化
      • DuckDuckGo macOS 浏览器集成
      • Apple Watch 上的 Bitwarden
      • 在 Firefox 隐私窗口中使用 Bitwarden
      • 离线使用 Bitwarden
      • Safari 网页扩展
      • uMatrix 和 NoScript 访问规则
      • 与 Bitwarden 支持排除移动端故障
  • Bitwarden Authenticator
    • Bitwarden Authenticator
    • 导入 & 导出
    • FAQ
  • Secrets Manager
    • Secrets Manager 概述
    • 入门
      • Secrets Manager 快速入门
      • 开发人员快速入门
      • 登录 Secrets Manager
      • 管理您的组织
    • 您的机密
      • 工程
      • 机密
      • 机器账户
      • 访问令牌
      • 机密解密
    • 导入 & 导出
      • 导入数据
      • 导出数据
    • 开发人员工具
      • Secrets Manager CLI
      • Secrets Manager SDK
    • 集成
      • Ansible
      • GitHub Actions
      • GitLab CI/CD
      • Secrets Manager Kubernetes Operator
    • 更多
      • Secrets Manager FAQ
  • 管理控制台
    • 组织快速入门
    • 组织基础
      • 组织
      • 集合
      • 群组
      • 企业策略
      • 集合管理
    • 用户管理
      • 用户管理
      • 成员角色和权限
      • 声明域名
      • 声明账户
      • 账户恢复
      • SCIM
        • 关于 SCIM
        • JumpCloud SCIM 集成
        • Microsoft Entra ID SCIM 集成
        • Okta SCIM 集成
        • OneLogin SCIM 集成
        • Ping Identity SCIM 集成
      • 目录连接器
        • 关于目录连接器
        • 目录连接器桌面 App
        • 目录连接器 CLI
        • 目录连接器文件存储
        • 同步选项和筛选器
        • 清除同步缓存
        • 调度同步
        • 使用 AD 或 LDAP 同步
        • 使用 Microsoft Entra ID 同步
        • 使用 Google Workspace 同步
        • 使用 Okta 同步
        • 使用 OneLogin 同步
      • 入职和继任概述
    • 导入 & 导出
      • 导入数据到组织
      • 导出密码库数据
      • 调整 Bitwarden .csv 或 .json
    • SSO 登录
      • 关于 SSO 登录
      • SAML 2.0 配置
      • OIDC 配置
      • 成员解密选项
      • 声明域名
      • 实施指南
        • ADFS SAML 实施
        • Auth0 SAML 实施
        • AWS SAML 实施
        • Duo SAML 实施
        • Google SAML 实施
        • JumpCloud SAML 实施
        • Keycloak SAML 实施
        • Microsoft Entra ID SAML 实施
        • Okta SAML 实施
        • OneLogin SAML 实施
        • Ping Identity SAML 实施
        • ADFS OIDC 实施
        • Microsoft Entra ID OIDC 实施
        • Okta OIDC 实施
        • Ping Identity OIDC 实施
        • Cloudflare Zero Trust SSO 实施
      • 受信任设备
        • 关于受信任设备
        • 设置受信任设备 SSO
        • 批准受信任设备
      • *在您的 IdP 上配置 Bitwarden(SAML 2.0)
      • SSO 登录 FAQ
    • 报告
      • 密码库健康报告
      • 事件日志
      • 监控事件日志
      • 配置 SIEM
        • Elastic SIEM
        • Microsoft Sentinel SIEM
        • Panther SIEM
        • Rapid7 SIEM
        • Splunk SIEM
    • 最终用户入职
      • 关于本章节
      • 欢迎电子邮件模板
      • 管理团队入职电子邮件
      • 最终用户采用电子邮件
      • 客户激活套件
      • 入职流程
    • 部署客户端 App
      • 部署浏览器扩展
        • 使用 GPO、Linux 策略和 .plist 文件部署浏览器扩展
        • 使用 Intune 部署浏览器扩展
      • 部署桌面端 App
        • 使用 Intune 部署桌面端 App
      • 部署移动端 App
        • 使用 Intune 部署移动端 App
      • 连接托管设备
      • 使用设备管理停用浏览器密码管理器
    • Bitwarden 公共 API
    • 更多
      • 组织 FAQ
      • 链接到项目
      • 企业版 Bitwarden 功能数据表
      • 团队版和企业版迁移指南
      • LastPass 企业版迁移指南
      • 组织所有者离职时的访问权限管理
      • 组织赞助的家庭计划
      • PoC 项目清单
      • 为生产准备试用组织
      • *团队版 Bitwarden 对比指南
  • 提供商门户
    • 提供商门户概览
    • 提供商门户快速入门
    • 提供商用户
    • 添加客户组织
    • *添加现有组织
    • 持续管理
    • 取消链接客户组织
    • 提供商事件日志
    • 提供商计费
    • 提供商 FAQ
    • 业务单元门户
      • 业务单元门户
      • 业务单元门户快速入门
  • 自托管
    • 部署计划
      • 自托管 Bitwarden
      • 自托管检查清单
      • 自托管组织
      • 迁移到新服务器
    • 部署 & 配置
      • 使用 Docker 部署
        • Linux 标准部署
        • Linux 手动部署
        • Linux 离线部署
        • Windows 标准部署
        • Windows 离线部署
        • Unified 部署 (Beta)
      • 使用 Helm 部署
        • 使用 Helm 自托管
        • AWS EKS 部署
        • Azure AKS 部署
        • OpenShift 部署
        • 添加 rawManifest 文件
      • 配置选项
        • 环境变量
        • 证书选项
        • 数据库选项
        • 连接到外部 MSSQL 数据库
        • 配置推送中继
        • Kerberos 集成
      • 可选功能
        • 自托管 Send
        • 自托管 SCIM
        • 自托管家庭赞助
    • 连接客户端
      • 连接托管设备
      • 连接个人客户端
    • Key Connector
      • 关于 Key Connector
      • 部署 Key Connector
    • 系统管理员门户
    • 组织或高级用户许可证
    • 更新服务器
    • 备份服务器数据
    • *作为 MSP 部署 Bitwarden
    • 托管 FAQ
  • 安全
    • Bitwarden 安全白皮书
    • 数据
      • 加密的数据
      • 管理数据
      • 数据存储
      • 网站图标的数据隐私
    • 加密
      • 加密协议
      • 加密密钥算法
      • 加密密钥轮换
      • 账户指纹短语
    • 软件开发
      • 服务器 & 客户端版本
      • 软件发布支持
    • 可信任的通讯
      • Bitwarden 域名、端点和 URL
      • 识别来自 Bitwarden 的合法电子邮件
      • 来自 Bitwarden 服务器的电子邮件
    • 合规、审计和认证
    • Bitwarden 分包商
    • 服务器地理位置
    • 安全 FAQ
  • 计划和定价
    • Password Manager
      • Password Manager 计划
      • 从个人升级到组织
      • 兑换家庭赞助
      • 高级会员续费
    • Secrets Manager
      • Secrets Manager 计划
      • 注册 Secrets Manager
    • Bitwarden 经销商
    • 开始企业版试用
    • 组织续费
    • 更新计费信息
    • 税费计算
    • 删除账户或组织
    • 取消订阅
    • 计费 FAQ
    • *更新 Bitwarden 计划 (2019-2020)
    • *更新 Password Manager 计划 & 订阅
    • *哪种计划适合我?
  • 学习中心
    • 关于学习中心
    • 使用 Bitwarden 的第一步
    • 了解 Password Manager
    • Password Manager
      • Bitwarden 入门:个人用户
      • Bitwarden 入门:管理员
      • Bitwarden 入门:成员
      • Bitwarden 入门:经销商或 MSP
    • Bitwarden 高级用户
    • 面向企业管理员的 Bitwarden
    • 了解 Secrets Manager
    • 面向 MSP 的 Bitwarden
    • 了解 Passwordless.dev
  • *杂项
    • 异常流量错误
    • 11 月弃用通知
    • Bitwarden 术语表
    • 迁移脚本
    • Bitwarden 101 视频系列-入门
    • Secrets Manager Beta 版注册
    • 未分配的密码库项目已移至管理控制台
    • 原生移动 App
    • *通行密钥 FAQ
  • 附录
    • 翻译约定
    • 资源
由 GitBook 提供支持
在本页
  • PBKDF2
  • Argon2id
  • 更改 KDF 算法
  • 低 KDF 迭代
  1. 安全
  2. 加密

加密密钥算法

上一页加密协议下一页加密密钥轮换

最后更新于2个月前

对应的官方文档地址

Bitwarden 首先在创建账户时使用密钥派生函数 (KDF) 从输入的主密码中派生出账户的主密钥,作为账户主密码哈希的输入()。每当用户通过身份验证时,例如解锁密码库或满足时,都会重复该过程,以便可以将新派生的哈希值与最初派生的哈希值进行比较。如果它们匹配,则用户通过身份验证。

KDF 被用来阻止针对主密码的暴力或字典攻击。KDF 迫使攻击者的机器为每次密码猜测计算大量的哈希值,从而增加攻击者的成本。

目前有两种 KDF 算法可用于 Bitwarden:PBKDF2 和 Argon2。每种算法都有一系列可用选项,可用于增加攻击者的时间和费用,或「工作因素」。

PBKDF2

基于密码的密钥派生函数 2 (PBKDF2) 由 NIST 推荐,已被 Bitwarden 实现,只要未改变其默认值,它就能满足 FIPS-140 的要求。

PBKDF2 已被 Bitwarden 实现,其工作原理是将您的主密码与您的用户名混合,并通过单向哈希算法 (HMAC-SHA-256) 运行结果值以创建固定长度的哈希值。该值再次用您的用户名加盐,并散列可配置的次数(KDF 迭代)。所有迭代后的结果值就是您的主密钥,它充当主密码散列的输入,用于在用户登录时验证该用户()。

默认情况下,Bitwarden 设置为迭代 600,000 次,这是 OWASP 为 HMAC-SHA-256 实现推荐的。只要用户不将此值设置得更低,实现就符合 FIPS-140,但如果您选择更改设置,这里有一些提示:

  • 更多的 KDF 迭代将同时增加攻击者破解密码所需的时间,以及合法用户登录所需的时间。

  • 我们建议您以 100,000 为增量增加该值并测试您的所有设备。

Argon2id

Argon2 是 2015 年密码哈希竞赛的获胜者。该算法共有三个版本,Bitwarden 已经实现了 OWASP 推荐的 Argon2id。Argon2id 是其他版本的混合体,结合了数据相关和数据无关的内存访问,这使其具有 Argon2i 对侧通道缓存定时攻击的一些抵抗力以及 Argon2d 对 GPU 破解攻击的大部分抵抗力(来源)。

Argon2 已被 Bitwarden 实现,其工作原理是将您的主密码与您的用户名混合,并通过单向哈希算法 (BLAKE2b) 运行结果值以创建固定长度的哈希值。

Argon2 分配一部分内存(KDF 内存)然后用已计算的哈希值填充它直到填满。这是重复的,从它在第一个停止的内存的后续部分开始,在多个线程(KDF 并行)上迭代多次(KDF 迭代)。所有迭代后的结果值是您的主密钥,它充当主密码哈希的输入,用于在用户登录时验证该用户()。

默认情况下,Bitwarden 设置为分配 64 MB 内存,迭代 3 次,并跨 4 个线程执行此操作。这些默认值高于当前 OWASP 的推荐,但如果您要更改您的设置,这里有一些提示:

  • 增加 KDF 迭代将线性增加运行时间。

  • 您可以使用的 KDF 并行数量取决于您机器的 CPU。一般来说,最大并行数 = 核心数量 x 2。

  • iOS 会限制用于自动填充的 App 内存。从默认的 64 MB 增加迭代可能会导致在解锁密码库时出错。

更改 KDF 算法

2023-02-14:2023.2.0 及以后版本的 Bitwarden 客户端支持 Argon2,通过网页密码库切换到 Argon2 可能意味着其他客户端在更新之前无法加载您的密码库。通常在发布后一周内更新这些客户端。

要更改您的 KDF 算法,请导航至网页密码库的账户设置 → 安全 → 密钥页面。更改算法将重新加密受保护的对称密钥并更新身份验证哈希,就像正常的主密码更改一样,但不会轮换对称加密密钥,因此密码库数据不会被重新加密。有关重新加密数据的信息,请参阅此处。

当您更改了算法后,您将从所有客户端注销。尽管在更改算法时不存在轮换加密密钥所涉及的风险,但我们仍然建议事先导出您的密码库数据。

低 KDF 迭代

在 2023.2.0 版本中,根据已更新的 OWASP 指南,Bitwarden 将使用 PBKDF2 算法的账户的默认 KDF 迭代次数增加到了 600,000。这加强了密码库加密,以抵御拥有日益强大设备的黑客。如果您使用 PBKDF2 算法并将 KDF 迭代设置为低于 600,000,您将收到一条警告消息,鼓励您增加 KDF 设置。

如果您看到此消息,请选择更新 KDF 设置按钮并将 PBKDF2 迭代次数增加到至少 600,000,或者将您的 KDF 算法更改为具有默认设置的 Argon2id。当您保存这些更改时,您将从所有客户端被注销,因此请确保您知道您的主密码并且您的两步登录方式可用。

在对加密设置进行任何更改之前,建议您先备份您的个人保密码库数据。有关详细信息,请参阅导出密码库数据。

更改迭代次数有助于保护您的主密码免遭攻击者的暴力破解,但不应将其视为一开始就使用强主密码的替代方法。强大的主密码始终是您 Bitwarden 账户的第一道也是最好的防线。

主密码重新提示
了解更多
了解更多
了解更多