PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)

2023-05-16

PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)

一,什么是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,发卡行的密钥管理系统产生发卡行公/私钥对PISI,并将公钥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是否匹配即可。

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 21.6.7爬虫日志

    一 爬虫的目的 采集数据 xff0c 为软件服务 xff01 xff01 那么数据从那儿来 xff1f 都是从生活中来的 xff01 xff01 1 手工采集 可以采集数据 xff0c 但是操作效率低下 2 内部数据 公司内部数据 xff0
  • 什么是自贸区?什么是离岸债券?

    1 自由贸易区 中国自由贸易区是指在国境内关外设立的 xff0c 以优惠税收和海关特殊监管政策 为主要手段 xff0c 以贸易自由化便利化为主要目的的多功能经济性特区 自由贸易区有两个本质上存在差异很大的概念 xff1a 一个是FTA xf
  • 什么是SLO?

    SLO xff1a 短期流动性调节工具 xff08 Short termLiquidityOperations xff09 每周二 周四 xff0c 央行一般都会进行公开市场操作 xff0c 目前最主要的是回购操作 回购操作又分成两种 xf
  • strcpy、strncpy与memcpy的区别与使用方法

    strcpy strncpy 与memcpy 的区别与使用方法 strcpy strncpy memcpy这三个C语言函数我们在主机代码编写中会很频繁的使用到 xff0c 但是三个函数的区别 使用时该注意什么还是有必要说下的 本文参考 C
  • C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别

    一直以为这两个是没有什么区别的 xff0c 可以相互替换 xff0c 今天又翻了一下 C语言核心技术 xff0c 明白了其中的奥妙 相同点 xff1a 两个都是二元操作符 xff0c 其右操作符是成员的名称 不同点 xff1a 点操作符左边
  • DB2 命令行中如何执行sql脚本

    原文链接 xff1a http space itpub net 8231934 viewspace 584635 db2 61 gt connect to dbName user xxx using password db2 61 gt s
  • 性能测试知多少 --并发用户数与TPS之间的关系

    1 背景 在做性能测试的时候 xff0c 很多人都用并发用户数来衡量系统的性能 xff0c 觉得系统能支撑的并发用户数越多 xff0c 系统的性能就越好 xff1b 对TPS不是非常理解 xff0c 也根本不知道它们之间的关系 xff0c
  • ubuntu编译 opencv undefined referece to `cv::imread()`

    Ubuntu下编译一个C 43 43 文件 xff0c C 43 43 源程序中使用了opencv xff0c opencv的安装没有问题 xff0c 但是在编译的过程中出现如下错误 xff1a undefined reference to
  • 基于深度学习的3D pose estimation总结(包括几篇2D pose estimation)

    一 任务描述 给定一幅图或者是一段视频 xff0c 人体姿态估计就是恢复出其中的人体关节点位置的过程 二 挑战和难点 1 人体肢体运动较为灵活 xff1b 2 视角的变化 xff1b 3 附着物的变化 xff08 比如遮挡 xff0c 衣物
  • STM32的空闲中断

    最近发现了STM32的USART的空闲中断非常的舒爽 xff0c 但是在前期配置的时候会出现一些小问题导致没有办法进入终中断或者是一直空闲中断 xff0c 现将它记下来 xff0c 给各位和自己留一个参考 xff1a 1 不进入中断 我是这
  • Github上最受欢迎的7个开源AI机器学习框架

    在过去的几年中 xff0c 人工智能正在占领技术的许多领域 来自不同背景的开发人员最终意识到了AI为他们带来的机遇 xff0c 而不管他们的需求如何 在今天的文章中 xff0c 我们列出了7种最佳的开源AI 机器学习系统和框架 1 Tens
  • ubuntu更换shell

    ubuntu更换shell zsh配置 span class token comment 安装zsh span span class token function sudo span span class token function ap
  • 网络调试助手NetAssist的使用

    一 使用场景 xff1a 项目定制需求 xff1a 前端的车载终端把gps 报警信息 报警图片 其他检测数据发往约定的第三方服务器 xff0c 车载终端通过公网 xff08 SIM拨号或者有线网 xff09 以udp或者tcp连接服务器 x
  • vlc代码分析(4)——mpgv的demux

    Mpgv c 是对mpeg vedio的解码部分 xff0c 从demux开始 xff0c 到sample到输出 其中 xff0c 核心部分是函数ParseMPEGBlock 两种数据格式 xff1a video format 是video
  • 关于使用CMT2300A FIFO缓存区间设置为64Byte的问题

    首先请看 xff0c CMT2300A 是什么产品 xff0c 或者说是 模组吗 xff1f 请看介绍 xff1a https blog csdn net sishuihuahua article details 105095994 以及R
  • 不合理超时设置带来的“坑”

    在后台服务的实现中 xff0c 我们通过基于TCP UDP协议封装起来的RPC机制实现了跟不同系统的通信 xff0c 进而协同各个系统完成一系列业务流程和功能的执行 xff0c 在这个过程中 xff0c 每个参与合作的子系统都有自己的能力描
  • 以太坊的三种同步模式

    全同步 xff1a 获取区块链所有区块的header和body xff0c 并校验其中的每一笔交易 xff0c 需要下载所有的区块数据信息 xff0c 同步速度最慢 xff0c 但是数据最全 xff1b 快速同步 xff1a 获取区块链所有
  • 基于订单号可重入的交易系统接口设计探讨

    基于订单号可重入的交易系统接口设计探讨 在交易系统的设计和实现中 xff0c 接口的可重入性设计是及其关键的 xff0c 可重入性也叫接口操作的冥等性保障 xff0c 那么什么叫冥等性呢 xff1f 在交易系统中 xff0c 为什么需要这个
  • 什么是手机的IMEI?

    一 xff0c IMEI是什么 xff1f IMEI xff08 International Mobile Equipment Identity xff09 是移动设备国际身份码的缩写 是由15位数字组成的 电子串号 xff0c 该码是全球
  • PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)

    PBOC2 0安全系列之 脱机认证之静态数据认证 SDA 一 xff0c 什么是PBOC2 0 2005年3月13日 xff0c 人民银行发布第55号文 xff0c 正式颁发了 中国金融集成电路 xff08 IC xff09 卡规范 简称P