一,什么是PBOC2.0

2005年3月13日,人民银行发布第55号文,正式颁发了《中国金融集成电路(IC)卡规范》(简称PBOC2.0)。该规范补充完善电子钱包/存折应用;增加借/贷记应用;增加非接触式IC卡物理特性标准;增加电子钱包扩展应用指南、借/贷记应用个人化指南等内容。

二,什么是脱机认证?

PBOC数据认证方面,有两个大的分类:脱机认证和联机认证。顾名思义,脱机认证是在认证过程中无需在线连接后台,只是终端和IC卡两者结合即可完成数据的认证工作;而联机认证,则在认证过程中,需要联机连接后台,获取认证方面的相关密钥或者证书等才能完成整个认证过程。

举个简单的脱机认证的例子,比如饭堂的饭卡,我们去饭堂吃饭的时候,经常是把钱先充值我们的一张IC卡(有可能是磁条卡),然后打饭买单的时候,只需要用卡在POS机上“滴”一下即可,如果你仔细看,会发现饭堂的POS机其实只是插电源线,而没有另外的线路连接到其他设备(当然,也有可能是有些POS是有连线的),当我们知道,当我们用卡在POS机上“滴”的时候,其实终端(这里是POS)是完成了对卡相关的认证工作的,只是里面认证需要依赖的密钥,证书等是提前下发到POS机而已。

三,为什么要在中国金融IC卡借记/贷记应用中采用脱机数据认证?

脱机数据认证是PBOC2.0中的重要部分,是验证金融IC卡的有效手段。未来,消费者在使用符合PBOC2.0要求的金融IC卡进行持卡消费的时候,布置在商家的POS系统会与IC卡交互完成脱机数据认证工作,判断该卡是否被恶意篡改过或非法复制。

在PBOC2.0中定义了两种脱机数据认证的方式,即静态数据认证和动态数据认证。

1,静态数据认证(简称SDA),由终端验证IC卡中的数字签名来完成。其目的是确认存放在IC卡中关键的静态数据的合法性,以及可以发现在卡片个人化以后,对卡内的发卡行数据未经授权的改动,不仅能有效地检测IC卡内关键静态数据的真实性。

2,动态数据认证(简称DDA)。在动态数据认证过程中,终端验证卡片上的静态数据以及卡片产生的交易相关信息的签名,DDA能确认卡片上的发卡行应用数据自卡片个人化后没有被非法篡改。DDA还能确认卡片的真实性,防止卡片的非法复制。DDA可以是标准动态数据认证或复合动态数据认证/应用密文生成(CDA)。--具体请看笔者接下来的总结。

四,什么是静态数据认证?

从上面可以看出,要完成脱机认证,有一个前提条件,那就是认证依赖的密钥,证书等需要提前下发到对应的终端存储起来,使得在IC卡进行通信的时候,终端无需再连接后台系统了,故名为脱机。

在PBOC中,脱机认证主要有三种方式:SDA(静态数据认证),DDA(动态数据认证),CDA(复合动态数据认证)。

而联机认证主要有:ARQC,ARPC

所谓静态数据认证,首先是如何理解静态的概念呢?参与认证的都是卡片的静态数据,所谓静态数据,即这些数据在卡制定后是不会改变的,如卡号,卡的有效期,卡的应用限制等,静态数据认证的目的就是确认存放在IC卡中的有应用文件定位器(AFL)和可选的静态数据认证标签列表所标识的,验证关键的静态数据的合法性,从而保证IC卡中的发卡行数据在个人化以后没有被非法篡改。

五,静态数据认证的目的和局限性

目的:主要用于终端验证卡上的重要静态应用数据(如卡号)是否被非法修改。

为了便于理解静态数据认证的目的,举个现实的例子:磁条卡的结构比较简单,只有123磁道,信息的格式也比较少,因此很容易被修改,犯罪分子有可能通过相关的写卡设备修改卡里面的相关信息。

而静态认证数据就是为了发现这种非法的修改,没有经过发卡行授权的修改等,但从这里分析我们可以看到静态数据认证的一个局限:即如果犯罪分子把你的卡复制了,但不修改里面的数据,这样单独用静态数据认证是否无法发现是复制的卡还是正在的发卡行发行的卡,而这个卡伪造的识别就是接下来要介绍的动态数据认证要解决的问题。

六,静态数据认证的基础知识

要充分理解静态数据认证的原理(包括接下来的动态数据认证),需要对加解密,数字签名,对称加密和非对称加密,RSA等有较好的理解,这里可以参考笔者的blog:

http://blog.csdn.net/tenfyguo/article/details/40922813-安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

七,静态数据认证的实现原理

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

如果用实际数据产生的哈希值和从卡中恢复出的哈希值相匹配,则证实了数据并未被修改。

从规范的说明中可以看到,要实现静态数据认证,对几个主体需要拥有的密钥或者证书是有要求的:

1,  终端:

终端,你也可以认为是收单行,需要拥有CA公钥,终端只有拥有CA公钥才能利用CA公钥验证从IC中读取到的发卡行数字证书的合法性(即用CA私钥进行签名的),验证了发卡行数字证书的合法性,才能使用证书里面的发卡行公钥

2,  IC卡:

IC卡需要写入:

发卡行数字证书(经过CA签名的发卡行公钥),用发卡行私钥进行签名的静态数据

摘要(即数字签名),以及卡片的静态数据。

3,  发卡行:

发卡行需要拥有发卡行私钥,用于对发卡行生成的静态数据进行签名。

那么具体的认证过程是如何的呢?这里分成两个阶段,第一个阶段完成相关公钥和制卡的植入等前期工作;第二阶段是交易阶段的脱机认证过程。

第一阶段的过程如下:

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是否匹配即可。

PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)的更多相关文章

  1. PBOC2.0安全系列之—脱机认证之动态数据认证(DDA)

    动态数据认证: 一,什么是动态数据认证(DDA) 由于上篇<< PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)>>已经对静态数据认证部分做了详细的分析,一些基本知识 ...

  2. 【EMV L2】SDA静态数据认证处理流程

    [静态数据认证] 静态数据认证处理过程中,卡片没有执行任何处理,终端执行的处理流程:1.认证中心公钥的获取终端使用卡片上的认证中心公钥索引(PKI)[TAG:8F,Certification Auth ...

  3. 静态数据认证(SDA)与动态数据认证(DDA)的区别

    PBOC/EMV里有两个非常重要的概念,SDA(staticdataauthentication)和DDA(dynamicdataauthentication),分别叫做静态数据认证和动态数据认证.这 ...

  4. PBOC2.0与3.0的区别

    一.PBOC规范颁布的历程 1997年12月,PBOC V1.0  定义了五个方面的事项  电子钱包/电子存折应用(EP,ED)  卡片和终端的接口  卡片本身的技术指标  应用相关的交易流程  终端 ...

  5. PBOC2.0与PBOC3.0的区别

    2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...

  6. 【转】PBOC3.0和PBOC2.0标准规范异同分析

    2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...

  7. WCF 4.0 进阶系列 -- 随笔汇总

    WCF4.0 进阶系列–前言 WCF4.0 进阶系列--第一章 WCF简介 WCF4.0进阶系列--第二章 寄宿WCF服务 WCF4.0进阶系列--第三章 构建健壮的程序和服务 WCF4.0进阶系列- ...

  8. 【转】WF4.0实战系列索引

    转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...

  9. ExtJs2.0学习系列(12)--Ext.TreePanel之第一式

    今天开始,我们就开始一起学习TreePanel了,道个歉,上篇的代码很乱阿. 我总是喜欢用最简单的例子开始,去理解最基本的使用方法,减少对i后面高级使用的干扰! TreePanel是继承自Panel, ...

随机推荐

  1. primary key与unique的区别

    定义了 UNIQUE 约束的字段中不能包含重复值,可以为一个或多个字段定义 UNIQUE 约束.因此,UNIQUE 即可以在字段级也可以在表级定义, 在UNIQUED 约束的字段上可以包含空值.ORA ...

  2. javaSE读取Properties文件的六种方法

    使用JavaSEAPI读取Properties文件的六种方法 1.使用java.util.Properties类的load()方法 示例:InputStreamin=lnewBufferedInput ...

  3. 复习:IPC机制

    一.为什么需要IPC机制 当我们开启多个进程的时候,我们有时需要和各个进程进行交互.但是进程间的交互就不能够共享对象(就是进程A中创建了一个对象,进程B中的类或者方法不能够直接使用,需要用到IPC机制 ...

  4. hdu 5823 color II 状压dp

    题目链接 给n个点 n<=18. 然后给出它们两两之间是否有边相连. 问你这个图的所有子集,最少要用多少种颜色来染色, 如果两个点相连, 那么这两个点不能染同样的颜色. 先预处理出所有的点独立集 ...

  5. python执行外部程序模块pyshell

    写python程序的时候需要用到调用外部命令的模块,看了一下,还真不少,头疼,用着不顺手.根据官网推荐,我根据官网的subprocess模块定制了一个自己的shell,同时借鉴了github上面的sh ...

  6. Python 装饰器学习以及实际使用场景实践

    前言 前几天在看Flask框架,对于非常神奇的@语法,不是非常的理解,回来补装饰器的功课.阅读很多的关于装饰器的文章,自己整理一下,适合自己的思路的方法和例子,与大家分享. app = Flask(_ ...

  7. SQL Server 连接和事务相关的问题。

    方法 1. dbcc opentran + sys.dm_exec_connections dbcc opentran; dbcc opentran 针对当前数据库 dbcc opentran('St ...

  8. ASP.NET抓取网页内容的实现方法

    这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下 一.ASP.NET 使用HttpWebRe ...

  9. Baidu Sitemap Generator插件使用图解教程

    这两天因为百度对本博客文章收录更新很慢,一直在网络查找真正的原因和解决方法.最终发现了柳城开发的Baidu Sitemap Generator WordPress插件,最终效果如果还需要验证一段时间. ...

  10. .NET设计模式系列文章

    原文地址:http://terrylee.cnblogs.com/archive/2006/06/01/334911.html 最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记 ...