其他
YubiKey
YubiKey 是 Yubico, Inc. 发行的,具有 OTP、TOTP、FIDO 2FA、静态密码、Challenge-Response、PIV、OpenPGP Card 等功能的便携密码学硬件。本文主要描述其智能卡相关功能,即 PIV 与 OpenPGP Card。
YubiKey Neo, YubiKey 5 NFC 具有 NFC 功能,其余的 YubiKey 均通过 USB 与主机进行通信。
详细的访问方式如下表所示:
功能 | 接口 | AID |
OTP/静态密码(NDEF) | USB-HID/NFC | D2 76 00 00 85 01 01 |
U2F | USB-HID/NFC | A0 00 00 06 47 2F 00 01 |
OpenPGP | USB-CCID/NFC | D2 76 00 01 24 01 02 00 00 00 00 00 00 01 00 00 |
PIV | USB-CCID/NFC | A0 00 00 03 08 00 00 10 00 01 00 |
TOTP(OATH) | USB-CCID/NFC | A0 00 00 05 27 21 01 01 |
FIDO U2F
NXP JCOP Javacard
NXP JCOP 是由 NXP 公司开发的 Javacard 操作系统,NXP 公司的 Javacard 和一些安全芯片搭载了该系统。
其版本命名规则为:
- J = NXP JCOP
- J5=NFC(S2C)
-
J3=Dual IF,CD=PKI+DES
-
J2=CT,CD=PKI+DES
-
J1=CT,DES
- A = JCOP version
- A=JCOP 2.4.1 R3(Java Card 2.2.2 GP 2.1.1)
-
C=JCOP 2.4.2 R1
-
D=JCOP 2.4.2 R2(Java Card 3.0.1 GP 2.2.1)
-
E=JCOP 2.4.2 R3(Java Card 3.0.1 GP 2.2.1)
-
G=JCOP 3.0
-
H=JCOP3 P60-2
- O=JCOP 4.0
- Q=JCOP 4.2
-
080 = EEPROM Size 80K
- G = JCOP type
- G=Java Std-Generic
-
V=Java Std-VISA
-
C=Java Std-Customized
-
M=Java Std-MasterCard
-
C=Java Static-Generic
-
U=Java Static-VISA
-
T=Java Static-MasterCard
- dd(d) = Delivery type
- UA=sawn wafer 150u FFC
-
X0=PDM module
-
A4=MOB4
-
A6=MOB6
-
HN1=HVQFN32 package
-
T = FAB ID
-
0B = HW Version
-
rr = ROM code ID
-
ff = FAB key ID
- o = Option
- 0=no Mifare
-
1=1k Mifare
-
4=4k Mifare
-
7=7k DESFire
-
8=8k DESFire
获取详细信息可以发送 IDENTIFY 命令:00A4040009A000000167413000FF00
返回信息格式如下:
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, 整体的内存布局大概是:
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:
...
每个 Block 有 16 字节,一共 256 个 block,所以是 4K 大小的存储空间。Block 0 比较特殊,保存的是生产商写入的信息,不可更改(特殊的卡除外)。