
金融IC卡安全体系.doc
8页金融 IC卡安全体系1.1整体分布PBOC2.0涉及的密钥、证书分布见下图:注:交易流程只涉及与安全相关的流程,应用选择,应用初始化,读取应用数据等交易流程一概省略,脱机数据认证单独概括,联机交易流程如下:1. 终端向卡片发送Generate Ac命令,向卡片提供CDOL1要求的数据并请求ARQC密文;2. 卡片收到生成密文命令后,卡片使用卡片应用密文主密钥UDK对应用计数器ATC分散生成卡片应用密文过程密钥,并用过程密钥对命令数据域部分加密生成ARQC,返回命令响应报文;3. 终端收到命令响应后向发卡行发送联机请求报文;4. 发卡行调用安全平台接口进行联机卡片认证,安全平台使用发卡行应用密文主密钥MDK对卡号,卡序列号分散生成卡片应用密文主密钥UDK,然后使用UDK对应用计数器ATC再次分散得到卡片应用密文过程密钥对相关数据加密生成ARQC,与终端上送的ARQC比较,相同则使用ARQC与授权响应码异或,使用过程密钥对异或结果加密生成ARPC并返回发卡行;如果有发卡行脚本返回,则使用发卡行安全报文MAC主密钥MACMDK对卡号,卡序列号分散生成卡片安全报文MAC主密钥MACUDK,然后使用MACUDK对应用计数器ATC再次分散得到卡片安全报文MAC过程密钥对脚本命令数据加密生成脚本MAC返回发卡行;5. 发卡行返回联机应答报文;6. 终端向卡片发送External Authenticate命令;7. 卡片收到外部认证命令后进行发卡行认证,卡片应用密文主密钥UDK对应用计数器ATC分散生成卡片应用密文过程密钥,将命令数据域中的ARPC与授权响应码进行异或,并用卡片应用密文过程密钥对异或结果加密生成ARPC,与命令上送的ARPC比较,相同则发卡行认证成功,返回命令响应报文;8. 终端向卡片发送Generate Ac命令,向卡片提供CDOL2要求的数据并请求密文并接收命令响应数据;9. 终端向卡片发送脚本命令,卡片收到脚本后进行脚本MAC校验,使用卡片安全报文MAC主密钥MACUDK对应用计数器ATC分散得到卡片安全报文MAC过程密钥对脚本命令数据加密生成脚本MAC,如果和脚本命令MAC相等则执行脚本命令。
静态数据认证1. 终端读取卡片发卡行公钥证书,签名数据等应用数据并保存数据;2. 终端使用根CA索引及RID找到根CA公钥并用CA公钥验证发卡行公钥证书的有效性,恢复发卡行公钥;使用恢复的发卡行公钥验证卡片签名的静态应用数据的有效性标准动态数据认证1. 终端读取卡片发卡行公钥证书,IC卡公钥证书;2. 终端使用根CA索引及RID找到根CA公钥并用CA公钥验证发卡行公钥证书的有效性,恢复发卡行公钥;使用恢复的发卡行公钥验证IC卡公钥证书的有效性并恢复IC卡公钥;3. 终端向卡片发送Internal Authenticate命令请求动态签名,卡片收到命令后,使用IC卡私钥对命令中的终端数据和卡片动态交易数据签名生成动态应用数据并返回终端;4. 终端使用IC卡公钥验证卡片返回的动态应用数据的有效性1.2个人化密钥汇总1.2.1密钥交换密钥(KEK)3DES密钥,用来对发卡行个人化输入文件中的机密数据进行加密,并在发卡行和数据准备系统间对这些数据进行安全保护,由发卡行与数据准备系统共享每个发卡行的KEK必须是唯一的KEK加密发卡行向数据准备系统传输的个人化机密数据(如:磁道信息),KEK同时用来加密安全管理中心向数据准备系统传输的密钥(包括:UDK、ENCUDK和MACUDK)、证书(包括:IC卡私钥、IC卡公钥证书、发卡行公钥证书)。
1.2.2传输密钥(TK)3DES密钥,用来对数据准备系统向个人化系统传送的发卡行个人化输入文件中的机密数据进行加密,由数据准备系统和个人化系统共享TK用来加密数据准备系统向个人化系统传输的制卡文件中的密钥(包括:UDK、ENCUDK和MACUDK)、证书(包括:IC卡私钥、IC卡公钥证书、发卡行公钥证书)、个人化机密数据(如:磁道信息)1.2.3 MAC密钥3DES密钥,由数据准备系统在向个人化系统传递个人化文件时计算文件MAC,保证文件的完整性1.2.4 发卡行主密钥(KMC)3DES密钥,由发卡行生成并与数据准备系统和个人化系统共享,发卡行主密钥用于派生KENC、KMAC和KDEK3个卡片密钥卡片应用密文密钥KENC:用来生成卡片密文或验证主机密文卡片应用MAC密钥KMAC:用来锁闭中国金融集成电路(IC)卡的应用区,并对个人化过程中装载到卡片的个人化数据进行检验,证实它们完整无损,且没有被修改 卡片应用加密密钥KDEK:用来加密在个人化过程中写入卡片的保密数据上述密钥仅用于卡片个人化过程中的数据保护1.3 PBOC2.0借贷记应用密钥汇总1.3.1 根CA公私密钥对 根CA公钥:脱机数据认证时验证发卡行公钥证书;根CA私钥:签发发卡行公钥证书。
1.3.2发卡行公私钥对、发卡行公钥证书发卡行公钥证书由安全管理中心用KEK加密后传递给数据准备系统,再由数据准备系统用TK转加密后传递给个人化系统,最后由个人化系统用K-DEK加密后写入卡中发卡行公钥:验证SAD,验证IC卡证书;发卡行私钥:生成SAD,签发IC卡证书;发卡行公钥证书用于卡片的脱机数据认证1.3.3 IC卡公私钥对、IC卡公钥证书IC卡公私钥对对每张卡是独有的IC卡私钥、IC卡公钥证书由安全管理中心用KEK加密后传递给数据准备系统,再由数据准备系统用TK转加密后传递给个人化系统,最后由个人化系统用K-DEK加密后写入卡中IC卡公钥:公钥验证签名的动态应用数据;IC卡私钥:生成签名的动态应用数据;IC卡公钥证书:发卡行私钥对IC卡公钥等信息签名生成1.3.4 发卡行应用密文主密钥(MDK)用来派生卡片应用密文主密钥UDK,用MDK对卡号及卡号序列号进行离散得到卡片应用子密文主密钥UDK,由个人化设备写入IC卡中,交易过程中UDK对ATC进行离散生成卡片应用密文过程密钥对数据加密生成应用密文UDK是MDK的子密钥,MDK用于发卡行联机卡片认证(验证ARQC、生成ARPC),以及验证脱机交易密文(TC);UDK用于卡片发卡行认证(生成ARQC、验证ARPC),以及生成脱机交易密文(TC)。
1.3.5发卡行安全报文加密主密钥(ENCMDK) 用来派生卡片安全报文加密主密钥ENCUDK,用ENCMDK对卡号及卡号序列号进行离散得到卡片安全报文加密主密钥ENCUDK,由个人化设备写入IC卡中,交易过程中ENCUDK对ATC进行离散生成卡片安全报文加密过程密钥对安全报文机密信息加解密ENCUDK是ENCMDK的子密钥,发卡行用ENCMDK加密发卡行脚本的机密信息(如脱机PIN),IC卡用ENCUDK解密发卡行脚本的机密信息(如脱机PIN)1.3.6发卡行安全报文MAC主密钥(MACMDK)用来派生卡片安全报文MAC主密钥MACUDK,用MACMDK对卡号及卡号序列号进行离散得到卡片安全报文MAC主密钥MACUDK,由个人化设备写入IC卡中,交易过程中MACUDK对ATC进行离散生成卡片安全报文MAC过程密钥对安全报文计算验证MACMACUDK是MACMDK的子密钥,MACMDK用来生成发卡行脚本MAC校验数据,IC卡用MACMDK对接收到的发卡行脚本进行MAC校验,二者必须相符,来确定发卡行脚本的正确性与完整性。












