密码学在密码钥匙背后的原理

主要观点:

  • 加密通常被认为是密码学的首要任务,而真实性同样重要,密码存在被钓鱼攻击和数据泄露的问题,这促使了密码钥匙(passkeys)的出现。
  • 本文将探讨密码钥匙背后的密码学原理、所提供的保障以及可利用其进行的有趣密码学操作。
  • 密码钥匙本质上是用于生成数字签名的密钥对,WebAuthn 规范为其提供了关键的安全属性以解决钓鱼问题。
  • 存在不同类型的认证器,各有优缺点,平台认证器和漫游认证器在安全性和便利性上有所不同。
  • 密码钥匙并非完美的安全解决方案,仍存在一些攻击场景,如浏览器攻击、认证器被攻击等,同时存在凭证 ID 冲突的问题。
  • WebAuthn 支持定义扩展,可用于生成凭证和执行认证等操作,但这些扩展是可选的,且规范仍在发展中。

关键信息:

  • 密码钥匙通过在注册时保存公钥和标识符,在认证时提供挑战并等待签名响应来实现用户认证,数字签名能防止重放攻击且不泄露敏感信息,但单独的数字签名不足以解决钓鱼问题。
  • WebAuthn 规范下,用户通过浏览器在设备上使用认证器生成密码钥匙的密钥对并创建数字签名,通过起源绑定解决钓鱼问题,且仅允许使用 HTTPS 的起源进行请求。
  • 认证器类型包括平台认证器(在用户设备内部,如 iCloud Keychain 等)和漫游认证器(独立的硬件设备,如 YubiKeys 等),各有优缺点。
  • 密码钥匙存在一些威胁模型,如浏览器攻击、认证器被攻击、凭证 ID 冲突等,网站需采取相应措施,如拒绝重复的凭证 ID 注册等。
  • WebAuthn 支持定义扩展,如prflargeBlob等,可用于派生或存储静态加密密钥,但实现真正的端到端安全仍存在困难,需考虑恶意服务器等因素,且扩展是可选的,支持情况因浏览器和认证器而异。

重要细节:

  • 密码钥匙的注册和认证过程中,网站与认证器之间的交互细节,如浏览器与认证器的通信协议(FIDO Alliance 的 Client to Authenticator Protocol)。
  • 不同类型认证器的具体示例和特点,包括平台认证器的便利性与安全性风险,漫游认证器的高安全性隔离但可能丢失或损坏。
  • 浏览器攻击场景中,恶意浏览器或扩展可能欺骗用户进行错误的认证;认证器被攻击时,如假冒硬件钥匙或被恶意软件攻击,可能导致私钥泄露。
  • prf扩展基于hmac-secret扩展,可用于计算 HMAC-SHA-256;largeBlob扩展可用于存储敏感数据。
  • 对于密码钥匙的采用,用户应选择合适的认证方式,开发者应实现账户恢复机制,并考虑更广泛的威胁模型,如恶意服务器等。

建议:

  • 用户应采用密码钥匙,开发者应在可能的情况下支持密码钥匙,硬件安全钥匙在高价值应用中提供最强保护,平台认证器提供更好的用户体验和备份能力。
  • 在未受信任的设备上进行认证时,使用单独设备的密码钥匙并通过其显示验证认证请求。
  • 开发者在实施密码钥匙时,需考虑不同浏览器和认证器对扩展的支持情况,随着 WebAuthn 的发展,新的扩展将带来更多加密应用。
阅读 51
0 条评论