Hasty Briefsbeta

双语

Things I learnt about passkeys when building passkeybot

5 months ago
  • #security
  • #authentication
  • #passkeys
  • 苹果设备中的安全飞地处理器(SEP)能安全创建和存储密钥,需通过生物识别/密码进行验证
  • 用户存在性(UP)与用户验证(UV)的区别:UP只需点击按钮,UV需重新验证生物识别/密码
  • 认证器是存储密钥对并签署质询的硬件/软件,浏览器会统一不同认证器的API接口
  • 凭证认证可证明创建通行密钥的硬件,但可能被用于设备追踪,苹果默认禁用此功能
  • 通行密钥仅用于身份验证而非通用签名,质询数据需包含至少16字节的随机数
  • 被篡改的JS代码可能诱骗用户签署虚假质询,因为认证器不会显示被签署的具体内容
  • Chrome的即时调解机制可让用户快速登录通行密钥账户,系统会根据密钥数量返回不同响应
  • 相关源请求(RORs)允许域名定义其他可创建通行密钥的域,但该功能不支持HTTP协议及iOS18/火狐浏览器
  • 通行密钥可存储在邻近设备上,通过蓝牙进行签名而无需传输密钥本身
  • Signal API的设计暗示可能无需确认即可删除通行密钥,以避免数据泄露风险
  • user.id和userHandle实现多通行密钥映射到同一账户,这对浏览器界面分组至关重要
  • crypto.subtle.generateKey创建不可导出的密钥,可防止私钥提取但允许签名操作
  • PKCE(代码交换证明密钥)使用动态密钥保护令牌安全,是OAuth协议后期加入的安全补丁
  • 数字凭证API可访问操作系统钱包中的证件信息,实现凭证验证而无需共享原始数据