[FIDO]U2F NFC协议

本来计划写U2F Raw Message的内容的,但是发现FIDO联盟在2015年5月份发布的最新的U2F规范中,增加了NFC协议,所以先写下NFC的协议吧。

FIDO U2F NFC的协议其实非常简单,就是定义了一下FIDO U2F的AID和APDU的规范。

1.协议简介

FIDO客户端和认证设备之间通过NFC进行通讯,过程如下:

(1)客户端发送选择applet指令

(2)认证设备返回成功

(3)客户端发送操作指令(注册、认证)

(5)认证设备返回响应数据或者错误


2.封包的问题

U2F NFC协议不需要对消息做任何额外的封包操作(比如USB HID协议,需要对消息进行封包一样)。消息只需要按照文档U2F Raw Message中的定义直接发送到认证设备即可。


3.APDU的长度

部分响应数据可能比较长,一条短APDU不能传完,所以U2F 认证设备必须按下面的规则应答:

  • 如果请求指令是扩展长度,认证设备的应答必须使用扩展APDU格式
  • 如果请求指令不是扩展长度,认证设备的应答必须使用ISO7816-4 APDU链,比如:




5.Applet选择

FIDO客户端通过NFC与认证设备进行认证/注册操作,每次都需要从选择applet指令开始。选择之后的指令就参考U2F Raw Message中的定义即可。

FIDI U2F的AID由RID+AC+AX组成

RID 0xA000000647
AC 0x2F
AX 0x0001
所以通过FIDO U2F AID来选择applet的指令是:

00 A4 04 00 08 A0000006472F0001

FIDO认证设备对选择applet的命令成功的响应为版本信息“U2F_V2”,选择applet成功的响应为:

0x5532465F56329000


完成选择applet,剩下的就参考U2F应用层的指令进行即可,下一篇真的写U2F Raw Message了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值