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

PBOC/EMV里有两个非常重要的概念,SDA(staticdataauthentication)和DDA(dynamicdataauthentication),分别叫做静态数据认证和动态数据认证。这两个认证都是脱机下(off-line)的认证。业内人都知道磁卡和IC卡迁移的一个很重要的原因就是安全问题。

结论:

SDA和DDA都是在脱机交易下的认证

    举两个磁卡犯罪的例子:

1磁卡本身的构造原理使得它的数据非常容易被非法修改,你肯定不愿意有人非法修改你卡上的数据,当然如果是在你的余额后面加几个0就另当别论了。

2相信下面要举的这个例子,很多人都听过:犯罪分子要用两个设备,读卡器和针孔-摄-像机。他们把读卡器与银行原来的读卡器固定一起,插卡口对齐,当我们取钱时把卡插进去时,我们的卡上的信息就被他们的读卡器读出,然后他们用一张空白的卡就可以把我们的卡复制出来。针孔摄-影-机的作用就是当我们取钱时窃取我们的密码。卡有了,密码也有了,剩下的步骤就是取钱了。

SDA可以解决上述第一个问题,它实现的原理是数字签名。简单的说,过程如下:IC卡的里的数据先签个名,怎么签名呢?当然不是用笔直接上面写个名字。它的做法是用Hash为这些数据生成一个简短表示做为该数据的摘要,然后,把这个摘要加密,得到一个签名;。再把数据和加密后的签名发给终端。终端在这一头先把收到的数据Hash,得到一个签名,然后再把收到的加密签名解密,又得到一个签名,比较两个签名,就可以知道数据有没有被修改过,如果数据被修改过,两个签名是不同的。验证不会通过。

DDA除了具有SDA的功能外,它最强大的地方就是解决上述第二种犯罪。它实现的原理如下:与SDA相比,它的签名是动态的。SDA的签名在卡发行时就定好的,它加密所用的私钥是发卡行的私钥(如果你不理解私钥和公钥的概念,建议先看一下密码学的相关知识)。而DDA每次用来的签名的数据是当前交易中的一些动态数据,签名加密所用的私钥是IC卡私钥,这个私钥贮存在IC卡的一个安全区域里(这个很重要)。终端这一头有与之相对应的用来解密的公钥。那么怎么实现防复制呢?

举个例子说,张三的卡被李四复制了一张,李四拿着这张卡去取钱。在交易时,IC卡会生成一个动态的签名给终端确认,关键的地方就在这里,这个动态的签名需要一个私钥来加密,而这个IC卡私钥贮存在IC卡里的安全区域里,李四不可能知道,李四随便选一个私钥来加密签名,所以在终端这一头的验证肯定是通不过的,因为公钥和私钥已经不对应了。那么交易肯定会被强制中止,张三卡里的钱也就不会被李四取走。

DDA实在是太强大了,可以想像如果以后我们用的银行卡全部都是有DDA功能的IC卡,将极大减少金融犯罪。Visa和master公司已经宣布2011年之后,欧洲所有银行发行的具有脱机功能的IC卡都要使用。

时间: 2024-09-30 18:36:05

静态数据认证(SDA)与动态数据认证(DDA)的区别的相关文章

ios ableviewcell的动态加载数据,模仿喜马拉雅动态数据加载

iphone(UITableViewCell)动态加载图片http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html其实在iphone上面是实现图片的动态加载,其实也不是很难,其中只要在代理中实现方法就可以首先在头文件中声明使用到的代理 如  @interface XXX : UIViewController<UIScrollViewDelegate>然后在.m中实现//滚

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

动态数据认证: 一,什么是动态数据认证(DDA) 由于上篇<< PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)>>已经对静态数据认证部分做了详细的分析,一些基本知识本章不重复说明,需要明确指出的是:无论SDA和DDA,两者都是属于脱机认证的范围. 在上一篇中,我们知道静态数据认证(SDA)的目标是解决发卡行静态数据的防篡改,但局限是无法防止复制卡或者伪造卡的情况,而这种复制卡和伪造卡恰恰是金融卡安全面临的最大问题. 举两个现实的例子: 1,笔者本人亲自遇到的:某天突然收

浅谈如何使用python抓取网页中的动态数据

我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器后动态生成的,而之前并没有的. 在编写爬虫进行网页数据抓取的时候,经常会遇到这种需要动态加载数据的HTML网页,如果还是直接从网页上抓取那么将无法获得任何数据. 今天,我们就在这里简单聊一聊如何用python来抓取页面中的JS动态加载的数据. 给出一个网页:豆瓣电影排行榜,其中的所有电影信息都

Django模板继承下的动态数据传递—上下文处理器

参考:http://www.caodahua.cn/detail/3/ 模板继承可以减少页面内容的重复定义,实现页面内容的重用.我的个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的.我们可以通过自定义上下文处理器来解决. Django上下文处理器(Context Processor) 上下文处理器是接收HttpRequest为参数并返回dict形式的数据的函数.它的主要用途是将所有模板共享的公共数据添加到上下文

业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息对象 根据用户查询角色列表,并遍历角色列表 在循环体中将角色关键字添加到授权信息对象的角色属性中 根据用户查询权限列表,并遍历权限列表 在循环体中将权限关键字添加到授权信息对象的权限属性中 在角色与权限service类的根据用户查询角色与权限方法中判断用户是否为系统管理员 如果是系统管理员就查询出所

游戏设计一、关于游戏动态数据和静态数据的处理

最近的游戏项目遇到的问题 让我思考了一些东西  比如 游戏开始时会初始化很多数据到世界里面,比如玩家的金钱,玩家一边打怪 一边金钱猛涨,在打怪的时候,金钱的数据应该是直接写到世界的,而不是更新了金钱就写到数据库的,所以这里就有个问题,当玩家查点击 装备的时候 上面会有个金钱的额度 这个数值是通过数据库还是通过世界内存来的? 简单说下 世界内存就是动态数据 静态数据 都是放数据库的,如果要看到及时的额度 那就必须增加动态数值查询的接口

【Paddy】如何将物理表分割成动态数据表与静态数据表

前言 一般来说,物理表的增.删.改.查都受到数据量的制约,进而影响了性能. 很多情况下,你所负责的业务关键表中,每日变动的数据库与不变动的数据量比较,相差非常大. 这里我们将变动的数据称为动态数据,不变动的数据称为静态数据. 举个例子,1张1000W的表,每日动态数据只有1W条,999W条的数据都为静态.往往select或者重复改变的数据都在动态数据中.比如订单表. 所以,如果将动态数据库从表中剥离出来,分割两张表,一张动态数据表,一张静态数据表,从数据量的角度来看,性能是不是就会自然提高了?

Nginx与Tomcat实现请求动态数据与请求静态资源的分离

上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据. 如:图片.字体.js文件.css文件等等.在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内. 动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据. 如:请求明天的天气信息数据.请求查看账户余额. 二.请求动

签发token、校验token、多方式登录签发token的实现、自定义认证反爬规则的认证类、admin使用自定义User表:新增用户密码密文、群查接口各种筛选组件数据准备、drf搜索过滤组件、drf排序过滤组件、drf基础分页组件

签发token 源码入口 # 前提:给一个局部禁用了所有 认证与权限 的视图类发送用户信息得到token,其实就是登录接口 # 1)rest_framework_jwt.views.ObtainJSONWebToken 的 父类 JSONWebTokenAPIView 的 post 方法 # 接收有username.password的post请求 # 2)post方法将请求得到的数据交给 rest_framework_jwt.serializer.JSONWebTokenSerializer 处