脱机认证
脱机数据认证是终端采用公钥技术来验证卡片数据的方法,规范中定义了 两种脱机数据认证形式:
>静态数据认证(SDA):在静态数据认证过程中,终端验证卡片上静态数 据的合法性,SDA能确认卡片上的发卡行应用数据自卡片个人化后没有被非法篡改。
>动态数据认证(DDA):在动态数据认证过程中,终端验证卡片上的静 态数据以及卡片产生的交易相关信息的签名,DDA能确认卡片上的发卡行应用数据自卡片个人化后没有被非法篡改。DDA还能确认卡片的真实性,防止卡片 的非法复制。DDA可以是标准动态数据认证或复合动态数据认证/应用密文生成 (CDA)。AIP指明了 1C卡支持的脱机数据认证方法。
脱机数据认证的结果影响到卡片和终端是执行脱机交易,联机授权还是拒 绝交易。
1 密钥和证书
PBOC2.0 D/C应用体系的CA由中国银联运营和维护或者委托的第三方 (CFCA)进行运营。
1.认证中心。
脱机数据认证需要一个认证中心(CA),认征中心拥有高级别安全性的加 密设备并用来签发发卡行公钥证书。每一台符合JR/T0025的终端都应为每一个 它能识别的应用保存相应的认证中心公钥。
2.公钥、私钥对。
认证中心和发卡行必须使用指定的非对称算法产生认证中心公私钥对,发卡行公私钥对以友1C卡公私钥对。
a.认证中心公私钥对。
认证中心最多会产生6个公私钥对,每个公私钥对都将分配一个唯一的认证中心公钥索引。认证中心公钥及其索引由收单行加载到终端,认证中心私钥由认证中心保管弁保证其私密性和安全性。
终端必须有足够空间存放认证中心公钥及其对应的注册的应用提供商标识(RID)和认证中心公钥索引。终端通过RID和认证中心公钥索引定泣认证中心公钥。
b.发卡行公钥、私钥对。
支持SDA或DDA都需要发卡行产生发卡行公私钥对,并从认证中心获取发卡行公钥证书。发卡行将其公钥发送给认证中心,认证中心使用模长大于等于发卡行公钥模长并且公钥有效期晚于发卡行公钥有效期的认证中心私钥对其进
行签名。
1C卡必须包含发卡行公钥证书及其用来验证发卡行证书的认证中心公钥索引,发卡行私钥由发卡行保管并保征其私密性和安全性。
终端通过注册的应用提供商标识(RID)和认证中心公钥索引定位认证中心公钥,并用认证中心公钥从发卡行证书恢复发卡行公钥,然后用发卡行公钥恢复并验证卡片上的发卡行应用数据。
c.1C卡公钥、私钥对。
支持DDA还要求发卡行为每张1C卡产生1C卡公私钥对,1C卡私钥存放在1C卡中的安全存C区域,1C卡公钥由发卡行私钥签名,产生1C卡公钥证书并存放在卡片中。
终端通过注册的应用提供商标识(RID)和认证中心公钥索引定位认证中心公钥,并用认证中公钥从发卡行公钥证书恢复发卡行公钥,然后用发卡行公钥从1C卡公钥证书恢复1C卡公钥,并用1C卡公钥验证卡片的动态签名数据。
1C卡公钥对还可被用于脱机密文PIN验证。
2静态数据认证SDA
SDA的目的是确认存放在1C卡中的由应用文件定位器(AFL)和可选的静态数据认证标签列表所标识的,关键的静态数据的合法性,从而保证1C卡中的发卡行数据在个人化以后没有被非法篡改。
支持静态数据认证的1C卡个人化后应包含下列数据元:
1.认证中心公钥索引。
2.发卡行公钥证书。
3.签名的静态应用数据。
4.发卡行公钥的余项。
5.发卡行公钥指数。
一张1C卡必须包含签名的静态应用数据,它是用发卡行私钥签名的。发卡行公钥必须以公钥证书形式存放在1C卡中。
如图3-4所示,静态数据认证主要有三个步骤,即:
(一)由终端恢复认证中心公钥
终端读取认证中心公钥索引。使用这个索引和RID,终端必须确认并取得存放在终端的认证中心公钥的模、指数和与密钥相关的信息,以及相应的将使用的算法。
(二)由终端恢复发卡行公钥
规范本部分主要规定了使用认证中心公钥和相应的算法按照恢复函数恢复发卡行公钥证书,得到发卡行公钥。
(三)由终端验证签名的静态应用数据
在获取发卡行公钥之后,使用#卡行公钥和相应的算法,并将恢复函数应用到签名的静态应用数据上,从签名的静态应用数据恢复数据。
3.3.1.3动态数据认证DDA
DDA的目的是确认存放在1C卡中和由1C卡生成的关键数据以及从终端收到的数据的合法性。DDA除了执行同SDA类似的静态数据认证过程,确保1C卡中的发卡行数据在个人化以后没有被非法篡改,还能防止任何对这样的卡片进行伪造的可能性。
动态数据认证有以下可选的两种方式:
(一)标准的动态数据认证,这种方式在卡片行为分析前执行。在这种方式下,1C卡根据由1C卡动态数据所标识的存放在1C卡中的或由1C卡生成的数据以及由动态数据认证数据对象列表所标识的从终端收到的数据生成一个数字签名;
(二)复合动态数据认证/应用密文生成,这种方式在GENERATEAC命令发出后执行。在交易证书或授权请求密文的情况下,1C卡根据由1C卡动态数据所标识的存放在1C卡中的或由1C卡生成的数据得到一个数字签名,这些数据包括交易证书或授权请求密文,以及由卡片风险管理数据对象列表(对第一条GENERATEAC命令是CD0L1,对第二条GENERATEAC命令是CD0L2)标识的由终端生成的不可预知数AIP指明1C卡支持的选项。
为了支持动态数据认证,一张1C卡必须拥有它自己的唯一的公钥、私钥
图3-4SDA认证
对,公钥、私钥对由一个私有的签名密钥和相对应的公开的验证密钥组成。IC卡公钥必须存放在IC卡上的公钥证书中。
动态数据认证采用了一个三层的公钥证书方案。每一个IC卡公钥由它的发卡行认证,而认证中心认证发卡行公钥。这表明为了验证IC卡的签名,终端需要先通过验证两个证书来恢复和验证IC卡公钥,然后用这个公钥来验证IC卡的动态签名。
如果卡片上的静态应用数据不是唯一的(比如卡片针对国际和国内交易使用不同的CVM),卡片必须支持多IC卡公钥证书,如果被签名的静态应用数据在卡片发出后可能会被修改,卡片必须支持IC卡公钥证书的更新。
规范中首先定义了动态数据认证所需要涉及的密钥和证书,然后按以下步骤来对动态数据认证流程进行阐述:
(一)认证中心公钥的获取
终端读取认证中心公钥索引。使用这个索引和RID,终端能够确认并取得存放在终端的认证中心公钥的模、指数和与密钥相关的信息以及将使用的相应算法。
(二)发卡行公钥的获取
使用认证中心公钥和相应的算法按照指明的恢复函数恢复发卡行公钥证书。
从发卡行公钥证书恢复数据中得到发卡行公钥。
(三)IC卡公钥的获取
使用发卡行公钥和相应的算法将恢复函数应用到IC卡公钥证书上,从IC卡公钥证书恢复数据中获取IC卡公钥。
(四)动态数据认证:
动态数据认证分为标准动态数据认证和复合动态数据认证/应用密文生成两种方式。
标准动态数据认证:
获取IC卡公钥后,标准的动态数据认证包括两个步骤,首先进行动态签名的生成,然后进行动态签名的验证。
复合动态数据认证/应用密文生成(CDA):
CDA由IC卡动态签名的生成和终端对签名的验证组成。由于直到CDA签名验证时才需要公钥,公钥的恢复可以在CDA签名前的任何时候。
IC卡动态签名包括复合动态数据和应用密文。