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链,比如:

img

4.Applet选择

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

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

RID0xA000000647
AC0x2F
AX0x0001

所以通过FIDO U2F AID来选择applet的指令是:

00 A4 04 00 08 A0000006472F0001

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

0x5532465F56329000

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


智能卡
智能卡工程师,商用密码产品从业人员,抠腚谋生。红十字志愿者,铁路爱好者,业余无线电爱好者,地理爱...

智能卡工程师,商用密码产品从业人员,抠腚谋生。红十字志愿者,铁路爱好者,业余无线电爱好者,地理爱...

1 声望
0 粉丝
0 条评论
推荐阅读
盲签名算法的原理与C语言实现
盲签名(Blind Signature) 是由Chaum,David提出的一种数字签名方式,其中消息的内容在签名之前对签名者是不可见的(盲化)。经过盲签名得到的签名值可以使用原始的非盲消息使用常规数字签名验证的方式进行公开验证...

youngbug阅读 552

Tongsuo|铜锁再获 IOS 和 Linux 平台商用密码认证资质
文|杨洋(花名:凯申 )铜锁开源密码库创始人蚂蚁集团高级技术专家 文|张成龙(花名:刻一)蚂蚁集团技术专家 本文 1657 字 阅读 5 分钟点击查看原文《Tongsuo|铜锁再获 IOS 和 Linux 平台商用密码认证资质》202...

SOFAStack阅读 627

封面图
KaiwuDB协议代码解析(2)
- 数据请求阶段 -Part 1 - 简单查询客户端发送 Query (‘Q’) 消息给服务端,包含了一条字符串类型的 SQL 语句。 {代码...} 服务端收到 Query 消息,解析 SQL 语句,生成抽象语法树 (AST),并传给执行器执行,获得...

KaiwuDB阅读 519

封面图
KaiwuDB协议代码解析(1)
PostgreSQL 协议的消息通用格式如下图所示,包含 1 字节的消息类型,4 字节的长度(不包括类型的长度),以及消息的内容。由于历史原因,startup 消息不包含类型。

KaiwuDB阅读 508

封面图
基于NOSTR协议的“公有制”版本的Twitter,去中心化社交软件Damus用后感,一个极端走向另一个极端
最近,一个幽灵,Web3的幽灵,在网络游荡,它叫Damus,这玩意诠释了什么叫做病毒式营销,滑稽的是,一个Web3产品却在Web2的产品链上疯狂传销,各方大佬纷纷为其背书,到底发生了什么?Damus的葫芦里,卖的是什么药?

刘悦的技术博客阅读 428

封面图
影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入
使用过NAS(Network Attached Storage)的朋友都知道,它可以通过局域网将本地硬盘转换为局域网内的“网盘”,简单理解就是搭建自己的“私有云”,但是硬件和网络成本都太高了,有点可望而不可及的意思。Alist开源库则...

刘悦的技术博客阅读 426

封面图
TCP协议是如何保证数据的可靠传输的
一个数据包,从聊天框里发出,消息会从聊天软件所在的用户空间拷贝到内核空间的发送缓冲区(send buffer),数据包在传输层添加一个TCP头部、在网络层添加一个IP首部,进入到数据链路层添加一个首部和尾部,将其...

爆裂Gopher阅读 420

封面图

智能卡工程师,商用密码产品从业人员,抠腚谋生。红十字志愿者,铁路爱好者,业余无线电爱好者,地理爱...

1 声望
0 粉丝
宣传栏