移动安全规范 — 4.1 PBOC2.0 IC卡认证

1 什么是PBOC2.0

2005年3月13日,人民银行发布第55号文,正式颁发了《中国金融集成电路(IC)卡规范》(简称PBOC2.0)

2 PBOC认证分类

PBOC数据认证方面,有两个大的分类:脱机认证和联机认证。在PBOC中,脱机认证主要有三种方式:SDA(静态数据认证),DDA(动态数据认证),CDA(复合动态数据认证)。而联机认证主要有:ARQC,ARPC

2.1 脱机数据认证 -静态数据认证

静态数据认证,即这些数据在卡制定后是不会改变的,如卡号,卡的有效期,卡的应用限制等。

终端使用卡片上的发卡行公钥(Tenfy标注:卡片上的重要应用数据的写入都是用发卡行私钥进行签名过的,若修改,则用卡片上的发卡行公钥解出来跟实际卡读出的不匹配,但问题是卡片上的发卡行公钥可能也被伪造,因此,卡片上的发卡行公钥是从发卡行公钥证书读取的,且证书是有CA中心的数字签名的)验证卡片的静态数据,同时卡片上还包括了发卡行公钥证书和数字签名,数字签名中包括一个用发卡行私钥加密用重要应用数据计算得到的哈希值。如果用实际数据产生的哈希值和从卡中恢复出的哈希值相匹配,则证实了数据并未被修改。

第一阶段的过程如下:

1,发卡行的密钥管理系统产生发卡行公/私钥对PI和SI,并将公钥PI传输给根CA(目的是要跟CA对该公钥进行数字签名)。

2,根CA用自己的私钥SCA对发卡行公钥PI进行数字签名,产生发卡行数字证书,连同根CA公钥信息返回给发卡行密钥管理系统。

3,发卡行密钥管理系统用发卡行私钥SI对卡片静态数据进行数字签名,将签名结果和发卡行证书传送至发卡系统;

4,发卡系统在个人化时将发卡行数字证书和数字签名写入每一张卡片中;

5,根CA将其公钥PCA,经收单行传送至终端管理系统;

6,收单行终端管理系统把根CA公钥PCA通过远程下载到终端;

第二阶段的过程如下:

IC卡进行脱机交易的静态数据认证,受理终端完成如下的过程:

1,终端从卡片中读取出发卡行数字证书以及数字签名,使用终端上的CA公钥PCA恢复出发卡行公钥PI,(即用CA公钥PCA验证发卡行数字证书的合法性,从而证明证书上的发卡行公钥确实是CA签名的合法公钥,为接下来使用该发卡行公钥进行验证IC卡的数字签名准备了基础)

即CA公钥(终端自己存储)+ 发卡行数字证书(终端从IC卡读取)+ RSA算法 = 发卡行公钥

说明:终端用存储在终端或者在线下下载的CA公钥利用RSA算法从发卡行数字证书中恢复发卡行行公钥,并且利用该公钥验证从卡上读取的静态数据和对应的数字签名是否一致。

2,终端使用恢复的发卡行公钥PI解密卡片的签名数据(一般是对原始数据+原始数据的hash进行签名)

即发卡行公钥(通过第一步步骤恢复得到)+签名的静态应用数据+RSA算法=数据A

注:数据A主要包含两个部分:一部分叫数据A1,另外一部分叫hash结果A

3,终端将解密结果与卡片静态数据进行比对,保存对比结果,并将验证结果返回给卡片。

A1和终端在读取数据阶段读到的需要参与认证的静态数据一起,调用Hash算法,算出一个哈希结果B,即

A1+终端在读数据阶段读到的需要参与认证的静态数据+hash算法=hash结果B

然后比较hash结果A和B是否匹配即可。

2.2 脱机数据认证 - 动态数据(DDA)认证

而DDA相比SDA来说,重点在于IC卡公私钥对,IC卡私钥是放在安全存储区域的,而验证过程是在SDA的基础上,在终端验证静态数据以后,终端会发送内部认证命令(内部认证就是终端认证卡片,外部认证就是卡片认证终端)给到卡片(见图的红色画圈部分),命令中包含了由DDOL指定的数据元,IC卡会根据这个列表中指出的数据用IC卡私钥进行加密生成数字签名,这个结果即是签名的动态应用数据,接下来,终端收到这数据后,会像SDA一样,用CA公钥证书->发卡行公钥证书->IC公钥证书,从IC卡公钥证书拿到IC卡公钥来解密IC卡私钥加密的数据,并进行比较结果。

DDA是在卡片行为分析前执行,此时,IC卡将来自卡片的动态数据以及由动态数据认证数据对象列表(DDOL)所标识的终端数据用IC卡私钥生成一个数字签名。

标准动态数据认证(DDA)的详细过程如下:

密钥和证书分发阶段:

1,发卡行的密钥管理系统产生发卡行公私钥对SI和PI,以及为每一张IC卡生成一对公私钥对SICC和PICC,并将发卡行公钥PI传输至根CA;

2,根CA用自己的私钥SCA对发卡行公钥进行数字签名,产生发卡行证书,连同根CA公钥信息返回给发卡行密钥管理系统;

3, 发卡行用发卡行私钥SI对每个IC卡公钥PICC进行数字签名,产生IC卡证书;–关键一步

4,发卡行密钥管理系统将发卡行证书及IC卡证书,IC卡私钥传送至发卡系统;

5,发卡系统在个人化时将发卡行证书和IC卡证书写入卡片中,(笔者标识:同时在制卡的时候,把IC私钥一起存入卡的安全存储芯片中)

6,根CA将自己的公钥PCA传送给收单行的终端管理系统;

7,终端管理系统把根CA公钥PCA通过远程下发到终端。

交易验证阶段:

1,终端从卡片读取发卡行证书及IC卡证书,使用根CA公钥PCA恢复出发卡行公钥PI,使用恢复的发卡行公钥PI恢复出IC卡公钥PICC;

即发卡行公钥+IC卡证书+RSA算法=IC卡公钥

2,终端向IC卡发送内部认证命令(INTERNAL AUTHENTICATE)请求一个动态签名,卡片连接内部认证命令中的终端数据和在IC卡中动态数据中指定的卡片数据,由存储于卡片安全芯片的卡片私钥SICC对该数据进行数字签名并返回终端;

3,终端使用IC卡公钥PICC对数字签名进行验证,并将验证结果返回给卡片。

你可能感兴趣的:(移动安全,系统安全,android)