智能卡安全机制比较系列(四) PayFlex
PayFlex是斯伦贝谢公司(经过若干整合现在是金雅拓的一部分)在上世纪90年代推出的一款电子钱包支付COS,从功能上看可以说PayFlex是EMV96以及PBOC电子钱包规范的雏形。
PayFlex同时具备用户卡和SAM卡功能,支持电子钱包用户卡的消费、圈存等交易。
从文件结构上看,仅支持定长记录文件和循环记录文件两种格式。PIN和密钥都是存储在定长记录文件中,PIN也就是所谓的持卡人验证CHV,密钥分为验证密钥和计算密钥,CHV文件中只有一个记录来存储PIN,而密钥文件中最多可以存储16条密钥;交易记录和钱包文件是用循环记录文件来存储的。
从安全机制上看,也是采用访问控制条件加上当前安全状态的模式。但是相对比较简单,总共有5种访问控制状态:自由访问、PIN、密钥验证、PIN+密钥验证、拒绝访问。
数值 |
AC |
含义 |
0 |
ALW |
自由访问 |
1 |
CHV |
验证PIN |
2 |
AUT |
验证密钥 |
3 |
CHV+AUT |
验证PIN+验证密钥 |
4 |
RFU |
|
5 |
RFU |
|
6 |
RFU |
|
7 |
RFU |
|
8 |
RFU |
|
9 |
RFU |
|
10 |
RFU |
|
11 |
RFU |
|
12 |
RFU |
|
13 |
RFU |
|
14 |
RFU |
|
15 |
NEV |
拒绝访问 |
每个文件在创建的时候都有2个字节AC1和AC2用来指示不同APDU命令的访问控制权限,同时也有另外2个字节KN1和KN2来指出实现需要的访问控制权限将会使用的密钥。
访问权限的获得可以通过明文的方式验证PIN或者密钥,也可以通过密文的方式来验证。这里所谓的密文方式,实际上就是我们常说的外部认证,也就是先取8字节的随机数,然后再通过密钥加密,把加密后的数据按照某种规则截取6个字节,送到卡片中去比对。
因为PayFlex本身也具有SAM卡的功能,所以也可以用PayFlex卡计算分散密钥。此外PayFlex还支持内部认证,可以让主机或者终端来验证卡片的合法性。
电子钱包的交易流程和现在常用PBOC电子钱包交易非常类似,也是通过两个步骤,经由SAM卡来完成的,交易完成之后也生成类似于MAC和TAC的证书数据,用来验证交易的完整性。
和目前PBOC电子钱包不同的是PayFlex卡的密钥长度都是8字节,而不是16字节。
当时这款产品是基于TI的一款TMS373C012,只有4K的程序ROM,128字节的RAM和1K字节的EEPROM。在这样有限的资源里,开发出如此功能的产品,的确称得上是地位领先了。其中实现了20来个APDU,包括读/写/更新记录文件、外部认证、内部认证、验证/更改/解锁PIN(或密钥)、选择文件、创建文件、消费、圈存、分散密钥、取随机数、补丁程序的下载和激活等。
后来,在96年PBOC电子钱包规范发布之后,斯伦贝谢迅速推出了一款符合PBOC规范的QianFlex产品。
智能卡安全机制比较系列(四) PayFlex的更多相关文章
- 智能卡安全机制比较系列(一)CardOS
自从智能卡开始进入人们的日常生活之后,大家对于智能卡的安全性普遍看好,但是不同公司的智能卡在安全机制的实现方面也存在很多的差异.对于智能卡应用开发和智能卡COS设计人员来说,如果能够更多地了解不同公司 ...
- 智能卡安全机制比较系列(二)DS SmartCard
DS Smart Card是飞利浦公司自己开发的一款CPU卡产品,在早期芯片厂商开发自己的COS并进行推广很普遍,现在像英飞凌(前西门子半导体)以及恩智普(前飞利浦半导体)几乎很少推广自己的COS,大 ...
- 智能卡安全机制比较系列(六) TimeCOS
TimeCOS是握奇公司推出的智能卡操作系统,也可以说是国内早期自己开发的为数不多的几款COS之一.当然随着后来国内公司对于CPU卡开发的投入,其他公司的COS产品也纷纷推出. 其实从握奇的TimeC ...
- 智能卡安全机制比较系列(五) StarCOS
StarCOS是捷德公司的推出的智能卡COS,和前面说过的几种COS不同的是,国内的用户对于StartCOS可以说非常熟悉,而且因为握奇.明华.天喻等公司的安全机制都基本上是脱胎于StarCOS,所以 ...
- 智能卡安全机制比较系列(三) MPCOS
MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...
- sed修炼系列(四):sed中的疑难杂症
本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N" ...
- 分布式系列四: HTTP及HTTPS协议
分布式系列四: HTTP及HTTPS协议 非常全面的一篇HTTP的文章: 关于HTTP协议,一篇就够了 还有一个帮助理解HTTPS的文章: 也许,这样理解HTTPS更容易 本文的一些描述摘自这篇文章 ...
- Mina 系列(四)之KeepAliveFilter -- 心跳检测
Mina 系列(四)之KeepAliveFilter -- 心跳检测 摘要: 心跳协议,对基于CS模式的系统开发来说是一种比较常见与有效的连接检测方式,最近在用MINA框架,原本自己写了一个心跳协议实 ...
- struts2官方 中文教程 系列四:Action
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列四:Action 即 http://www.cnblogs.com/linghaoxinpian/p/6905521.html 下载 ...
随机推荐
- Linux系统编程(36)—— socket编程之UDP详解
UDP 是User DatagramProtocol的简称,中文名是用户数据报协议.UDP协议不面向连接,也不保证传输的可靠性,例如: 1.发送端的UDP协议层只管把应用层传来的数据封装成段交给IP协 ...
- 【转】Java 多线程(四) 多线程访问成员变量与局部变量
原文网址:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913659.html 先看一个程序例子: public class HelloThrea ...
- android调用系统自带的的浏览器搜索关键字
//调用系统的浏览器搜索详情 public void jumpBrowser(String value) { /* 取得网页搜寻的intent */ Intent search = new Inten ...
- flume-agent实例
flume 多种适配,多样化的数据收集 核心概念 event:一条消息 client:访问者 agent: 重要组件Sour ...
- iOS UIView指定显示摸一个角弧形显示
关键代码: UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect: view.bounds byRoundingCorner ...
- zepto笔记
$.contains: 判断节点是否存在的很好方式[另一个提供类似功能的函数是has] $.grep: 过滤数组 $.type: 获取变量类型 $.closest: 返回最先匹配到的祖先元素 $.ma ...
- Highcharts教程
Highcharts特性: 兼容性 - 支持所有主流浏览器和移动平台(android.iOS等). 多设备 - 支持多种设备,如手持设备 iPhone/iPad.平板等 免费使用 - 开源免费 轻量 ...
- AvalonEdit 对于选定的文本添加前缀和后缀
1: /// <summary> 2: /// 两边追加标志 3: /// </summary> 4: /// <param name="syntax" ...
- Javascript 精髓整理篇之二(函数篇)postby:http://zhutty.cnblogs.com
今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种 ...
- [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码
家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 ...