原本打算写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链,比方:
4.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了。