一,什么是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. 创建文件夹并解决解决unicode和ASCII码转换的问题

    # -*- coding: UTF-8 -*-import sysimport timeimport os #解决unicode和ASCII码转换的问题reload(sys) #解决unicode和A ...

  2. Linux下源码编译安装rpy2

    R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...

  3. Python 在Windows下安装matplotlib

    windows下安装很麻烦,使用easy_install 安装报错  提示缺少freetype 和png 后经多方查询,最终安装成功 以下是安装过程 前提你的Python环境已经搭建好了 1.前提需要 ...

  4. Leetcode算法刷题:第14题 Longest Common Prefix

    Longest Common Prefix 题目 给予一个列表,元素为字符串,写一个程序找出最长公共前缀 解题思路 先比较两个字符串,如果第一个字符不一样,则返回空值,比较完成后,用这个公共字符串和下 ...

  5. 正式学习React (六) 项目篇

    https://github.com/huenchao/yingshili 或者点这里 注意事项看ReadME.md 会持续更新,反正就是把之前分析的redux react-redux都用一下,然后会 ...

  6. 类加载器子系统——JVM之四

    一.类加载器基本概念 顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java ...

  7. 如何让ios app支持32位和64位?

    将ios app转换为兼容32位和64位步骤:  1. 安装 Xcode 5.  2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要.  3. 将你的项目 ...

  8. 在android画面切换时设置跟随变动的小圆圈

    首先还是老规律,上传两张效果图: 第一张图:     第二张图:    前言:我们经常在使用各类安卓APP的时候发现会有如图所示的小圆圈显示当前页所在的,甚至一般来说我们的android桌面上也应该有 ...

  9. 751D·PARK北京时尚设计广场_百度百科

    751D·PARK北京时尚设计广场_百度百科 751D·PARK北京时尚设计广场

  10. 改变DM6467的内存划分

    上次改过bbxm的http://blog.csdn.net/godofdsp/article/details/9377515,这次搞6467又遇到同样的问题了.按照bbxm的方法修改了内存划分,运行时 ...