JR/T 0025.10─2004
C C 9F73 9F5C 货币兑换因子 累计脱机交易金额上限 C 9F4F 日志格式 可变 不适用 4 6 不适用 不适用 表 21 数据分组标识 ‘0E01’的数据内容
要求 C C C C C C 9F51 9F52 9F56 9F55 9F57 9F76 标签 数据元素 应用货币代码 2 长度 不适用 不适用 不适用 不适用 不适用 不适用 加密 应用默认行为(ADA) 2 发卡行认证指示位 地域指示器 发卡行国家代码 第二应用货币代码 1 1 2 2 表 22 数据分组标识 ‘0E02’的数据内容
要求 C 不适用 标签 AID 数据元素 FFF_1 AID 可变 长度 不适用 加密 FFF_2?AID FFF_nn 表 23 数据分组标识 ‘0Enn’的数据内容
要求 C 9F52 标签 数据元素 应用默认行为(ADA) 2 长度 不适用 加密 表 24 数据分组标识 ‘9200’的数据内容
要求 M 9F10 标签 数据元素 发卡行应用数据 可变 长度 不适用 加密 表 25 数据分组标识 ‘9300’的数据内容 要求 O 9F63 标签 数据元素 交易明细文件短文件标识符 1 长度 不适用 加密 7 中国金融集成电路(IC)卡借记贷记应用需求
如要保证对中国金融集成电路(IC)卡借记/贷记应用进行个人化时能使用此通用个人化方法,以下要求必须满足:
a) 中国金融集成电路(IC)卡借记/贷记应用必须满足在通用个人化中规定的所有要求
b) 中国金融集成电路(IC)卡借记/贷记应用必须满足在中国金融集成电路(IC)卡借记贷记卡片规范中规定的所有要求
c). 中国金融集成电路(IC)卡借记/贷记应用必须将中国金融集成电路(IC)卡借记贷记卡片规范中强制规定的所有数据个人化 8 安全规范
8.1 安全综述
在中国金融集成电路(IC)卡个人化的过程中,每一个步骤都有其特定的安全要求。现就各方面
11
JR/T 0025.10─2004
的要求,制定出以下的规范。
关于加密方式,请参考EMV规范所提出的方式来对数据进行加密。 8.2 初始化安全
密钥数据(KEYDATA)必须按下表格式设置,该数据由KMCID 和芯片序号(CSN)组成。KMCID是个人化主密钥标识符,应由发卡行或个人化厂商提供。KMCID的长度为6个字节。CSN是IC卡片物理标识符最右边的4个字节。
表 26 KEYDATA的初始存储内容
字段 KMC(例如IIN/BIN,左对齐,用1111b/半字节填充)标识 芯片序列号(CSN) 4 二进制数 6 长度 BCD 格式 KEYDATA(密钥数据)是每个IC卡应用分区都可以访问的一个数据单元,KMC标识符是INITIALIZE UPDATE命令响应数据的一部分,并给定位IC卡发行商的KMC提供了方便。
在IC卡上必须存在‘个人化主密钥(KMC)’的版本号,这个主密钥用来为每个应用生成初始的个人化密钥(KENC、KMAC和KDEK)。
必须为每张IC卡生成一个加密分散密钥(KENC),并把它写入相应的应用中。这个密钥用来生成IC卡密文和验证主机密文。如果密文的安全等级要求STORE DATA命令的数据字段是加密的,这个分散密钥还用来在CBC模式下对该命令的数据字段进行解密。
KENC是一个16 字节(112比特加奇偶校验位)的DES密钥。 KENC密钥用以下方法推算:
KENC := DES3(KMC)[ KEYDATA的6个最低有效字节|| ’F0’ || ‘01’ ]|| DES3(KMC)[ KEYDATA的6个最低有效字节 || ‘0F’ || ‘01’]。
必须为每张IC卡生成一个校验码分散密钥(KMAC)并写入相应的IC卡。这个密钥用来校验EXTERNAL AUTHENTICATE命令使用的C-MAC。同时当STORE DATA 命令的密文安全级要求命令中的数据采用MAC时,这个密钥也用来校验STORE DATA 命令使用的C-MAC。
KMAC是一个16字节(112比特加奇偶校验位)的DES密钥。 KMAC应采用以下方法导出:
KMAC := DES3(KMC)[ KEYDATA的6个最低有效字节 || ’F0’ || ‘02’ ]|| DES3(KMC)[ KEYDATA的6个最低有效字节 || ‘0F’ || ‘02’]。
必须为每张IC卡生成一个密钥加密分散密钥(KDEK)并将它写入相应的IC卡。这个密钥用来在ECB模式下对STORE DATA命令收到的机密数据进行解密。
KDEK是一个16字节(112比特加奇偶校验位)的DES密钥。 KDEK应采用以下方法导出:
KDEK := DES3(KMC)[ KEYDATA 的6个最低有效字节 || ’F0’ || ‘03’ ]|| DES3(KMC)[ KEYDATA 的6个最低有效字节 || ‘0F’ || ‘03’]。
必须把IC卡响应INITIALIZE UPDATE命令时返回来的序列计数器初始化为‘0001’。 8.3 密钥定义
8.3.1个人化密钥描述
12
JR/T 0025.10─2004
表 27 个人化密钥描述 密钥名称 密钥共享 用途 主密钥 发卡行主密钥 发卡行、IC卡厂商和个人化设备 IC卡厂商使用这个KMC生成卡片级密钥(KENC、 KMAC、 KMC KDEK),并将它们写到卡上。 用来创建一个对话密钥,利用该对话密钥可创建密文和以CBC模式加密机密数据。 用来创建一个对话密钥,利用该对话密钥可创建命令处理过程中所使用的C-MAC。 用来创建一个对话密钥,利用该对话密钥可在ECB模式下加密DES密钥或灵活的加密其它机密数据。 发卡行密钥 交换密钥 发卡行和数据准备设备 对发卡行与数据准备设备之间的脱机PIN及其它机密数据进行保护。 对数据准备设备与个人化设备之间的脱机PIN及其下列特殊类型的数据传输密钥可能会被使用: PEK/TK – PIN加密密钥,用于保护PIN数据。 KEK/TK – 密钥交换密钥,用于保护DES密钥。 MAC密钥(校验码密钥) 在个人化数据文件中,由数据准备设备向个人化设备提供 用于保证在个人化数据文件中,提供给个人化设备的应用数据的完整性。 MAC密钥 不适用 不适用 DEK / TK KDEK 数据加密密钥 KEKISS SKUDEK KMAC SKUMAC KENC SKUENC 卡密钥 对话密钥 数据加密密钥 数据准备设备/ 传输密钥 和个人化设备 它机密数据进行保护。 8.3.2中国金融集成电路(IC)卡借记/贷记应用密钥描述
表 28 中国金融集成电路(IC)卡借记/贷记应用密钥描述 密钥名称 中国金融集成电路(IC)卡联机验证密钥 中国金融集成电路(IC)卡讯息认证密钥 中国金融集成电路(IC)卡数据加密密钥 ICC 私钥 发卡行和卡 主密钥用来生成唯一的卡片密钥,这个卡片密钥用于生成进行发卡后的数据更新所需要的消息认证对话密钥。 发卡行和卡 主密钥用来生成唯一的卡片密钥,这个卡片密钥用于生成对发卡后更新机密数据(脱机PIN)进行加密的对话密钥,。 发卡行和卡 由发卡行生成并安全地存储在卡上。在脱机数据验证(DDA)处理过程中,用这个私钥对动态数据进行数据签名。个人化完成以后,发卡行通常不持有该密钥。 ENC MDK ENC UDK SUDK ENC MAC MDK MAC UDK SUDK MAC 密钥共享 用途 主密钥 MDK 卡密钥 UDK 对话密钥 SUDK(用于通用密码) 发卡行和卡 主密钥用来生成唯一的卡片密钥,用于卡片和发卡行进行联机验证。 密钥用途如下图所示:
13
JR/T 0025.10─2004
图 1 密钥用途
8.4 管理要求 8.4.1环境
8.4.1.1创建安全数据的环境要求
请参见“银联”标识卡个人化企业安全和质量管理指南。 8.4.1.2 安全数据的产生
开始进行个人化之前,必须创建相应的加密密钥,这些密钥可以由发卡行创建,也可以由个人化厂商创建。如果由个人化厂商创建,必须按本手册的规定进行。
至少应生成以下的密钥: ? 发卡行主密钥(KMC):用来派生 KMAC,KENC 和 KDEK三个密钥。
KMAC——用来锁闭中国金融集成电路(IC)卡的应用区,并对个人化过程中装载到卡片的个人化数据进行检验,证实它们完整无损,且没有被修改。
KENC——用来生成IC卡密文和验证主机密文。
KDEK——用来加密在个人化过程中写入卡片的保密数据。
KMC对每个发卡行是独有的,而KMAC,KENC 和KDEK对每张卡是独有的。 ? 主密钥(MDK)——用来导出以下几个密钥: UDK——用于联机的卡认证和发卡行认证。
就每个BIN(银行标识码)而言,MDK通常是唯一的,而UDK对每张卡都必须是唯一的。 ? 发卡行公钥/私钥对——通常由发卡行生成,公钥应传输给中国金融集成电路(IC)卡认证机
构,供其创建发卡行公钥证书。私钥被保存在发卡行的HSM(主机加密模块)内。
? 密钥交换密钥(KEK)——用来对发卡行个人化输入文件中的机密数据进行加密,每个发卡
行的KEK必须是唯一的。
? 传输密钥(TK)——用来对数据准备系统向个人化系统传送的发卡行个人化输入文件中的机
密数据进行加密。
作为选择,也可以用发卡行公钥/私钥对生成这些密钥。
? ICC公钥/私钥对 – IC卡利用这一对密钥执行DDA和CDDA/AC密码生成算法或者对PIN进
行加密。其中,公钥须经过发卡行私钥的签名,才能获得发卡行公钥证书。
14