2

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

问候

4

2 回答 2

2

Found the answer googling the web : check this link

In the link, safarmer said:

Unfortunately you can only delete and the install again. From my understanding this is due to the limited resources on the card. You would need to have two copies of the applet on the card to do an atomic update and then delete the original. I don't think this is a very feasible approach.

The key to doing this is having it done in a controlled environment so you have complete control and can rerun in case of card tear etc. i.e. not update online across the internet.

Also:

You define an applet that stores data and a SIO that you can use to access this applet. The business logic goes into another applet and calls the methods on the interface to get or set data in the other applet. Your business logic can be deleted and reinstalled without affecting data. This is the simplified one paragraph version.

于 2013-11-10T07:13:57.877 回答
2

这是我搜索 SIO 的结果:

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

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

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

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

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

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

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

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

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

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

  5. 在返回期间,Java Card VM 执行恢复上下文切换。原来的当前活动上下文 (B) 从堆栈中弹出,并再次成为当前活动上下文。

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

于 2013-11-18T16:52:33.167 回答