java卡与native卡的区别
JavaCard |
Native |
|
功能特性 |
||
开发语言 |
l 纯面向对象的Java语言的子集。 Java语言先进灵活,开发调试速度快,实现灵活。 l Java没有指针,并且有内部安全机制可以有效的避免越界访问造成的程序的错误和崩溃。 l 所有的变量在Java中创建时,都会被自动进行初始化。 |
l 汇编和标准C,面向过程的语言。 l 汇编语言作为机器语言,比较晦涩,开发速度慢,使现有局限,但是运行速度快,效率高。 l C语言有指针,可以灵活的实现各种内存操作,但容易因为越界访问造成错误和崩溃。 l C中的变量需要手工初始化,容易因为忽略造成错误。 |
体系构架 |
分为两层结构。 l 底层为按照JavaCard规范实现的JavaCard平台,向上提供规范定义的接口(API),通常支持JavaCard API和GP API。 l 上层为按照应用需求开发的Applet,相当于Native卡片上的ADF。可以根据不同类型的应用,开发多个Applet。这些Applet相互独立,通过AID来选择。 |
统一通过卡片操作系统(COS)来实现所有的功能。 l COS内部也按照功能的不同,分为多个层次,包括应用层具体交易APDU的实现,通讯协议层的实现,以及和芯片的具体交互等等。 l 通常通过创建不同的ADF文件的方式,来区分不同的应用。 |
应用(ADF)选择 |
l JavaCard规范定义,只支持通过AID选择应用(ADF)。 l 在应用内部,可以通过程序实现,用AID或者DFID选择ADF。 |
l 可以通过AID或者DFID选择应用(ADF)。 |
个人化流程 |
JavaCard规范推荐统一的通用个人化流程(CPS),在创建安全通道后,通过统一的Store Data命令完成卡片的个人化。 |
不同厂家定义完全不同的个人化流程,采用完全不同的个人化指令,纷繁复杂,不便于掌握,也不便于统一。 |
卡片锁定 |
卡片锁定后,再向卡片发送指令,由卡片上的JavaCard平台按照规范定义统一处理,不受具体应用(Applet)的控制。 |
卡片锁定后,在向卡片发送指令,仍然由卡片操作系统(COS)处理,应用指令通过程序内部予以屏蔽。 |
RSA密钥长度支持 |
按照JavaCardAPI接口V2.2.1,支持512,736,768,896,1024,1280,1536,1984,2048位长度的密钥。 |
可以支持芯片所能支持的按8字节或者4字节长度递增的密钥长度。 |
协作开发 |
l 可以开发一种特殊的Applet,作为可以被其他应用Applet调用的通用的功能模块(Library),以便于统一提供一些功能的实现。 l 可以通过Shareable Interface安全的调用其他Applet授权可以访问的方法。 |
源代码级别上的协作开发,通过代码的重用,实现功能上的协作。 |
安全性 |
||
规范定义 |
l JavaCard规范,目前普遍支持2.2.1版本。 l GP规范,目前普遍支持2.1.1版本。 l 安全性由这些规范定义和保证,并经过SUN的权威认证。 |
没有统一的国际性规范。 安全性由各卡片COS生产厂家,通过管理和测试进行保证。 |
安全控制机制 |
多种安全机制的参与,包括Applet之间的防火墙,安全域和安全通道的控制。 |
主要通过状态机来实现。特殊指令使状态机跳转,访问文件时判断状态机是否满足条件。 |
应用数据独立性 |
不同应用之间的数据直接访问是严格禁止的,由JavaCard平台实现的防火墙实现物理隔离。 |
将不同应用的数据组织为不同的ADF文件,靠的是卡片存储空间上的边界来区分。 |
数据访问 |
存储在RAM上的缓存数据,可以在应用失去选择,或者卡片Reset之后自动清除,无法再次访问,确保临时数据不会泄密。 |
存储在RAM上的缓存数据,在卡片Reset之后自动清除,无法再次访问,确保临时数据不会泄密。 |
数据存储 |
数据存储分为文件和内部数据对象两种方式。 l 对于像密钥一类的敏感数据,采用JavaCard规范定义的内部数据对象存储,该对象由JavaCard平台实现,对这些敏感数据进行特殊保护。 l 其他的普通存储数据,以文件形式组织,便于访问和管理。 |
数据统一按照文件的形式组织和存储。 l 不论是密钥还是数据,不论是敏感数据还是普通数据,都存放在文件中。 l 对密钥等敏感数据可能采取加密存储的方式,或者存放在特殊访问权限的文件中。 |
功能的修改和增/删 |
||
修改APDU指令 |
l 对相应的Applet源代码进行单独的修改,不影响其他应用的实现和稳定性,不影响底层的JavaCard平台的实现和稳定性。 l 只需要对修改的Applet进行测试和认证。 |
l 对卡片操作系统(COS)进行修改,可能会影响其他应用的指令的实现和稳定性。 l 需要重新进行整体的测试和认证。 |
添加全新的指令 |
l 对相应的Applet源代码进行单独的修改,不影响其他应用的实现和稳定性,不影响底层的JavaCard平台的实现和稳定性。 l 只需要对修改的Applet进行测试和认证。 |
l 对卡片操作系统(COS)进行修改,可能会影响其他应用的指令的实现和稳定性。 l 需要重新进行整体的测试和认证。 |
不同应用下,相同的指令支持不同功能 |
l 分别对不同应用对应的Applet进行单独修改,互不影响,也不会造成冲突。 l 实现简单,安全。 |
l 对卡片操作系统(COS)进行修改,因为对相同的指令要有不同的解释,所以可能会有冲突。 l 需要通过转义表的方式,判断当前在哪一个应用对应的ADF文件下,来进行何种解释。 l 实现起来比较复杂,有一定风险。 |
添加全新的应用和交易 |
l 开发一个全新的Applet应用。不影响其他应用的实现和稳定性,不影响底层的JavaCard平台的实现和稳定性。 l 只需要对新增的Applet进行测试和认证。 |
l 对卡片操作系统(COS)进行修改,增加新的应用和交易。可能会影响其他应用的指令的实现和稳定性。 l 需要重新进行整体的测试和认证。 |
删除对某种应用的支持 |
直接将应用对应的Applet从卡片中删除即可。 |
对卡片操作系统(COS)进行修改,删除对应的应用的交易和指令。 |
应用和案例 |
||
主要应用范围 |
l EMV2000借贷记应用(VSDC, MChip, PBOC2.0 DC), l 积分, l ED/EP, l NFC等新业务应用领域, l 复合应用,例如金融应用+积分应用,NFC应用+电信应用, l 电信SIM卡。 |
l EMV 96,PBOC1.0 ED/EP, l PBOC2.0 DC, l 社保, l PSAM或者ESAM, l Key卡, l USBKey。 |
案例数量 |
数量逐步增加,突出表现在借贷记应用领域、新业务领域和复合应用领域 |
已经广泛的在应用在一些传统的领域,或者有一定历史的项目中。 |
容量和价格 |
||
EEPROM空间大小 |
通常为20K,36K,72K或者更大,便于对于多应用的支持 |
通常为8K,16K或者32K,36K,便于节约成本,大批量展开。 |
芯片平台 |
l 通常采用高端芯片平台, l 通常支持RSA和双界面, l 芯片频率高,处理速度快。 |
l 采用中高低端各种芯片平台, l 可选支持RSA和双界面。 |
卡片价格 |
l 由于卡片EEPROM空间通常比较大,芯片平台比较高端,所以价格比较高。 l 还存在JavaCard授权的问题,可能需要向SUN支付授权费用,这个费用包含在卡片费用中,由卡片生产厂家支付。 |
由于卡片EEPROM空间通常小一些,所以价格相对比较便宜。 |
java卡与native卡的区别的更多相关文章
- IC卡、M1卡、CPU卡、SAM卡、PSAM卡的联系与区别
一. 技术方面(非接触式IC卡) 1. 逻辑加密卡又叫存储卡,卡内的集成电路具有加密逻辑和EEPROM(电可擦除可编程只读存储器). 2. CPU卡又叫智能卡,卡内的集成电路包括中央处理器(CPU ...
- 图文:TF卡和SD卡的区别及什么是TF卡?什么是SD卡
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...
- 非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同
非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同 1.非接触式IC卡的国际规范ISO/IEC14443的由来? 在非接触式IC卡的发展过程中,这些问题逐渐被解决并形 ...
- TF卡和SD卡的区别
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...
- [转帖]UID卡、CUID卡、FUID卡、UFUID卡的区别及写入方式
UID卡.CUID卡.FUID卡.UFUID卡的区别及写入方式 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...
- 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别
1.条码卡:该卡卡面上有一串条码,通过扫描枪或者相应的条码读卡器读出该条码卡的卡号.根据条码的不同又分为39码等其它码.条码卡仅仅是一个编号,不存蓄其它内容.特点:价格便宜类似磁卡. 2.磁条卡:类似 ...
- IC卡和RFID卡的区别(网上说的都不准确)
其实IC卡是卡类型的称呼,IC卡和RFID卡不应该在一起对比的,和IC卡在一起对比的应该是ID卡. RFID卡是其实是对卡技术类型称呼. IC为卡类型称呼(Integrated Circuit Car ...
- java中extends与implements的区别
学了java很久了,久不用之后给同学解决一个java问题的时候,就卡在这个标题上了. 下面是java中extends与implements的区别: 1. 在类的声明中,通过关键字extends来创建一 ...
- IC卡,ID卡,M1卡,射频卡
一般把可读可写,频率是13.56MHz的射频卡称为IC卡,IC卡可以写入数据, 只能读,频率是125KHz的射频卡称为ID卡, M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS5 ...
随机推荐
- std::cout彩色输出
Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...
- 创建parameter id
Custom Parameter-id Creation By Abhijit Daptary, Capgemini India Step1: Creation of parameter ID. P ...
- 新手浅谈Task异步编程和Thread多线程编程
初学Task的时候上网搜索,看到很多文章的标题都是task取代thread等等相关,我也一直以为task和thread是一类,其实task是.net4.0提出的异步编程,在之前.net1.0有dele ...
- .NET中的字符串你了解多少?
字符串的特性 1.不可变性 由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本).之所以发生改变只是因为指向了一块新的地址. ps: ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(七)-- 结构化配置
本篇将记录.Net Core里颇有特色的结构化配置的使用方法. 相比较之前通过Web.Config或者App.Config配置文件里使用xml节点定义配置内容的方式,.Net Core在配置系统上发生 ...
- 显示和隐藏Mac隐藏文件的终端命令
打开终端,输入以下命令: 显示mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏mac隐藏文件的命令 ...
- C#winform设置DateTimePicker的时间格式
在对DateTimePicker进行时间格式设置时候,要先对属性Format设置为"Custom"自定义格式,然后再CustomFormat里面进行格式设置 比如"yyy ...
- cmd中无法运行svn命令
Svn 不是内部或外部命令,也不是可运行的程序 解决方法: 增加“svn安装目录/bin”,例如:C:\Program Files\TortoiseSVN\bin
- HttpClient Post Form data and get Response String
DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost("http:/ ...
- phpMyAdmin提示“Access denied for user 'root'@'localhost' (using password: NO)”的解决办法
一.错误内容 在用thinkPHP登陆phpMyAdmin时遇到以下错误 #1045 - Access denied for user 'root'@'localhost' (using passwo ...