通行密钥工作原理:全面解析无密码未来的技术核心
密码与通行密钥的根本区别
传统密码认证要求用户将秘密(密码)共享给依赖方(网站/应用),依赖方需在身份管理系统中存储该密码以供登录验证。无论密码是否加密,此过程均存在共享秘密风险——历史上多数重大数据泄露均源于恶意方获取共享密码。
通行密钥采用零知识认证(ZKA)机制:用户秘密(私钥)永不共享给依赖方,仅需向依赖方证明持有该秘密即可完成认证。这从根本上杜绝了密码钓鱼和短信钓鱼等风险。
公钥加密:通行密钥的技术基石
通行密钥基于公钥加密技术,每对密钥包含:
- 公钥:可公开分发,用于加密消息或验证签名
- 私钥:仅用户持有,用于解密消息或生成数字签名
加密流程:
- 依赖方使用用户公钥加密随机挑战值
- 用户使用私钥解密并签名该值
- 依赖方用公钥验证签名,确认用户持有私钥
此过程确保:公钥无法反向推导私钥,且私钥始终由用户设备本地保护。
四大核心工作流程
1. 发现与接入
依赖方对通行密钥功能的宣传和接入方式无统一标准,用户体验和术语可能存在差异。
2. 注册流程
用户为特定依赖方创建通行密钥(即生成公钥/私钥对),公钥发送至依赖方存储,私钥保留在用户认证器中。
3. 认证流程
登录时依赖方发送加密挑战,用户端使用私钥解密并签名,依赖方用公钥验证签名完成认证。
4. 删除管理
支持清理未使用或多余的通行密钥,保持凭证库整洁。
技术标准与底层架构
通行密钥依赖两大核心标准:
- WebAuthn:W3C制定的无密码认证标准,通行密钥是其合规凭证
- CTAP:FIDO联盟制定的客户端到认证器协议,用于标准化设备间交互
通行密钥因此被称为FIDO2合规凭证,结合了WebAuthn的认证框架和CTAP的设备互操作性。
认证器类型与选择策略
认证器是执行加密操作的关键组件,分为三类:
- 平台认证器:操作系统内置(如Windows Hello、macOS钥匙串)
- 虚拟认证器:第三方密码管理器(如1Password、Bitwarden)兼任
- 漫游认证器:物理硬件设备(如YubiKey、Google Titan)
技术实现示例
本系列演示环境采用:
- 依赖方:Shopify.com
- 客户端:Google Chrome
- 认证器:Bitwarden密码管理扩展
- 操作系统:macOS
等效替代方案(如PayPal+Firefox+NordPass+Windows)用户体验基本一致,体现通行密钥的跨平台一致性。
术语简化与聚焦
为降低理解门槛,本系列作如下简化:
- “客户端”统一称为“浏览器”
- “依赖方”交替使用“网站/应用”等通俗术语
- 忽略非必要技术细节(如nonce随机数、attestation证明)
下一篇将探讨如何检测依赖方是否支持通行密钥,并以Shopify为例演示发现流程。