security - 需要什么安全访问模块 (SAM)?

标签 security nfc smartcard rfid contactless-smartcard

我正在努力理解安全访问模块 (SAM)。为什么需要它们?与 RFID 读卡器一起使用时,基于 SAM 和无 SAM 的方法有什么区别?

最佳答案

安全访问模块 (SAM) 是存储用于访问智能卡上的内容/应用程序的敏感 key Material 的安全位置。通常,SAM 本身就是智能卡。使用 SAM 背后的想法是,您将访问某些智能卡应用程序等的 key 存储在其上,并且 key 永远不会再次离开 SAM(即攻击者将无法从中提取原始 key Material )。相反,每当阅读器应用程序访问智能卡应用程序时,它实际上让 SAM 与智能卡通信。这可以通过将 SAM 作为读卡器应用程序和智能卡应用程序之间的代理来完成,这样未加密/未经身份验证的读卡器端通信将被包装到加密/身份验证通信中,然后转发到智能卡应用程序:

未加密/加密/
未经身份验证的身份验证/
阅读器应用程序 <-----------------> SAM <==================> 智能卡应用程序

请注意,实际上,实际的 APDU 可能会以稍微不同的方式路由:

+--------------------+ +--------+ +-----+
|阅读器申请 | <----------------> | | <----------------> | |
+--------------------+ |山姆 | | |
|读者 | |山姆 |
+--------------+ | | | |
| | <================> | | <================> | |
|代理 | +--------+ +-----+
|应用 |
| | +------------------+ +----------+
| | <============> |智能卡阅读器 | <============> |智能卡应用 |
+--------------+ +------------------+ +-------------- ---------+

或者,SAM 只能用于计算临时质询、响应、 session key 等,以进行身份​​验证和加密,然后由阅读器应用程序集成到实际通信协议(protocol)中。

在无 SAM 方法中,访问智能卡应用程序的 key Material 需要对读卡器应用程序本身可用。由于该应用程序通常会在无法充分保护 key Material 的平台上运行,这将导致安全风险。

关于security - 需要什么安全访问模块 (SAM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108439/

相关文章:

java - Android NDK 的 NFC API

c# - 模拟认证

authentication - 浏览器不提示输入客户端证书

php - 使用 $_GET 更新数据库中的数据是否不安全?

java - 如何确保我的 Java Play 应用程序仅接受来自特定主机的 HTTP 请求?

android 如何通过读取 NFC 标签获取 NDEF 消息有效负载的最大大小

nfc - 通过NFC进行支付时如何区分非接触式卡和智能手机?

wcf - 通过 ADFS 对 Web 服务的用户进行身份验证

security - 安全存储 Firefox 插件?

java - 如何验证 Java 卡上是否已安装小程序