问题标签 [globalplatform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2012 浏览

smartcard - 更新:使用 GlobalPlatform 个性化 Javacard Applet

据我所知,较大的智能卡小程序通过全球平台进行个性化是很常见的。我还找到了一些关于使用 Global Platform 进行个性化的 PDF,以及用于 GP 的 Javacard API。但是我不知何故错过了一些与这两者相关的信息,而且我还没有找到关于它的好的文档。我应该如何组织我的 Applet 来执行与 GP 兼容的个性化?

编辑:

我已阅读文档并有一些具体问题,希望您能尽快回答。
Q1: 通用个性化指南描述了以下过程:重置、Atr、选择 AID 进行个性化、启动安全通道、多个存储数据命令。安全通道与安全域一起建立,并且保存 DGI 的存储数据命令被转发到 Applet。Applet 具有来自org.globalplatform包的ApplicationPersonalization接口,并继承processData方法以使用 Store-data 命令。现在的问题是我是否必须实现init-updateexternal-authenticate我自己的小程序中的命令,因为不再选择安全域并且我的小程序不知道这些 INS?JCRE 不会自动检测这些 GlobalPlatform APDU 并将它们转发到 SecurityDomain 吗?

0 投票
2 回答
1371 浏览

javacard - UICC:如何改变ARA?

我有一个 UICC(由 Gemalto 提供),它有一些非常严格的 APDU 访问规则。我想从 Android 应用程序访问 UICC 上的小程序,但这些规则不允许我发送任何 APDU。

所以我需要改变这些规则。

我试过以下:

  1. 将“存储数据 - 存储 AR-DO”命令直接发送到 ARA 小程序 => 我得到状态字“安全状态不满意”

  2. 向颁发者安全域进行身份验证,向颁发者安全域发送 Install For Personalization 命令,然后通过 ISD 发送存储数据。=> 相同的结果,“不满足安全状态”。

难道我做错了什么?任何想法?我是否需要任何额外的身份验证、密码或密钥才能更改访问规则?一旦设置了访问规则,甚至可以更改它们吗?

0 投票
1 回答
1701 浏览

smartcard - 个性化中安全域与小程序的关系

通用个性化指南描述了以下个性化过程:

  • 重置
  • 属性
  • 选择 AID 进行个性化设置
  • 启动安全通道
  • 多个存储数据命令

安全通道与安全域一起建立,并且保存 DGI 的存储数据命令被转发到 Applet。Applet 具有来自org.globalplatform包的ApplicationPersonalization接口,并继承processData方法以使用 Store-data 命令。

现在的问题是我是否必须实现init-updateexternal-authenticate命令,因为不再选择安全域并且我的小程序不知道这些 INS?JCRE 是否会自动检测这些 GlobalPlatform APDU 并将它们转发到 SecurityDomain?如果不是,为什么 JCRE 不隐藏/过滤这个?

e:我在 2006 年的全球平台网站上找到了一个名为 CPSDemonstrator 的旧示例: http ://www.globalplatform.org/specificationform.asp?fid=6596 除了不推荐使用的 API 调用,这仍然是标准方法吗?

0 投票
3 回答
4204 浏览

smartcard - 智能卡预个性化和历史字节

我有一张没有融合的智能卡(我的意思是它没有预先个性化)。它有一个 ATR= 3B F9 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 32 52 33 A2

Q1:我卡的历史字节是什么/在哪里?我如何分析它们?

Q2:我在哪里可以找到我的卡的型号?我在网上搜索了它的ATR,但一无所获!

当您尝试使用GPJ等工具列出真正空白卡(我的意思是未融合的卡)的小程序时,您会收到以下输出:

上面的输出意味着工具找不到任何可供选择的 SC。

我在互联网上搜索了很多,最后发现我需要一个密钥(Transport-Key)来进行Pre-Personalization过程。

让我分享一些知识!

预个性化程序如下(针对 JCOP):

  1. ATR 请求
  2. 选择命令来选择根小程序(Transport-Key 是这个小程序的 AID)
  3. 引导命令
  4. 可以根据需要使用尽可能多的 Read、WRITE、ADMINEXEC、SB_NAT_APPLET_INSTRUCTION 和 AUTH 命令
  5. 保护命令
  6. 熔断命令
  7. 重置卡。

在第 4 步中,我们使用默认设置初始化 IC(配置 IC 所需的生命周期、定义通信行为、ATR 和/或 ATS 参数或预加载小程序)。

顺便说一句,我做了前两个步骤(1和2),然后我重置了卡,我试图再次列出小程序:

如您所见,出现了一个带有 AID= 的小程序A0 00 00 01 51 00 00。但我无法成功执行EXTERNAL AUTHENTCAT命令!

Q3:为什么外部认证失败?因为我没有设置 SD 密钥?

我尝试使用OpenSC Tool选择这个小程序:

Q4:这个输出是什么意思?

在下面,您还可以在get-data脚本之后看到GP Shell的输出:

Q5:这个输出是什么意思?我该如何分析它?

0 投票
1 回答
782 浏览

smartcard - 如何尝试在 Java 卡小程序中使用本机方法?

这是一个用于 Javacards的简单Hello World小程序:

问题是“Java 卡中本地方法的含义是什么?”

在智能卡的安全目标中,写着“禁止在应用程序中使用本机方法”。问题是“我如何针对特定卡进行测试?” 换句话说,我希望您修改上面的代码并添加一些本地方法,然后让我检查是否可以将其转换为.cap文件并将其上传到我的卡上。

更新 :

正如亲爱的 TonyK 在第一条评论中所说,大概我的开发环境不会编译这样的东西,所以有两个问题:

  1. 什么是原生方法?有什么例子吗?
  2. 我如何编译它们并将那些内部具有这种方法的程序转换为.cap文件以尝试将它们上传到卡上?
0 投票
1 回答
261 浏览

smartcard - 这个默认小程序有什么作用?

这是gp工具的输出,当我告诉它列出已安装的小程序时:

Q1:这个AID中哪一个是针对applet的,哪一个是针对Package的?我怎么能认出来?

Q2:我怎样才能知道这个小程序支持哪些 APDU 命令?我在这里搜索了 AID (AID 的完整列表),但一无所获!

Q3:我们可以在一个包中包含 2 个小程序吗?我的意思是,当我编写一个Hello World小程序并将其上传到我的卡时,一个 Applet AID 和一个 Package AID 会添加到gp -l输出中。是否有任何.cap文件将例如 3 个小程序 AID 和仅 1 个包 AID 添加到卡中?

0 投票
1 回答
693 浏览

smartcard - GP -I 命令的输出是什么意思?

下面,您会看到gp -i命令的输出:

我想知道这个项目的含义是什么?

我为什么要认识他们?换句话说,为什么 gp 工具开发者,在其软件中添加--info (或 -i)参数?

还有,不同的密钥版本和不同的密钥 ID 有什么用?不同的Key version和Key ID是否意味着不同的小程序可以使用不同的Key?或者用户可以使用不同的密钥与卡进行通信?还是每个 Key 都有特定的作用?

0 投票
1 回答
86 浏览

smartcard - 智能卡和通用标准要求(FCO 类)

Smart Card 和 Java 卡的安全目标中有一个名为FCO的类。下面你会看到这个类的两个元素:

CM=卡片管理器。

FCO_NRO.2.1/CM

TSF 应始终强制为传输的应用程序包生成来源证据。

FCO_NRO.2.2/CM

【编辑提炼】TSF应能够关联信息发起者的身份,以及证据所适用的信息中包含的应用程序包。

FCO_NRO.2.3/CM

TSF 应提供一种能力,以验证给定收件人的信息来源证据[任务:在收到包裹时,因为卡上没有证据以供将来验证]。

问题是,我们如何测试一张卡是否满足这个要求?状态词是本课提到的证据吗?或者我们必须编写一些程序来测试它们?

0 投票
1 回答
250 浏览

smartcard - 通用标准(FTP 类)的智能卡和安全通道要求

在Cammon Criteria标准的第二部分中,有一个名为FTP的类。在智能卡和Java卡的安全目标中,提到卡必须满足这些要求。下面您会看到我的JCOP v2.4.2 r3智能卡的此类的两个元素:

6.1.9.10 FTP_ITC.1/CM Inter-TSF可信信道

  • FTP_ITC.1.1/CM:

TSF 应在其自身和另一个受信任的 IT 产品之间提供一个在逻辑上与其他通信渠道不同的通信渠道,并提供对其端点的可靠标识并保护渠道数据不被修改或泄露。

  • FTP_ITC.1.2/CM:[编辑精炼]

TSF 应允许放置在发卡机构安全环境中的 CAD 通过可信通道发起通信。

  • FTP_ITC.1.3/CM

TSF 应通过可信通道发起通信,以便在卡上加载/安装新的应用程序包。应用说明:Java Card 平台上没有动态包加载。只有在发卡机构的要求下,才能在卡上安装新软件包。

6.1.14.2 FTP_ITC.1/LifeCycle Inter-TSF 可信通道

  • FTP_ITC.1.1/生命周期:

TSF 应在其自身和另一个受信任的 IT 产品之间提供一个在逻辑上与其他通信渠道不同的通信渠道,并提供对其端点的可靠标识并保护渠道数据不被修改或泄露。

  • FTP_ITC.1.2/生命周期:

TSF 应允许 [分配:另一个受信任的 IT 产品] 通过受信任的渠道发起通信。

  • FTP_ITC.1.3/生命周期:

TSF 应通过可信通道发起通信,用于[分配:设置卡生命周期状态和设置操作系统内部生命周期状态]。

问题是我如何测试卡以查看它是否符合这些要求?在向卡发送和接收 APDU 时使用加密方法,是否满足该方法的证明?

无论如何,我可以向卡发送加密形式的 APDU 吗?我的意思是,我可以以加密形式而不是普通 (= 00a40400 ...) 向卡发送 SELECT APDU 命令吗?可能吗?

0 投票
1 回答
156 浏览

smartcard - 更改 JavaCard 中已安装包或 Applet 的 AID?

如标题所述,我想知道是否有任何方法可以更改 Java Card小程序的 AID ,在安装后加载安装后进行安装过程?