首页 > 解决方案 > 使 JavaCard 小程序可更新的正确方法是什么?

问题描述

我希望能够在分发给客户后更新 Applet。如果我们需要更新小程序,我不想让他们把芯片寄回给我。我想给一个脚本在他们的读卡器中运行。

问题是为了更新小程序,我需要给他们一个带有解锁密钥的脚本,但我不想给他们密钥。

有什么方法可以签署一个新的小程序,JavaCard (GlobalPlatform) 会知道它是一个原始的小程序,然后才会安装它?

我想也许可以创建具有安装权限的新小程序(有类似的东西吗?),它将负责安装新的小程序。

标签: smartcardjavacardglobalplatform

解决方案


你有几个选择:

  1. 如果您的卡支持SCP11c ,您可以创建卡外脚本。这样您就可以将安装脚本发送给您的客户端。但是我没有听说过任何支持这种模式的卡,但我也没有搜索过。

    1. 您使用经典的 SCP02/SCP03 为您的小程序创建一个专用安全域。您仍然必须提供此域的密钥,但您的客户端至少不能再与其他安全域中的其他数据交互。如果该卡仅适用于一个租户,您仍然可以使用发行者安全域。卡必须支持这个,也许不支持。
    2. 为了防止您的客户安装任意内容,您可以使用 DAP 验证。安全域必须具有此特权并且必须为其配备密钥。DAP 验证将签名附加到您的小程序数据,该数据由安全域检查。必须匹配,否则无法安装小程序。卡必须支持这个,也许不支持。您也可以出于类似目的使用“安装令牌”,同时检查所有安装参数。
    3. 为防止您的代码被检查——它是字节代码,并且仍然可以揭示你正在做的事情,尽管它很难阅读——你可以加密小程序代码。加密加载文件块是规范中要在此处查找的术语,您必须再次将此权限授予安全域。
  2. 设置支持远程内容管理的服务器。您必须为您的客户端提供代理实现,以代理读卡器和服务器之间的 APDU 数据。有描述这种系统的GP RAM 规范,但您也可以使用自己的(更简单的)实现。您的服务器必须组装所有 APDU 命令,将其发送到代理,代理将提供 APDU 响应。您可以在后台使用 PC/SC 和远程智能卡的标准工具。例如我写了 GPSShell,也许它可以和它一起使用。但是,您也可以将其实现为真正的服务器,而不是一起使用脚本工具,例如将自定义连接插件GlobalPlatform一起使用. 如果您在 Java 环境中进行开发,还有一些可用的 java 库可能会更方便。这种方法是最灵活的一种,它还为您的客户提供了一种方便的方式来通知更新。

查看GP 2.3.1以获取有关我给出的提示的更多信息。这完全取决于您的卡支持什么,以及您是否可以找到一些也支持此功能的工具和库。


推荐阅读