智能卡安全机制比较系列(二)DS SmartCard
DS Smart Card是飞利浦公司自己开发的一款CPU卡产品,在早期芯片厂商开发自己的COS并进行推广很普遍,现在像英飞凌(前西门子半导体)以及恩智普(前飞利浦半导体)几乎很少推广自己的COS,大多时候都是在集中精力推广自己的芯片。
飞利浦的DS系列智能卡COS结合了ISO7816和ETSI的规范(也就是SIM卡规范),在安全机制上采取了和SIM卡类似的密码验证方式,即主要通过密码比对的方式获取对文件的访问控制权限。
DS CPU卡一共定义了三种基本的访问权限,分别是发卡商权限(0到3)共享权限(0和1),持卡人权限(0和1)。这些访问权限通过密码单元中对应的访问权限区域来定义,对应的密码分别是发卡商密码和持卡人密码,而共享权限可以利用发卡商密码或者持卡人密码来获得。在正确验证密码后根据访问权限区域设定的数据位就可以获得其中的一种或几种权限。一旦获得了某种权限,那么这种权限就一直保留,直到到卡片断电,或者是对同一个密码又进行了错误的认证后才会消失。每次正确的密码认证所获得的权限是累加的关系。
在可以设定的权限中共有16种状态,其中0表示始终满足,即不需要认证,而15表示永远都不满足,即拒绝任何访问。其余的14种状态可以分别对应不同的密码或者密码组合来实现访问控制。每个密码还设计了对应的解锁密码,当连续错误验证密码超过规定的次数后,该密码将被锁定,只有通过核对解锁密码才能解开。下表是访问控制权限组合:
|
访问控制编号 |
需要的访问控制权限 |
访问控制条件 |
|
0 |
不可用 |
始终满足 |
|
1 |
10 00 0000 (80H) |
持卡人权限0 |
|
2 |
01 00 0000 (40H) |
持卡人权限1 |
|
3 |
00 00 0000 (00H) |
永远不满足 |
|
4 |
00 00 1000 (08H) |
发卡商权限0 |
|
5 |
00 00 0100 (04H) |
发卡商权限1 |
|
6 |
00 00 0010 (02H) |
发卡商权限2 |
|
7 |
00 00 0001 (01H) |
发卡商权限3 |
|
8 |
10 00 1000 (88H) |
持卡人权限0和发卡商权限0 |
|
9 |
01 00 1000 (48H) |
持卡人权限1和发卡商权限0 |
|
10 |
00 10 0000 (28H) |
共享权限0 |
|
11 |
00 01 0000 (10H) |
共享权限1 |
|
12 |
00 10 1000 (28H) |
共享权限0和发卡商权限0 |
|
13 |
00 10 0100 (24H) |
共享权限0和发卡商权限1 |
|
14 |
00 10 0010 (22H) |
共享权限0和发卡商权限2 |
|
15 |
不可用 |
永远不满足 |
总体上看DS的CPU卡COS主要是依据SIM卡的规范而设计的安全机制,而其中的文件管理和操作也符合SIM卡的标准,比如对于文件的访问除了一般的读写之外,还有对文件的禁用和启用,在文件被禁用后不能更改,根据文件建立时规定的禁用可读与否来决定文件禁用后是否可读。
DS卡只支持一种EF文件类型,那就是透明二进制文件。
DS卡还有一种据称申请专利的认证技术,采用DES的算法来认证卡片上存储的数据,借以判断终端明确知道的某个地址的卡片内容对不对,这种认证方式类似于7816规定的内部认证,但是机制上又有自己的定义,所以也比较有意思。在目前广泛应用的CPU卡中几乎没有人再使用这种机制了。
这种认证机制可以核对更改后的数据是否正确、实现文件内容的密文读出、实现带有随机数的内部认证。实际上终端应该能够确切地知道卡片中某个位置存储的4个字节数据,在认证中并不是采用简单的密码比较方式,而是采用随机数和认证响应的方式进行计算和比较。
认证是依靠当前的EF文件来进行的,在认证进行之前,对于文件的读权限必须满足。通过两步来完成认证,第一步是生成临时密钥,第二步是使用第一步得到的临时密钥计算认证数据。首先终端发送8字节的随机数据给卡片,卡片把前两字节用当前文件的标识给替换掉,使用该数据通过认证密钥Kc进行DES解密运算来得到临时密钥。如果重新进行了正确的文件选择,那么原来计算得到的临时密钥就会被破坏。然后利用临时密钥对文件中某个地址的4个字节数据及其对应的两个字节的地址进行DES解密运算,出于冗余和8字节DES计算的需要,两个字节的数据被重复,即8字节的数据结构为:数据(4字节)+地址(2字节)+地址(2字节)。经过计算得到的8字节认证数据传送给终端,终端可以比对计算的结果是否正确,来确定认证是否成功。
智能卡安全机制比较系列(二)DS SmartCard的更多相关文章
- 智能卡安全机制比较系列(一)CardOS
自从智能卡开始进入人们的日常生活之后,大家对于智能卡的安全性普遍看好,但是不同公司的智能卡在安全机制的实现方面也存在很多的差异.对于智能卡应用开发和智能卡COS设计人员来说,如果能够更多地了解不同公司 ...
- 智能卡安全机制比较系列(六) TimeCOS
TimeCOS是握奇公司推出的智能卡操作系统,也可以说是国内早期自己开发的为数不多的几款COS之一.当然随着后来国内公司对于CPU卡开发的投入,其他公司的COS产品也纷纷推出. 其实从握奇的TimeC ...
- 智能卡安全机制比较系列(五) StarCOS
StarCOS是捷德公司的推出的智能卡COS,和前面说过的几种COS不同的是,国内的用户对于StartCOS可以说非常熟悉,而且因为握奇.明华.天喻等公司的安全机制都基本上是脱胎于StarCOS,所以 ...
- 智能卡安全机制比较系列(三) MPCOS
MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...
- 智能卡安全机制比较系列(四) PayFlex
PayFlex是斯伦贝谢公司(经过若干整合现在是金雅拓的一部分)在上世纪90年代推出的一款电子钱包支付COS,从功能上看可以说PayFlex是EMV96以及PBOC电子钱包规范的雏形. PayFlex ...
- [知识库分享系列] 二、.NET(ASP.NET)
最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...
- swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?
date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...
- WCF编程系列(二)了解WCF
WCF编程系列(二)了解WCF 面向服务 服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用 ...
随机推荐
- Centos6 httpd与tomcat整合发布
有时候需要在Web入口地址中隐藏非80端口,而最常见的方案是整合httpd和tomcat ,下面是通过mod_jk实现httpd和tomcat整合的详细流程,希望对大家有所帮助. OS: CentOS ...
- java中文乱码解决之道(六)—–javaWeb中的编码解码
在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...
- MySQL的数据库引擎的类型
你能用的数据库引擎取决于mysql在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型INNO ...
- zookeeper[6] zookeeper FAQ(转)
转自:http://www.cnblogs.com/zhengran/p/4601855.html 1. 如何处理CONNECTION_LOSS?在Zookeeper中,服务器和客户端之间维持一个长连 ...
- (转)Linux下Apache 限速模块安装笔记
参考文章:http://www.pcmag.com.cn/solution/net/story/200704/51003104.shtml 限线程:http://dominia.org/djao/li ...
- nexus5 root教程
转载自: http://www.inexus.co/article-1280-1.html http://www.pc6.com/edu/71016.html https://download.cha ...
- ZigBee心电传输(三)
这段时间因为另外一个项目需要,我搞Zed板去了.现在接着上一步的工作吧,继续把心电做完.这里想要测试一下把心电波形数据传输出来,然后用协调器接收,并从串口显示出来.之后再用ZigBee转蓝牙,从而可以 ...
- Linux菜鸟学习笔记--Linux系统结构
什么是Linux? Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.严格来讲,Linux这个词本身只表示Linux内核,但实际上人 ...
- Use GraceNote SDK in iOS(一)通过序列化GDO查询专辑封面
于Use MusicBrainz in iOS之后,因为MusicBrainz找出专辑封面,它只能转移到其他网站提供的音乐信息搜索服务,领导给出GraceNote.(有压力.. .) 需求类似:通过一 ...
- using namespace cocos2d;
忘记在头文件添加using namespace cocos2d; 导致一直出现问题,定义的精灵却一直报错. error C2143: 语法错误 : 缺少“;”(在“*”的前面)