FIDO协议QR码发起交易后续:连接流程、数据分析及替代方案问询
FIDO2 Passkey二维码登录技术问题解答
1. 手机与浏览器的连接通信流程
- 浏览器触发Passkey登录后,生成FIDO2跨设备认证请求,将请求参数编码为CBOR格式,转成十六进制字符串后封装成
FIDO:/+开头的内容,生成二维码展示 - 手机扫码解析字符串,提取CBOR数据,识别为跨设备认证请求
- 手机发起BLE(低功耗蓝牙)扫描,浏览器此时会广播固定的FIDO服务UUID,手机扫描到后发起配对连接
- 连接建立后,双方通过FIDO2的CTAP2协议交互:浏览器发送认证挑战、依赖方信息;手机验证用户身份(如Touch ID/Face ID),用对应Passkey的私钥生成签名后返回给浏览器
- 浏览器验证签名合法后,完成登录流程
2. CBOR解码后的数据解析
你解码得到的CBOR结构对应FIDO2跨设备认证请求的核心参数,各键值含义如下:
- 键0:
h'037E2EF7C65FA68E15ED9B9A4CB72234CCCA8F9B84C76252D52796509B3188AB07'
是依赖方公钥哈希(rpIdHash),由依赖方域名的SHA-256哈希截取前32字节生成,用来验证请求来自合法的依赖方网站 - 键1:
h'49AA2EF2DE617E4CBA2AE2683D3CED08'
是用户句柄哈希(userHandleHash),可选参数,用来快速定位对应的Passkey - 键2:2
是用户验证要求(userVerificationRequirement),值为2代表required,即必须完成用户身份验证(如生物识别、PIN码)才能继续 - 键3:1678113678
是请求时间戳,Unix时间格式,用于防止重放攻击 - 键4:true
表示允许跨设备认证(crossPlatformAllowed),确认当前请求支持用跨设备Passkey完成登录 - 键5:"mc"
是传输介质标识,这里指使用BLE(低功耗蓝牙)作为通信通道 - 键6:true
表示需要用户在场验证(userPresenceRequired),要求用户必须通过触摸、点击等操作确认在场
3. 能否制作设备替代iOS的二维码扫码登录功能?
可以实现,核心要求如下:
- 设备必须支持FIDO2 CTAP2协议,同时支持BLE通信(或浏览器支持的其他跨设备传输方式)
- 实现
FIDO:/+字符串解析逻辑:提取十六进制内容,解码为CBOR格式的认证请求 - 实现BLE连接逻辑:扫描并连接浏览器广播的FIDO服务,遵循CTAP2协议完成命令交互(如
authenticatorGetAssertion等核心命令) - 内置安全身份验证模块:支持指纹、PIN码或生物识别等用户验证方式,确保只有合法用户能触发Passkey签名
- 安全存储Passkey私钥:必须将私钥存储在设备的安全元件(SE)或可信执行环境(TEE)中,符合FIDO2的安全规范
- 兼容主流浏览器:不同浏览器的跨设备认证实现可能存在细节差异,需要适配Chrome、Safari等主流浏览器的交互逻辑
内容的提问来源于stack exchange,提问作者beila aka
相关产品推荐
相关产品推荐

