我在我的java-cards上使用 JCManager 工具加载小程序。此软件在顶部有三个用于身份验证密钥的字段,名为S_ENC
,S_MAC
和DEK
。
据我所知,ENC
代表加密,MAC
代表邮件验证码,DEK
代表数据加密密钥。
我想知道他们何时使用(沟通中的哪一步? INITIAL UPDATE ,外部认证?...)?
在每个通信中使用的所有这三个密钥或其中一些密钥是否都是可选的?
在哪里? (卡或终端或两者兼而有之?)
而且,我想知道什么是KEK
?智能卡中是否有KEK
?
答案 0 :(得分:4)
阅读关于如何使用密钥的Global Platform Card specifications(需要注册)。在身份验证期间使用它们的方式因全球平台规范而异,因此最好直接使用源代码。例如E.4.2。 GPC 2.2规定:
生成或验证 身份验证密码使用S-ENC 会话密钥和附录中描述的签名方法 B.1.2.1 - 全三重DES。
DEK - 或从给定DEK派生的密钥 - 用于对机密数据(如密钥)进行额外加密。例如,它允许在硬件安全模块中包装密钥,然后通过安全消息通道发送它(根本不需要加密,请注意)。对于较旧的方案,还需要导出DEK会话密钥,该密钥与笨拙的专有密钥派生相结合,使得在不编程HSM的情况下几乎不可能这样做。
DEK只是一个比KEK更通用的术语。