问题标签 [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.
javacard - Java Card、PCSC lite 和 Applet Playground 的问题
我一直在尝试开始使用 Java Card。我在此链接下载并安装了存储库:https ://github.com/martinpaljak/AppletPlayground/希望开始开发和使用小程序,但到目前为止我还没有成功与卡或读卡器交互方法。跑步
在命令行不返回任何内容 - 根据 GlobalPLatform 站点https://github.com/martinpaljak/GlobalPlatform,它应该返回有关卡的信息。在命令行上运行“pcsctest”会产生
取决于我插入阅读器后的时间。如果我在pcsctest
返回“服务不可用”时运行任何命令,我会收到错误消息
我正在使用 OS X。我尝试了几种不同的工具来与 Java Cards 交互,但没有一个可以工作。如果有人能告诉我我可能做错了什么或建议一种更好的与 Java Cards 交互的方法,我将非常感激。
applet - PC/SC 或 openSC 未找到 Java 卡
我一直在尝试与 Java Card 交互,但到目前为止我还没有成功。我已经下载了 openSC、GlobalPlatform,并且我一直在使用 PCSC for OS X。正在运行
测试
在命令行导致以下结果:
肌肉 PC/SC Lite 测试程序
测试 SCardEstablishContext :命令成功。
测试 SCardGetStatusChange
请插入一个工作阅读器:命令成功。
测试 SCardListReaders :命令成功。
阅读器01:飞天R502 00 00
输入读者编号:01
等待插卡
它在什么时候停止;我确实在读卡器中插入了一张卡。还有,跑步
opensc工具-n
返回
卡不存在。
我已经阅读了这个先前的 stackoverflow 问题:pkcs11 support for kona 25 javacard但我不知道如何确定卡是否为空白,如果我不能使用任何工具,则将 PKI 小程序加载到它上面'已经找到查看卡片的内容。谁能建议为什么,或者我如何找出原因,这些工具都没有注意到我插入读卡器的卡。我正在使用 os x 10.9.2、飞天 R502 阅读器,我已将其产品/供应商 ID 添加到 ccid 包中的 Info.plist 中,以及 G+D smartcafe JavaCard。
smartcard - 如何将我的 JAVA 卡生命周期状态更改为 OP_READY?
我在 Oracle 中找到了以下脚本(This lint)并在我的 java 卡上运行它,GPShell
现在我无法运行!gpj -list
GPJ
我的问题:
1-这个代码是做什么用的?将卡域管理器状态从 OP_READY 更改为 Secured?
2- 为什么我找不到任何地方80F0800708A000000003000000
以及80F0800F08A000000003000000
脚本中使用的 APDU?!我在部分GP Specification 2.2
中搜索ISO 7814-4
了一个 APDU !但是我什么也没发现!F0
CLA
3- 下面脚本的操作是否可以被另一个脚本逆转?
剧本 :
这是它在 Console 中的输出:
谢谢你。
smartcard - What is the difference between OP_READY and SECURED statuses?
I put ISD status of my java card in SECURED status. I want to know what capability of card lost in this new status in comparison to OP_READY?
Note: as I try, I can upload and install new .cap files on card and delete them successfully yet [in this new ISD status]!
I'll be thankful if somebody explain simply the primary differences between different statuses? I already read Global Platform Specification 2.2.2 , but it is a little hard to understand for me unfortunately!
javacard - NXP SmartMX 卡生命周期管理
我从 NXP 获得了一堆 SmartMX 双接口卡,并下载并设置了 JCOP 工具。虽然将我的 Java Card Applet 从 NetBeans 迁移到 Eclipse 相当容易,但在卡本身上安装已编译的 applet 却相当困难。我无法在这些示例卡上选择安全域小程序。我相信这与卡片所处的状态有关,因为 NXP 为我提供了运输钥匙,并严格禁止卡片在没有先以某种方式融合的情况下离开我的场所. 我曾使用过 ACS 卡(即 ACOS3),并猜测这些 SmartMX 卡处于其生命周期状态,不允许小程序上传和/或个性化。我的问题是,我无法在 NXP DocStore 和网络上找到有关 JCOP 生命周期的文档。唯一接近描述我正在寻找的文档是一个名为GlobalPlatform Card Specification 2.2的 PDF ,其中说与 GP 2.2 兼容的卡至少有 5 种不同的状态:OP_READY
、INITIALIZED
、SECURED
、CARD_LOCKED
和TERMINATED
。该文件未指定使用Transportation Key。
我的问题是,如何使用此交通密钥将卡的状态从OP_READY
更改为INITIALIZED
或SECURED
?
cryptography - 如何检查 INITIALIZE UPDATE 和 EXTERNAL AUTHENTICATE 的正确性?
我通过 opensc-tool 向我的 java 卡发送了80 50 00 00 08 00 00 00 00 00 00 00 00
[ INITILIZE UPDATE00 00 11 60 01 00 8A 79 0A F9 FF 02 00 11 79 11 36 5D 71 00 A5 A5 EC 63 BB DC 05 CC
命令] 并收到了[ Init Response ] 作为来自卡的响应。
如你所见:
在命令中,我00 00 00 00 00 00 00 00
作为Host Challenge发送,并且在响应中:
00 00 11 60 01 00 8A 79 0A F9
=关键多元化数据
FF 02
=关键信息
00 11 79 11 36 5D 71 00
=卡片挑战
A5 A5 EC 63 BB DC 05 CC
=卡密码
现在我想检查一下自己,卡密码是否正常。我该怎么做?例如,我00 00 00 00 00 00 00 00
在此站点中使用 3DES 加密算法 [使用我卡的密钥 = 4041...4F
] 进行加密,但输出与我上面写的卡密码不相等。为什么?
下一个问题是,如果我想向卡发送EXTERNAL AUTHENTICATION命令,它的数据字段是什么(在上述 INITILIZE UPDATE 之后)?
更新:
这是 GPJ 输出:
所以 :
现在,让我们手动制作我们的 Host_Cryptogram:
所以 :
我使用了http://tripledes.online-domain-tools.com/,它对上述值的输出是:
和 :
所以 :
同样,我使用了http://tripledes.online-domain-tools.com/
和 :
所以 :
为什么这两种方式[手动和GPJ输出]给我们两个主机密码?
smartcard - jcmanager 中身份验证过程的主要问题?
1:
2:
3:
以上图片附在问题上,根据他们提出我的问题!
1-正如我们在GP 规范中所知道和提到的,卡片挑战有 8 个字节的长度,但在第一张照片中,JCManager显示了一个 6 字节的卡片挑战!为什么?
2-根据GP规范生成的推导数据与JCManager中的推导数据不相等!为什么?!
3-基于图2,如果静态S_ENC和静态S_MAC具有相等的值,我们得出结论会话S_ENC和会话S_MAC必须具有相等的值。那正确吗?如果是,为什么在 JCManager 中它们之间存在差异?
4-我使用这个站点并通过ECB(DES)加密对JCManager中突出显示的派生数据进行加密,但输出不是预期的!又是为什么!?
smartcard - 智能卡中的逻辑通道
下图是 ubuntu 中的输出,pcsc_scan
正如您在ATR 分析中看到的,我的 javacard 支持 3 个逻辑通道。
这是ISO 7816-4的一部分,它提到了 CLA 中的低半字节,表示逻辑通道号:
问题是:为什么当我想通过另一个逻辑通道而不是基本逻辑通道发送 INITIAL-UPDATE APDU 命令时,它会失败?
CLA = 80
使用[基本逻辑通道]进行初始更新
CLA = 81 or 82
使用[补充逻辑通道]进行初始更新
如您所见,我收到了SW = 6881
[= 不支持逻辑通道]。为什么?
更新 :
“如果一个javacard有两个/三个逻辑通道,那意味着我们可以同时选择两个/三个applet”,这是对的吗?如果是,拥有多个频道的其他好处是什么?如果不是,这个渠道是干什么用的?
smartcard - 选择 APDU 和逻辑通道
据我所知,要打开/关闭逻辑通道,我们必须使用MANAGE CHANNEL
APDU 命令。
- 打开逻辑通道:
00 70 00 P1 P2 LE
- 关闭逻辑通道:
00 70 80 P1 P2 LE
- P1-P2 =
0000
-0003
- LE=
01
(如果 P1-P2=0000
) 或 Empty (如果 P1-P2!=0000
)
. 默认情况下唯一开放的逻辑通道是基本通道。
问题:
1-为什么当我通过关闭的逻辑通道发送SELECT APDU时,它会自动打开?
2-我们何时必须/需要使用打开/关闭逻辑通道命令(MANAGE CHANNEL)?
这是Opensc-tool的输出,如您所见,我通过逻辑通道 1 和 2 成功发送和接收SELECT和GET RESPONSE命令和响应,而之前没有打开它们:
逻辑通道 1:
逻辑通道 2:
smartcard - 无法删除小程序
我为此处的代码创建了一个.cap文件。它是一个简单的一次性密码生成器。
最后我设置010203040506070809
为package ID和applet AID0102030405060708090000
,并将其上传到我的卡上。
这是我列出小程序时GPJ的输出:
如您所见,我的小程序已成功上传。
上传后,我将一些 APDU 发送到我的小程序:
正如您在上面看到的,我选择了我的小程序,向它发送验证命令(一次输入正确的 PIN,三次输入错误的密码)。并使其锁定。
现在我想删除小程序:
Q1 : 我是屏蔽了卡还是只是屏蔽了我的小程序?
Q2 : 为什么我不能删除它,我该怎么办?