我想知道本地智能卡和Java卡之间有什么区别。
我知道Java智能卡具有下载和删除小程序的能力,我在JavaCardOS论坛上看到,带有Java卡的智能卡没有指针。
如何在实践中从java卡中检测本地智能卡?他们有什么不同?
发布于 2020-08-10 00:37:43
“智能卡”基本上是指带有SoC的处理器卡,其中包括一个完整的CPU。Java Card运行在智能卡之上。
本地智能卡通常被认为是智能卡,它包含使用“本机”处理器指令的运行时。对于这些智能卡,应用程序和文件系统实现通常是用一种低级语言实现的,通常C.然后将这个C编译成机器代码,即本机构造。C当然有指针算法。
有些基于文件的卡包含完整的ISO/IEC 7816-4/9/11文件系统,尽管这些卡通常也有专有的部分(这在某种程度上是必需的,因为ISO/IEC 7816-4不包含需要实现什么的完整规范,并留下许多空白供实现者填补)。本地智能卡和基于文件的智能卡之间有很大的重叠。
对于Java Card,您基本上必须实现特定功能所需的APDU。曾经有一个文件系统API在那里,但这一直被反对,无论是好还是坏。Java使用由字节代码组成的applet,所以是的: Java 实际上包含一个字节代码解释器,一个Java。
但是,由于处理和内存限制,链接是在开发环境(使用.class -> .cap转换器)上完成的。在那里,将创建引用,当值被取消引用时,这些引用将被转换为运行时的指针。Java卡仍然提供内存保护,不允许指针算法。例如,这意味着Java Card applet交互的能力有限,因为它们是由防火墙相互隔离的。
没有任何特定的命令可以告诉您卡是否是Java卡。当交付给客户端时,有些卡片在ATR中有一组特定的历史字节。但是,这些值也可以设置为不同的值。
如果您想检查一张卡是否是Java :试着看看卡上是否有卡片管理器,在Open and Global platform AID's中使用SELECT by AID。如果其中一个选择命令成功,那么这是一个相当大的提示,即这张卡是一个Java卡。
因为Java中的每个应用程序DF都是按名称选择的,所以通常不会发现SELECT by find在根文件夹中工作。如果在选择Java Card applet (即当您在根中)之前,所有这些都不起作用,那么该卡可能是Java Card。但是,有可能选择applet默认设置,这样的applet也可以实现该功能。
发布于 2020-08-05 10:45:21
对于本机智能卡,您只需添加整个文件系统(目录结构,包括PIN和键等特殊对象),因为其他一切(算法实现)都是操作系统的一部分。
最简单的检查是:查看一些指令的类字节,卡片可以理解这些指令。零可能表示符合ISO 7816-4标准.
其他检查:来自ISO7816-9的Create命令对Javacard没有用处。
https://stackoverflow.com/questions/63261105
复制相似问题