智能卡读卡器是不是执行任何加密功能?

Posted

技术标签:

【中文标题】智能卡读卡器是不是执行任何加密功能?【英文标题】:Does the smart card readers do any cryptography function?智能卡读卡器是否执行任何加密功能? 【发布时间】:2014-10-25 07:32:53 【问题描述】:

据我们所知,智能卡使用相互身份验证方法来阐明卡和读卡器之间的安全性。

我想知道,密码操作是在哪里完成的?(除了在卡中)是在读卡器中还是在计算机中?

我的意思是,阅读器是否进行任何密码学操作?还是只是将USB/COM协议转换为卡用来传输数据的协议?

换句话说,我可以使用读卡器连接到的计算机 USB 端口上的嗅探器检索卡和读卡器之间传输的[加密]数据吗? (确实,我需要从我在嗅探中看到的头部和尾部删除一些字节。但我还需要做任何加密功能吗?)

请注意,我需要在卡和读卡器之间传输的相同数据。而且我不想解密数据。

【问题讨论】:

【参考方案1】:

这取决于。对于基于内存的卡,可以在读卡器中完成很多事情。但是,如果卡是通过 PCSC / ISO 7816-4 兼容的 APDU 访问的,则所有加密通常由应用程序执行(这可能适用于您的情况)。

如果您想在不弄乱 USB 本身的情况下捕获这些内容,我建议将您的应用程序连接到虚拟智能卡读卡器,然后将 APDU 再次转发给真正的读卡器。您可以得到有关如何执行此操作的提示here。

【讨论】:

我想知道,是否可以使用 USB-Sniffer 代替诸如 ul-ts.com/test-tools/domain/payment/collis-card-spy-detail 之类的设备来捕获卡和读卡器之间的数据交换? 我不明白为什么不这样做。阅读器和驱动程序之间的接口可能具有专有格式。通常这种特殊的设备用于较低级别的协议测试。【参考方案2】:

我还没有遇到过从事密码学的读者(除了 Mifare 和类似的),即使可能有专门的设备在做一些事情。我也不认为这是一个缺点,原因有两个:

正如您所提到的,在您的应用程序中进行加密可确保易受攻击的设备通信仍然受到保护(除了中间人攻击类型) Mutual Authenticate 通常不仅执行身份验证,还协商从交换的随机数派生的会话密钥。因为存在很多不同的方法,我不会在屏住呼吸的同时依赖制造商在固件中加入正确的变体。

【讨论】:

我不明白第一段的这一部分:(besides Mifare and similar)。你的意思是,对于 mifare 卡,在读卡器中完成的加密? 对于我的 mifare 卡和 ACR122U 读卡器,我只在读卡器上加载一次密钥(当我在加载密钥时嗅探我的 USB 端口时,我会以纯文本形式看到密钥),然后每张卡我都会发送一个身份验证命令!我的意思是我为所有卡加载一次密钥。所以我可以得出结论,我的 mifares 和这个读者的阅读器中会发生密码学吗?如果是这样,怎么做?我的意思是机制是什么?卡向读卡器发送一个随机数,读卡器将该数字保存在自己内部,不发送到计算机?什么应用程序?加载密钥并发送验证命令? @TheGoodUser:是的,在Mifare中只有一种固定算法,只是key是可变的,所以很容易在阅读器中进行计算。 (对所有卡使用相同的密钥而不是从序列号派生的密钥对于体面的安全性来说并不是一个好主意。)此外,Mifare 不涉及单独的身份验证,只需将正确的密钥应用于读/写命令即可到它,所以不涉及随机数。 正如这里 mifare 数据表的 Security 部分所述:gemalto.com/products/hybrid_card_body/download/… mifares 在身份验证中生成一个随机数。我错了吗? @TheGoodUser:你说得对,除了芯片的固定序列号和选择的密钥之外,似乎还涉及从线性移位寄存器中取出的低质量随机数。无论如何,如果您选择这样做,可以将简单且更重要的完全固定(阅读:指定 fwater-tight)密码学委托给读者。【参考方案3】:

事实上,有智能卡读卡器在做密码学。例如,Reiner SCT 舒适型能够在智能卡和智能卡读卡器之间创建一些安全消息传递(PACE,用于身份证和一些护照),使用自己的密码键盘从卡中收集凭证(某些密码的值)持有者。所以......有密码键盘智能卡读卡器做一些加密。

【讨论】:

以上是关于智能卡读卡器是不是执行任何加密功能?的主要内容,如果未能解决你的问题,请参考以下文章

智能卡读卡器是不是支持所有智能卡型号?

MiFare Classic 卡的智能卡读卡器

黑莓智能卡读卡器示例

Mifare卡安全

与 IC 读卡器和 SLE5528 智能卡配合使用

智能卡未响应重置