• 335.00 KB
  • 34页

银联金融ic卡支付系统公钥认证技术规范

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'中国3421595703bfdbec93e13c62ae97ebd1.doc-34-中国银联金融IC卡支付系统公钥认证技术规范V1.0(草案)中国银联二○○五年九月34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-目录1引言41.1《银联金融IC卡支付系统公钥认证技术规范》概述41.2适用范围41.3规范性引用文件41.4定义和缩写51.5编码符号表示71.6版本控制72银联金融IC卡支付系统公钥认证体系概述82.1中国银联金融IC卡支付系统公钥认证体系82.2银联金融IC卡支付系统的IC卡数据认证82.2.1静态数据认证(SDA)92.2.2标准动态数据认证112.2.3复合动态数据认证/应用密文生成(CDA)132.3银联金融IC卡支付系统使用的公钥种类133成员发卡行公钥证书申请153.1发卡行公钥输入文件153.2文件命名153.3未签名发卡行公钥输入扩展163.4自签名发卡行公钥数据164银联对发卡行公钥证书申请的响应204.1银联对发卡行公钥证书申请中签名的验证204.2银联IC卡根CA签发发卡行公钥证书224.2.1发卡行公钥证书输出文件内容224.2.2文件命名约定234.2.3未签名发卡行公钥输出扩展234.2.4签名的发卡行公钥证书244.2.5根CA单独签名255验证发卡行公钥证书2734 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-6银联金融IC卡根CA公钥文件296.1根CA公钥文件内容296.2文件命名约定296.3未签名根CA公钥输出扩展296.4自签名根CA公钥307成员机构验证根CA公钥328获取根CA公钥3434 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1引言1.1《银联金融IC卡支付系统公钥认证技术规范》概述《银联金融IC卡支付系统公钥认证技术规范》是对《银联金融IC卡支付系统公钥认证业务规范》所涉及的技术细节的规范,具体内容包括成员发卡行公钥证书申请的技术细节;银联金融IC卡根CA对成员发卡行公钥证书响应,包括验证发卡行公钥证书申请、签发发卡行公钥证书的技术细节;成员发卡行验证银联金融IC卡根CA对其签发的发卡行公钥证书的技术细节;银联金融IC卡根CA公钥文件的技术细节;成员机构验证和接受银联金融IC卡根CA公钥的技术细节;和成员机构获取银联金融IC卡根CA公钥的途径。银联金融IC卡支付系统公钥认证机构、各个成员发卡行、和成员收单机构应遵从本技术规范以确保整个系统的安全性和整体信任程度。具体的业务流程见《银联金融IC卡支付系统公钥认证业务规范》。《银联金融IC卡支付系统公钥认证技术规范》和《银联金融IC卡支付系统公钥认证业务规范》是银联金融IC卡支付系统公钥认证服务的基本规范,这两个规范完全符合《中国金融集成电路(IC)卡规范》(2005版),并与EMV2000标准完全兼容,同时兼容国际金融IC卡支付组织VISA、MasterCard、和JCB的支付系统。1.2适用范围本规范适用于中国银联金融IC卡支付系统公钥认证服务的服务提供机构和服务接受机构包括中国银联金融IC卡支付系统公钥认证管理机构、接受银联金融IC卡支付系统公钥认证服务的银联成员机构、和银联成员机构授权的银联金融IC卡支付系统公钥认证服务的代理受理机构。1.3规范性引用文件1.《中国金融集成电路(IC)卡规范》(2005版)2.《银联卡业务运作规章》3.《银联金融IC卡支付系统公钥认证业务规范》4.《银联卡密钥安全管理规则》34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-5.《银行卡联网联合安全规范》6.《银联标识卡生产企业安全管理指南》7.《银联标识卡个人化企业安全和质量》8.《银行卡发卡行标识代码及卡号》9.《银联卡卡片规范》10.《银行卡磁条信息格式和使用规范》11.《入网机构标识码》12.《商户类别代码》13.《银行卡信息交换术语》14.《银行磁条卡自动柜员机(ATM)应用规范》15.《银行磁条卡销售点终端规范》16.《银行磁条卡自动柜员机(ATM)应用规范》17.《中国银联MIS商户系统技术规范》18.《中国银联POS终端规范》19.《中国银联代理业务ATM终端技术规范》20.《中国银联银行卡联网联合技术规范2.0版》参见《银联金融IC卡支付系统公钥认证业务规范》,根CA和成员机构除了必须遵守本规范外,还有义务遵守上述20个规范。1.1定义和缩写《中国金融集成电路(IC)卡规范》(2005版):系中华人民共和国金融行业标准之一,由中国人民银行起草并于2005年3月10日发布/实施,用来规范金融行业集成电路(IC)卡应用的规范。BIN:发卡机构标识码,由支付系统分配的6位号码,用于识别会员应用、授权、清算、或结算。银联标准卡的BIN的分配和管理统一由中国银联负责。EMV:由Europay,MasterCard,及Visa国际组织共同开发的技术规范,该技术规范为芯片技术在支付行业的使用创造标准并确保其全球互操作性。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-IIN:金融机构代码(IIN),由中国银联按照银联《入网机构标识码》规范分配给各成员金融机构的金融机构代码,唯一识别中国银联成员机构,由8位数字组成。成员机构:在本规范中指中国银联成员机构,遵守相关入网规范。中国银联成员机构是经中国银联董事会批准,发行银联卡和办理银联卡收单业务的金融机构或其它组织。会员机构:在本规范中指成员机构注册成为银联金融IC卡支付系统公钥认证服务会员机构。中国银联金融IC卡支付系统根CA:由中国银联股份有限公司授权银联金融认证中心有限公司,依照《中国金融集成电路(IC)卡规范》(2005版)要求,建立的服务于金融行业IC卡安全应用的根认证中心;实现该根认证中心功能的应用系统是“银联金融IC卡根CA系统”,由中国银联统一管理,以下简称“根CA系统”。发卡行(Issuer):《中国金融集成电路(IC)卡规范》(2005版)指明,发卡行是发行带有支付系统标签的信用卡或专用卡的支付系统成员行。收单机构(Acquirer):《中国金融集成电路(IC)卡规范》(2005版)指明,收单机构是支付系统成员,负责签约商户或在现金支付中支付货币给持卡人,并直接或间接地参与交易交换。PAN:主帐号。RID:注册的应用提供商标识。公钥密码算法:《中国金融集成电路(IC)卡规范》(2005版)第七部分第十二章规定的公钥密码算法。哈希算法:《中国金融集成电路(IC)卡规范》(2005版)第七部分第十二章规定的哈希算法。SDA:静态数据认证,脱机数据认证的一种,通过这种方法终端验证发卡时存放在卡上的密文。这种认证用于防止某些类型的伪造,但不能防止复制。DDA:动态数据验证,脱机数据认证的一种,芯片卡产生根据特定交易数据元加密生成的密文,终端验证该值以防止非法复制。CDA:复合动态数据认证/应用密文生成,脱机数据认证的一种。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-终端(Terminal):在交易点安装的设备,和IC卡一起完成金融交易它包括接口设备,POS、ATM设备。1.1编码符号表示本规范定义了一些编码方式,这些编码方式遵从《中国金融集成电路(IC)卡规范》(2005版),并与EMV2000标准完全兼容,同时兼容国际金融IC卡支付组织VISA、MasterCard、和JCB的有关规范并与它们的支付系统兼容。这些编码方式如下:b:二进制编码。这些数据是无符号二进制数或比特。例如发卡行公钥指数为二进制编码,十进制数值为3或65537,二进制编码用十六进制保存为十六进制‘03’或‘010001’。cn:压缩数字编码。由两个十六进制字符‘0’-‘9’组的序列表示一个数字,具有固定长度,不足位在右边以‘F’填充。如主帐号(PAN)十进制数字由长度至多10的‘cn’编码表示,一个十进制PAN:6123567890123以长度为8的‘cn’编码后为:‘6123567890123FFF’。n:数字编码。由两个十六进制字符‘0’-‘9’组的序列表示一个数字,具有固定长度,左边以十六进制字符‘0’补足。例如以长度为10的‘n’编码表示十进制数值1234567为:‘0001234567’。1.2版本控制本规范的版本是《银联金融IC卡支付系统公钥认证技术规范》V1.0(2005)版。中国银联将在需要时对本规范进行修订,其后的修订版本高于V1.0,同时在修订版定稿后进行发布。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1银联金融IC卡支付系统公钥认证体系概述1.1中国银联金融IC卡支付系统公钥认证体系遵循《中国金融集成电路(IC)卡规范》(2005版),中国银联金融IC卡支付系统公钥认证体系为所有遵循银联标准的金融IC卡提供公钥证书认证服务,也同时为其它金融IC卡数据认证提供途径(如成员机构终端提供的对外卡数据认证)。中国银联金融IC卡支付系统公钥认证体系,首先包括银联金融IC卡支付系统CA(简称根CA)。根CA负责生成根CA公私钥对并管理根CA的公私钥信息、签发发卡行CA公钥证书,将根CA公钥信息安全传递给收单机构,是中国银联金融IC卡证书体系的信任根。同时,中国银联金融IC卡支付系统公钥认证体系也包括各个发卡行CA。它们是根CA的子CA,负责生成发卡行CA的公私钥对,向根CA申请并管理自己的公钥证书。此外,发卡行CA与发卡系统交互,为IC卡签署静态应用数据以便进行静态数据认证(SDA),或生成IC卡公私钥对、签发IC卡证书以便进行动态数据认证(DDA),同时将自己的公钥证书、IC卡公钥证书、IC卡私钥、RID、和根CA公钥标识也写入IC卡。按照《中国金融集成电路(IC)卡规范》(2005版),中国银联金融IC卡支付系统还包括银联标准卡受理环境,收单机构要负责建立终端管理系统,将根CA公钥分发到受理终端(POS/ATM),并对远程终端进行设备管理、状态监控及信息管理(包括程序、参数下载)。这样,在《中国金融集成电路(IC)卡规范》(2005版)标准卡支付系统中,IC卡存放IC卡证书及IC卡私钥(或静态数据)和发卡行公钥证书、RID、以及根CA公钥标识;受理终端存放根CA证书和相关的RID。在支付过程中,受理终端通过验证IC卡的应用数据的签名进行IC卡数据认证,其过程是首先读取IC卡内的RID、IC卡证书、发卡行证书、和根CA公钥标识,利用RID和根CA公钥标识定位特定的根CA公钥,利用根CA公钥验证发卡行证书,利用发卡行证书验证IC卡证书,利用IC卡证书验证IC卡内的动态签名或直接利用发卡行证书验证IC卡内的静态签名。整个IC卡数据认证完全离线进行。1.2银联金融IC卡支付系统的IC卡数据认证银联金融IC卡支付系统公钥认证在IC卡系统支付过程中的作用是进行脱机IC卡数据认证包括:34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-l静态数据认证(SDA)l动态数据认证(DDA)包括1.标准动态数据认证2.复合动态数据认证/应用密文生成(CDA)这两种IC卡数据认证遵循《中国金融集成电路(IC)卡规范》(2005版),并与EMV2000规范兼容。1.1.1静态数据认证(SDA)静态数据认证由终端验证数字签名来完成。其目的是确认存放在银联标准IC卡中关键的静态数据的合法性,以及可以发现在卡片个人化以后,对卡内的发卡行数据未经授权的改动,能有效地检测银联标准IC卡内关键静态数据的真实性。静态数据认证流程和银联标准IC卡与银联金融IC卡支付系统公钥认证体系之间的关系如图1所示:整个银联标准IC卡静态数据认证的过程说明如下:1.成员发卡行的密钥管理系统产生成员发卡行公/私钥对PI和SI,并将公钥PI传送至根CA;2.根CA用自己的私钥SCA对成员发卡行公钥PI进行数字签名,产生发卡行公钥证书,连同根CA公钥信息返回给发卡行密钥管理系统;3.发卡行密钥管理系统用发卡行私钥SI对卡片静态数据进行数字签名,将签名结果和发卡行公钥证书、和其它信息包括RID及根CA公钥标识传送至发卡系统;4.发卡系统在个人化时将发卡行公钥证书和数字签名连同根CA公钥标识、RID写入每一张卡片中;5.根CA将其公钥PCA及相关信息包括公钥标识和RID,经成员收单机构传送至终端管理系统;6.成员收单机构终端管理系统把根CA公钥PCA及相关信息包括公钥标识和RID通过远程下载至终端;34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-图1银联IC卡静态数据认证认证中心收单行发卡行认证中心公钥PCA认证中心公钥PCA认证中心私钥SCA发卡行公钥P1发卡行私钥S1初始化发卡行公钥证书(PI由SCA签名)签名的应用数据(由PI签名)个人化发卡行公钥证书IC卡应用READRECORD响应报文包含:认证中心公钥索引发卡行公钥证书签名应用数据交易终端IC卡应用-用PCA从发卡行公钥证书恢复PI-用PI恢复签名应用数据7.银联标准IC卡进行交易时的脱机静态数据认证,受理终端完成如下过程:l终端从卡片中读取出发卡行公钥证书及签名数据,使用根CA公钥标识和RID找到根CA公钥PCA,由PCA恢复出发卡行公钥PI并成功验证其有效性l终端使用恢复的发卡行公钥PI验证卡片签名数据的有效性l终端将验证结果与卡片静态数据进行比对,保存比对结果34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-l将验证结果返回给卡片。1.1.1标准动态数据认证在动态数据认证过程中,终端验证卡片上的静态数据以及卡片产生的当前动态交易相关信息的签名。DDA能确认卡片上的发卡行应用数据自卡片个人化后没有被非法篡改,更重要的是DDA还能确认卡片的真实性,防止卡片的非法复制和伪造。DDA可以是标准动态数据认证或复合动态数据认证/应用密文生成(CDA)。银联标准IC卡动态数据认证如图2所示。在这种方式下,银联标准IC卡将来自卡片的动态交易数据以及由动态数据认证数据对象列表(DDOL)所标识的终端数据生成一个数字签名(见《中国金融集成电路(IC)卡规范》(2005版))。银联标准IC卡标准动态数据认证的过程说明如下:1.成员发卡行的密钥管理系统产生发卡行公私钥对SI和PI,并将发卡行公钥PI传送至根CA;2.根CA用自己的私钥SCA对发卡行公钥进行数字签名,产生发卡行公钥证书,连同根CA公钥信息包括RID和根CA公钥标识返回给发卡行密钥管理系统;3.发卡行为每一张银联标准IC卡产生一对公私钥对SICC和PICC并用发卡行私钥SI对IC卡公钥PICC进行数字签名,产生IC卡公钥证书;4.发卡行密钥管理系统将发卡行公钥证书、IC卡公钥证书、和其它信息包括RID及根CA公钥标识传送至发卡系统;5.发卡系统在个人化时将发卡行公钥证书、IC卡证书、IC卡私钥、RID及根CA公钥标识写入卡片中;6.根CA将自己的公钥PCA和其它相关信息包括RID及根CA公钥标识经过成员收单机构传送至终端管理系统;7.终端管理系统把根CA公钥PCA和其它信息包括RID及根CA公钥标识通过远程下载至终端;认证中心收单行发卡行图2银联标准IC卡动态数据认证34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-初始化认证中心公钥PCA认证中心公钥PCA认证中心私钥SCA发卡行公钥P1发卡行私钥S1发卡行公钥证书(PI由SCA签名)发卡行公钥证书个人化IC卡公钥PICCIC卡私钥SICC写私钥、公钥时需要IC卡主控密钥IC卡公钥证书(PICC由SI签名)READRECORD响应报文包含:认证中心公钥索引发卡行公钥证书签名应用数据-用PCA从发卡行公钥证书恢复PI-用PI从IC卡公钥证书恢复PICC-验证IC卡公钥证书中的静态数据哈希值用SICC算动态签名INTERNALAUTHENTICATE1或GENERATEAC2命令INTERNALAUTHENTICATE1或含动态签名的GENERATEAC2响应用PICC验证动态签名1INTERNALAUTHENTICATE命令(对于标准DDA)2GENERATEAC命令(对于CDA)IC卡应用终端交易IC卡应用IC卡应用终端1.银联标准IC卡进行交易的脱机标准动态数据认证过程如下:34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-l终端从卡片取出发卡行公钥证书、IC卡公钥证书、RID、和根CA公钥标识,利用RID和根CA公钥标识定位根CA公钥PCA,使用根CA公钥PCA恢复出发卡行公钥PI并成功验证其有效性,使用恢复的发卡行公钥PI恢复出IC卡公钥PICC并成功验证其有效性l终端向IC卡发送内部认证命令(INTERNALAUTHENTICATE)(见《中国金融集成电路(IC)卡规范》(2005版))请求一个动态签名;卡片对内部认证命令中的终端数据和在IC卡动态数据中指定的卡片数据进行连接,由卡片私钥SICC对该连接数据进行数字签名并返回给终端l终端使用IC卡公钥PICC对上一步骤的数字签名进行成功验证1.将验证结果返回给卡片。1.1.1复合动态数据认证/应用密文生成(CDA)这种方式在第一个请求应用密文命令发出后执行(见《中国金融集成电路(IC)卡规范》(2005版))。银联标准IC卡将来自卡片的数据包括应用密文以及来自终端的数据生成一个数字签名。银联复合动态数据认证/应用密文生成(CDA)处理中涉及公钥的部分的具体步骤见本规范第1.3.1节,涉及支付部分的具体步骤见《中国金融集成电路(IC)卡规范》(2005版)第七部分第5.3.6节。1.2银联金融IC卡支付系统使用的公钥种类在银联金融IC卡支付系统中使用三种公私钥对:根CA公私钥对、成员发卡行公私钥对、和银联标准IC卡公私钥对。其作用如表1所示。表1银联金融IC卡支付系统使用的公钥种类34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-密钥名称存在条件用途根CA公私钥对必须存在用于对发卡行签发公钥证书发卡行公私钥对如果支持SDA和DDA用于对静态数据进行数字签名,以及对IC卡签发证书用于动态数据认证IC卡公私钥对如果支持DDA用于动态数据认证34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1成员发卡行公钥证书申请按照《银联金融IC卡支付系统公钥认证业务规范》,成员发卡行为获得银联金融IC卡根CA签发的发卡行生产型公钥证书或测试证书,需通过银联审核员向银联递交发卡行公钥输入文件。银联审核员将通知发卡行具体递交公钥输入文件的方式。发卡行公钥输入文件为电子版文件,具体格式和要求在下节规定。发卡行公钥输入文件电子版、和银联金融IC卡支付系统发卡行公钥证书工作申请表电子版(见《中国银联金融IC卡支付系统公钥认证业务规范》附录C)将一道由成员发卡行安全官员递交给银联审核员。1.1发卡行公钥输入文件成员发卡行公钥输入文件是一个二进制文件,公钥输入文件由2个部分组成如表2所示。表2公钥输入文件字段名长度(字节数)描述未签名发卡行公钥输入扩展7+NI+e见本规范第3.3节。这里NI是发卡行公钥模长的字节数,e为发卡行公钥指数长度的字节数。自签名发卡行公钥数据NI见本规范第3.4节。1.2文件命名公钥输入文件的文件名必须按YLTTTTTT.INP的格式,这里YL为前缀,TTTTTT是记录号,它标识了一个发卡行公钥证书请求。下面是一个公钥输入文件名例子:YL123456.INP。根据《银联金融IC卡支付系统公钥认证业务规范》,记录号由银联审核员统一管理和分发,唯一标识一个发卡行的一次公钥证书申请,发卡行必须使用银联审核员指定的记录号。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1.1未签名发卡行公钥输入扩展未签名发卡行公钥输入扩展是发卡行公钥输入文件的第一部分。该输入扩展提供发卡行公钥信息,具体格式见表3。表3未签名发卡行公钥输入扩展字段名长度(字节数)描述编码格式记录头1十六进制值‘22’b发卡行公钥模长1发卡行公钥模长(NI)的十六进制值(字节数)b发卡行公钥模Var未经签名的发卡行公钥模(NI)b发卡行公钥指数长度1发卡行公钥指数长度(e)(字节数)b发卡行公钥指数Var发卡行公钥指数b发卡行公钥算法标识1标识用于发卡行公钥的数字签名算法,见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章b记录号3发卡行公钥证书申请记录号n61.2自签名发卡行公钥数据自签名发卡行公钥数据是成员发卡行公钥输入文件的第二部分,发卡行利用其所申请发卡行公钥证书中的公钥对应的私钥对该发卡行公钥数据进行签名。银联金融IC卡根CA使用该发卡行的公钥来验证签名的公钥数据。发卡行使用同提交给银联的发卡行公钥相对应的发卡行私钥对表4中的所有数据进行签名。自签名的发卡行公钥数据的长度必须等于用来签名的发卡行公私钥对中公钥的长度。表4中的哈希值是将表4中除了哈希值外所有数据依原有顺序连接后的数据的计算的哈希值,哈希算法见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。这个哈希值仅供银联金融IC卡根CA作发卡行递交的公钥数据的数据认证用途,和组成发卡行公钥证书的哈希值不是同一个值。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-自签名发卡行公钥数据是对表4的数据使用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章的数字签名算法的输出值。表4发卡行公钥数据字段名长度(字节)描述格式记录头1十六进制‘23’b服务标识4标识一个中国银联借记贷记服务,用私有应用标识扩展(PIX)以左面为准,以十六进制‘0’在右边填充。‘01010000’=借、贷记b证书格式1十六进制‘02’b发卡行标识4主帐号(PAN)最左面的3-8个数字。(在右边补上十六进制数‘F’)cn8证书失效日期2月和年(MMYY),在此日期之后证书失效n4记录号3发卡行公钥证书申请记录号n6哈希算法标识1标识用来产生哈希值的哈希算法,见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章b发卡行公钥算法标识1标识用于发卡行公钥的数字签名算法,见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章b发卡行公钥模长1以十六进制标明发卡行公钥的模长(NI)(字节数)b发卡行公钥指数长度1以十六进制标明发卡行公钥指数的长度(字节数)bNI−(39+e)公钥模(NI)的最左NI-(39+e)部分,这里NIb34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-发卡行公钥模的最左边部分表示发卡行公钥模长的字节数,e表示发卡行公钥指数所占的字节数发卡行公钥指数e发卡行公钥指数,为3或65537,以十六进制存储为‘03’或‘010001’b哈希值20发卡行公钥及其相关信息的哈希结果,为本表中除哈希值外从记录头依顺序到发卡行公钥指数的哈希值b图3生成自签名发卡行公钥数据哈希算法记录头服务标识记录头证书格式发卡行标识证书失效日期记录号哈希算法标识发卡行公钥算法标识发卡行公钥模长发卡行公钥指数长度发卡行公钥模的最左边部分发卡行公钥指数记录头服务标识证书格式发卡行标识证书失效日期记录号哈希算法标识发卡行公钥算法标识发卡行公钥模长发卡行公钥指数长度发卡行公钥模的最左边部分发卡行公钥指数哈希值公钥算法NI字节发卡行签名私钥NI字节自签名发卡行公钥数据NI字节34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-成员发卡行生成自签名发卡行公钥数据的程序见图3所示。成员发卡行可以使用银联金融IC卡支付系统公钥认证处理软件完成上述发卡行公钥证书申请数据,即发卡行公钥证书输出文件的生成。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1银联对发卡行公钥证书申请的响应1.1银联对发卡行公钥证书申请中签名的验证为了验证一个发卡行包含在发卡行公钥证书申请中的自签名公钥证书,银联必须执行下列步骤。这些步骤确保银联能够正确验证所收到的发卡行公钥和恢复的公钥数据。发卡行必须确保所提交的发卡行公钥证书申请符合本规范的格式要求以便能使银联成功验证所申请的公钥。银联收到的由成员发卡行安全官员递交给银联审核员的发卡行公钥证书申请包括中国银联金融IC卡支付系统公钥认证服务成员发卡行公钥证书工作申请表电子文件(见《银联金融IC卡支付系统公钥认证技术规范》附录C)和发卡行公钥输入文件(见本规范第3章)。银联对发卡行公钥证书申请中签名的验证是对发卡行公钥输入文件(包含未签名发卡行公钥输入扩展和自签名发卡行公钥数据)的相关数据及其签名进行验证。1.检查未签名发卡行公钥输出扩展文件长度是否是7+NI+e字节,若不是,则银联拒绝该公钥证书申请。2.检查自签名发卡行数据以确保其包含NI个字节,若不是,则银联拒绝该公钥证书申请。3.检查未签名发卡行公钥输入扩展中的公钥算法标识来验证其是否是十六进制‘01’。若不是,则该标识不符合《中国金融集成电路(IC)卡规范》(2005版),此时银联将拒绝该公钥证书申请。4.检查未签名发卡行公钥输入扩展中的公钥长度是银联可接受的长度(小于或等于银联将用来签发该证书的公钥模长),若不是,则银联拒绝该公钥证书申请。5.检查未签名发卡行公钥输入扩展中的公钥指数长度,若不是1,则银联拒绝该公钥证书申请。6.检查未签名发卡行公钥输入扩展以获取发卡行公钥模。7.使用《中国金融集成电路(IC)卡规范》(2005版)第7部分第12章的数据恢复算法恢复发卡行单独的发卡行公钥签名数据,以恢复发卡行公钥数据。8.检查第7步中恢复的数据记录头是否是十六进制‘23’,若不是,则银联拒绝该公钥证书申请。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1.检查第7步中恢复的数据中证书格式是否是十六进制‘02’,若不是,则银联拒绝该公钥证书申请。2.检查第7步中恢复的数据中的发卡行标识以恢复主帐号(PAN)最左面的3-8个数字。银联检查该主帐号是否是银联所接受的主帐号,若不是,则银联拒绝该公钥证书申请。3.检查第7步中恢复的数据中的记录号和未签名发卡行公钥输入扩展中的记录号是否相同,是否是银联安排的,若不是,则银联拒绝该公钥证书申请。4.检查未签名发卡行公钥输入扩展和第7步中恢复的发卡行公钥数据中的发卡行公钥指数长度是否相同,若不是,则银联拒绝该公钥证书申请。5.检查未签名发卡行公钥输入扩展和第7步中恢复的发卡行公钥数据中的发卡行公钥指数是否相同,并且检查其是否是3或216+1,若不是,则银联拒绝该公钥证书申请。6.检查未签名发卡行公钥输入扩展和第7步中中恢复的发卡行公钥数据中的发卡行公钥算法标识是否相同,若不是,则银联拒绝该公钥证书申请。7.检查未签名发卡行公钥输入扩展和第7步中恢复的发卡行公钥数据中的发卡行公钥模长是否相同,若不是,则银联拒绝该公钥证书申请。8.检查未签名发卡行公钥输入扩展和第7步中恢复的发卡行公钥数据中的发卡行公钥模左边NI−(39+e)个字节是否相同,若不是,则银联拒绝该公钥证书申请。9.检查第7步中恢复的发卡行哈希算法标识是否是十六进制‘01’,若不是,则银联拒绝该公钥证书申请。10.自左向右连接第7步中的恢复数据(表4)中从记录头到发卡行公钥指数。11.使用以哈希算法标识规定的哈希算法计算上一步骤得到的连接数据的哈希值。12.比较上一步骤计算的哈希值和恢复数据(表4)中的哈希值,若不同,则银联拒绝该公钥证书申请,若相同并且上述所有步骤的验证都成功,则银联接受该公钥证书的申请。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1.1银联IC卡根CA签发发卡行公钥证书在银联按照《银联金融IC卡支付系统公钥认证业务规范》程序同意发卡行公钥证书申请并将收到的发卡行公钥证书申请传递给银联金融IC卡根CA后,根CA签发该发卡行公钥证书,并向该发卡行的一个公钥证书申请(生产证书或测试证书)提供一个发卡行公钥证书输出文件。发卡行公钥证书输出文件是一个二进制文件包含三个数据。根CA在签发发卡行公钥证书后,将发卡行公钥证书输出文件递交给发卡行。发卡行公钥证书输出文件的第一个数据是未签名发卡行公钥输出扩展,第二个数据是根CA对发卡行公钥证书的签名,第三个数据是根CA单独签名。这三个数据的内容将在本规范第4.2.3节、第4.2.3节、和第4.2.3节中详细叙述。1.1.1发卡行公钥证书输出文件内容发卡行公钥证书输出文件的格式由表5规定。表5发卡行公钥证书输出文件字段名长度(字节数)描述未签名发卡行公钥输出扩展17+e若NI≤NCA+3653+NI−NCA+e若NI>NCA+36这里,e、NI、和NCA分别表示发卡行公钥指数字节数、发卡行公钥模长字节数、和根CA用来生成该发卡行公钥证书的公钥模长字节数见本规范第4.2.3节签名的发卡行公钥证书NCA见本规范第4.2.4节根CA公钥单独签名NCA见本规范第4.2.5节34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1.1.1文件命名约定发卡行公钥输出文件是由一个类似AAAAAA.INN形式的文件名标识,这里:lAAAAAA是申请记录号lI是固定值(‘I’)表示发卡行lNN是用来签发发卡行公钥证书的根CA公钥的索引所有文件是二进制格式。发卡行公钥输出文件举例:010101.I01。这里的申请记录号与本规范第3.4节自签名发卡行公钥数据中的记录号相同,是按照根据《银联金融IC卡支付系统公钥认证业务规范》由银联审核员统一设定与管理的,以唯一标识一个发卡行的一次公钥证书申请。1.1.2未签名发卡行公钥输出扩展未签名发卡行公钥输出扩展是发卡行公钥输出文件的第一部分。表6规定了它的格式。该公钥输出扩展提供了该发卡行公钥证书信息。表6未签名发卡行公钥输出扩展字段名长度(字节数)描述格式记录头1十六进制值‘24’b服务标识4标识一个中国银联借记贷记服务,用私有应用标识扩展(PIX)以左面为准,以十六进制‘0’在右边填充。‘01010000’=借、贷记b发卡行标识号4主帐号(PAN)最左面的3-8个数字。(在右边补上十六进制数’F’)cn8证书序列号3根CA系统分配的证书序列号b证书失效日期2月和年(MMYY),在此日期之后证书失效n4发卡行公钥余项长度1发卡行公钥模余项的长度b34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-发卡行公钥余项0和(NI–NCA+36)的最大值该字段仅在NI>NCA–36时存在,由发卡行公钥(NI)的最低NI-NCA+36字节组成。b发卡行公钥指数长度1以十六进制标明发卡行公钥指数的长度(字节数)b发卡行公钥指数e发卡行公钥指数,为3或65537,存储为十六进制‘03’或十六进制‘010001’b根CA公钥索引1根CA系统用来签发发卡行公钥证书的公钥索引b1.1.1签名的发卡行公钥证书签名的发卡行公钥证书是发卡行公钥证书输出文件的第二部分,由根CA利用相应根CA私钥对表7中的发卡行公钥数据进行签名产生。表7发卡行公钥证书数据字段名长度(字节数)描述格式恢复数据头1十六进制值‘6A’b证书格式1十六进制值‘02’b发卡行标识号4主帐号最左面的3到8位数字(从第1位开始),如有需要,在右面填充十六进制‘F’到8位数字。cn8证书失效日期2月和年份(MMYY),在此日期之后证书非法n4证书序列号3由根CA系统分配的唯一标识证书的二进制数b哈希算法标识1标识用来产生数字签名哈希值的哈希算法b发卡行公钥算法标识1标识用于发卡行公钥的数字签名算法b发卡行公钥长度1以十六进制标明发卡行公钥的模长(NI)(字节数)b发卡行公钥指数长度1以十六进制标明发卡行公钥指数的长度(字节数)b34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-发卡行公钥模的最左边部分NCA−36如果NI≤NCA-36,该字段包含了完整的发卡行公钥模(NI),并在右面填充NCA–36–NI个字节的‘BB’。如果NI>NCA–36,该字段包含了发卡行公钥模(NI)的最高NCA–36字节b哈希值20发卡行公钥及其相关信息的哈希结果n恢复数据尾1十六进制值‘BC’b这里哈希值的计算是使用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的哈希算法计算的。根CA利用在未签名发卡行公钥输出扩展(表6)中的根CA公钥标识定位的根CA公私钥对对应的根CA私钥对发卡行公钥证书数据(表7)进行签名得到签名的发卡行公钥证书。1.1.1根CA单独签名发卡行公钥单独签名是发卡行公钥证书输出文件的第三部分。发卡行公钥单独签名由根CA使用其签发该发卡行公钥证书的私钥对表8的根CA单独签名数据进行签名得到,使用的签名算法见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。根CA利用在未签名发卡行公钥输出扩展(表6)中的根CA公钥标识定位的根CA公私钥对应的根CA私钥对表8中的根CA单独签名数据进行签名。由于未签名发卡行公钥输出扩展没有经过根CA签名,为了保证未签名发卡行公钥输出扩展文件的数据完整性、信息源可认证性、和其与签名的发卡行公钥证书的有效绑定,在根CA给发卡行签发的公钥证书数据中加入第三个数据:根CA单独签名。根CA单独签名主要是对表6的未签名发卡行公钥输出扩展和表7的发卡行公钥证书数据进行连接后对连接数据计算哈希值,然后根CA使用未签名发卡行公钥输出扩展中指定的根CA公私钥对对应的私钥对该哈希值签名得到。成员发卡行对根CA单独签名的验证本规范不做强制性要求。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-表8根CA单独签名数据文件长度(字节数)描述格式记录头1十六进制‘00’b分组格式编码1十六进制‘01’b右边添加字符NCA-24NCA-24字节十六进制‘FF’b分隔符1十六进制‘00’b算法标识1根CA使用的哈希算法标识为十六进制‘01’b哈希值20对未签名发卡行公钥输出扩展(表6)和发卡行公钥证书数据(表7)进行连接后的数据计算哈希值b这里哈希值的计算是使用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的哈希算法计算的。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1验证发卡行公钥证书成员发卡行在收到银联为其颁发的发卡行公钥证书后必须经过有效验证才可使用。成员发卡行收到的由银联审核员递交给成员发卡行安全官员的根CA签发的发卡行公钥证书是以发卡行公钥证书输出文件(包含三个数据:未签名发卡行公钥输出扩展、签名的发卡行公钥证书、和根CA单独签名,见本规范第4.2节)形式传递的,成员发卡行使用下列程序验证其收到的包含在发卡行公钥证书输出文件中的由根CA签发的发卡行公钥证书:1.从发卡行公钥证书输出文件的第一个数据:未签名发卡行公钥输出扩展中解析出根CA公钥标识,若发卡行公钥证书输出文件的第二个数据:签名的发卡行公钥证书的长度与根CA签发该证书的公钥模长度(见发卡行按照《银联金融IC卡支付系统公钥认证业务规范》第3.4节获取的按照本规范第6章规定的根CA公钥文件并按照本规范第7章验证的根CA公钥证书中的根CA公钥模长度)不同,则验证失败。2.使用发卡行公钥证书输出文件的第一个数据:未签名发卡行公钥输出扩展中的根CA公钥标识指定的根CA公钥,利用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的公钥算法作为数据恢复算对发卡行公钥证书输出文件的第二个数据:签名的发卡行公钥证书作数据恢复运算并恢复发卡行公钥证书数据(见表7),若恢复数据结尾不是‘BC’。则验证失败。3.检查在第2步得到的恢复数据的数据头,若不是‘6A’,则验证失败。4.检查在第2步得到的恢复数据的检查证书格式,若不是‘02’,则验证失败。5.将在第2步得到的恢复数据(表7)从第二栏到第十栏进行连接(即:从证书格式到发卡行公钥左边字节)。6.对上一步骤(第5步)的连接数据使用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的哈希算法计算哈希值。7.比较上一步骤(第6步)计算的哈希值和第2步数据恢复得到的哈希值,若不同,则验证失败。8.检查发卡行标识是正确有效的,若不是,则验证失败。9.检查证书失效日期是正确的,否则,验证失败。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1.检查发卡行哈希算法标识,若不是‘01’,则验证失败。2.检查发卡行公钥算法标识,若不是‘01’,则验证失败。3.如果上述所有验证都是正确的,则发卡行公钥证书验证成功。将发卡行公钥模的左边字节与发卡行公钥模余项连接,得到完整的发卡行公钥模。成员机构可以使用银联金融IC卡支付系统公钥认证处理软件完成上述验证。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1银联金融IC卡根CA公钥文件由银联审核员(见《银联金融IC卡支付系统公钥认证业务规范》)向成员机构传递的根CA公钥以根CA公钥文件形式进行传递。根CA公钥文件内容在本规范第6.1节中规定。1.1根CA公钥文件内容根CA公钥文件是二进制数据,其格式和内容如表9所示。表9根CA公钥文件内容字段名长度(字节数)描述未签名根CA公钥输出扩展35+NCA+eCA这里NCA和eCA分别是根CA公钥模长度和公钥指数长度,以字节数表示见本规范第6.3节自签名根CA公钥NCA见本规范第6.4节1.2文件命名约定银联IC卡根CA公钥文件以010101.CAA形式命名。这里:l010101标识银联借记/贷记服务lC标识中国银联lAA为银联金融IC卡根CA的公钥标识例如:010101.C01。1.3未签名根CA公钥输出扩展列于表10中的未签名根CA公钥输出扩展是根CA公钥文件的第一部分。该输出扩展提供了根CA公钥的信息。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-表10未签名根CA公钥输出扩展字段名长度(字节数)描述格式记录头1十六进制‘20’b服务标识4标识一个中国银联借记贷记服务,用私有应用标识扩展(PIX)以左面为准,以十六进制‘0’在右边填充。‘01010000’=借、贷记b根CA公钥模长2根CA公钥模的长度NCA,以十六进制表示。NCA是一个偶数b根CA公钥算法标识1标识用于生成根CA公钥的密码算法b根CA公钥指数长度1根CA公钥指数长度eCA,以十六进制表示b注册的应用提供商标识(RID)5标识银联借记贷记RID:为十六进制‘D156000001’b根CA公钥标识1唯一标识根CA公钥b根CA公钥模NCA根CA公钥模b根CA公钥指数eCA根CA公钥指数b哈希值20本表第6到第9项的(从RID到根CA公钥指数)连接数据的哈希值b表10未签名根CA公钥输出扩展中的哈希算法和哈希值的计算见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。1.1自签名根CA公钥自签名根CA公钥是根CA公钥文件的第二部分。自签名根CA公钥是根CA使用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的签名算法利用根CA签名私钥对表11的根CA公钥证书数据进行签名所得。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-表11根CA公钥证书数据字段名长度(字节数)描述格式记录头1十六进制‘21’b服务标识4标识一个中国银联借记贷记服务,用私有应用标识扩展(PIX)以左面为准,以十六进制‘0’在右边填充。‘01010000’=借、贷记b注册的应用提供商标识(RID)5标识银联借记贷记RID:为十六进‘D156000001’b根CA公钥标识1唯一标识根CA公钥b证书失效日期2月和年(MMYY),在此日期之后证书失效n4根CA公钥算法标识1十六进制‘01’标识生成根CA公钥的公钥算法,见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。b根CA公钥模的左边部分NCA−36+eCA根CA公钥模的左边NCA−36+eCA字节,这里NCA和eCA分别表示根CA公钥模长和公钥指数长度。b哈希算法标识1十六进制‘01’,标识生成哈希值的哈希算法,见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。b根CA公钥指数长度1为十六进制字节数,表示根CA公钥指数长度eCA。b根CA公钥指数eCA根CA公钥指数b哈希值20下列数据连接后的哈希值:RID、根CA公钥标识、根CA公钥模、根CA公钥指数。b表11根CA公钥证书数据中哈希值的计算见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1成员机构验证根CA公钥根CA公钥是以根CA公钥文件形式传递给成员机构的,根CA公钥文件是一个二进制文件包括未签名根CA公钥输出扩展和自签名根CA公钥,见本规范第6章。成员机构在从银联IC卡根CA收到根CA公钥证书,即根CA公钥文件后,必须进行验证。成员机构必须按照下列步骤对根CA公钥证书(根CA公钥文件)进行验证,只有成功验证后才可使用根CA测试及生产型公钥。成员机构使用从自签名根CA公钥数据解析出的哈希值来验证根CA公钥。1.使用由银联审核员递交的根CA公钥文件中的第一个数据:未签名根CA公钥输出扩展(见本规范第3.2.3节表10)中根CA公钥算法标识规定的公钥算法(见《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章)并使用根CA公钥文件的第一个数据,即表10中的未签名根CA公钥输出扩展中的根CA公钥模和根CA公钥指数,利用《中国金融集成电路(IC)卡规范》(2005版)第七部分第12章规定的恢复算法对根CA公钥文件中第二个数据:自签名根CA公钥恢复出根CA公钥证书数据(见表11)。2.检查在第一步中恢复的根CA公钥证书数据中的记录头,若不符合记录头是十六进制‘21’,则拒绝该根CA公钥证书。3.从恢复的根CA公钥证书数据中解析注册应用提供者标识(RID),若该RID与标准银联RID不同,则成员机构拒绝该公钥。4.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥标识,若不符合本规范和《银联金融IC卡支付系统公钥认证业务规范》,则拒绝该根CA公钥。5.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥失效日期,若失效日期早于当前日期,则拒绝该根CA公钥。6.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥算法标识,若不是‘01’,则不符合《中国金融集成电路(IC)卡规范》(2005版),必须拒绝该根CA公钥。(未来若《中国金融集成电路(IC)卡规范》(2005版)进行了修订并增加了公钥算法,则以当时有效的规范版本为准。)7.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥模长度,若该公钥模长度不34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-符合《银联金融IC卡支付系统公钥认证业务规范》第4.2.2.1节的规定,则拒绝该根CA公钥。1.检查根CA自签名数据和恢复的根CA公钥证书数据,若两者的数据长度不满足都是NCA字节,则拒绝该根CA公钥。2.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥指数长度,若不是‘01’,则拒绝该根CA公钥。3.检查在恢复的根CA公钥证书数据中银联金融IC卡根CA公钥指数,若不是3或216+1,则拒绝该根CA公钥。4.从左向右连接恢复的根CA公钥数据的从记录头到根CA公钥指数数据。5.使用规定的哈希算法(符合根CA公钥数据中的哈希算法标识)对上一步骤得到的数据计算哈希值。6.比较上一步骤计算的哈希值和恢复的根CA公钥数据中的哈希值,若两者不同,则拒绝该根CA公钥。7.检查在恢复的根CA公钥证书数据中的根CA公钥指数,并与未签名根CA公钥输出扩展中的根CA公钥指数比较,若不同,则拒绝该根CA公钥。8.检查在恢复的根CA公钥证书数据中根CA公钥模的左边部分(NCA−36+eCA字节),并与未签名根CA公钥输出扩展中的根CA公钥模的前NCA−36+eCA字节比较,若不同,则拒绝该根CA公钥。若上述所有都通过验证,则成员机构可以接受所收到的根CA公钥。成员机构可以使用银联金融IC卡支付系统公钥认证处理软件完成上述验证。34 中国3421595703bfdbec93e13c62ae97ebd1.doc-34-1获取根CA公钥银联金融IC卡根CA公钥可以从下列网站下载:http://www.chinaunionpay.com。该网站提供HTML格式和PDF格式的根CA公钥。但是在成员机构信赖下载的根CA公钥前,必须验证从第二个渠道获取的根CA公钥,即通过银联审核员(见《银联金融IC卡支付系统公钥认证技术规范》第3.4节)直接获得根CA公钥并按照本规范第7章的程序验证公钥证书中的签名,只有完全通过本规范第7章的根CA公钥验证程序,成员机构才可以接受和信赖根CA公钥。34'