0

几天前,我连接了一个 USB 非接触式智能卡读卡器,并通过 USB Sniffer 工具嗅探了那个 USB 端口。之后,我在读卡器上放了一张 1k Mifare 卡,读取了 1 个字节。

我看了一下嗅探器工具的输出,了解到密钥(读取密钥和写入密钥)在没有任何加密的情况下传输到卡上!

现在我想知道这种机制真的安全吗??!如果我更改读卡器的 API 使其表现得像 Mifare 卡并将其移近原始读卡器并通过我的计算机嗅探两个读卡器之间的通信,我不能获得密钥吗?!

这是否有可能使 Reader 在另一个非接触式读卡器的领域中表现得像一张 mifare 卡?


更新: 据我所知,在发送验证命令之前,必须在 mifare 卡上加载密钥!如下所示,我将密钥加载到卡上![FF FF FF FF FF FF默认情况下]。

在此处输入图像描述

同时我嗅到了我的 ACRA122U 连接的 USB 端口!如下所示,密钥是明文发送的!

在此处输入图像描述

我做的有什么问题?!

注意:Hedayat小姐(我的同事),也证实了!:))

4

2 回答 2

2

不,密钥不是明文传输的,因为在读取一个字节的情况下不需要传输任何密钥,这取决于可能需要应用的配置。我不知道,你的嗅探器输出告诉你什么。

不,Mifare (Classic) 不安全,但这是一个在 SO 上得到充分回答的单独问题。总结:密钥太短,因此使用的加密算法太弱。

不,读卡器不能伪装成卡片;即使可以:您似乎认为,密钥是广播的,然后您可以简单地从空中抓取它们,这与标记相去甚远。

于 2014-08-16T21:43:16.287 回答
2

您不是在嗅探读卡器和 MIFARE Classic 卡之间的通信,而是在 PC 和读卡器 (USB CCID) 之间的通信。

为了与 MIFARE Classic 卡进行通信,您必须将访问密钥加载到读卡器上。这就是“加载身份验证密钥”命令(在您的屏幕截图中)所做的。对于 ACR122U,密钥存储在读卡器的易失性存储器中。其他读卡器也可能支持非易失性密钥插槽(请参阅读卡器文档和非接触式存储卡的 PC/SC 规范部分)。

稍后,当您发出认证命令时,阅读器将执行 MIFARE Classic 相互认证,这基本上是一个质询响应认证和密钥协商协议。因此,读卡器不会将实际密钥发送到卡,而是从卡接收随机数,用密钥对随机数进行加密,并将加密后的随机数返回给卡。然后,卡将使用相同的密钥解密随机数,从而验证读卡器是否使用了正确的密钥。

于 2014-09-21T20:27:48.933 回答