智能卡安全机制比较系列(三) MPCOS
MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令。MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF。
MPCOS的文件访问控制是由密码来实现的,该密码存储在一个特殊的密码文件EFsc中,每个DF下只有一个EFsc,每个EFsc可以存储8个密码,对应的编号分别为0-7。对于EF和DF分别对应不同的访问控制操作,比如创建文件,读写操作等。这些访问控制操作就需要通过访问控制条件来实现。对于DF和EF而言,分别有两个字节的寄存器来表示在进行创建、读写等文件操作之前需要验证的密码编号,对于某一种文件操作最多可以指明需要验证两个密码。另外这个寄存器也指出了在进行安全报文操作时,进行数据加密和MAC计算需要使用的密钥编号。由此可以看出,MPCOS的安全控制依靠的是密码比对方法,而数据传输的安全保护(MAC以及数据密文的计算)使用另外一个密钥文件EFkey中存储的密钥通过DES运算来完成。
MPCOS是在金普斯原来的PCOS基础上扩展了ISO7816的文件结构,从而形成的多应用智能卡操作系统。所以MPCOS中保留了原来PCOS在支付应用方面的特色,做到了面向PCOS的向下兼容。
金普斯在结合支付应用和ISO7816文件操作的过程中,设计了两种操作模式:支付模式和管理模式。每种模式都有一个专有命令来启动一个会话过程,而这个会话过程只有在启动了另一种模式或者是卡片复位后才能被终止。(其实这种机制和后来的EMV96,以及PBOC电子钱包的状态机模式很像)
MPCOS对于支付和文件管理分别定义了不同的安全机制,在支付应用中可以加密敏感数据、生成交易证书、设定交易计数器等;而对于文件管理操作,可以通过MAC验证来确保数据的完整性、监控追踪某些敏感命令的执行等。不过MPCOS的MAC是3个字节的,这点和目前流行的4字节MAC稍有不同,但是计算方式是类似的。
针对文件的访问控制MPCOS是在文件创建的时候定义访问控制条件的,但是在文件被创建后,当满足安全控制条件的情况下,可以通过Lock和Localize两个命名来改变文件的访问控制属性,其中Lock是用来锁定文件的,文件被锁定后,拒绝任何访问;而Localize则是把文件访问控制所需参考主控文件MF下的密码或者密钥,改成参考当前DF下的密码或者密钥。
在MPCOS的支付交易处理过程中,同样引入了终端编号以及终端交易序号这样的参数,通过这些参数的参与来计算交易验证码。
智能卡安全机制比较系列(三) MPCOS的更多相关文章
- 智能卡安全机制比较系列(一)CardOS
自从智能卡开始进入人们的日常生活之后,大家对于智能卡的安全性普遍看好,但是不同公司的智能卡在安全机制的实现方面也存在很多的差异.对于智能卡应用开发和智能卡COS设计人员来说,如果能够更多地了解不同公司 ...
- 智能卡安全机制比较系列(二)DS SmartCard
DS Smart Card是飞利浦公司自己开发的一款CPU卡产品,在早期芯片厂商开发自己的COS并进行推广很普遍,现在像英飞凌(前西门子半导体)以及恩智普(前飞利浦半导体)几乎很少推广自己的COS,大 ...
- 智能卡安全机制比较系列(六) TimeCOS
TimeCOS是握奇公司推出的智能卡操作系统,也可以说是国内早期自己开发的为数不多的几款COS之一.当然随着后来国内公司对于CPU卡开发的投入,其他公司的COS产品也纷纷推出. 其实从握奇的TimeC ...
- 智能卡安全机制比较系列(五) StarCOS
StarCOS是捷德公司的推出的智能卡COS,和前面说过的几种COS不同的是,国内的用户对于StartCOS可以说非常熟悉,而且因为握奇.明华.天喻等公司的安全机制都基本上是脱胎于StarCOS,所以 ...
- 智能卡安全机制比较系列(四) PayFlex
PayFlex是斯伦贝谢公司(经过若干整合现在是金雅拓的一部分)在上世纪90年代推出的一款电子钱包支付COS,从功能上看可以说PayFlex是EMV96以及PBOC电子钱包规范的雏形. PayFlex ...
- 定时组件quartz系列<三>quartz调度机制调研及源码分析
quartz2.2.1集群调度机制调研及源码分析引言quartz集群架构调度器实例化调度过程触发器的获取触发trigger:Job执行过程:总结:附: 引言 quratz是目前最为成熟,使用最广泛的j ...
- WCF编程系列(三)地址与绑定
WCF编程系列(三)地址与绑定 地址 地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- JVM系列三:JVM参数设置
JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...
随机推荐
- Qt入门(1)——初识Qt
Qt是一个跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta ...
- cf435C Cardiogram
C. Cardiogram time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- C++中关于函数的引用
这一块知识最常见的疑问就是: #include <iostream> #include <cstring> using namespace std; int a[50]; in ...
- java中 SSL认证和keystore使用
java中 SSL认证和keystore使用 2013-10-12 11:08 10488人阅读 评论(0) 收藏 举报 目录(?)[+] 好久没用过SSL认证了,东西久不用,就有点生疏. ...
- Weka算法Clusterers-DBSCAN源代码分析
假设说世界上仅仅能存在一种基于密度的聚类算法的话.那么它必须是DBSCAN(Density-based spatial clustering of applications with noise).D ...
- 挂载(mount)深入理解
首先引用一句 wiki 上的定义来开篇: Mounting takes place before a computer can use any kind of storage device (such ...
- GPG error [...] NO_PUBKEY [...]
今天在Linux下遇到这个问题,发现很多资料都是英文的,为了方便出现同样错误的有英语阅读困难的人,整理解决方案如下: sudo apt-key adv --keyserver keyserver.ub ...
- oracle之时间格式的应用
${,""," and rs.count_date >= '"+start_date+"'||' 00:00:00'")} ${,&q ...
- Dialog( 对话框) 组件
一. 加载方式//class 加载方式<div class="easyui-dialog" title="My Dialog"style="wi ...
- C# List 泛型用法
List 类是 ArrayList 类的泛型等效类,某些情况下,用它比用数组和 ArrayList 都方便. 我们假设有一组数据,其中每一项数据都是一个结构. public struct Item{ ...