为啥我在尝试更改 JavaCard 密钥时收到 6A80、6A84 和 6A88?
Posted
技术标签:
【中文标题】为啥我在尝试更改 JavaCard 密钥时收到 6A80、6A84 和 6A88?【英文标题】:why I receive 6A80, 6A84 And 6A88 while I trying to change JavaCard keys?为什么我在尝试更改 JavaCard 密钥时收到 6A80、6A84 和 6A88? 【发布时间】:2014-05-31 04:46:20 【问题描述】:我有一张没有小程序的 java 卡。当我尝试通过 JCManager 添加/修改其密钥时,我收到 6A84
和 6A88
APDU-Response。
注 1:我在 GP Card Spec2.2 中搜索了这两个响应,最后除了它们的含义,我什么也没找到!
注意 2:当我将 key set number 更改为 2 ,并将单选按钮设置为 add 时,我收到 6A80 [Incorrect parameters in the command data field] !!!
注3:然后,我可以成功添加和修改密钥。此外,从读卡器中取出卡片并重新放入后,卡片钥匙没有任何变化!但经过一些尝试添加和修改后,我收到 6A80/6A84/6A88
这是 jcmanager 的输出,而我将单选按钮放在“添加”上,这给了我6A84
[文件中没有足够的内存空间]:
当我选择“修改”单选按钮时,我收到6A88
[未找到参考数据或参考数据]:
更新:我使用 GPSHELL 替换/回收密钥,但我收到以下输出:
C:\Users\ghasemi\Desktop\GPShell-1.4.4>gpshell recyclekey-cosmo-gp211.txt
mode_211
enable_trace
establish_context
card_connect
select -AID a0000000030000
Command --> 00A4040007A0000000030000
Wrapped command --> 00A4040007A0000000030000
Response <-- 6F108408A000000003000000A5049F6501FF9000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 505152535455565758595a5b5c5d5e5
f -enc_key 505152535455565758595a5b5c5d5e5f -kek_key 505152535455565758595a5b5c5
d5e5f // Open secure channel
Command --> 80CA006600
Wrapped command --> 80CA006600
Response <-- 664C734A06072A864886FC6B01600C060A2A864886FC6B02020101630906072A864
886FC6B03640B06092A864886FC6B040215650B06092B8510864864020103660C060A2B060104012
A026E01029000
Command --> 8050000008EFBC3082C086980800
Wrapped command --> 8050000008EFBC3082C086980800
Response <-- 0000116001007F8B0AF9020201CE4DA5AC97B74B861FCDC3513F4E279000
mutual_authentication() returns 0x80302000 (The verification of the card cryptog
ram failed.)
C:\Users\ghasemi\Desktop\GPShell-1.4.4>gpshell replacekey-cosmo-gp211.txt
mode_211
enable_trace
establish_context
card_connect
select -AID a0000000030000
Command --> 00A4040007A0000000030000
Wrapped command --> 00A4040007A0000000030000
Response <-- 6F108408A000000003000000A5049F6501FF9000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4
f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key 404142434445464748494a4b4c4
d4e4f // Open secure channel
Command --> 80CA006600
Wrapped command --> 80CA006600
Response <-- 664C734A06072A864886FC6B01600C060A2A864886FC6B02020101630906072A864
886FC6B03640B06092A864886FC6B040215650B06092B8510864864020103660C060A2B060104012
A026E01029000
Command --> 8050000008265AB6AEA30BA66700
Wrapped command --> 8050000008265AB6AEA30BA66700
Response <-- 0000116001007F8B0AF9020201CE4DA5AC97B74BC8B179AE19AE9C799000
Command --> 848201001038FCE51496D47D400D437EC5F7D51EFE
Wrapped command --> 848201001038FCE51496D47D400D437EC5F7D51EFE
Response <-- 9000
put_sc_key -keyver 1 -newkeyver 1 -mac_key 505152535455565758595a5b5c5d5e5f -enc
_key 505152535455565758595a5b5c5d5e5f -kek_key 505152535455565758595a5b5c5d5e5f
// Put secure channel keys
Command --> 80D8018143018010AA3EB3DDC7861B08DA195E1CA04A8BDF03A4B7D68010AA3EB3DD
C7861B08DA195E1CA04A8BDF03A4B7D68010AA3EB3DDC7861B08DA195E1CA04A8BDF03A4B7D600
Wrapped command --> 84D801814B018010AA3EB3DDC7861B08DA195E1CA04A8BDF03A4B7D68010
AA3EB3DDC7861B08DA195E1CA04A8BDF03A4B7D68010AA3EB3DDC7861B08DA195E1CA04A8BDF03A4
B7D602CA7DE4B07AD3DE00
Response <-- 6A88
put_secure_channel_keys() returns 0x80206A88 (6A88: Referenced data not found.)
C:\Users\ghasemi\Desktop\GPShell-1.4.4>
这是recyclekey-cosmo-gp211.txt [gpshell脚本]的内容:
mode_211
enable_trace
establish_context
card_connect
# -readerNumber 3
select -AID a0000000030000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 505152535455565758595a5b5c5d5e5f -enc_key 505152535455565758595a5b5c5d5e5f -kek_key 505152535455565758595a5b5c5d5e5f // Open secure channel
put_sc_key -keyver 1 -newkeyver 1 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key 404142434445464748494a4b4c4d4e4f // Put secure channel keys
card_disconnect
release_context
这是 replacekey-cosmo-gp211.txt [gpshell 脚本] 的内容:
mode_211
enable_trace
establish_context
card_connect
# -readerNumber 3
select -AID a0000000030000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key 404142434445464748494a4b4c4d4e4f // Open secure channel
put_sc_key -keyver 1 -newkeyver 1 -mac_key 505152535455565758595a5b5c5d5e5f -enc_key 505152535455565758595a5b5c5d5e5f -kek_key 505152535455565758595a5b5c5d5e5f // Put secure channel keys
#put_sc_key -keyver 1 -newkeyver 1 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key 404142434445464748494a4b4c4d4e4f // Put secure channel keys
card_disconnect
release_context
更新 2:
我该如何处理这个问题?
【问题讨论】:
啊,那些 APDU 响应,总是很有帮助... :( 这个问题解决了吗? 【参考方案1】:我从未使用过 JCManager,所以我不确定它如何将表单中的字段映射到 APDU 中的参数,但它可以将 Keyset
映射到 P1(密钥版本号)。
在许多配置中,SCP02 的密钥版本号从 0x20 开始 - 密钥版本号 1 不存在,因此 6A88
响应代码。
所以我的建议是:尝试将 Keyset
设置为 0x20
(32) 看看会发生什么。祝你好运!
我想参考一些规范,它说 SCP02 密钥版本号从 0x20 开始,但除了 UICC 配置之外我找不到其他配置,而且该配置不是免费提供的 - 抱歉。
尝试使用带有标签“E0”的 GET DATA 读取卡中已有密钥的 ID 和版本。原始 APDU 应为:80CA00E000
。
该命令将以 E0 数据结构响应,其中包含有关安全域中所有密钥的信息(您之前将选择)。见 GP CardSpec 中的表 11-27。
【讨论】:
谢谢你亲爱的 Mictter。我明天试试。你用什么软件换钥匙? GPJ?壳?如何? :) 顺便说一句,谢谢。 GPSShell,这个 [来自万事达卡的模拟器] (terminalsimulator.com/Simulator/Details?simulatorVersionId=74) 和一些我无法分享的自写代码。 我尝试将 keyset 设置为 0x20 和 32 等等!但没有任何改变!请检查更新!我尝试通过 gpshell 更改密钥! 尝试使用带有标签'E0'的GET DATA读取卡中已有密钥的ID和版本。原始 APDU 应为:80CA00E000 我使用GP -i
查看卡上密钥的 ID 和版本。并附在问题上!如果您能看一下,我将不胜感激(Update 2)。我可以从这些数据中获得什么?以上是关于为啥我在尝试更改 JavaCard 密钥时收到 6A80、6A84 和 6A88?的主要内容,如果未能解决你的问题,请参考以下文章
身份服务器4:为啥我在调用授权控制器时收到“找不到签名密钥”
验证在 JavaCard 上签名的数据时出现 Java BadPaddingException