智能卡安全机制比较系列(二)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 面向服务 服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用 ...
随机推荐
- C# 同步/并发队列ConcurrentQueue (表示线程安全的先进先出 (FIFO) 集合)
http://msdn.microsoft.com/zh-cn/library/dd267265(v=vs.110).aspx static void Main(string[] args) { // ...
- fzu1759:数论高次幂降幂
题目大意: 求 a^b mod c的值..但是b会非常大(10^1000000) 所以需要用到一个数论公式: A^x = A^(x % Phi(C) + Phi(C)) (mod C) 证明见ac大神 ...
- Maven Installation
OS:Ubuntu 14.04 Extract the distribution archive, i.e. apache-maven-3.2.2-bin.tar.gz to the director ...
- 公告:本博客搬迁到:http://www.courtiercai.com/
公告: 您好,本人意见本博客搬迁到:http://www.courtiercai.com/.
- Java学习笔记(1)——基本数据类型
一.进制转换 10^n被称为权 10称为基数 计算机中正数和负数的关系是取反加一, 如: ~3+1=-3 补码边界运算有溢出风险 32位二进制补码最多表示2^32个数, -2G~2G 1,计算机 ...
- Truncate Table 用法
TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作. 语法 TRUNCATE TABLE name 参数 name 是要截断的表的名称或要删除其全部行的表的名称. 注释 TRUNC ...
- HDU2841 Visible Trees (容斥原理)
主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意: 一个人在(0,0)点,然后前面有一个m*n的格子 ,每一个格子的节点上有一棵树.问这个人 ...
- R语言编程艺术# 矩阵(matrix)和数组(array)
矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...
- Linux命令之文件与用户权限
1.文件管理 在Linux里,任何软件和I/O设备都被视为文件.Linux中的文件名最大支持256个字符,分别可以用A-Z.a-z.0-9等字符来命名. 和Windows不同,Linux中文件是区分大 ...
- Cordova自定义插件
项目原因需要自定义Cordova插件,下面把实现过程记录以便将来查阅.工程为Eclipse下的Android工程,该工程已经引入Cordova.Cordova版本4.0.2.1.定义插件类OpenAp ...