天天看點

[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鍊,比如:
[FIDO]U2F NFC協定

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