前一篇文章讲了SDA,DDA的步骤可以这样理解:先执行SDA,再执行DDA特有的步骤. 所以这篇文章主要讲这个特有的步骤.正是这个特有的步骤,使得DDA不仅具有SDA的功能(保证卡片上的数据在个人化后不会被修改),还可以防止卡片被复制伪造.

第一步,取IC公钥

在SDA阶段取得的发卡行公钥,在DDA时还有一个用途,就是恢复IC卡公钥. 可以用下面的公式表示:

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

IC卡公钥证书是终端在读数据阶段从卡里读出来的, 是一串密文数据,类似如下:

* Tag 9F46 ICC Public Key Certificate
* - Len 50
* - Value 79 DE 85 4F 1F 84 9E 8B 42 9D 72 6A 8B 93 F0 E9
*  83 06 B7 7F A8 78 67 26 B4 F6 25 6B ED 87 9F 2C
*  24 52 24 DD 93 1C A8 0D 44 D8 C6 A5 5E 6D A9 BB
*  E5 F3 E2 7F 65 98 28 E4 2D 27 A1 7C 33 49 88 83
*  34 D7 46 3C 0C 6E C7 BA 93 D6 27 65 44 FB BF C5  

第二步,取签名的动态数据

终端首先发起内部认证命令给卡片, 命令的数据域是DDOL中指明的数据, DDOL是卡片在读数据阶段返回给终端的,告诉终端自己需要哪些终端数据来生成签名的动态数据. 举例如下:

* Tag 9F49 Dynamic Data Authentication Data (DDOL)*   - Len   15*   - Value 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 *       9C 01 9F 37 04

要注意9F37(终端不可预知数)是DDOL的必备项.

卡片用终端送来的DDOL中的数据,加上自己产生的动态数据(比如ATC),用IC卡私钥(注意这个, 这个私钥放在安全存贮区域,是不可复制的)生成一个密文数据,这个数据叫做签名的动态应用数据. 然后卡片把这个数据通过内部认证返回给终端.

第三步,验证哈希值

用公式可表示如下:

IC卡公钥+动态签名的应用数据+RSA=数据A

数据A也包括两部分,一部分我把它叫A1,另一部分叫哈希结果A

终端用A1加上DDOL指定的数据,用指定的哈希算法计算一个哈希结果B.

A和B比较,如果相等,则DDA成功,否则失败.

前面一开始说到,DDA可以防止复制卡片, 从上面一系列的流程可以看出, 即使你复制一张卡,SDA可以通过(因为静态的数据都是一样的),但是由于IC卡私钥的安全性,动态签名的验证是肯定失败的.

PBOC/EMV之DDA(动态数据认证)相关推荐

  1. PBOC规范研究之十一 ---复合动态数据认证(转)

    1. 概述 CDA由IC卡动态签名的生成和终端对签名的验证组成.由于直到CDA签名验证时才需要公钥,公钥的恢复可以在CDA签名前的任何时候.在公钥恢复阶段,发现的错误可能导致CDA失败(TVR&quo ...

  2. EMV技术学习和研究(五)脱机数据认证之DDA

    转载请注明出处 作者:小旭 有了前面对SDA的熟悉,接下来再研究DDA就会感觉比较轻松一点了. 用于动态数据认证的数据和SDA部分所描述的一样,也是基于SFI的来组织的. 特别说明一下:之前有一个地方 ...

  3. PBOC/EMV 中SDA和DDA简介

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

  4. QPBOC——数据认证

    非接数据认证三种方式 SDA数据认证,标准DDA数据认证,FDDA数据认证也是DDA一种快速表现方式. SDA二步曲: 步骤 1:取得 CA 公钥 终端使用卡片中的公钥索引和RID来唯一确定并取得存储 ...

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

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

  6. PBOC/EMV之电子钱包与电子现金的区别

    对于普通的用户来说,电子钱包和电子现金(下面分别简称EP和EC)是几乎没有区别的, 为什么这么说呢. 因为EP和EC都是为了做小额支付而生的. 我们拿着一张IC卡去超市的POS机上消费,或是坐公交消费 ...

  7. 金融系统中PBOC/EMV的TLV的算法实现(含C++/C#)

    金融系统中PBOC/EMV的TLV的算法实现(含C++/C#) TLV即Tag-Length-Value,常在IC卡与POS终端设备中通过这样的一个应用通信协议进行数据交换.在金融系统以及认证中,PB ...

  8. PBOC/EMV之圈存模式的变革

    转载自:http://blog.sohu.com/people/!cG9ueV9tYWdnaWVAc29odS5jb20=/143998056.html 关于圈存的概念可参见我的另一篇文章(电子现金应 ...

  9. TOTP动态密码认证功能,让天下无贼!

    据多家媒体报道,勒索500万美元的Darkside病毒是通过泄露的VPN密码进入企业内网的,由此可见使用静态用户名密码的VPN系统存在很大的安全隐患.本文通过对现有的用户认证措施进行分析,论证了使用T ...

最新文章

  1. 安卓手机文件管理器:360°LES文件浏览器
  2. linux route命令删除多余路由
  3. NYOJ 460 项链
  4. Docker教程-简介
  5. 电脑安装系统多少钱_电脑系统安装教学
  6. ARM Linux.2.6.34内核移植
  7. spark1.6 maven java_Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】...
  8. Tomcat日志文件位置
  9. 算法导论——lec 12 平摊分析与优先队列
  10. 内部收益率irr_爱心人寿心相随年金险,IRR内部收益率测算
  11. python网站数据监测_python 网站数据监控
  12. 使用Certbot申请ssl证书
  13. ASEMI代理AD8603AUJZ-REEL7原装ADI车规级AD8603AUJZ-REEL7
  14. 停车场设计软件测试,停车场车位视频检测系统设计
  15. 二、肺癌检测-LUNA数据集下载和介绍
  16. 串行干扰消除matlab仿真,串行干扰消除求详解
  17. BLE Error Codes 查表
  18. 民航客运量变化趋势的多元线性回归模型--基于R(附R程序及讲解)
  19. ORA-12154 问题解决办法
  20. 关于开源软件研究的英文论文_关于开源公司软件的7个神话

热门文章

  1. OneNote的安装教程 如何解决Win10登录微软账号报错问题
  2. Python小海龟turtle画汉字
  3. 东海证券分析报告(0607)
  4. 电信“商务领航” PK 网通“EPOWER”
  5. 【Kubernetes】k8s多集群切换【含上下文作用详解】【含6443端口不可达处理方法】
  6. XDOJ例题及答案第六更 哥德巴赫猜想 工资发放 工资计算 购房贷款计算 后项除以前项 画图灰度直方图 回文数 计算某月天数 计算球的体积 计算球体质量 计算长方体体积
  7. uboot下启动logo
  8. React中的dav.js脚手架
  9. 三菱PLC常见故障及远程维护解决方案
  10. Java3年转型大数据开发,15天拿6个offer,薪资翻3倍,我做对了什么