当前位置:文档之家› Java智能卡平台及其优化技术展望

Java智能卡平台及其优化技术展望

Java智能卡平台及其优化技术展望
Java智能卡平台及其优化技术展望

Java智能卡平台及其优化技术展望

摘要 java智能卡的跨平台、多应用、高安全的特性已经使它成为未来智能卡的标准,但这些优点是以牺牲应用的执行性能为代价。本文分析了java卡的平台体系及其存在的性能问题,在总结分析已有的典型优化方法的基础上,提出了未来优化的一些可行的方向,为相关研究人员提供有用的参考。

关键词java智能卡;平台体系;内存管理模型;优化技术

中图分类号tp391 文献标识码a 文章编号1674-6708(201 0)28—0176—03

引言

智能卡(smartcard)在包括电信、银行、公交、医疗、身份证件、数字电视、安全认证等与普通消费者息息相关的领域均获得了广泛的应用。在未来移动支付、信用卡等更加普及、对个人信息安全有更高诉求的时代,智能卡仍将发挥不可替代的重要作用。

传统的native卡存在先天缺陷,概括为如下3点:

1)应用开发的难度大、周期长、成本高:native卡以汇编或c语言进行开发。缺乏通用开发平台,开发、调试困难,要求开发人员对硬件的底层细节熟悉;

2)不能很好的支持跨行业应用和一卡多用,而一卡多用是智能卡发展的趋势;

3)应用在卡发行时便已经固定下来,无法实现应用的更新或升级,无法满足客户个性化的需求,也使供应商在增值服务方面无法有所

智能卡应用程序的开发

Windows系统提供了大量的API来方便的进行智能卡应用程序的开发,通过它们我们可以直接控制智能卡读卡器对智能卡进行操作,也可以与智能卡建立直接的虚拟连接而不用考虑智能卡读卡器。 智能卡应用程序开发的一般流程是: 1)建立连接(使用函数SCardEstablishContext和SCardConnect,SCardReconnect); 2)开始事务处理(使用函数SCardBeginTransaction); 3)进行事务处理(使用函数SCardTransmit); 4)结束事务处理(使用函数SCardEndTransaction); 5)断开连接(使用函数SCardDisconnect和SCardReleaseContext)。 下面就具体看看各个函数的功能和用法吧! 1)SCardEstablishContext函数用于建立进行设备数据库操作的资源管理器上下文: LONG WINAPI SCardEstablishContext( __in DWORD dwScope, //资源管理器上下文的范围,取值如下: //SCARD_SCOPE_USER---数据库操作在用户域中 //SCARD_SCOPE_SYSTEM---数据库操作在系统域中,调用的应用程序 //必须具有对任何数据库操作的权限 __in LPCVOID pvReserved1, //保留值,必须设为NULL __in LPCVOID pvReserved2, //保留值,必须设为NULL __out LPSCARDCONTEXT phContext //建立的资源管理器上下文句柄 ); 返回值:成功时返回SCARD_S_SUCCESS;失败时返回智能卡特定错误码。 函数返回的资源管理器上下文句柄可以被对设备数据库进行查询和管理的函数使用。如果一个客户试图在远程会话中实现智能卡操作,例如运行在终端服务器上的客户会话,而且客户会话所在的操作系统不支持智能卡重定向,则函数SCardEstablishContext返回ERROR_BROKEN_PIPE。 下面的代码是建立资源管理器上下文的例子: SCARDCONTEXT hSC; LONG lReturn; //Establish the context lReturn = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &hSC); if(SCARD_S_SUCCESS != lReturn) printf("Failed SCardEstablishContext/n"); else { //Use the context as needed, when done, //free the context by calling SCardReleaseContext } 2)SCardConnect函数利用特定资源管理器上下文,在应用程序与包含在特定读卡器中的智能卡之间建立一条连接: LONG WINAPI SCardConnect( __in SCARDCONTEXT hContext, //资源管理器上下文句柄

新一代Java智能卡技术研究

新一代Java智能卡技术研究 马旭,王立,彭晓锋 北京邮电大学电信工程学院,北京 (100876) E-mail:marxuxp@https://www.doczj.com/doc/1d988259.html, 摘要:本文较详细地讨论了最新的Java 2.2智能卡技术,包括系统结构、运行时环境、编程模型、Java类库支持、虚拟机原理及设计,最后简要介绍了Java2.2智能卡的安全机制。关键词: Java Card智能卡2.2,JCRE,JCVM,安全性 1.引言 智能卡也称为芯片卡、IC卡。是将集成电路芯片封装在一个塑料基片上,通过芯片内的通信模块,智能卡可以和外部设备通信,完成数据传输、存储和处理,实现各种业务。早期的智能卡实际上并不是严格意义下的智能卡,只是一种存储卡。因为它没有片上微处理器,而只有少量的存储单元和固化的逻辑电路。随着技术的发展,出现了微处理器卡,能够提供更高的安全性和更多的功能。这种卡不能直接和外部交换数据,而是通过外部设备对微处理器发送一组指令,再由微处理器执行相关的操作,并把数据返回给外部设备。 由于Java语言的平台无关性、高安全性和易开发性,在智能卡应用中有相当的优势。Java 语言刚诞生不久的1996年11月,美国Schlumberger 产品中心首先介绍了Java智能卡的API,并决定将智能卡开发重点转到保护信息安全上来。Schlumberger 提出了Java API草案并创立了Java智能卡论坛[1]。在广大厂商的支持下,SUN推出了Java Card 1.1规范,为Java智能卡定义了技术标准,并陆续推出了2.0、2.1、2.2版,提出了更为完整的技术要求。目前,Java 智能卡技术已经趋于成熟,得到了广泛应用。 2.Java智能卡体系结构 在智能卡硬件平台上,通过构建一个硬件或软件系统,以支持Java语言下载、运行,称为Java智能卡。Java智能卡继承了Java技术的平台无关性,将硬件和软件分离,简化了应用程序开发,提高了程序移植性。 Java智能卡由以下几部分组成[2]: z硬件系统 包括微处理器、存储器、通信电路、加密协处理器等模块 z与智能卡硬件相关的本地方法集 完成基本的I/O、存储、加密解密等对硬件的操作 z JCVM(Java Card Virtual Machine)解释器 完成对类文件的解析、构建Java栈和帧结构以支持Java字节码的执行 z Java智能卡类库 包括支持Java智能卡运行的核心类库和扩展类库 z Java智能卡应用管理组件 完成对卡上Applet的安装、注册和删除 z Java智能卡运行环境 包括支持卡内的Applet间的安全机制和对象共享机制,支持卡内的事务处理和异常处理 z Java智能卡应用程序

智能卡安全问题及其对策分析演示教学

智能卡安全问题及其对策分析 在信息化高速发展的今天,“智能卡”这个词在我们的日常生活中已随处可见.智能卡在中国的发展速度十分迅猛,目前在我国, IC卡已在众多领域获得广泛应用,并取得了初步的社会效益和经济效益。2000年,全国IC卡发行量约为2.3亿张,其中电信占据了大部分市场份额。公用电话IC卡1.2亿多张,移动电话SIM卡超过4200万张,其它各类IC卡约6000万张。2001年IC卡总出货量约3.8亿张,较上年增长26%;发行量约3.2亿张,较上年增长40%。从应用领域来看,公用电话IC卡发行超过1.7亿张,SIM卡发行5500万张,公交IC 卡为320万张,社保领域发卡为1400万张,其它发卡为8000万张。智能卡市场呈现出以几何级数增长的态势,智能卡以其特有的安全可靠性,被广泛应用于从单个器件到大型复杂系统的安全解决方案。然而随着智能卡的日益普及,针对智能卡安全漏洞的专用攻击技术也在同步发展。分析智能卡面临的安全攻击,研究相应的防御措施,对于保证整个智能卡应用系统的安全性有重大的意义。本文首先分析了目前主要的智能卡攻击技术,并有针对性地提出相应的安全设计策略。 智能卡是将具有存储、加密及数据处理能力的集成电路芯片镶嵌于塑料基片上制成的卡片,其硬件主要由微处理器和存储器两部分构成,加上固化于卡中的智能卡操作系统(COS)及应用软件,一张智能卡即构成了一台便携和抗损的微型计算机。智能卡的硬件构成包括:CPU、存储器(含RAM、ROM 和EEPROM 等)、卡与读写终端通讯的I/O 接口以及测试与安全逻辑,如图1 所示。作为芯片核心的微处理器多采用8 位字长的CPU(更高位的CPU 也正在开始应用),负责完成所有运算和数据交换功能。卡内的存储器容量一般都不是很大,其中,ROM 中固化的是操作系统代码及自测程序,其容量取决于所采用的微处理器,典型值为32 KB;RAM 用于存放临时数据或中间数据,例如短期密码、临时变量和堆栈数据等,容量通常不超过1 KB;EEPROM 中则存储了智能卡的各种应用信息,如加密数据和应用文件等,有时还包括部分COS 代码,容量通常介于2 KB 到32 KB 之间,这部分存储资源可供用户开发利用。 智能卡操作系统COS 的主要功能是控制智能卡和外界的信息交换,管理智能卡内的存储器并在卡内部完成各种命令的处理。卡中的数据以树型文件结构的形式组织存放。卡与终端之间通过命令响应对的形式交换信息。 CPU 与COS 的存在使智能卡能够方便地采用PIN 校验、加密技术及认证技术等来强化智能卡的安全性,但这并不意味着智能卡是绝对安全的。在智能卡的设计阶段、生产环境、生产流程及使用过程中会遇到各种潜在的威胁。攻击者可能采取各种探测方法以获取硬件安全机制、访问控制机制、鉴别机制、数据保护系统、存储体分区、密码模块程序的设计细节以及初始化数据、私有数据、口令或密码密钥等敏感数据,并可能通过修改智能卡上重要安全数据的方法,非法获得对智能卡的使用权。这些攻击对智能卡的安全构成很大威胁。 对智能卡的攻击可分3 种基本类型:逻辑攻击、物理攻击和边频攻击。下面就这3 种攻击技术的具体实施方式加以分析。逻辑攻击技术分析:逻辑攻击的主要方法是对处理器的通信接口进行分析,以期发现智能卡协议、密码算法及其实现过程中所潜藏的逻辑缺陷,包括潜藏未用的命令、不良参数与缓冲器溢出、文件存取漏洞、恶意进程、通信协议和加密协议的设计与执行过程等。逻辑攻击者在软件的执行过程中插入窃听程序,利用这些缺陷诱骗卡泄露机密数据或允许

北邮java智能卡实验报告实验三电子钱包(一)

智能卡技术实验报告 学院:电子工程学院 班级:2011211204 学号:2011210986 姓名:

实验三 Java卡电子钱包程序 一、实验目的 建立Java卡电子钱包程序,并进行java卡程序的编译和调试 二、实验设备 PC机、智能卡读卡器、Java卡 三、实验内容 1、建立一个JavaCard工程 2、编写电子钱包应用代码 3、使用卡模拟器对应用代码进行编译调试 4、使用Java卡对应用代码进行编译调试 四、实验设计 1、实验说明 设计一个电子钱包小应用程序,应该至少能够实现以下功能:电子钱包的安装、选择与撤销选择、存款、借款、获取钱包余额以及身份验证。 2、流程图绘制 A、总体框图

B、存款模块图

C、消费模块图 D、PIN验证模块图

E、查询余额模块图 五、关键代码部分 A、PIN的次数判断 public boolean select(){ //在选择钱包应用之前,对pin可尝试次数进行判断,若可尝试次数为零,即钱包已锁定,则该钱包应用不能被选择 if(pin.getTriesRemaining()==0) return false; return true; } public void deselect(){ //当钱包应用被取消选择是,将pin的状态清空为初始值 pin.reset(); }

B、APDU入口 public void process(APDU apdu) { byte[] buffer=apdu.getBuffer();/*APDU对象为JCRE临时入口点对象,它可以被任何应用所访问,负责传递终端 发送的APDU命令。通过APDU.getBuffer()命令即可以得到APDU对象的通信缓冲区, 即APDU命令数组*/ buffer[ISO7816.OFFSET_CLA]=(byte)(buffer[ISO7816.OFFSET_CLA]&(byt e)0xFC);//判断命令头是否正确 if((buffer[ISO7816.OFFSET_CLA]==0)&&(buffer[ISO7816.OFFSET_INS]== (byte)(0xA4))) return;//若为select命令,则直接返回,不做其他操作 if(buffer[ISO7816.OFFSET_CLA]!=Wallet_CLA) ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);/*若为其他命令,则判断命令CLA和INS是否能为钱包应用所支持, 若为支持范围外的其他值,则返回对象的错误状态字*/ switch (buffer[ISO7816.OFFSET_INS]) { case GET_BALANCE: getBalance(apdu); return; case DEBIT: debit(apdu); return; case CREDIT: credit(apdu); return; case VERIFY: verify(apdu); return; default: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } } C、存款模块 private void credit(APDU apdu){ if(!pin.isValidated()) ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);//钱包应用鉴权

JavaCard简介(中文版)

1、简介 Java Card 3 平台由两个版本组成Classic Edition和Connected Edition: Classic Edition是一个基于 2.2.2版本的前端兼容的演化平台,针对资源有限的设备仅支持applet-based应用。如果你只对Classic Edition中提供的功能感兴趣的话就可以忽略Connected Edition。 Connected Edition提供了一个显著增强的运行时环境和一个新的虚拟机。包含了一些新的面向网络的应用,例如提供了针对web应用的Servlet APIs,并且支持一些新的applet功能增强。一个Connected Edition的应用可能会用到Classic Edition提供的特性,因此这两个版本的规范应用一起使用。 1.1动机 Java Card技术使得用Java编程语言编写的程序可以运行在智能卡和其他小的资源紧张的设备上。开发人员可以用标准的软件开发工具和环境来编译和调试程序,然后把程序转化成能被Java Card支持的格式。Java Card上的应用程序被称为Applet,或者更明确的称为Java Card Applet 或者Card Applet(为了和浏览器Applets做区分)。 Java Card技术使得用Java语言编写的程序可以在智能卡上运行,然而如此小的设备远不足以支持Java平台的全部功能。因此,Java Card平台仅仅支持一个被仔细挑选,定制的Java平台属性的的子集。这个子集使得写的程序在小设备上有更好适应性,并且保持了Java语言的面向对象的特性。 一个简单的途径是定义一个代码可以在所有Java Card环境下移植的Java虚拟机的子集。结合JVM的子集规定和信息,智能卡提供商可以在Java Card规范上构建自己的工具。虽然手段是可行的,但有一个严重的缺点,目标平台将会丧失字节码的移植性。 Java平台的规范允许Java的代码在所有Java平台上移植,Java的“写一次,所有地方运行”的属性或许是平台的最重要的特性。部分Java Card平台创建的工作就是为了把这种代码移植性带到智能卡行业。在世界上有千百万的不同处理器和配置的智能卡,为支持软件派发所支持的多种代码格式的代价是不能承受的。 这个Java Card的虚拟机规范(版本3.0.1Classic Edition)是提供代码移植性的关键。理解这个规范做了什么的一个方法是和Java平台的对应副本进行比较。Java虚拟机规范定义了一个引导和按指令集执行Java类文件的引擎。类文件是Java体系结构里面核心的部分,并且是代码移植性的支柱。Java Card的虚拟机规范(版本3.0.1Classic Edition)仍然定义了一个实现了Java Card平台代码移植性的文件格式:CAP文件格式是软件被导入到实现了Java Card虚拟机规范的设备的格式。 1.2The Java Card Virtual Machine Java Card虚拟机的角色在Java Card平台的生产和开发流程下很好理解。Java Card虚拟机和若干个组件组成一个Java Card系统,一个Converter(转换器),一个终端安装工具,和一个运行在设备上的安装程序。如下图1-1和1-2。

智能卡的安全机制及其防范策略

智能卡的安全机制及其防范策略 冯清枝 王志群 (中国刑警学院刑事科学技术系,辽宁沈阳,110035) 摘 要 本文在简要地介绍智能卡的结构和原理的基础上,从安全防范的角度出发,深入地讨论 了智能卡的安全机制、加密算法以及防范策略等。关键词 智能卡 加密算法 非法攻击 防范策略中图分类号 T N91515 收稿日期 2003201226 作者简介 冯清枝(1969年— ),男,辽宁人,讲师。0 引言 伴随信息识别技术的发展和社会对信息安全要求的日益提高,作为一种新型的信息存储媒体,智能卡应运而生。智能卡的研制和应用涉及微电子技术、计算机技术和信息安全技术等学科,其广泛应用于行业管理、网络通讯、医疗卫生、社会保险、公用事业、金融证券以及电子商务等方面,极大地提高了人们生活和工作的现代化程度,已经成为衡量一个国家科技发展水平的标志之一。智能卡是将具有存储、加密及数据处理能力的集成电路芯片镶嵌于塑料基片上制成的卡片,具有暂时或永久的数据存储能力,数据内容可供内部处理、判断或外部读取;具有逻辑和数学运算处理能力,用于芯片本身的处理需求以及识别、响应外部提供的信息,其外形与普通磁卡制成的信用卡十分相似,只是略厚一些。智能卡的硬件主要包括微处理器和存储器两部分,逻辑结构如图1所示。 智能卡内部的微处理器一般采用8位字长的中央处理器,当然更高位的微处理器也正在开始应用。微处理器的主要功能是接受外部设备发送的命令,对其进行分析后,根据需要控制对存储器的访问。访问时,微处理器向存储器提供要访问的数据单元地址和必要的参数,存储器则根据地址将对应的数据传输给微处理器,最后由微处理器对这些数据进行处理操作。此外,智能卡进行的各种运算(如加密运算)也是由微处理器完成的。而控制和实现上述过程的是智能卡的操作系统C OS 。 卡内的存储器容 图1 智能卡的硬件结构 量一般都不是很大,存储器通常是由只读存储器 ROM 、随机存储器RAM 和电擦除可编程存储器EEPROM 组成。其中,ROM 中固化的是操作系统代码,其容量取决于所采用的微处理器;RAM 用于存放操作数据,容量通常不超过1K B ;EEPROM 中则存储了智能卡的各种信息,如加密数据和应用文件等,容量通常介于2K B 到32K B 之间,这部分存储资源可供用户开发利用。1 智能卡的安全机制 智能卡的优势主要体现在广阔的存储空间和可靠的安全机制等方面。其中安全机制可以归纳为:认证操作、存取权限控制和数据加密三个方面。111 认证操作 认证操作包括持卡人的认证、卡的认证和终端的认证三个方面。持卡人的认证一般采用提交密码的方法,也就是由持卡人通过输入设备输入只有本 5 92004年第1期N o.12004 中国人民公安大学学报(自然科学版)Journal of Chinese People ’s Public Security University 总第39期Sum 39

JavaCard开发教程之入门篇

JavaCard开发教程之规范 多年以前,Sun微系统公司实现了智能卡和类似的资源约束设备的潜能,并且定义了一组Java技术子集规范来为它们创建应用程序,Java Card小应用程序。支持这些规范的设备称为Java Card平台。在一个Java Card平台上,来自不同的供应商的多个应用程序可以安全地共存。 一个典型的Java Card设备有一个8或16位的运行在3.7MHz的中央处理器,带有1K 的RAM和多于16K的非易失性存储器(可编程只读存储器或者闪存)。高性能的智能卡带有单独的处理器和加密芯片,以及用于加密的内存,并且有一些还带有32位的中央处理器。 Java Card技术规范目前是2.2版,由三部分组成: ·Java Card虚拟机规范,定义了用于智能卡的Java程序语言的一个子集和虚拟机。 ·Java Card运行时环境规范,进一步定义了用于基于Java的智能卡的运行期行为。 ·Java Card应用编程接口规范,定义了用于智能卡应用程序核心框架和扩展Java程序包和类。 Sun还提供了Java Card开发工具箱(JCDK) https://www.doczj.com/doc/1d988259.html,/products/javacard/,包含了Java Card运行期环境和Java Card虚拟机的引用实现,和其它帮助开发Java Card 小应用程序的工具。本文的第二部分将详细讲述JCDK。 Java Card技术和J2ME平台 让我们比较一下Java Card和J2ME平台技术:

图. Java Card技术和J2ME平台 CDC和CLDC配置以及它们 JavaCard开发教程之程序元素 完整的Java Card应用程序由一个后端应用程序和系统、一个主机(卡外)应用程序、一个接口设备(读卡器)和卡上小应用程序、用户证书和支持软件组成。所有的这些元素共同组成一个安全的端到端应用程序:

智能卡的操作系统——COS

智能卡的操作系统——COS 2003-4-12 随着 Ic卡从简单的同步卡发展到异步卡,从简单的 EPROM卡发展到内带微处理器的智能卡(又称CPU卡),对IC卡的各种要求越来越高。而卡本身所需要的各种管理工作也越来越复杂,因此就迫切地需要有一种工具来解决这一矛盾,而内部带有微处理器的智能卡的出现,使得这种工具的实现变成了现实。人们利用它内部的微处理器芯片,开发了应用于智能卡内部的各种各样的操作系统,也就是在本节将要论述的COS。 COs的出现不仅大大地改善了智能卡的交互界面,使智能卡的管理变得容易;而且,更为重要的是使智能卡本身向着个人计算机化的方向迈出了一大步,为智能卡的发展开拓了极为广阔的前景。 1 COS概述 COS的全称是Chip Operating System(片内操作系统),它一般是紧紧围绕着它所服务的智能卡的特点而开发的。由于不可避免地受到了智能卡内微处理器芯片的性能及内存容量的影响,因此,COS在很大程度上不同于我们通常所能见到的微机上的操作系统(例如DOS、UNIX等)。首先,COS是一个专用系统而不是通用系统。即:一种COS一般都只能应用于特定的某种(或者是某些)智能卡,不同卡内的COS一般是不相同的。因为coS一般都是根据某种智能卡的特点及其应用范围而特定设计开发的,尽管它们在所实际完成的功能上可能大部分都遵循着同一个国际标准。其次,与那些常见的微机上的操作系统相比较而言,COS在本质上更加接近于监控程序、而不是一个通常所谓的真正意义上的操作系统,这一点至少在目前看来仍是如此。因为在当前阶段,COS所需要解决的主要还是对外部的命令如何进行处理、响应的问题,这其中一般并不涉及到共享、并发的管理及处理,而且就智能卡在目前的应用情况而

1.安装配置Java智能卡开发环境

实验名称:安装配置Java智能卡开发环境 一、实验目的 掌握 Java 智能卡 Applet 的开发环境 Eclipse 软件的使用。 二、实验环境 Eclipse 集成开发环境,Java Key,JCOP仿真运行环境 三、实验原理 Java智能卡是在智能卡硬件系统的基础之上在片内通过软件构造的一个支 持Java程序下载/安装并运行的软/硬件系统。它在有限资源的智能卡环境中支持Java语言的一个子集,是Java嵌入到智能卡中的一种新应用。 通过引入Java虚拟机技术,Java智能卡在保留了原有智能卡应用的便捷、安全等特性的同时,继承了Java技术的硬件无关特性,将智能卡应用程序的开发同智能卡硬件系统相分离,简化了应用程序的开发,提高了应用程序的可重用性,实现了Java设计者所宣称的“一次编写,到处运行”的理念。 Java智能卡系统由以下几部分组成: (1)智能卡硬件系统,包括微处理器、易失和非易失性存储器、通信电路、加密协处理器等模块。 (2)与智能卡硬件系统相关的本地方法集,完成基本的I/O通信、存储、加密等对硬件进行控制操作的本地方法。 (3)Java智能卡虚拟机JCVM(Java Card Virtual Machine),在智能卡硬件系统上通过软件构造的支持字节码运行的虚拟机。 (4)Java智能卡类库,包括支持Java智能卡运行的核心类库和应用扩展类库,为Applet的开发提供统一的应用编程接口。 (5)Java智能卡应用管理组件,完成对卡上Applet的安装、注册和删除。 (6)Java智能卡运行环境JCRE(Java Card Runtime Environment),包括Java 智能卡虚拟机、API类库及其他的支持服务,如卡内Applet间的安全隔离机制和对象共享机制、事务处理、逻辑通道等。 (7)Java智能卡应用,运行于Java智能卡上的Java应用程序Applet。 Java智能卡系统结构如图1所示:

Java语言开发智能卡应用程序

利用Java 语言开发智能卡应用程序 内容提要:本文介绍了智能卡的分类、文件系统、接口协议和Java 卡的知识及其开发流程,介 绍了JCDK 环境的下载、安装和8个基本命令的使用。本文通过银行卡的应用实例,指导读者编写智能卡Applet ,将CAP 文件下载到智能卡上和使用apdu 文件访问智能卡的程序。通过本文的学习,应该掌握智能卡的实现技术,可以熟练使用JBuilde 编写智能卡程序。 关键字:分类、文件系统、接口协议、Java 卡 引言:对于IC (Intelligent Card )卡,相信大家都很熟悉,如经常使用的银行卡、电话卡、地铁卡,这些都是IC 卡的种类。每个IC 卡都有专门的代码控制它们的实现功能,如某人利用地铁IC 卡从一个检测门进入,然后在目的地的检测门出去,IC 卡便会将相关的信息传送给服务器,使服务器可以进行一系列的数据处理。 正文: 1 智能卡 1.1 智能卡的分类 智能卡按嵌入的芯片种类分,可以分为以下两类。 1. 接触式卡 这种卡需要使用读卡器的装置进行信息的读写操作。这种卡的表面上嵌着小的金属片,当把卡插入读卡器时,该小金属片就会同一个电子接头接触,通过这个电子接头对芯片读写数据。接触式卡主要分为以下两类卡。 1)存储卡 存储卡不包含复杂的处理器,它不能动态的管理文件,与读卡器的通信是同步通信。IC 电话卡就是存储卡。 2)微处理器卡 微处理器卡是本文所要讨论的卡片,它与存储卡的的区别是:具有动态处理数据的功能。微处理器卡的系统结构有微处理器(CPU )和EEPROM (E 2PROM ),如SIM 卡(手机卡),银行卡等都是微处理器卡。 接触卡和读卡器如图1所示。 图1 2. 非接触式卡 非接触式智能卡看上去和普通的塑料信用卡相似,在卡体中内嵌了天线和微电子芯片,当把它放近读卡器的天线时,它们之间就可以完成一次信息交换。这使其不用与感应器接触,便可交换信息,并且处理时间极短。如地铁卡、高速公路收费卡便是非接触卡。 注意:智能卡遵循ISO7816标准。ISO7816标准规定了卡用塑料的物理特性,包括温差范围、弹性、电子触点的位置以及内置微芯片和进行信息交换的方式等。 o o k .n e t w w w .c n b o o k .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .n e t w w w .c n b o o k .e t w w w .c n

智能卡攻击技术

智能卡的攻击技术分析及安全设计策略在智能卡应用日益广泛的今天,智能卡应用系统的安全问题非常重要。通常认为智能卡本身具有较高的安全性,但随着一些专用攻击技术的出现和发展,智能卡也呈现出其安全漏洞,从而导致整个应用系统安全性降低。分析智能卡面临的安全攻击,研究相应的防御措施,对于保证整个智能卡应用系统的安全性有重大的意义。本文首先分析了目前主要的智能卡攻击技术,并有针对性地提出相应的安全设计策略。 1 智能卡设计简述 智能卡是将具有存储、加密及数据处理能力的集成电路芯片镶嵌于塑料基片上制成的卡片,智能卡的硬件主要包括微处理器和存储器两部分,逻辑结构如图1 所示。 智能卡内部的微处理器一般采用8 位字长的中央处理器,当然更高位的微处理器也正在开始应用。微处理器的主要功能是接受外部设备发送的命令,对其进行分析后,根据需要控制对存储器的访问。访问时,微处理器向存储器提供要访问的数据单元地址和必要的参数,存储器则根据地址将对应的数据传输给微处理器,最后由微处理器对这些数据进行处理操作。此外,智能卡进行的各种运算(如加密运算) 也是由微处理器完成的。而控制和实现上述过程的是智能卡的操作系统COS。卡内的存储器容量一般都不是很大,存储器通常是由只读存储器ROM、随机存储器RAM 和电擦除可编程存储器EEPROM组成。其中,ROM 中固化的是操作系统代码,其容量取决于所采用的微处理器;RAM 用于存放操作数据,容量通常不超过1KB;EEPROM中则存储了智能卡的各种信息,如加密数据和应用文件等,容量通常介于2KB 到32KB 之间,这部分存储资源可供用户开发利用。 图1 智能卡的硬件结构 2 智能卡攻击技术分析 在智能卡的设计阶段、生产环境、生产流程及使用过程中会遇到各种潜在的威胁。攻击者可能采取各种探测方法以获取硬件安全机制、访问控制机制、鉴别机制、数据保护系统、存储体分区、密码模块程序的设计细节以及初始化数据、私有数据、口令或密码密钥等敏感数据,并可能通过修改智能卡上重要安全数据的方法,非法获得对智能卡的使用权。这些攻击对智能卡的安全构成很大威胁。 对智能卡的攻击可分为三种基本类型: (1)逻辑攻击:在软件的执行过程中插入窃听程序bugs (2)物理攻击:分析或更改智能卡硬件 (3)边频攻击:利用physical phenomena 来分析和更改智能卡的行为 2.1 逻辑攻击技术分析

JAVA卡技术概述

JA V A卡技术概述 ---------------------------------------------------------------------------------------------------------------------- 编辑整理:https://www.doczj.com/doc/1d988259.html,编辑:王鹏来源:门禁 关键字:JA V A爪哇卡(JavaCard)技术可使以爪哇语言所写成的程序,在智能卡和其它资源受限装置上执行。本文将让您一览爪哇卡技术,包括该系统的结构和组件。本概述的目的在让您对爪哇卡技术有一个整体性了解,并介绍有关爪哇卡系统的重点和基本概念,以利程序开发者设计程序之用。 一、爪哇卡技术之组件 爪哇卡技术包括下列部分: *精简后之爪哇程序语言以及适合智能卡应用的虚拟机(JavaCardVirtualMachine,JCVM)定义 *核心之爪哇卡应用程序接口(ApplicationProgrammingInterface,API)及其延伸部分*爪哇卡之执行时期环境(JavaCardRuntimeEnvironment,JCRE) 爪哇卡应用程序接口和执行时期环境是以智能卡工业标准ISO7816为模型而设计,因此,爪哇卡平台可轻易支持跟ISO7816第一到第六部分兼容的智能卡系统和应用。 爪哇卡应用程序被称为applets。爪哇卡平台可支持多重应用(multiapplication)环境。爪哇卡应用程序则是在爪哇之执行时期环境内处理和执行。 二、精简之爪哇卡语言 若智能卡的程序可使用爪哇程序语言的所有功能写成当然最好,不过对智能卡和其它资源受限装置来说,由于运算资源有限,要完全支持爪哇程序语言是不可能也不切实际的事。一般智能卡是以1K的随机存取内存(RAM),以及16K的非挥发性内存(EEPROM或RAM)和24K的只读存储器(ROM)规格出现,因此,爪哇卡平台仅能支持经小心选取且已规格化而有精简功能的爪哇语言。此精简爪哇语言包含之功能,适于设计智能卡以及其它小型装置的程序,同时还能保留爪哇程序语言以对象为导向(object-oriented)的能力。说明爪哇程序语言所不支持的功能,可能要比说明其可支持的功能容易许多。爪哇卡平台不支持:*大型基本数据类型:长整数、双倍浮点、浮点 *字符和字符串 *多元数组 *动态类别加载 *安全管理者 *垃圾收集及终结 *穿线 *对象复制 这些不受支持功能的关键词自然会自爪哇语言中省略。部分进阶爪哇智能卡可提供垃圾收集机能,以激活爪哇卡应用程序删除功能。遭删除的应用程序空间可能可以,也可能无法再被使用,不过此乃视在该智能卡上所使用的垃圾收集者之功能范围而定。一般而言,如果某项语言功能未清楚指明为不受支持的话,它就属于受支持的精简功能。 三、爪哇卡平台结构 爪哇程序语言原本是为运算资源相当丰富的系统而设计。尽管爪哇卡平台支持一规格化之精简爪哇程序语言,但是将整个爪哇卡平台安装在有限内存和处理能力的智能卡上,是不适合的事。即使做得到,但是如此一来,类别库(classlibraries)或应用程序将无空间可用。爪哇卡平台的一项重要特色是其为一分布式系统。事实上,它是在空间和时间上分散于智能卡和桌上计算机间的系统。

北邮java智能卡实验报告实验三电子钱包

流程图 A、总体框图 B、PIN验证模块图 C、存款模块图

D、消费模块图

E、查询余额模块图 关键代码部分 A、PIN的次数判断 public boolean select(){ //在选择钱包应用之前,对pin可尝试次数进行判断,若可尝试次数为零,即钱包已锁定,则该钱包应用不能被选择 if(pin.getTriesRemaining()==0) return false; return true; } public void deselect(){ //当钱包应用被取消选择是,将pin的状态清空为初始值 pin.reset();

} B、APDU入口 public void process(APDU apdu) { byte[] buffer=apdu.getBuffer();/*APDU对象为JCRE临时入口点对象,它可以被任何应用所访问,负责传递终端 发送的APDU命令。通过APDU.getBuffer()命令即可以得到APDU对象的通信缓冲区, 即APDU命令数组*/ buffer[ISO7816.OFFSET_CLA]=(byte)(buffer[ISO7816.OFFSET_CLA]&(byt e)0xFC);//判断命令头是否正确 if((buffer[ISO7816.OFFSET_CLA]==0)&&(buffer[ISO7816.OFFSET_INS]== (byte)(0xA4))) return;//若为select命令,则直接返回,不做其他操作 if(buffer[ISO7816.OFFSET_CLA]!=Wallet_CLA) ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);/*若为其他命令,则判断命令CLA和INS是否能为钱包应用所支持, 若为支持范围外的其他值,则返回对象的错误状态字*/ switch (buffer[ISO7816.OFFSET_INS]) { case GET_BALANCE: getBalance(apdu); return; case DEBIT: debit(apdu); return; case CREDIT: credit(apdu); return; case VERIFY: verify(apdu); return; default: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } } C、存款模块 private void credit(APDU apdu){ if(!pin.isValidated())

Javacard 应用开发手册V1.0

Java Card 应用开发手册 握奇数据系统有限公司 卡开发中心 二〇〇七年五月

一、Java Card应用开发环境 —— Eclipse简介 (2) 1.新建工程 (2) 2.加载Java包 (2) 3.编译 (3) 4.运行程序 (3) 5.进行测试 (7) 6.检查测试结果 (7) 二、Java Card开发环境简介 (8) 1.运用JCOP进行Java Card Applet的开发 (8) 1.1准备工作 (8) 1.2安装IBM JCOP Tools 2.2 (8) 1.3使用JCOP Tools 2.2建立Project (12) 1.4运行和调试Project (17) 2.运用WatchICE进行Applet的下载安装 (22) 2.1 安装WatchICE (22) 2.2 配置WatchICE (22) 2.3 Applet的编译 (23) 2.4 Applet的下载 (25) 2.5 Java卡的列表与删除 (27) 2.6 Java卡安全通道的建立,只有非电信卡支持 (28)

一、 Java Card应用开发环境 —— Eclipse简介 1.新建工程 【File】->【new】->【Project】->【Java Project】 Figure 1 2.加载Java包 【Project】->【Propreties】->【Java Build Path】->【Libraries】按Add External JARs->选到sun 所提供的『java_card_kit-2_2_1』的 lib 目录下,api.jar 档案。再按下OK!

Building an impossible verifier on a Java Card

Building an"impossible"veri?er on a Java Card Damien Deville deville@li?.fr,http://www.li?.fr/?deville Gilles Grimaud grimaud@li?.fr,http://www.li?.fr/?grimaud Universitédes Sciences et Technologies de Lille, Laboratoire Li?,Bat M3, citéscienti?que,59655Villeneuve d’Ascq-France Abstract Java is a popular development platform for mo- bile code systems.It ensures application porta- bility and mobility for a variety of systems,while providing strong security features.The interme- diate code(byte code)allows the virtual machine to verify statically(during the loading phase)that the program is well-behaved.This is done by a software security module called the byte code veri?er.Smart Cards that provide a Java Virtual Machine,called Java Card,are not supplied with such a veri?er because of its complexity.Alterna- tives are being studied to provide the same func- tionality outside the card.In the present paper, we propose to integrate the whole veri?er inside the smart card.This ensures that the smart card becomes entirely autonomous,which allows full realization of smart cards potential as pervasive computing devices.Our veri?er uses a special- ized encoding and a software cache with a vari- ety of cache polices to adapt to the hardware con- straints of smart card.Our experimental results con?rm the feasibility of such a security system being implemented in a smart card. Keywords:Smart card,Java Card,static ver- i?cation,type inference,secure embedded sys- tem.

Java Card 3.0.4

1Copyright ? 2011, Oracle and/or its affiliates. All rights reserved.

2Copyright ? 2011, Oracle and/or its affiliates. All rights reserved. Java Card 3.0.4 and Tools Saqib Ahmad –Java Card Engineering Group

Copyright ? 2011, Oracle and/or its affiliates. All rights 4reserved. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

相关主题
文本预览
相关文档 最新文档