安全报文
安全报文通过报文鉴别码(MAC)来保障数据的完整性和对发卡行的认证,通过对数据域的加密来保障数据的机密性。安全报文机制要求发卡行使用唯一的IC卡安全报文认证(MAC)和安全报文加密主密钥。包括IC卡安全报文认证(MAC)和加密子密钥的分散方法。
1报文格式
JR/T0025使用的报文格式见JR/T0025.5的定义。
报文所涉及的命令的数据域没有将BER-TLV编码用于安全报文,使用安全报文的命令的发送者及当前被选择的应用必须知道数据域中包含的数据对象以及这些数据对象的长度。根据ISO7816-4,符合此格式的安全报文是通过将命令的类型字节的低半字节设置为“4”明确指定的。
2报文完整性及其验证
(一)命令数据域
使用安全报文的命令的发送者以及当前被选择的应用必须知道包含在数据域中的数据元(包括MAC)及其相应的数据长度。MAC不是BER-TLV编码并且总是数据域中的最后一个数据元,并且它的长度总是4字节。
(二)MAC过程密钥分散
以完整性和认证为目的的安全报文的MAC生成的第一步包括从IC卡的唯一的16字节安全报文认证(MAC)子密钥和2字节ATC分散得到一个唯一的16字节安全报文鉴别(MAC)过程密钥。
(三)MAC的计算
要保护的报文必须按照支付系统的专有规范来构建。但总是包含了C-AP-
DU(CLAINSP1P2)的头部以及命令数据(如果存在)。
规范中MAC长度为4,在按上面描述的方法计算得到8个字节的结果后,取其中最左面的(最高)4字节来得到MAC。
3报文私密性
(一)命令报文的数据域
在命令数据域中除了MAC以外,其他明文数据域都被加密。
(二)加密过程密钥的分散
以私密性为目的的安全报文的加/解密的第一步包括从IC卡的唯一的16字节安全报文加密子密钥和2字节ATC分散得到一个唯一的16字节加密过程密钥。
(三)加密解密
对明文/加密命令数据域的加/解密是通过使用加密过程密钥并应用对称密钥机制进行的。