【问题标题】:Difference between verification and authentication?验证和认证的区别?
【发布时间】:2014-06-21 10:13:57
【问题描述】:

如您所知,我们通过INITIAL UPDATEEXTERNAL AUTHENTICATION 命令向卡片证明我们是真实用户,如下所示:

< 80 50 00 00 08 | Host Challenge
> ...
< 84 82 03 00 10 | Host Cryptogram | MAK
> ...

我想知道,这个认证过程和带有CLA 20 P1 P2 Lc Data Le APDU 的VERIFYING 过程有什么区别?

所有卡都支持?还是每张卡都使用这种机制之一?


更新: 如您所见,我成功上传并安装了我的小程序到卡上,[未使用验证]!

那么为什么我需要验证:

C:\Users\ghasemi\Desktop\gpj-20120310>gpj -load e:\helloW.cap -install

C:\Users\ghasemi\Desktop\gpj-20120310>java -jar gpj.jar -load e:\helloW.cap -ins
tall
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0
ATR: 3B 68 00 00 00 73 C8 40 12 00 90 00
DEBUG: Command  APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain GP211 A0 00 00 01 51 00 00 , SW: 6A 82
DEBUG: Command  APDU: 00 A4 04 00 08 A0 00 00 00 18 43 4D 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain GemaltoXpressPro A0 00 00 00 18 43 4D 00 , SW:
6A 82
DEBUG: Command  APDU: 00 A4 04 00 08 A0 00 00 00 03 00 00 00
DEBUG: Response APDU: 6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 01 FF 90 0
0
Successfully selected Security Domain OP201a A0 00 00 00 03 00 00 00
DEBUG: Command  APDU: 80 50 00 00 08 A7 C9 58 B7 D1 B6 84 E9
DEBUG: Response APDU: 00 00 11 60 01 00 8A 79 0A F9 FF 02 00 31 DF AA 47 16 6E 9
7 B8 02 20 8F 8E A0 1B 88 90 00
DEBUG: Command  APDU: 84 82 00 00 10 0D D7 A4 DF 75 E4 CA 5C 9E EE 25 3F 96 A7 8
A 8B
DEBUG: Response APDU: 90 00
DEBUG: Command  APDU: 84 82 00 00 08 0D D7 A4 DF 75 E4 CA 5C
DEBUG: Response APDU: 90 00
DEBUG: packagePath: helloWorldPackage/javacard/
DEBUG: package: helloWorldPackage
DEBUG: package AID: 01 02 03 04 05 06 07 08 09 00
DEBUG: applet AIDs: [01 02 03 04 05 06 07 08 09 00 00 ]
DEBUG: Command  APDU: 80 E6 02 00 17 0A 01 02 03 04 05 06 07 08 09 00 08 A0 00 0
0 00 03 00 00 00 00 00 00
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E6 02 00 17 0A 01 02 03 04 05 06 07 08 09 00 08 A0 00 0
0 00 03 00 00 00 00 00 00
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E8 00 00 FF C4 82 01 49 01 00 14 DE CA FF ED 01 02 04 0
0 01 0A 01 02 03 04 05 06 07 08 09 00 02 00 1F 00 14 00 1F 00 0F 00 0B 00 2E 00
0C 00 7D 00 18 00 12 00 00 00 6F 00 02 00 01 00 0B 01 01 00 04 00 0B 01 02 01 07
 A0 00 00 00 62 01 01 03 00 0F 01 0B 01 02 03 04 05 06 07 08 09 00 00 00 08 06 0
0 0C 00 80 03 00 FF 00 07 01 00 00 00 1C 07 00 7D 00 01 10 18 8C 00 00 7A 05 30
8F 00 01 3D 8C 00 02 18 1D 04 41 18 1D 25 8B 00 03 7A 02 23 18 8B 00 04 60 03 7A
 19 8B 00 05 2D 1A 03 25 11 00 FF 53 5B 32 1A 04 25 11 00 FF 53 5B 29 04 1F 60 0
8 11 6E 00 8D 00 06 16 04 73 00 10 00 00 00 00 00 09 18 19 8C 00 07 70 08 11 6D
00 8D 00 06 7A 05 22 19 8B 00 05 2D 7B 00 08 92 32 7B 00 08 03 1A 03 1F 8D 00 09
 3B 19 03 1F 8B 00 0A 7A 08 00 18 00 02 00 01 00 01 03 00 0B 48 65 64 61 79 74 2
0
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E8 00 00 FF C4 82 01 49 01 00 14 DE CA FF ED 01 02 04 0
0 01 0A 01 02 03 04 05 06 07 08 09 00 02 00 1F 00 14 00 1F 00 0F 00 0B 00 2E 00
0C 00 7D 00 18 00 12 00 00 00 6F 00 02 00 01 00 0B 01 01 00 04 00 0B 01 02 01 07
 A0 00 00 00 62 01 01 03 00 0F 01 0B 01 02 03 04 05 06 07 08 09 00 00 00 08 06 0
0 0C 00 80 03 00 FF 00 07 01 00 00 00 1C 07 00 7D 00 01 10 18 8C 00 00 7A 05 30
8F 00 01 3D 8C 00 02 18 1D 04 41 18 1D 25 8B 00 03 7A 02 23 18 8B 00 04 60 03 7A
 19 8B 00 05 2D 1A 03 25 11 00 FF 53 5B 32 1A 04 25 11 00 FF 53 5B 29 04 1F 60 0
8 11 6E 00 8D 00 06 16 04 73 00 10 00 00 00 00 00 09 18 19 8C 00 07 70 08 11 6D
00 8D 00 06 7A 05 22 19 8B 00 05 2D 7B 00 08 92 32 7B 00 08 03 1A 03 1F 8D 00 09
 3B 19 03 1F 8B 00 0A 7A 08 00 18 00 02 00 01 00 01 03 00 0B 48 65 64 61 79 74 2
0
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E8 80 01 4E 3A 29 20 20 00 00 00 00 05 00 2E 00 0B 06 8
0 03 00 01 00 00 00 06 00 00 01 03 80 03 02 03 80 03 03 03 80 0A 01 06 80 07 01
06 00 00 5F 05 00 00 00 06 80 10 02 03 80 0A 08 09 00 12 00 00 00 0E 05 06 04 0A
 07 07 1D 10 08 07 04 05 07 07
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E8 80 01 4E 3A 29 20 20 00 00 00 00 05 00 2E 00 0B 06 8
0 03 00 01 00 00 00 06 00 00 01 03 80 03 02 03 80 03 03 03 80 0A 01 06 80 07 01
06 00 00 5F 05 00 00 00 06 80 10 02 03 80 0A 08 09 00 12 00 00 00 0E 05 06 04 0A
 07 07 1D 10 08 07 04 05 07 07
DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E6 0C 00 29 0A 01 02 03 04 05 06 07 08 09 00 0B 01 02 0
3 04 05 06 07 08 09 00 00 0B 01 02 03 04 05 06 07 08 09 00 00 01 00 02 C9 00 00

DEBUG: Response APDU: 00 90 00
DEBUG: Command  APDU: 80 E6 0C 00 29 0A 01 02 03 04 05 06 07 08 09 00 0B 01 02 0
3 04 05 06 07 08 09 00 00 0B 01 02 03 04 05 06 07 08 09 00 00 01 00 02 C9 00 00

DEBUG: Response APDU: 00 90 00

【问题讨论】:

  • 这是 MAC(消息验证码),不是 MAK。

标签: smartcard javacard apdu


【解决方案1】:

根据:ISO 7816-4:智能卡交换的行业间命令。

VERIFY命令启动卡中比较接口设备发送的验证数据与卡中存储的参考数据(例如密码)。

AUTHENTICATE 命令使用从接口设备发送的质询数据和存储在卡中的相关秘密(例如密钥)启动卡对身份验证数据的计算

【讨论】:

  • 谢谢,我有一张 GemPlus javacard。你知道它的默认验证密码是什么吗?
  • 嗯..it 0000 或 1234 ,如果以上是您问题的答案,请标记/投票。谢谢
  • 我很快就会投票!我现在不能投票! (至少需要 15 个代表)。使用 DEK_KEY、S_ENC 和 S_MAK 密钥进行外部身份验证并不能证明我是卡管理员的真实用户?如果是,为什么我必须验证?验证后卡激活(可以使用)哪些功能?
  • 引用标准很好,但是对于 GP 定义的 INITIALIZE UPDATEAUTHENTICATE 命令:它们是用最高阶设置为 1 的类字节定义的(80 或 @987654324 @)。这意味着这些是 ISO 7816-4 中未描述的 专有 命令。当然,这并不意味着您回答的要点不正确,这些命令肯定使用对称的质询-响应协议。
【解决方案2】:

Initialize update 和 ext auth 命令用于在卡外实体和卡上实体之间建立安全通道。 而 00 20 .... apdu 用于验证卡管理器密码。 所以所有符合 GP 的卡都支持两者。 卡管理器是卡的所有者,因此要对自己进行身份验证或说要联系卡管理器,您可以使用初始化更新和 ext auth。 或者您可以选择卡管理器并使用 00 20... 命令向卡管理器验证您自己。

【讨论】:

  • 谢谢,我有一张 GemPlus javacard。你知道它的默认验证密码是什么吗?
  • 抱歉不知道关于 Gemplus 卡 :-(
  • 你可以试试 010203040506708 这只是一个猜测 ;-)
  • 好的,谢谢:)。验证后你知道卡激活(可以使用)有哪些能力吗?
  • 在选择卡管理器并验证卡管理器密码后,您将能够向卡发送 GP 合规性命令以获取状态、放置密钥、安装...等
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2022-12-29
  • 2023-03-29
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多