首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javacard中的可共享接口:用例和实现

Javacard中的可共享接口:用例和实现
EN

Stack Overflow用户
提问于 2018-06-19 19:10:51
回答 2查看 448关注 0票数 1

上下文

我需要将数据从一个applet发送到另一个applet。此外,还需要删除并重新安装其中一个小程序。安装完成后,需要能够在小程序之间进行数据交换。

可共享接口对实现这一点有用吗?

理论上的

一般来说,我想知道在哪些情况下可共享接口是一个好主意,以及它的主要用途是什么。

实践

我举了this answer的例子,但它不起作用。我想我不知道如何实现。我尝试在同一个包中创建两个applet,一个主程序和一个从程序。但是当选择了slave时,我得到了6F 00。我用两个包做了其他测试。但我也犯了同样的错误。

EN

回答 2

Stack Overflow用户

发布于 2018-07-28 00:09:50

Shareable允许您在卡上的小程序之间交换数据。但也有一些限制,主要是不能自由地交换内部对象。只有允许共享的对象才能通过共享接口传递。您提到的示例使用了一些专有的“SharedArray”接口来实现这一点。

默认情况下,只有标准全局对象可以用于此目的,例如APDU支持数组或各种STK对象。此外,还可以通过共享接口方法传递简单的值类型,如byte和short。

在某些情况下,特别是在STK环境中,共享接口用于启动操作,而数据则通过卡上用作“邮件槽”的单独EF进行传递。

关于实现本身,需要记住可共享接口只是一个标记,因此您需要定义一个继承自可共享接口的具体接口,以便能够在应用程序中使用它。

上面的接口构成了使用或实现此接口的任何应用程序的硬依赖。

因此,如果任何其他小程序/库使用包含接口定义的包,则无法将其删除。

常见的选项之一是在单独的库中定义接口,并首先安装它。因为它不太可能更改,如果更改了,您无论如何都会更改AID和版本,因此所有其他客户端都可以自由安装和删除。

最后,请记住,由于与数据共享相关安全问题,应谨慎使用可共享接口。

我强烈建议您购买一份“Java Card Technology for Smart Card: Architecture and Programmer's Guide”,它涵盖了这些主题和更多主题。

票数 2
EN

Stack Overflow用户

发布于 2019-07-25 19:48:33

按顺序回答你的问题

  1. Context

当一个小程序(客户端小程序)需要访问来自另一个小程序(服务器小程序)的方法时使用可共享接口,前提是这两个小程序都位于不同软件包中的不同packages.Applets中,并由防火墙分隔,以防止跨软件包访问小程序数据。

可以按任何顺序删除Applet实例,但应按顺序删除Applet包。也就是说,先删除第一个客户端包,然后删除服务器包。

  1. Theoretical

可共享接口对于对象共享很有用,因为防火墙限制了包之间的对象共享。

有关正确的用例,请参阅此白皮书- www.usenix.org/legacy/event/smartcard99/full_papers/montgomery/montgomery.pdf

  1. Practice

请检查可共享接口实现的解决方案- https://stackoverflow.com/a/57200926/4752262

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50926994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档