【问题标题】:Mifare 1K authentication keysMifare 1K 身份验证密钥
【发布时间】:2015-01-20 16:44:08
【问题描述】:
我有一个 MIFARE 1K 标签。一些块可以使用认证密钥 A 写入/读取,而其他块可以使用认证密钥 B 写入。
为什么?如何更改所有要写入/读取的块,例如,使用键 A?
例如,我可以用key A写key block 07,我也可以改变这个key block的key A,但是我不能用key B在上面写,我也不能改变key B 为这个键块。
为什么我应该使用键 A 而不是键 B 来写/读?有什么区别?
【问题讨论】:
标签:
authentication
nfc
rfid
mifare
contactless-smartcard
【解决方案1】:
MIFARE Classic 卡的每个扇区都有两个身份验证密钥:密钥 A 和密钥 B。这两个密钥与访问条件一起存储在每个扇区的最后一个块中(所谓的扇区尾部)。扇区预告片如下所示:
+-----------------------------+--------------+----+-----------------------------+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+-----------------------------+--------------+----+-----------------------------+
| Key A | Access Conditions | Key B |
| (6 bytes) | (4 bytes) | (6 bytes) |
+-----------------------------+--------------+----+-----------------------------+
访问条件定义了如何访问扇区中的块:
- 使用密钥 A 进行身份验证后可以发出的命令(读取、写入、值块操作),
- 使用密钥 B 进行身份验证后可以发出的命令(读、写、值块操作),
- 如果密钥 B 完全用作身份验证密钥。
典型的场景是:
- 只能使用密钥 A 进行身份验证。密钥 A 具有只读访问权限。
- 只能使用密钥 A 进行身份验证。密钥 A 具有读/写访问权限。
- 可以使用两个密钥进行身份验证。密钥 A 具有只读访问权限。密钥 B 具有读/写权限。
- 可以使用两个密钥进行身份验证。密钥 A 和 B 具有只读访问权限。
您可以在MIFARE datasheet 中找到可能的访问条件的完整说明。