JavaCard

Native

功能特性

开发语言

l  纯面向对象的Java语言的子集。

Java语言先进灵活,开发调试速度快,实现灵活。

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卡的区别的更多相关文章

  1. IC卡、M1卡、CPU卡、SAM卡、PSAM卡的联系与区别

    一. 技术方面(非接触式IC卡)  1. 逻辑加密卡又叫存储卡,卡内的集成电路具有加密逻辑和EEPROM(电可擦除可编程只读存储器).  2. CPU卡又叫智能卡,卡内的集成电路包括中央处理器(CPU ...

  2. 图文:TF卡和SD卡的区别及什么是TF卡?什么是SD卡

    小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...

  3. 非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同

    非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同 1.非接触式IC卡的国际规范ISO/IEC14443的由来? 在非接触式IC卡的发展过程中,这些问题逐渐被解决并形 ...

  4. TF卡和SD卡的区别

    小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...

  5. [转帖]UID卡、CUID卡、FUID卡、UFUID卡的区别及写入方式

    UID卡.CUID卡.FUID卡.UFUID卡的区别及写入方式   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...

  6. 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别

    1.条码卡:该卡卡面上有一串条码,通过扫描枪或者相应的条码读卡器读出该条码卡的卡号.根据条码的不同又分为39码等其它码.条码卡仅仅是一个编号,不存蓄其它内容.特点:价格便宜类似磁卡. 2.磁条卡:类似 ...

  7. IC卡和RFID卡的区别(网上说的都不准确)

    其实IC卡是卡类型的称呼,IC卡和RFID卡不应该在一起对比的,和IC卡在一起对比的应该是ID卡. RFID卡是其实是对卡技术类型称呼. IC为卡类型称呼(Integrated Circuit Car ...

  8. java中extends与implements的区别

    学了java很久了,久不用之后给同学解决一个java问题的时候,就卡在这个标题上了. 下面是java中extends与implements的区别: 1. 在类的声明中,通过关键字extends来创建一 ...

  9. IC卡,ID卡,M1卡,射频卡

    一般把可读可写,频率是13.56MHz的射频卡称为IC卡,IC卡可以写入数据, 只能读,频率是125KHz的射频卡称为ID卡, M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS5 ...

随机推荐

  1. pig命令行快捷键

    删除 ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh ctrl + k 删除光标后面所有字符相当于VIM里d ...

  2. Save a bricked Samsung Note 3 and do extraction

    The case scenario was about bank robery and the suspect threw his Samsung Note 3 into the river. For ...

  3. grub丢失的修复

    使用安装光盘进入rescure模式,经过配置后进入一个bashbash# grubgrub> root (hd0,6)grub> setup (hd0)重启即可

  4. 搭建高性能计算环境(十)、应用软件的安装之Wien2k

    1,首先安装fftw .tar.gz cd fftw- ./configure --prefix=/opt/fftw- --enable-shared --enable-float --enable- ...

  5. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...

  6. DataGridView 控件用法(可能不是很全面,因为这是自己常常用到的一些小总结):

    一.DataGridView属性设置 1.我们单击选中行的时候,默认是选择一个单元格,不能选择一整行,我们只需设置DataGridView的属性SelectionMode为FullRowSelect ...

  7. win7 C# winForm编程 savefiledialog 不能弹出保存窗体

    public void ResMsg()        {            while (isRecMsg)            {                //准备一个数组 准备接收 ...

  8. C#关于值类型和引用类型的备忘

      值类型 引用类型 内存分配地点 分配在栈中 分配在堆中 效率 效率高,不需要地址转换 效率低,需要进行地址转换 内存回收 使用完后,立即回收 使用完后,不是立即回收,等待GC回收 赋值操作 进行复 ...

  9. silverlight 退出当前页面、跳转到主页面

    1.退出当前页面 private void imgExit_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (Message ...

  10. PHP伪造referer突破防盗链

    php伪造referer实例代码,主要用于一些突破防盗链. 可以从这个例子中发展出很多的应用.比如隐藏真实的URL地址……嘿嘿,具体的就自己分析去吧 这里新建一个文件file.php.后面的参数就是需 ...