我想知道本地智能卡和 Java 卡之间的区别是什么。
我知道 Java 卡智能卡有能力下载和删除小程序,我在 JavaCardOS 论坛上读到带有 Java 卡的智能卡没有指针。
如何在实践中从 Java 卡检测本地智能卡?它们有什么不同?
“智能卡”基本上是指具有包括完整 CPU 的 SoC 的处理器卡。Java 卡在智能卡之上运行。
本地智能卡通常被认为是包含使用“本地”处理器指令的运行时的智能卡。对于这些智能卡,应用程序和文件系统实现通常以低级语言实现,通常是 C。然后将此 C 编译为机器代码,即本机结构。C 当然具有指针算术。
有基于文件的卡包含完整的 ISO / IEC 7816-4 / 9 / 11 文件系统,尽管这些卡通常也具有专有部分(这在某种程度上是必需的,因为 ISO / IEC 7816-4 不包含需要实现的完整规范,并留下许多空白由实施者填写)。本地和基于文件的智能卡之间有很大的重叠。
Java 卡使用由字节码组成的小程序,所以是的:Java 卡实际上包含一个字节码解释器,一个 Java 虚拟机。
由于处理和内存限制,链接是在开发环境中完成的(使用.cl-& gt;.cap 转换器)。在那里创建引用,当值被取消引用时,引用将在运行时转换为指针。Java 卡仍然提供内存保护,不允许指针运算。这意味着 Java 卡小程序的交互能力有限,因为它们被防火墙彼此隔开。
没有任何特定的命令可以告诉您卡是否为 Java 卡。有些卡在交付给客户端时在 ATR 中有一组特定的历史字节。但是,这些也可能设置为不同的值。
如果要检查卡是否为 Java 卡:尝试使用 SELECT by AID 和Open and Global platform AID's查看卡上是否有 Card Manager。如果其中一个 SELECT 命令成功,则表明该卡是 Java 卡。
由于 Java Card 中的每个应用程序 DF 都是按名称选择的,因此您通常不会在根文件夹中找到按 DF ID 进行的 SELECT。如果在之前没有工作,则选择 Java Card 小程序(即,当您在根目录中时),则卡可能是Java 卡。但是,有可能选择了默认的小程序,这样的小程序也可能实现该功能
对于本地智能卡,您只需添加整个文件系统(目录结构,包括特殊对象,如 PIN 和密钥),因为其他所有内容(算法实现)都是操作系统的一部分。
最简单的检查是:查看卡理解的某些指令的类字节。零可能表示符合 ISO 7816-4。
其他检查:ISO 7816-9 中的Create
命令对 Javacard 没有用。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(78条)