更改 javacard 小程序的版本



考虑这样一种情况:个性化是在卡上完成的,大量新数据存储在javacard中,如果我们对 aplet 有一个小的变化,并且想更新 javacard 上的小程序版本,那么以前存储在卡上的数据会发生什么,由于每个小程序都有自己的安全域(SD),我认为所有数据都存储在当前小程序的SD中,因此新安装会导致删除以前的小程序,那么存储数据发生了什么变化?

问候

在谷歌上搜索网络找到答案:检查此链接

在链接中,safarmer说:

不幸的是,您只能删除并再次安装。从我的 理解这是由于卡上的资源有限。你 需要在卡上有两个小程序副本才能执行 原子更新,然后删除原始文件。我不认为这是一个 非常可行的方法。

这样做的关键是在受控环境中完成它,以便 您可以完全控制,并且可以在卡撕裂等情况下重新运行,即 不通过互联网在线更新。

也:

您可以定义一个存储数据的小程序和一个可用于 访问此小程序。业务逻辑进入另一个小程序,并且 调用接口上的方法以获取或设置另一个接口中的数据 小程序。可以删除并重新安装业务逻辑,而无需 影响数据。这是简化的一段版本。

这是我

搜索SIO的结果:

可共享接口是 Java Card API 中的一项功能,用于启用小程序交互。对于拥有上下文,SIO 是一个普通对象,可以访问其字段和方法。对于任何其他上下文,SIO 是可共享接口的实例,并且只能访问可共享接口中定义的方法。SIO 的所有其他字段和方法都受防火墙保护。可共享的接口为小程序之间的通信提供了一种安全的机制,如下所示:

服务器小程序 A 构建可共享的接口对象

  1. 要使对象可用于与不同上下文中的另一个小程序共享,小程序 A 首先定义一个可共享的接口 SI。可共享接口扩展了接口javacard.framework.Shareable。可共享接口 SI 中定义的方法表示小程序 A 使其他小程序可以访问的服务。

  2. 然后,小程序 A 定义一个实现可共享接口 SI 的类 C。C 实现 SI 中定义的方法。C 也可以定义其他方法和字段,但这些方法和字段受小程序防火墙保护。只有 SI 中定义的方法可供其他小程序访问。

  3. 小程序 A 创建类 C 的对象实例 O,O 属于小程序 A,防火墙允许 A 访问 O 的任何字段和方法。

客户端小程序 B 获取可共享接口对象

  1. 小程序 B 可以通过调用 SIO 的可共享接口方法之一从小程序 A 请求服务。在调用期间,Java Card VM 执行上下文切换。原始当前活动上下文 (B) 保存在堆栈上,实际对象 (O) 的所有者 (A) 的上下文成为新的当前活动上下文。A 的可共享接口方法(SI 方法)的实现在 A 的上下文中执行。

  2. SI 方法可以通过 JCSystem.getPreviousContextAID 方法找出其客户端 (B) 的 AID。该方法确定它是否将为小程序 B 执行服务。

  3. 由于上下文切换,防火墙允许 SI 方法访问对象 O 的所有字段和方法以及 A 上下文中的任何其他对象。同时,防火墙会阻止该方法访问 B 上下文中的非共享对象。

  4. SI 方法可以访问 B 传递的参数,并且可以向 B 提供返回值。

  5. 在返回期间,Java 卡虚拟机将执行还原上下文切换。原始当前活动上下文 (B) 从堆栈中弹出,并再次成为当前活动上下文。

  6. 由于上下文切换,防火墙再次允许 B 访问其任何对象,并阻止 B 访问 A 上下文中的非共享对象。

最新更新