【发布时间】:2020-12-15 06:24:35
【问题描述】:
我有一个空的 Javacard,如下所示:
user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement
我在上面安装了一个奇怪的小程序:
user@system$ java -jar gp.jar --install applet.cap
CAP loaded
user@system$
嗯,小程序安装成功:
user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement
APP: 01020304050601(SELECTABLE)
PKG: 010203040506(LOADED)
user@system$
但是当我尝试删除小程序时我失败了:
user@system$ java -jar gp.jar --delete 01020304050601 --debug --verbose
# Successful Mutual Authentication with Security Level = 01 (CMAC)
A>> 84F28002 0A 4F00<CMAC> 00
A<< E3114F08A0000000030000009F700101C5019E 9000
A>> 84F24002 0A 4F00<CMAC> 00
A<< E3104F07010203040506019F700107C50100 9000
A>> 84F21002 0A 4F00<CMAC> 00
A<< E30F4F060102030405069F700101C50100 9000
A>> 84F22002 0A 4F00<CMAC> 00
A<< E30C4F060102030405069F700101 9000
A>> 84E40000 11 4F0701020304050601<CMAC>
A<< 6985
Could not delete D3646467329901. Some app still active?
我也尝试过以下形式的删除命令:
user@system$ java -jar gp.jar --delete 01020304050601 --force ==> Same result
user@system$ java -jar gp.jar --delete 010203040506 ==> Same result
我可以用来删除小程序的唯一成功的形式如下:
user@system$ java -jar gp.jar --delete 010203040506 --force
# Successful Mutual Authentication with Security Level = 01 (CMAC)
A>> 84F28002 0A 4F00<CMAC> 00
A<< E3114F08A0000000030000009F700101C5019E 9000
A>> 84F24002 0A 4F00<CMAC> 00
A<< E3104F07010203040506019F700107C50100 9000
A>> 84F21002 0A 4F00<CMAC> 00
A<< E30F4F060102030405069F700101C50100 9000
A>> 84F22002 0A 4F00<CMAC> 00
A<< E30C4F060102030405069F700101 9000
A>> 84E40080 10 4F06010203040506<CMAC>
A<< 9000
applet 及其软件包现已消失:
user@system$ java -jar gp.jar --list
ISD: A000000003000000 (OP_READY)
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement
问题:为什么我需要删除包才能删除小程序本身?
请注意,这种情况只出现在特定的 cap 文件中。
仅供参考:我尝试了不同的工具(包括 gpshell、pyapdu 等)并且得到了相同的结果。
【问题讨论】: