编辑:好的。由于要求“简短回答”,这里是“执行摘要”,这里是:
问题:“所以所有的阅读设备也必须知道密钥。但是可能有来自许多供应商的许多读卡器(例如咖啡机、收银机上的小型 USB 读卡器、门禁控制面板……),它们真的都有密钥吗?是否有关于如何存储密钥的标准?”
回答:“是的。除了远程/服务器发起与 DESFire 卡的通信外,所有读卡器也必须知道密钥。是的 - 密钥的存储方式有标准 - 使用安全访问模块 - MIFARE SAM(当前为 AV2 模型)。
下面的所有内容如果不感兴趣可以忘记;)
基本上有两个 MIFARE 卡系列:MIFARE Classic 和 DESFire(以及类似的衍生产品)。此外,还有 MIFARE Plus,它最初针对 MIFARE Classic 市场(如果配置为完全支持,则它完全支持),具有两种额外的安全操作模式,可为 MIFARE Classic 基础设施增加更多安全性,达到类似于DESFire。
在这些 MIFARE 系列中使用了许多身份验证协议,有些非常相似,但有时在小细节上有所不同,这可能导致读取基础设施无法处理其他协议,即使它们最初看起来非常相似......
对于您关于 DESFire EV1 的问题,更重要的是:读卡器端安全的基本方法是使用所谓的“安全访问模块”(SAM),这是专门的智能卡,为读卡器/终端提供安全相关功能。SAM 拥有所有密钥,还具有执行安全协议的引擎,用于卡和读卡器之间的安全通信。就 DESFire EV1 的使用而言,这是阅读器安全的锚点。我也可能为每张卡单独派生密钥,因此它们不会对所有卡的身份验证和加密协议使用相同的密钥。通过使用来自主机的附加加密协议或通过批量离线上传(例如从 USB 记忆棒),可以将 SAM 模块中的密钥安全地上传到现场 SAM。
一些基于 RSA 的协议也支持签名/验证,以确保在不使用共享密钥协议的情况下对某些操作进行身份验证。
SAM 设计巧妙,在安全性方面非常可靠,因此将这样的 SAM 模块放入自动售货机可支持所需的所有安全性。即使是由远程主机发起的 DESFire 卡修改,也可以安全地建立,因为 SAM 可以充当“安全代理”,通过建立一个通向主机的安全通道和另一个通向卡的通道,提供“重新加密代理”在中间。当然,SAM 是作为“客户端”和任何命令交换的标准卡,因此读卡器必须通过在参与方之间发送、接收、转发 APDU 来支持这些协议。SAM 还支持与阅读器芯片的直接连接,充当透明代理。
它支持 2DES、3DES、AES、CRYPTO1、RSA 和一些标准算法的专有变体。
SAM 有更巧妙的“操作计数器”概念,有助于解决被盗和频繁使用的安全威胁:每次操作减少一个计数器。计数器必须通过主机启动的操作(在线或离线)定期增加。必须以某种方式(例如 USB 记忆棒)将加密和签名的“脚本”带到 SAM。还可以对密钥进行版本控制,以支持系统生命周期内的密钥安全翻转。
SAM 本身具有基于强密码学的访问控制逻辑,以执行设计的安全模型。精心策划和设计的密钥管理方案,支持系统的众多参与者之间的安全密钥分配。通常,初始 SAM 内容通过安全的 SAM 个性化和受控交付分发给指定的参与者(如自动售货机供应商),他们已经拥有一些身份验证密钥来获得对允许的 SAM/DESFire 卡操作的初始访问权限。如果这些密钥仅分配给特定玩家,则典型操作之一可以是认证密钥交换。
另一个对 UID、它的克隆等的评论:现代 MIFARE 产品支持访问 RandomUID 的单独命令,用于防冲突协议,以及用于识别卡的静态 UID(可选地还受身份验证和加密协议保护,提供“安全通道”)。这为系统设计人员提供了适当的工具来增强针对 UID 克隆或仿真的保护。但是许多“安全设计师”无论如何都非常懒惰,即使存在这些可能性也不会使用它们……