pro.javacard.gp.GPException:严格警告:检测到未融合的 JCOP

pro.javacard.gp.GPException: STRICT WARNING: Unfused JCOP detected

当尝试使用以下命令列出智能卡的内容时

gp -l

出现以下异常:

pro.javacard.gp.GPException: STRICT WARNING: Unfused JCOP detected
at pro.javacard.gp.GlobalPlatform.printStrictWarning(GlobalPlatform.java:184)
at pro.javacard.gp.GlobalPlatform.select(GlobalPlatform.java:213)
at pro.javacard.gp.GPTool.main(GPTool.java:334)

搜索时,我知道该卡未预先个性化。 我的问题是什么是智能卡预个性化? 谁做这个预个性化?是供应商吗?

大多数智能卡应用程序需要在每个芯片上安装某些程序 and/or 数据文件,然后才能对卡进行个性化并赋予特定 cardholder.This 卡上的软件或文件的一般准备是通过称为预个性化的操作完成。

所以这是由供应商或持卡人完成的。

Java 卡的预个性化主要包括在操作系统中设置参数。您应该考虑 ATR 之类的东西,但也应该考虑全局平台密钥集、内存配置等。在卡 "fused" 之后,这些设置将无法再更改。

预个性化未标准化。这意味着您必须联系卡制造商了解详细信息。在这种情况下,这意味着 NXP Semiconductors。

融合意味着预个性化阶段已经完成,无法再更改设置。它指向熔断电阻器以禁用特定的芯片功能。在当前的芯片/操作设计中,它很可能是一个逻辑过程。

在野外使用时,芯片通常应该熔断。通常,预个性化是在演示卡制造商处或卡或嵌体制造商的安全处所进行。

一般来说,您应该对卡进行身份验证以执行预个性化。所以拥有一张未融合的卡可能不会让你拥有特殊的力量。


请注意,如果您看这个词,预个性化可能涉及个性化之前的任何内容。所以这可能包括例如小程序加载。从这个意义上说,最好考虑使用 fuse 命令来结束 initialization 阶段。由于这方面没有权威,您会听到芯片制造过程的不同阶段的不同名称。

预个性化就像是针对特定要求在智能卡上进行的配置。预个性化可以有以下步骤: 1)改变ATR的历史字节。 2) 安装安全域和/或应用程序。 3) 全球平台安全通道密钥的存储。 4) 安全域的个性化。 ...等等...

为什么我们需要个性化?

我们制作了一个通用的智能卡操作系统,可以根据需要进行配置。比如Visa、Master Card等的配置...

所以在芯片上加载智能卡 OS 后,我们需要根据所需的功能对卡进行个性化设置。

谁做这个预个性化?

这取决于卡制造商或供应商可以根据要求进行配置。

JCOP 卡的预个性化包括向名为 Root Applet.

的小程序发送一组命令

制造商安装了这个特殊的小程序,为卡提供商提供一些特殊的访问权限(Bodewes 先生在他的回答中提到了这些访问权限)。

Root Applet AID 命名为传输密钥,并安全地传输给卡的供应商或任何向 NXP 请求非融合卡的人。 (此 AID 特定于每张卡或供应商要求的一组卡)

该小程序支持的命令包括一些对EEPROM restrictrd 区域的READ 和WRITE 命令。

预个性化的最后一步和强制性步骤是向 ROOT Applet 发送名为 FUSE 命令的命令。此命令使 Root Applet 永远禁用。

在预个性化之前,卡上 select 没有可用的安全域,Root Applet 是卡上唯一的活动实体,但在预个性化之后,您可以访问安全域并且无法再访问 Root Applet。

我认为这个信息是保密的,所以不要发布它们! :)