智能卡中的身份验证密钥

The*_*ser 1 encryption cryptography smartcard javacard smartcard-reader

我使用JCManager工具在我的 java 卡上加载小程序。该软件在顶部有三个身份验证密钥字段,名为S_ENCS_MACDEK

据我所知,ENC代表EncryptionMAC代表Message Authentication CodeDEK代表Data Encryption Key

我想知道他们何时使用(通信的哪一步?初始更新外部身份验证?...)?

每次通信中都使用这三个密钥,还是其中一些密钥可以选择使用?

哪里?(卡或终端或两者兼而有之?)

另外,我想知道什么是KEKKEK智能卡里有吗?

Maa*_*wes 5

请阅读全球平台卡规范(需要注册)以了解如何使用密钥。它们在身份验证过程中使用的方式在全球平台规范中有所不同,因此最好直接访问源代码。例如E.4.2。GPC 2.2 规定:

生成或验证身份验证密码使用 S-ENC会话密钥和附录 B.1.2.1 - 完整三重 DES 中描述的签名方法。

DEK(或从给定 DEK 派生的密钥)用于对机密数据(例如密钥)进行额外加密。例如,它允许在通过安全消息通道(请注意,可能根本不加密)发送密钥之前将密钥包装在硬件安全模块内。对于较旧的方案,还需要派生 DEK 会话密钥,这与笨拙的专有密钥派生相结合,使得如果不专门针对 Global Platform 对 HSM 进行编程,几乎不可能做到这一点。

DEK 是比 KEK(密钥加密密钥)更通用的术语。I 可用于任何需要与传输通道分开保密的数据。