智能卡安全机制比较系列(五) StarCOS
StarCOS是捷德公司的推出的智能卡COS,和前面说过的几种COS不同的是,国内的用户对于StartCOS可以说非常熟悉,而且因为握奇、明华、天喻等公司的安全机制都基本上是脱胎于StarCOS,所以经常会给大家造成一种错觉,好像智能卡的COS就该是这样的。其实完全不然,稍后会介绍握奇的TimeCOS,从TimeCOS V1.0中可以看出来,和StarCOS还是有很大差别的。
捷德中国为了满足国内PBOC的需求,在StarCOS的基础上推出了Star China,安全机制和StarCOS相同。
StarCOS的文件结构除了通常的二进制透明文件、线性定长记录文件、线性变长记录文件、循环记录文件之外,还多了一种名为compute的文件结构,从形式上看compute文件和循环记录文件类似,但是每条记录又有自己固定的结构定义。
StarCOS的MF和每个DF都有自己的初始安全状态,当卡片上电后首先默认选择MF,安全状态为MF的初始状态,当选择某个DF后,当前DF的安全状态就是该DF的初始状态。MF和DF的初始状态在文件建立的时候可以设定。
在整个卡片的操作过程中分别保存两个当前安全状态,一个是MF的,另一个是当前DF的。只有通过验证PIN或者外部认证、双向认证才能改变当前的安全状态。
总共有1到15种状态可以设定,用半字节来表示。
在MF下有建立EF、安装密钥、建立DF、注册DF的安全条件;在DF下有建立EF和安装密钥的安全条件;对于EF而言分别有读、写、锁定、解锁、增值、减值等操作的安全条件。
所谓的安全条件AC就是定义卡片应该处于什么样的安全状态下,才能满足相应的操作。安全条件为一个字节,具体定义为:
其中高两位b8b7定义比较模式,分别为等于、小于、大于等于、不等于;b6用来定义是否采用安全报文;b5用来表示和当前DF的安全状态比较还是和MF的安全状态比较;b4b3b2b1则表示比较时参考的安全状态。
简单地说如果卡片MF的安全状态是05,当前DF的安全状态是08,如果在当前DF下有一个EF的读AC=43、写AC=99,那么就可以对该EF进行读操作,但是不能写。
在密钥中有两个安全条件值ACV,其中第一个ACV用来指明这个密钥的使用条件、而第二个ACV的后四位数据用来指明正确认证密钥后将要转换的后续状态。同样每条密钥中还有一个用来指出更新密钥需要遵循的安全状态。
下图用来说明安全状态的转换
该图说明只有在MF下验证DES密钥之后,才能进入DF下进行PIN验证,并且将DF的安全状态改变为c。
StarCOS的安全机制是目前见到过的最灵活和最有效的安全机制,对于文件的不同操作可以非常方便地定义安全条件,即可以参考当前的DF值也可以参考MF下的值。
唯一的限制是在98年版的StarCOS S2.1中,仅支持二级文件目录,亦即在MF下只有一级DF,虽然稍显不足,但是也基本上可以满足大多数应用的需求。
智能卡安全机制比较系列(五) StarCOS的更多相关文章
- 智能卡安全机制比较系列(一)CardOS
自从智能卡开始进入人们的日常生活之后,大家对于智能卡的安全性普遍看好,但是不同公司的智能卡在安全机制的实现方面也存在很多的差异.对于智能卡应用开发和智能卡COS设计人员来说,如果能够更多地了解不同公司 ...
- 智能卡安全机制比较系列(六) TimeCOS
TimeCOS是握奇公司推出的智能卡操作系统,也可以说是国内早期自己开发的为数不多的几款COS之一.当然随着后来国内公司对于CPU卡开发的投入,其他公司的COS产品也纷纷推出. 其实从握奇的TimeC ...
- 智能卡安全机制比较系列(二)DS SmartCard
DS Smart Card是飞利浦公司自己开发的一款CPU卡产品,在早期芯片厂商开发自己的COS并进行推广很普遍,现在像英飞凌(前西门子半导体)以及恩智普(前飞利浦半导体)几乎很少推广自己的COS,大 ...
- 智能卡安全机制比较系列(三) MPCOS
MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...
- 智能卡安全机制比较系列(四) PayFlex
PayFlex是斯伦贝谢公司(经过若干整合现在是金雅拓的一部分)在上世纪90年代推出的一款电子钱包支付COS,从功能上看可以说PayFlex是EMV96以及PBOC电子钱包规范的雏形. PayFlex ...
- Netty4.x中文教程系列(五)编解码器Codec
Netty4.x中文教程系列(五)编解码器Codec 上一篇文章详细解释了ChannelHandler的相关构架设计,版本和设计逻辑变更等等. 这篇文章主要在于讲述Handler里面的Codec,也就 ...
- java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析
java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java ...
- [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】
概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列五》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
随机推荐
- 2015第28周六SVN和Git
svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目.但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题.也就是说对于尚未或暂无法提交到Subversion服务器的本地代码来 ...
- Vbox中Ubuntu的安装和共享文件夹设置
1. 选择版本 1.1 Ubuntu桌面版与服务器版的区别 桌面版与服务器版,只要发布版本号一致,这两者从核心来说也就是相同的,唯一的差别在于它们的预期用途.桌面版面向个人电脑使用者,可以进行文字处理 ...
- JS(五)
感觉JS里面还是有很多小技巧的,知道套路了,其实实现起来其实也还没有想象中的那么复杂.不过我觉得还是要把所学的知识融会贯通吧,不能学了JS就忘了前面的知识,结合起来才会威力无穷. 1.跑马灯:弹弹弹 ...
- java.lang.NoSuchFieldError: INSTANCE
java.lang.NoSuchFieldError: INSTANCE异常,可能是包重复了. 我遇到的情况是maven里引入了一个JAR,而我又在lib里面引入了这个jar,并且版本还不相同,就出了 ...
- AvalonEdit 对于选定的文本添加前缀和后缀
1: /// <summary> 2: /// 两边追加标志 3: /// </summary> 4: /// <param name="syntax" ...
- google在线測试练习题1
Problem You receive a credit C at a local store and would like to buy two items. You first walk thro ...
- Python序列的方法(转)
在快速教程中,我们了解了最基本的序列(sequence).回忆一下,序列包含有定值表(tuple)和表(list).此外,字符串(string)是一种特殊的定值表.表的元素可以更改,定值表一旦建立,其 ...
- Sybase常用函数
==================================常用函数===========================================字符串函数1)ISNULL(EXP1, ...
- firefox 不能显示 glyphicons 字体
折腾了很久才发现是firefox 不能跨域下载相应的字体文件,将bootstrap相应的css文件和字体文件copy到调用的项目里,问题才得以解决.
- 2.RxJava详解网址http
RxJava 到底是什么 RxJava 好在哪 API 介绍和原理简析 1) Scheduler 的 API (二) 2) Scheduler 的原理(二) 3) 延伸:doOnSubscribe() ...