TimeCOS是握奇公司推出的智能卡操作系统,也可以说是国内早期自己开发的为数不多的几款COS之一。当然随着后来国内公司对于CPU卡开发的投入,其他公司的COS产品也纷纷推出。

其实从握奇的TimeCOS来看,早期的1.0版本和目前流行的TimeCOS版本之间在安全机制方面存在很大的差别。TimeCOS1.0采用的是按位比较的状态机机制,也就是说TimeCOS1.0在内存中维护一个安全状态字节,这个字节的每个位分别对应一种安全状态,在初始情况下这个状态字节为00,只有通过外部认证或者是通过PIN的验证之后这个字节的某个位才能从0转变为1。而某个文件或者应用的安全状态一般都需要这个安全状态字节的某些位必须被置1之后才能被访问或者操作。这种模式简单易行,基本可以满足各种基本的应用需求。

但是在随后的TimeCOS版本中,握奇借鉴了StarCOS的安全机制模式,也采用前后顺序状态,以及状态数值之间的大小比较来确定安全状态是否被满足。

在握奇各种细分的COS版本中,基本上都采用了这种类StarCOS的安全机制,其中包括:PBOC产品、PKI产品、PSAM产品等。

具体的实施方法是:卡片的内存中同样会有一个安全状态字节,不过这个字节的变化不是按位改变,而是由认证密钥(或者PIN)中预设的“后续状态”来直接指定,对于卡片中存储的任何一个密钥(含PIN)都有一个所谓的“后续状态”。

这个字节被划分为前后两个半字节,分别用来指出MF和当前DF的状态。

卡片各种操作的权限的获得就是通过这个状态的转变来实现,该状态的取值范围是0到15,操作的权限用一个字节表示,分为左右两个半字节,其中左半字节和右半字节的取值均为0-15(0x0-0xF),可以表示为0xXY,如果当前DF的安全状态值V满足Y<=V<=X的条件,那么就获得了操作权限。

比如一个文件的读权限是0x52,而写权限是0x84;密钥1的后续状态是0x03,而密钥2的后续状态是0x05。那么认证密钥1之后可以文件满足读权限,但是不可写;认证密钥2后可以满足文件的写权限,但是不可读。

如果要把某个权限设定为可以自由操作,无需认证密钥,那么可以设为0xF0,这种情况下无论安全状态字节的值V是什么都满足0<=V<=15的条件。当然如果要把某个权限设定为禁止,即无论认证多少密钥都不能满足权限,那么可以设定为0x1F,在这种情况下无论S为任何值V都不能满足小于等于1并且大于等于15的条件。

特别地如果操作权限为0x0Y(即0xXY中的X=0),则表示需要比较MF下的安全状态大于Y。

如果仔细分析了StarCOS的安全机制,可以发现握奇采用的机制是在StarCOS的基础上进行的一个改进版本,因为StarCOS可以定义比较模式,也就是StarCOS可以更灵活地定义比较安全状态究竟是采用大于、小于还是等于或者不等于的模式。

国内另外一些厂商推出的COS多数借鉴握奇的TimeCOS安全机制,比如明华的所谓SmartCOS,以及复旦的FMCOS。

而航天金卡的PowerCOS则是完全照搬了StarCOS的安全机制。

国内的一些应用开发商和某些行业标准制定者,在进行系统开发和行业标准规划的过程中根本没有去认真阅读ISO7816的相关标准,仅把某家厂商的用户手册作为唯一的参考,甚至错误地认为全世界所有的COS都应该是这样的,实在让人无语!

智能卡安全机制比较系列(六) TimeCOS的更多相关文章

  1. 智能卡安全机制比较系列(一)CardOS

    自从智能卡开始进入人们的日常生活之后,大家对于智能卡的安全性普遍看好,但是不同公司的智能卡在安全机制的实现方面也存在很多的差异.对于智能卡应用开发和智能卡COS设计人员来说,如果能够更多地了解不同公司 ...

  2. 智能卡安全机制比较系列(五) StarCOS

    StarCOS是捷德公司的推出的智能卡COS,和前面说过的几种COS不同的是,国内的用户对于StartCOS可以说非常熟悉,而且因为握奇.明华.天喻等公司的安全机制都基本上是脱胎于StarCOS,所以 ...

  3. 智能卡安全机制比较系列(二)DS SmartCard

    DS Smart Card是飞利浦公司自己开发的一款CPU卡产品,在早期芯片厂商开发自己的COS并进行推广很普遍,现在像英飞凌(前西门子半导体)以及恩智普(前飞利浦半导体)几乎很少推广自己的COS,大 ...

  4. 智能卡安全机制比较系列(三) MPCOS

    MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...

  5. 智能卡安全机制比较系列(四) PayFlex

    PayFlex是斯伦贝谢公司(经过若干整合现在是金雅拓的一部分)在上世纪90年代推出的一款电子钱包支付COS,从功能上看可以说PayFlex是EMV96以及PBOC电子钱包规范的雏形. PayFlex ...

  6. CSS 魔法系列:纯 CSS 绘制各种图形《系列六》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  7. WCF编程系列(六)以编程方式配置终结点

    WCF编程系列(六)以编程方式配置终结点   示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来 ...

  8. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...

  9. R语言数据分析系列六

    R语言数据分析系列六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步.探索性数据分析. 统计量,即统计学里面关注的数据集 ...

随机推荐

  1. 关于apriori算法的一个简单的例子

    apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表 ...

  2. 爱斯达M2C服装定制系统介绍—在线播放—优酷网,视频高清在线观看

    爱斯达M2C服装定制系统介绍-在线播放-优酷网,视频高清在线观看 视频: 爱斯达M2C服装定制系统介绍

  3. 【C#正则基础】正则表达式

    1. 代表任意多个字符:(.*?)2. 代表网页里的<body>*</body>任意的标签内容,替换以后网页源码就只剩纯文本:<[^>]*>3. 代表网页中的 ...

  4. 《Programming Massively Parallel Processors》Chapter5 习题解答

    自己做的部分习题解答,因为时间关系,有些马虎,也不全面,欢迎探讨或指出错误 5.1 Consider the matrixaddition in Exercise 3.1. Can one use s ...

  5. 飞行模式下不让打开FM

     android 判断手机当前是否是飞行模式,在AirplaneModeEnabler中 提供了isAirplaneModeOn方法来判断当前是否是Airplane mode:public stati ...

  6. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  7. Python 线程池的原理和实现及subprocess模块

    最近由于项目需要一个与linux shell交互的多线程程序,需要用python实现,之前从没接触过python,这次匆匆忙忙的使用python,发现python确实语法非常简单,功能非常强大,因为自 ...

  8. jquery之图片上传

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. (转)SQL Server 2005附加2008的数据库

    1. 生成for 2005版本的数据库脚本  2008 的manger studio  -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例  -- 右键要转到2005 ...

  10. 读取oracle页面或者进程卡住不动(死锁)

    oracle最坑爹的地方:你insert   update  delete之后  或者kill死锁的时候记得一定要提交事务不然就是死锁卡在那里了 记住  kill死锁也是要提交事务的 select * ...