# 其他

# YubiKey

YubiKey 是 [Yubico, Inc.](https://www.yubico.com/) 发行的，具有 OTP、TOTP、FIDO 2FA、静态密码、Challenge-Response、PIV、OpenPGP Card 等功能的便携密码学硬件。本文主要描述其智能卡相关功能，即 PIV 与 OpenPGP Card。

YubiKey Neo, YubiKey 5 NFC 具有 NFC 功能，其余的 YubiKey 均通过 USB 与主机进行通信。

详细的访问方式如下表所示：

<table id="bkmrk-%E5%8A%9F%E8%83%BD-%E6%8E%A5%E5%8F%A3-aid-ot"><tbody><tr><td>**功能**</td><td>**接口**</td><td>**AID**</td></tr><tr><td>OTP/静态密码(NDEF)</td><td>USB-HID/NFC</td><td>D2 76 00 00 85 01 01</td></tr><tr><td>U2F</td><td>USB-HID/NFC</td><td>A0 00 00 06 47 2F 00 01</td></tr><tr><td>OpenPGP</td><td>USB-CCID/NFC</td><td>D2 76 00 01 24 01 02 00 00 00 00 00 00 01 00 00</td></tr><tr><td>PIV</td><td>USB-CCID/NFC</td><td>A0 00 00 03 08 00 00 10 00 01 00</td></tr><tr><td>TOTP(OATH)</td><td>USB-CCID/NFC </td><td>A0 00 00 05 27 21 01 01 </td></tr></tbody></table>

# FIDO U2F



# NXP JCOP Javacard

NXP JCOP 是由 NXP 公司开发的 Javacard 操作系统，NXP 公司的 Javacard 和一些安全芯片搭载了该系统。

其版本命名规则为：

<div id="bkmrk-j3-a-080-g-dd%28d%29-%2F-t">J3 A 080 G dd(d) / T 0B rr ff o</div>- J = NXP JCOP 
    - J5=NFC(S2C)
    - <div>J3=Dual IF,CD=PKI+DES</div>
    - <div>J2=CT,CD=PKI+DES</div>
    - <div>J1=CT,DES</div>

- A = JCOP version 
    - A=JCOP 2.4.1 R3(Java Card 2.2.2 GP 2.1.1)
    - <div>C=JCOP 2.4.2 R1</div>
    - <div>D=JCOP 2.4.2 R2(Java Card 3.0.1 GP 2.2.1)</div>
    - <div>E=JCOP 2.4.2 R3(Java Card 3.0.1 GP 2.2.1)</div>
    - <div>G=JCOP 3.0</div>
    - <div>H=JCOP3 P60-2</div>
    - O=JCOP 4.0
    - Q=JCOP 4.2

- <div>080 = EEPROM Size 80K</div>
- G = JCOP type 
    - G=Java Std-Generic
    - <div>V=Java Std-VISA</div>
    - <div>C=Java Std-Customized</div>
    - <div>M=Java Std-MasterCard</div>
    - <div>C=Java Static-Generic</div>
    - <div>U=Java Static-VISA</div>
    - <div>T=Java Static-MasterCard</div>

- dd(d) = Delivery type 
    - UA=sawn wafer 150u FFC
    - <div>X0=PDM module</div>
    - <div>A4=MOB4</div>
    - <div>A6=MOB6</div>
    - <div>HN1=HVQFN32 package</div>

- <div>T = FAB ID</div>
- <div>0B = HW Version</div>
- <div>rr = ROM code ID</div>
- <div>ff = FAB key ID</div>
- o = Option 
    - 0=no Mifare
    - <div>1=1k Mifare</div>
    - <div>4=4k Mifare</div>
    - <div>7=7k DESFire</div>
    - <div>8=8k DESFire</div>

获取详细信息可以发送 IDENTIFY 命令：00A4040009A000000167413000FF00

返回信息格式如下：

![](https://wiki.nfc.im/uploads/images/gallery/2019-08-Aug/scaled-840-0/image-1565837332689.png)

# Canokey

Canokey是开源的安全认证USB设备，提供4个接口：U2F/FIDO2（HID）、OpenPGP Card（CCID）、PIV+OATH（CCID）和WebUSB。

# MIFARE Classic

MIFARE Classic 有 1K 和 4K 两种类型，1k 和 4k 代表存储空间的大小。

在 MIFARE Classic 中，有 Sector 和 Block 的概念，每个 Sector 有若干个 Block，其中最后一个 Block 是特殊的（称为 Sector Trailer），保存了这个 Sector 的一些信息：Key A、Access Bits、GPB 和 Key B。对于 Classic 4K，首先是 32 个有 4 blocks 的 sector，然后是 8 个 有 16 blocks 的 sector， 整体的内存布局大概是：

<div data-lang="hljs nginx" id="bkmrk-sector-0%3A-block-0-bl"><textarea style="display: none;">Sector 0: Block 0 Block 1 Block 2 Block 3(Sector Trailer) Sector 1: Block 4 Block 5 Block 6 Block 7(Sector Trailer) ... Sector 32: Block 128 Block 129 ... Block 143(Sector Trailer) ... Sector 39: ... </textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div></div><div>```
Sector 0:<br></br>	Block 0<br></br>	Block 1<br></br>	Block 2<br></br>	Block 3(Sector Trailer)<br></br>Sector 1:<br></br>	Block 4<br></br>	Block 5<br></br>	Block 6<br></br>	Block 7(Sector Trailer)<br></br>...<br></br>Sector 32:<br></br>	Block 128<br></br>	Block 129<br></br>	...<br></br>	Block 143(Sector Trailer)<br></br>...<br></br>Sector 39:<br></br>	...
```

<div><div></div></div></div></div></div>每个 Block 有 16 字节，一共 256 个 block，所以是 4K 大小的存储空间。Block 0 比较特殊，保存的是生产商写入的信息，不可更改（特殊的卡除外）。

见 [MIFARE Classic 配置 NDEF](https://jia.je/hardware/2020/05/10/mifare-classic-ndef/)