乐趣区

关于密码学: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 链,比方:

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 了。

退出移动版