银联商务POS数字签名方案
银联商务有限公司创新业务部
二○○九年四月
版本控制信息
版本 1.0 本文档中的所有内容为银联商务有限公司的机密和专属所有。未经银联商务有限公司的明确书面许可,任何组织或个人不得以任何目的、任何形式及任何手段复制或传播本文档部分或全部内容。 日期 2009-04-29 拟稿和修改 创新业务部 说明 目 录
1. 2. 3.
名词解释 ............................................................................................................................... 4 采用数字签名方案的目的 ................................................................................................... 5 证书分级管理 ....................................................................................................................... 5 3.1. 收单行管理的证书种类 ............................................................................................... 5 3.2. POS生命周期中证书的维护过程 ................................................................................ 6 4. 数字签名方案原理简介及操作说明 ....................................................................................... 8
4.1. 数字签名方案原理简介 ............................................................................................... 8 4.2. 证书的产生 ................................................................................................................... 9 4.3. POS端证书的管理 ........................................................................................................ 9 4.4. 证书的使用以及应用程序进行数字签名的操作方式 ............................................. 10 4.5. 证书的更新 ................................................................................................................. 10 4.6. 调试终端与正式布点终端的切换 ............................................................................. 11 4.7. TMS和签名校验相关的流程 ...................................................................................... 11 4.8. 相关工具的开发 ......................................................................................................... 11 附录A 证书文件和签名文件的数据结构 ................................................................................... 12
1. 名词解释
HSAH算法:把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是说,散列值的空间通常远小于输入的空间,不可能从散列值来唯一的确定输入值。
RSA算法:是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,即私钥,由用户保存;另一个为公开密钥,即公钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。 该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性: (1)已有确定一个数是不是质数的快速算法; (2)尚未找到确定一个合数的质因子的快速算法。 CA(Certification Authority):颁发数字证书的权威机构,它具有权威性、公正性和可靠性。其主要任务是受理数字证书的申请、签发及对数字证书的管理。在受理申请的同时,一般还会核对申请者的身份,以确保正确。 公钥(Public Key):RSA密钥对中用来对密文数据进行解密的密钥称为公钥,公钥由模数n和指数e组成。 私钥(Private Key):RSA密钥对中用来对明文数据进行加密的密钥称为私钥,私钥由模数n和指数d组成。
数字摘要:采用HASH算法(比如SHA-1)将任何长度的明文\"摘要\"成一串固定长度(20字节)的密文。运算后得到数字串有如原来明文的数字指纹,不同明文的摘要相同的概率近乎0,而同样的明文其摘要必定一致。
数字签名: .数字签名是指使用密码算法对待发的数据(文件)进行加密处理,生成一段信息,附着在原文上一起发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断原文真伪。
公钥证书(Public Key Certificates):公钥证书是一个经认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
公钥证书文件(PublicKeyFILE):是由公钥证书文件头(包含对公钥证书的一些版本控制等管理信息)+公钥证书+公钥证书的数字签名3个部分组成的。是用来实际下装到POS中,能够被POS解析并安装的文件。
2. 采用数字签名方案的目的
(1)POS的应用软件允许通过下载的方式进行更新。为了防止非法使用者下装软件到POS进行非法作案,或者窃取POS中存储的密钥及敏感信息,我们对下载到POS的软件采用了数字签名的方案,数字签名方案包括使用PC端签名工具对下载的软件进行数字签名以及POS端对签名后的软件进行完整性及合法性认证两个方面。通过使用数字签名方案,我们可以确保只有合法的软件才能下载到POS中。
(2)采用数字签名方案的目的,只考虑终端对终端程序的真实性和完整性进行验证,而不考虑传输过程中的程序的秘密性。TMS传输协议中已经考虑终端和TMS服务器之间的互相认证,并且有机制保证传输数据的完整性,但是没有对秘密性做考虑。
3. 证书分级管理
使用二级证书管理,第一级为根证书,第二级为工作证书。根证书用来对工作证书的合法性进行认证,不能用来对应用程序的合法性进行认证。而工作证书用来对被下载的软件的合法性进行认证。
3.1. 收单行管理的证书种类
一.银联商务管理的1证书只要有两个:
(1) 根证书(公,私钥) (2) 工作证书(公,私钥)
二. 银联商务分公司管理的证书主要是公钥文件。
(1) 经过厂商根证书签名后的根证书公钥证书文件FILE1,由厂商和银联商务提供。 (2) 经过根证书签名后的工作证书公钥证书文件FILE2,由银联商务提供。
三.各个密钥证书的管理情况汇总表 密钥名称 保存方式 厂商根证书私钥 厂商根证书公钥 根证书私钥 提供者 使用者 传递方式 签名者 备注 终端厂商 终端厂商 银联商务总公司 USBKEY 无 USBKEY 终端厂商 POS中 终端厂商 证书文件 终端厂商 USBKEY 无 USBKEY CA—>银联商务总公司 1
注:用于签名终端应用程序的私钥是从私钥文件中解析出来的。目前有两种方式保护私钥,一种是对私钥
文件进行加密保存(文件方式);另一种是使用USBKEY作为存储介质。
建议使用USBKEY来存储,其好处是存储在USBKEY的私钥不可导出,安全级别高。另外可对USBKEY进行保护。也有两种方式:一、USBKEY的PIN码分段管理;二、分多张IC卡来保持PIN码的分量。
根证书公钥 POS中 CA—>银联商务总公司 银联商务总公司 银联商务分公司 银联商务分公司 证书文件FILE1 终端厂商 由银公司提供给终端厂商签名,签名后由总公司统一发布给各分公司 工作证书私钥 USBKEY CA—>银联商务分公司 POS中 CA—>银联商务分公司 USBKEY 无 工作证书公钥 证书文件FILE2 银联商务总公司 由银联商务总公司后,通过TMS下装更新。
3.2. POS生命周期中证书的维护过程
POS POS状态描述 终端银联商务总公司 厂商 负责1.向CA申请根证书管理 以及工作证书。其 中的私钥部分都分别存放在各自的USBKEY中。 2.提供银联商务根证书公钥给终端厂商,用终端厂商根证书对应的私钥对其进行数字签名,生成根证书公钥文件FILE1并且交还给银联商务总公司。总公司把FILE1发布给各分公司。 移交 银联商务分公司 TMS 制造POS中有厂过程 商提供的厂商根证运输书。 过程 1.收到总公司发来 的根证书公钥文件FILE1. 2.向银联商务总公司提供工作证书公钥文件,总公司用根证书对应的私钥对其进行数字签名,生成工作证书公钥文件FILE2并且交还给分公司。 接收POS由厂商过程 交给银联商务 以下操作,要求在 安全环境下进行。 1. 银联商务分公司把经过签名的根证书公钥文件FIEL1下载到POS中,把POS的厂商根证书公钥更新成银联商务根证书并同时把POS中原来的证书全部删除。 2. 对于正式布点用的POS,银联商务分公司把工作证书公钥文件FILE2下载到POS中。 正式应用程序的发布 POS中有银联商务的根证书和工作证书 无关 以下操作要在安全 环境下进行 1.用签名工具对应用程序进行数字签名(使用工作证书的USBKEY),并把签名后的文件上传到正式TMS服务器中。 无关 1.事先就用根证书对新的工作证书/根证书签名。然后上传到TMS上.对于根证书,由于是采用自签名的,所以需要在TMS上保留历史上的各个版本的签名文件. 2.每次发布新的工作证书,都要把以前的应用程序用新的工作证书重新签名. 3.TMS上只保留用最新工作证书签过名的应用程序. 1.用TMS下装工具下载签名后的文件到POS中 2.POS对下载的文件进行认证,确认是合法的应用程序后允许运行,否则加以删除。 1.POS在和TMS握手的时候,要告诉TMS当前POS保存的根证书/工作证书版本,如果证书版本过低,TMS可以启动更新证书的操作。 2.TMS下载新的根证书/工作证书到POS中 3.POS对下载的新的根证书/工作证书进行认证,确认是合法的证书,就把旧的证书予以替换。 通过TMS协议更新的证书之后可以使用。 更新工作证书/根证书 POS中有银联商务的根证书和旧的工作证书 证书POS在更新无关 有效证书之前,期到 拒绝下载新的用户程序.但是可以运行旧的程序。 从式点切正布态换POS可以在监控层通过安全认证后(例如 到调输入联机试态 获取到的口令)切换到调试态。以便调试人员调试应用程序。 从调试态切换到正式布点态 POS可以在监控层通过安全认证后(例如输入联机获取到的口令)切换到正式布点态。这个切换工作会把POS中已有的用户程序全部删除。
备注说明: 1)、POS处于调试态的时候,下载程序都不需要证书认证。但是屏幕界面会每隔一定时间(例如5秒)弹出一个警告提示框,以便提示用户,此POS处于调试状态,不要进行实际交易。 2)、待签名的文件程序的储存格式
程序文件与签名文件合并在一起。 3)、产权为其他收单行的终端程序的管理
其他收单行的程序,如果需要下载到POS所有者的收单行下的POS中,则需要使用所有者收单行的证书进行签名,即终端只认所有者收单行的数字证书。
4. 数字签名方案原理简介及操作说明
下面,我们以证书的生命周期来描述和数字签名相关的操作说明和原理。一般有证书的产生,证书的使用,证书的更新,证书的管理等。
4.1. 数字签名方案原理简介
1)、对下载软件的数字签名是由PC端数字签名工具完成的。具体数字签名的实现流程如下:
1) 获取数字摘要:采用SHA-1的HASH算法计算要下载的程序文件M的数字摘要H,即 H=HASH (M). 对下载的程序文件M的任何修改都会导致数字摘要H的修改,通过
这种方式,我们可以确保下载的程序文件未被修改,是完整的。
2) 获取数字签名信息:通过签名工具输入加密后的私钥文件,然后由三位合法用户输入正确的用户名及密钥后获得私钥明文,使用私钥通过RSA算法加密步骤1中得到的数字摘要H,加密后得到结果即为签名信息S,此签名信息的长度与私钥模长相等。
3) 文件打包:将要下载的源文件M与签名信息S打包后即生成最终的签名文件N,此文件可以直接下载到POS中。
2)、POS接收到签名文件N后,即开始对签名文件N进行合法性认证,具体实现流程如下:
➢ 读出存储在POS中的公钥证书,解析得到公钥,然后使用RSA算法对包含在签
名文件N中的签名信息S进行解密操作,得到数字摘要H1.
➢ 使用SHA-1算法计算源文件M的HASH值,得到数字摘要H2=HASH (M);
比较H2是否等于H1,如果相等,则通过了文件认证,源文件M将被存储在POS中;如果不相等,则POS会提示认证失败,源文件M将不会被存储在POS中。
4.2. 证书的产生
数字签名方案中使用的私钥及公钥由CFCA发放或银联商务自行发放。公钥是以证书的方式存在的,对其安全方面的要求主要是:要求只有在获得授权的情况下才能修改,但是可以自由读取;而私钥则是保密的,必须由合法用户进行安全保护以防止被窃取.
公钥以证书文件的形式【由公钥证书文件头(包含对公钥证书的一些版本控制等管理信息)+公钥证书+公钥证书的数字签名3个部分组成】下载到POS中,公钥证书格式遵循ITU-T(国际电信联盟组织)X.509规范,公钥证书中包含了公钥、证书发行者、证书所有者及有效期等信息。
从证书的维护管理角度来看,证书采用两级证书树的结构来使用.所以银联商务维护根证书和工作证书两套证书。根证书用来对工作证书的合法性进行认证,不能用来对应用程序的合法性进行认证;而工作证书用来对被下载的软件的合法性进行认证。
4.3. POS端证书的管理
POS中存储的证书树包含两级证书:根证书和工作证书。根证书用来对工作证书的合法性进行认证。不能用来对应用程序的合法性进行认证。而工作证书用来对被下载的软件的合法性进行认证。
一. 根证书: 1)厂商根证书:
POS中的第一个根证书称为厂商根证书。厂商根证书由终端厂商提供,由终端厂商在生产阶段通过烧片方式写入POS中。 2)银联商务根证书:
银联商务总公司提供根证书公钥(Translate Root Public Key )给终端厂商,终端厂商用厂商根证书对应的私钥对银联商务根证书公钥进行数字签名,并把签名后的根证书公钥文件交给银联商务总公司。
3)POS的交接:
当POS被送到各银联商务分公司后,银联商务分公司先下载经过签名的银联商务根证书文件FILE1到POS中,把POS的厂商根证书更新成银联商务根证书。以上根证书更新的同时,POS中旧的证书以及应用程序都会被清除。根证书只能被更新(采用自签名方式),不能被删除。从而保证了根证书的安全性。
二. 工作证书:
工作证书允许通过下载的方式更新,但是必须先使用根证书对应的私钥签名后才能下载到POS中,从而更新旧的工作证书。但是每次更新工作证书,应用区程序都会被清除。 根证书和工作证书下载后都不允许通过任何方式删除。
4.4. 证书的使用以及应用程序进行数字签名的操作方式
1)概述:下载到POS的终端应用程序必须先使用PC端的数字签名工具进行签名.终端应用程序由各终端厂商开发.应用程序开发人员编译生成了最终的目标程序之后,银联商务使用PC端的数字签名工具对应用程序进行数字签名.签名之后的目标程序再使用各终端厂商提供的下装工具下装到POS中.下装工具只负责下装,不负责数字签名.
2)安全管理原则:用于签名下载文件的私钥是从私钥文件中解析出来的.为了保护私钥,需要对私钥文件进行加密保存.并且如果按照最高使用安全管理的要求,每次对应用程序进行数字签名时,都需要有3位授权用户输入3组正确的密钥之后才能对应用程序进行数字签名操作.
3)具体做法的建议:银联商务产生了公私钥之后,公钥以证书的形式发布给POS厂家,私钥则写入USB-KEY,.对USB-KEY的访问权限采用由3位不同的授权用户输入3组16字节长的密钥进行认证的方式来管理.一旦三人认证通过,则可以把应用程序的数字摘要H输入USB-KEY中进行数字签名,加密后得到签名信息S.这样做的好处,就是私钥信息在整个签名过程中不会泄露.
4.5. 证书的更新
工作证书过期更新后,如何对TMS上的终端应用程序进行处理 证书更新后,需要把所有在用的终端应用程序都批量重新签名。
另外,对于多应用终端,签名是对每一个应用做一次签名,而不是把终端上的所有应用打包一起做一次签名。加载多应用的终端,如果其中几个应用校验签名合法,另外的一个应用签名校验不合法,可将检验合法的程序下载到终端。
证书有效期的识别
对工作证书有效期的识别,可有两种方式:一、在终端识别;二、在后台进行识别; 方案一:建议在后台进行识别。终端本身不判断工作证书的有效期。在TMS协议中,终端要在开始的时候告诉TMS当前POS保存的工作证书版本,如果证书版本过低,TMS可以启动更新证书的操作。
方案二:终端判断工作证书的有效期。如果有效期到了,终端不允许下载新的用户程序,除非终端更新了工作证书。
校验签名的方式
终端在下载程序时候才校验签名,平时开机只检验程序的完整性,不校验的合法性。这样的好处是,可以很好地解决POS中旧的由过期证书签署过的应用程序的验证问题。
终端测试程序的下载
如果终端测试程序统一由总公司管理,由于版本繁杂多样,显然是不合适的。如果由分支机构在直接上传到TMS生产系统,不利于终端应用程序的管理。 因此需要终端支持调试态,具体见4.6。
4.6. 调试终端与正式布点终端的切换
POS可以在监控层通过安全认证后(例如输入联机获取到的口令)切换到调试态。以便调试人员调试应用程序。
POS处于调试态的时候,下载程序都不需要证书认证。但是屏幕界面会每隔一定时间(例如5秒)弹出一个警告提示框,以便提示用户,此POS处于调试状态,不要进行实际交易。
POS可以在监控层通过安全认证后(例如输入联机获取到的口令)切换到正式布点态。这个切换工作会把POS中已有的用户程序全部删除。
4.7. TMS和签名校验相关的流程
1)POS和TMS握手,完成前期的相互认证
2)POS把自己的终端序列号,根证书,工作证书的版本信息,以及POS支持哪些非对称算法类型(RSA还是椭圆曲线等)上传给TMS。(TMS端,证书的版本信息应该就对应了这个证书采用了何种非对称算法)
3)TMS根据这些信息判断该POS是否和现有的TMS认证算法(比如RSA还是椭圆曲线,密钥长度等)一致,以及证书版本是否是最新的。如果不需要更新证书,就进入第4步。如果要更新POS上的相应证书,就可以启动更新证书流程。完成后进入第4步。 4)TMS进行具体的文件更新操作。
5)POS根据协议收到相关文件,通过认证后安装相关文件到POS中 6)POS重启,完成相关文件的安装工作。
4.8. 相关工具的开发
1) 数字签名工具的开发 签名工具由银联商务开发。银联商务提供签名工具的算法,生成的签名文件的数据结构以规范的形式加以约定。以便各个终端厂商遵守。
2)下载工具的开发
由各个终端厂商提供,下载工具用于下载FILE1及FILE2文件到POS终端,并使用银联商务根证书公钥替换厂商出厂根证书。
附录A 证书文件和签名文件的数据结构
1. 签名的目标文件类型
目前需要签名的目标文件包括以下几种类型:
1) 应用程序文件:以压缩包文件提供,通常功能相对的模块组成一个压缩包文件; 2) 证书文件:由认证中心发行的公钥证书文件。
2. 证书的数据结构
公钥证书及对应的私钥由CA中心发行,公钥证书格式遵循ITU-T(国际电信联盟组织) X.509规范,公钥证书中包含了公钥、证书发行者、证书所有者及有效期等信息。
1)DER编码格式
X.509标准证书采用DER编码格式,DER编码格式不仅规定了数据的存放格式,也规定了数据类型定义。一个完整的数据结构包含的信息如下:
格式信息(Identifier Octets):表示数据类型; 长度信息(Length Octets):表示数据的长度; 数据信息(Contents Octets):实际存放的数据内容; 一般的,一个数据结构可以按照以下格式表示:
格式信息 长度信息 数据信息 2)证书结构
证书结构中包含了若干个域,每一个域都按照DER编码,下表对证书结构中的各个域进行说明: 区域 版本 系列号 签名算法 颁发者 有效期 主题 公钥 扩展信息 用途 标识证书格式的版本,目前包含V1/ V2/V3三个版本 序列号是由CA中心指派给每一个证书的一个整型数值的唯一标识符,是独一无二的。有序列号和颁发者信息可以确定一个唯一的证书 标识文件签名时采用的加密算法类型和HASH算法类型 标识证书的颁发机构 标识证书有效起始日期和有效终止日期两部分内容,即证书在该时间段内有效。 标识公钥产生的机构。通常,该信息和颁发者信息相同 包含公钥对应的密码算法类型描述和公钥本身 扩展域在证书版本为V2和V3中才有,它表明了证书的其它一些信息。例如,它可以包含颁发机构密钥标识符、主题密钥标识符、密钥用法、基本等信息 CA对证书签名后生成的数据 签名信息
3. 证书及程序文件的文件头格式
证书与程序文件的下载方式相同,为了使POS能区别证书与程序文件,我们需要给证书文件和程序文件加文件头,用于标识文件类型,对于证书文件,可以在文件头中填入证书版本,从而方便证书管理,加文件头的功能可以由签名工具完成,证书文件和程序文件的文件头长128字节,格式如下: 区域 文件类别名称 终端文件名 型号名称 文件版本 显示名称 所属应用区 大小(字节) 必填 16 16 16 16 16 16 是 是 否 否 否 属于底层文件可不填 否 否 是 否 否 是 是 用途 文件类别 在终端上的文件名称 自定义 版本信息 自定义 应用区名称 创建时间 校验 文件体长度 签名信息长度 扩展文件头长度 结构版本 结束标志 16 4 4 4 2 1 1 创建时间 扩展文件头+文件体的校验和 文件体长度 扩展文件头长度 该文件头结构版本,内容固定,不得自行定义 结束符,以0x0a表示 对文件头各个域的说明如下: 1) 文件类别名称:标识文件的类别。对于证书文件,类别名称定义为“UNIMARS-II-CRT”;
对于程序文件,类别名称定义为“UNIMARS-II-PKG”。 2) 终端文件名:标识文件在终端存储时的文件名。填入签名时输入的源文件的文件名即可
(包含后缀名)。 3) 型号名称:对于证书文件,如果是根证书,填入“ROOT”,如果是工作证书填入“WORK”;
对于程序文件,此域不填。
4) 文件版本:标识文件的版本。对于根证书及工作证书,版本定义相同,使用3个域标识
版本即“AA.BB.CC”,第一个域表示当前证书是临时证书还是生产证书,临时证书用“00”标识,生产证书用“01”标识;第二个域表示证书的版本,从“01”开始往上升级;第三个域预留。对于程序文件,此域不填。
5) 显示名称:对于证书文件,如果是根证书,填入“ROOTCRT”,如果是工作证书填入
“WORKCRT”;对于程序文件,此域不填。 6) 所属应用区:不填。
7) 创建时间:填入签名时的系统时间,也可不填。
8) 校验:文件体的校验和,不包含文件头及签名信息。此域可不填。
9) 文件体长度:标识文件主体的长度,不包含128字节文件头及签名信息的长度。对于证
10) 11) 12) 13)
书文件即为CA中心生成的证书文件长度,对于程序文件即为压缩包文件长度。 签名信息长度:对文件签名后生成的签名信息长度,此签名信息直接附加到文件主体的末尾。
扩展文件头长度:不填。 结构版本:固定填入0x01。 结束标志:固定填入0x0a。
4. 签名后的证书及程序文件格式
区域 文件头 文件体 大小(字节) 说明 128字节 参照第2点的说明 文件主体,对于证书文件即为CA中心生成的证书文件内容;对于程序文件即为压缩包文件内容 签名后生产的签名信息,长度等于公钥模长 签名信息
因篇幅问题不能全部显示,请点此查看更多更全内容