本文节选自《金融电子化》2018年7月刊

作者:中国银联股份有限公司汤洋  王欢  陈芳

行业现状:无论是传统的磁条卡、金融IC卡,还是移动支付技术、密码技术在银行卡领域中都起着关键与支撑的作用。银行卡交易的敏感数据私密性应该保护,数据的完整性应当受到保护,交易的实体双方应该得到认证。在银行卡领域实现以上功能常用的密码算法主要有三类,即对称算法、非对称算法和哈希算法。2013年,中国人民银行发布《中国金融集成电路(IC)卡规范》(JR/T0025-2013,简称PBOC3.0),首次支持SM算法;2014年,中国银联修订发布《中国银联金融IC卡技术规范》(Q/CUP0047-2014,简称UICS)支持SM算法。自此,金融IC卡开始试点应用SM算法并逐步规模化应用。2014年以来,中国银联先后修订发布了交换系统、受理终端规范支持SM算法,并成功实施改造推广。

金融IC卡交易的SM算法应用

在金融IC卡领域,以金融IC卡标准借贷记应用流程为例,密码算法在金融IC卡应用主要在脱机数据认证、应用密文生成、发卡行/卡片认证、发卡行脚本处理等环节中体现,如图1所示。

图1 金融IC卡标准借贷记典型应用流程中的密码算法应用

1.脱机数据认证环节。

脱机数据认证是金融IC卡交易中终端对于卡片真实性的验证,该环节基于公钥密码技术(非对称算法)的签名验证机制。根据PBOC3.0规范第7和17部分定义,脱机数据认证环节使用非对称算法RSA或SM2算法进行数据的签名和验签,其中也用到了哈希算法SHA-1或SM3算法来进行哈希计算。

(1)SM2算法下的证书格式与验签流程差异。SM2算法与SM3算法的应用在交易流程上与RSA算法和SHA-1算法并无差别,但由于SM2算法椭圆曲线算法的特性,其签名结果需要附带完整的被签名数据一起传递。同时SM2算法本身包含了哈希算法步骤,无需重复进行哈希计算。因此,脱机数据认证环节采用SM2算法后,相关数字证书、数据格式的变化如下。

SM2证书去掉发卡行公钥余项、发卡行公钥指数长度、发卡行公钥指数、填充字节等RSA算法特有字段。去掉哈希校验过程,同时去掉哈希值及哈希算法标识字段:哈希计算SM3是SM2机制的一个步骤,因此没有必要再进行单独验证。设置“公钥参数标识”:考虑算法参数扩展需求,新增SM2算法“公钥参数标识”。被签名数据明文传递,不需要恢复:验证签名流程基本不变,但去掉了公钥索引判断。相关流程定义参见PBOC3.0第17部分第5章;具体的算法选择过程参见本文后续分析。

(2)终端支持SM2算法。双算法终端为适应SM算法的交易处理和根CA公钥加载,需要进行相应的改造。对于金融IC卡交易流程处理主要参考见PBOC3.0第17部分;对于根CA公钥加载应用SM2算法的支持,银联的方案定义于《销售点终端(POS)应用规范》(QCUP009.1-2015)。

(3)其他相关内容。根CA公钥认证技术要求、应用SM算法的IC卡数据分组要求、个人化数据模板要求参见UICS产品规范第11部分第7-9章。

2应用密文与发卡行安全报文环节。

标准借贷记应用流程中的对称算法使用主要有以下环节。

(1)应用密文生成与发卡行/卡片认证。AC(应用密文)用于在卡片和发卡行交易授权系统间对交易报文进行鉴别,是用过程密钥进行报文鉴别码MAC计算生成。应用密文类型包括ARQC、AAC、TC、ARPC等。基于SM4算法的密文计算结果和3DES一样同为8字节,具体计算过程参见PBOC3.0第17部分第6章。

(2)发卡行安全报文保护。发卡行安全报文用于发卡后的特定交易过程中卡片和交易授权系统间的报文传输安全,包括了安全报文加密和完整性计算两类,使用对称算法。基于SM4算法的具体计算过程参见PBOC3.0第17部分第7-8章。

(3)子密钥分散及过程密钥生成。在上述过程中,应对报文加密和完整性保护使用不同的密钥,包括应用密文密钥、发卡行安全报文加密密钥和MAC密钥三类。每类密钥分发卡行主密钥IMK、卡片主密钥MK、卡片过程密钥SK三级,密钥分散或生成关系,如图2所示。基于SM4算法的计算方法参见PBOC3.0第17部分第8.1.3至8.1.4节。

图2 金融IC卡对称密钥体系

3.算法选择。

SM算法应用过渡期间,需要SM算法卡可以在存量终端上使用。SM算法终端要兼容受理非SM算法卡片,因此SM算法卡和新增的SM算法终端都需要支持两套算法。根据PBOC3.0规范第17部分定义,双算法卡在卡片个人化数据包括了RSA算法所需的所有数据元,同时包括了SM2算法所需的所有数据元。而PBOC3.0定义的单SM算法卡在实际应用不存在。对于脱机数据认证算法,卡片在接收终端应用选择命令后,返回的PDOL数据列表中必须包括SM算法支持指示器(DF69);终端根据如支持SM算法,设置国密算法支持指示器标签为“1”发送GPO指令至卡片,不支持SM算法的存量终端默认会填“0”。双算法卡片根据GPO的指令参数,确定卡片的算法环境和数据返回给终端。终端根据卡片返回的AIP和AFL进行应用数据读取、脱机认证等其他处理流程。

对于联机数据算法,联机报文的55域9F10第8字节指定了应用密文、联机认证和发卡行脚本保护所用对称密码算法标识。

在PBOC3.0规范中,SM算法支持指示器(DF69)的值确定了脱机数据认证使用的密码算法类型和联机数据的对称密码算法类型。实际上,后者只涉及卡片和发卡行之间的数据交互,不受中间环节算法支持的影响。因此UICS规范规定了双算法卡的应用密文、发卡行脚本加密和完整性保护仅使用SM4算法。

银行卡交易报文敏感数据及完整性保护

为保证数据的安全传输,系统用对称密码算法对网络中的报文进行了MAC计算,并对PIN等敏感数据进行加密。典型的银行卡交易报文处理过程如图3所示。

图3 银行卡交易报文处理加解密示意图

网络中POS机(密码键盘)、收单系统、银联转接系统(CUPS)以及发卡行系统之间组成了一个点对点的数据加解密网络。CUPS与各联网入网机构分别约定数据密钥。其中,与银联转接系统相连系统间的报文格式由《中国银联银行卡交换系统技术规范》(Q/CUP006)规定,2015年版开始支持SM4算法;银联终端机具到受理方的数据处理支持SM4算法对方案尚未公开发布,各家受理机构实现的方案也可能有所差异。

1.交换系统。

交换系统的报文加密主要涉及PIN加解密、报文MAC计算。SM4算法的分组长度发生变化导致存量报文域长度不够;此外,兼容两种算法,需要增加算法标识。Q/CUP006规范定义了相关用法。

(1)数据域定义。针对SM4算法分组长度变长的问题,经过对现有报文域应用情况的梳理和分析,一是最终选定了更长的63域存放国产密码PIN密文,并重新设计了PINBlock格式,原来存放PIN的52域将用0填充;二是仍然使用第128域存放MAC,以保持报文域长度不变,与ISO8583规范要求及国际卡组织处理模式保持一致,有利于SM4算法的国际推广。

(2)双算法兼容。针对两种算法兼容问题,为了区分报文采用的算法,我们对比了报文头设置算法标识与报文域设置标识的方案。认为报文域设置标识不改变报文结构,系统改动量小,各节点可按照当前的方式进行报文解包处理。方案最终在F53域设置PIN加密算法标识,在F60.3.3设置MAC算法标识。PIN加密算法标识和MAC算法标识单独设立,支持两者算法类型不一致的情况,具有较高的灵活性。在实际应用中,银联交换系统还需要根据发卡行的实际算法需求,通过配置参数的方法,区分给不同发卡行的报文密码算法。

2.受理终端。

受理终端与受理行之间的报文加密主要涉及PIN加解密、报文MAC计算和磁道信息加密,还包括双算法兼容、终端密钥管理等内容。和交换系统类似,终端报文应用SM4算法同样需要考虑SM4算法的分组长度变化带来的问题。由于这部分规范尚未公开发布,暂不详细介绍。

声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。