是什么让 RFID 赋予卡片“访问权限”?

问题描述

我有兴趣将 RFID1356MIFAREESP32-EVB 集成并将其用作 UART 上的读卡器。基本上是读取 UID,将命令写入 UART 串​​行并根据读取器输出内容授予访问权限。最初我尝试使用这个库:https://github.com/elechouse/PN532 但我发现 RFID1356mifare 固件与它不兼容。

我想了解 RFID 阅读器如何授予对卡的访问权限,例如打开门。感谢此线程:Mifare 1K authentication keys 我开始了解两个身份验证密钥的工作原理。

我仍然没有得到的是:

  • 谁设置身份验证密钥?
  • 这些密钥对每张卡都是唯一的吗?
  • 这些密钥是否存储在阅读器中?
  • 我可以从卡上读取密钥吗?如果是,如何?
  • 这些钥匙是否是授予访问权限的钥匙,比如说,一扇与读卡器相连的门?如果没有,是什么让卡可以访问或不能访问?
  • 这些密钥是唯一的身份验证形式吗?
  • UID 是否仅用于识别?
  • 如果第一个扇区中的所有信息都可用,为什么会有 16 个扇区?能够为每个扇区设置不同的密钥的目的是什么?

我遇到的最重要的问题是:是什么让读卡器赋予卡片“访问权限”?

我在 mifare Authentication 上找到了 these docs,他们提到了针对该特定阅读器的 Load Authentication KeysAuthentication 命令。我使用的阅读器没有这样的命令。看了这个帖子 Mifare card security 也让我意识到我的读卡器缺少一些命令,或者它们的文档很差。

我也读过 MIFARE docs from NXP,但里面没有我真正需要的东西。

解决方法

好的,这里是您相应查询的答案:

  1. KEY A 和 KEY B 由卡制造商设置为默认值(0xFF...)。这可以由用户稍后更改。
  2. 默认情况下,它们对于每张卡都是相同的。
  3. 两个密钥都存储在 Card 中。读者还需要知道这些密钥才能读取您的卡片。
  4. 不,除非您至少拥有一把钥匙,否则您无法从卡中读取钥匙。即使您可以访问任何密钥,也可以同时禁用读取密钥。
  5. 不,这些钥匙不能进入门。它们用于授予读取器对其相应扇区的读/写访问权限。
  6. 这些密钥是身份验证的一种形式,通常供读者使用。
  7. UID 对于大多数身份验证情况几乎没有用,因为任何人都可以读取和更改它们。
  8. 每个扇区有 3 个数据块和最后一个扇区的一对密钥。需要这些密钥来读取扇区前三个块上的数据。

总体而言,首先您创建一个身份验证/标识字符串并将其存储在任何扇区的数据块中(假设扇区 4)。然后您需要更改该扇区的KEY A/B,以便除了您自己的访问控制设备之外没有人可以从该扇区读取数据。现在只有知道您的特定密钥的读卡器才能读取扇区 4 上的数据,从而防止卡的克隆。您的读卡器将从扇区 4 读取数据并使用您存储的字符串来检查该卡是否可以访问。 希望我已经清除了您的疑问。 Mifare classic 1k datasheet 有很多关于这方面的信息,请查看第 8.7 节内存访问。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...