基于EEM 的网络智能卡研究
文章出处:http://www.nexussmartsolutions.com 作者:吴俊军,周方圆 人气: 发表时间:2011年10月07日
1 引言
随着Internet的发展和普及,越来越多的电子设备可以接入并通过Internet获取资源和提供服务。而互联网上欺骗、窃听、病毒、非法入侵等事件的数量和破坏程度不断增加,使得网络安全越来越来受到重视。智能卡因其可安全存储秘密信息和安全计算可以在其内部安全完成的特点,在信息安全领域得到了广泛的应用。将智能卡同网络相结合无疑可以在增强网络安全的同时,使在智能卡上实现创新应用成为可能,因此网络智能卡应运而生。
网络智能卡是一种可以通过标准网络协议与主机或者远程计算机进行通讯的智能卡。由于现有智能卡均没有45或光纤等以太网常用的物理接口,网络智能卡需要通过计算机或者其它终端来接入Intemet。同普通智能卡相比,网络智能卡支持标准的网络协议——TCP/IP协议。通过对TCP/IP协议的支持,可省略传统智能卡系统中较为复杂的中间协议转换部件,从而大大简化智能卡系统的结构,可以在缩减成本的同时,有效提高智能卡系统的安全性和响应速度。但是,由于智能卡的内存等硬件资源非常紧张,而且其基于ISO 7816的接口对于数据传输速度也是一个很大的约束,如何在智能卡内部实现高效的TCP/IP协议栈的同时解决数据接口问题,是网络智能卡实现的关键。
2 网络智能卡研究现状
虽然智能卡技术的发展非常迅速,但它的通讯协议大体上并未改变,仍然采用传统的ISO 7816协议。由于ISO7816协议的限制,其在速度上与主流的因特网协议TCP/IP不能很好匹配,因此智能卡在网络领域方面的应用受到很大限制。
为了实现智能卡和Internet的连接,研究人员做了大量的工作,实现了许多网络智能卡的模型和实例,如UrienP的iSimplify!、密歇根大学Rees J和Honeyman P的Webcard[ 、微软的WebCamSIM、Axalto和Gemplus公司的网络智能卡等。
按照有无内嵌的TCP/IP协议栈可以将目前的网络智能卡模型分为两大类。一类是无内嵌TCP/IP协议栈的网络智能卡模型,如iSimplify!和WebSIM_3]。此方案的特点是不在卡内实现TCP/IP协议栈,可以节省卡内资源的消耗。不过由于需要主机实现协议的转换,此类网络智能卡均需要在主机上安装中间件来进行通讯。另一类是内嵌TCP/IP协议栈的网络智能卡模型,如Webcard、Axalto、Gieseeke& Devrient、Oberthur Card Systems等。与前面的模型相比,此类模型需要消耗更多的存储空间(RAM和EEPR0M)。由于采用标准的TCP/IP协议,此类网络智能卡不需要在主机上安装中间件来进行协议的转换,具有较好的易用性。
随着智能卡技术的发展,智能卡的内存容量也越来越大,内嵌TCP//P协议栈是网络智能卡的发展趋势。当前采用内嵌TCP/IP协议栈的实现方式所消耗的系统资源比较巨大,这使网络智能卡在进行网络服务时性能非常低下。比如,密歇根大学CITI的Webcard的实际传输速率只有130字节每秒。
本文针对这一问题,提出使用基于EEM 的网络智能卡模型并在卡内实现TCP/IP协议栈,通过简约化非必要协议及复杂协议对TCP/IP协议栈进行了有效的空间和时间优化,同时使用基于链式缓冲区的设计进一步提升了网络智能卡的空间效率和执行效率。
3 基于EEM 的网络智能卡模型
EEM(Ethernet Emulation Model,简称EEM)是基于USB总线的以太网仿真模型,目的在于简单、高效地在USB总线上传输以太网帧。USB接口因其高速、简单、即插即用等良好的特性,广泛使用于PC及各种终端设备上。当前USB接口已经在高端智能卡芯片上成了一种必备的配置,基于EEM模型的网络智能卡不仅可以实现高速的数据传输,从而从接口上解决了数据传输的瓶颈问题;同时,基于EEM 可以不用过多考虑以太网帧的实现细节,有利于网络智能卡的快速部署。
基于EEM的网络智能卡EEM-NSC是一个可在逻辑上独立存在的节点。在其内部实现TCP/IP协议栈,通过EEM协议同H0ST进行数据包的通信,从而可使应用程序通过高层的应用层协议来访问智能卡内部的资源,同时结合智能卡天生所具备的安全性,极大方便了安全应用程序的开发。基于EEM的网络智能卡的框架如图1所示。
该模型包括主机和网络智能卡两个部分。主机是连接网络智能卡和Internet的计算机或终端设备。其工作机理如下所述:首先,主机将目的主机为EEM-NSC的IP数据包路由给主机中的USB虚拟网卡,同时将USB虚拟网卡接收到的IP包发送至Internet;接着,USB虚拟网卡将待发送的IP数据包依次打包为以太网数据包、EEM数据包、USB数据包,并将接收到的USB数据包依次解包为EEM数据包、以太网数据包、IP数据包;最后,主机通过USB总线完成与EEM网络智能卡之间的USB数据包的传递。
而EEM网络智能卡是EEM网络智能卡框架的主体。
主要包括EEM接口、TCP/IP协议栈、智能卡操作系统、网络应用程序四个部分。EEM接El对接收到的USB数据包进行校验,将USB数据包依次解包为EEM数据包、以太网数据包。同时,将TCP/IP协议栈传送的以太网包打包为EEM数据包、USB数据包,通过USB总线传送至主机。TCP/IP协议栈是EEM 网络智能卡模型的核心,用于实现TCP/IP层的连接、认证、数据传输、数据校验等工作。该模块为智能卡操作系统提供可靠的数据传输。智能卡操作系统屏蔽底层的数据交换,为网络应用程序提供数据传输的接口。网络应用程序为运行在EEM 网络智能卡上的提供网络服务的应用程序,这些程序可以通过智能卡操作系统提供的API实现安全网络应用。
相比传统智能卡,EEM-NSC有诸多优势。协议方面。采用标准网络协议——TCP/IP协议,消除了传统智能卡因协议不兼容需要进行协议转换的问题;接I:1方面,采用目前普遍使用的USB接口,不需要读卡器等硬件中间件。不过,任何外设均需要驱动程序。在附有EEM 驱动的主机上,EEM-NSC无需任何软硬中间件即可实现互联网接入。
目前,微软、苹果等操作系统供应商都纷纷表示将在其下一代操作系统中集成EEM驱动。
4 面向智能卡的TCP/IP协议栈
智能卡的处理能力和存储资源都相当有限,直接使用标准的TCP/IP协议栈是不合适的。为了在实现相应的网络功能的同时尽量缩减资源的消耗,必须依据智能卡的特点有针对性地对TCP/IP协议栈的结构和运行机制进行空间和时间上的优化。
4.1 优化策略
本文主要从两方面对智能卡TCP/IP协议栈进行优化:(1)对TCP/IP协议栈的代码进行裁剪,保证正常使用的同时有效地缩减代码量,减少TCP/IP协议栈本身所占的内存空间,即空间上的优化;(2)采用链式缓存和零拷贝机制,减少RAM 的消耗及拷贝数据带来的系统开销,从而提高TCP/IP协议栈的运行速度,即时间上的优化。完整实现TCP/IP协议栈的代码量为70KB~150KB,对于资源有限的智能卡来说是不能承受之重。在网络智能卡中,我们只需要实现可靠的数据传输和简单的地址解析。传输层协议包括TCP和UDP两种协议。TCP提供一种面向连接的、可靠的字节流服务,具有较高的安全性和稳定性。UDP是一个简单的面向数据报的传输层协议,提供不可靠的服务。两者只需实现其-lp可。智能卡对可靠性及安全性要求较高,若选择UDP,则需在应用程序中设计相应的机制来保证数据的正确性和完整性,不仅增加了程序设计的复杂度,而且重复设计将造成代码冗余,浪费空间。因此,在网络智能卡中,我们选用较为复杂但具有较高安全性和稳定性的TCP协议。
网络层协议包括IP、ICMP和IGMP协议。IP协议是网络层上的主要协议,所有的TCP/IP数据包均通过IP协议在互联网上进行传播,是TCP/IP协议的核心,必须予以实现。ICMP是IP协议的附属协议。IP层用它来与其他主机或路由交换错误报文和其他重要信息。网络智能卡只需要进行简单的数据传输即可,因此ICMP协议的大多内容可以不予以实现。为了方便测试传输层是否正常,实现ICMP协议中的ping应答即可。ICMP用于把一个UDP包多播到多个主机。由于选用TCP协议作为传输层协议,所以ICMP不予实现。
数据链路层协议包括ARP和RARP协议。以太网上的数据帧传输是通过MAC地址来进行识别的,主机需要通过ARP协议建立IP地址和MAC地址的动态映射,所以ARP协议必须实现。RARP为逆向地址解析协议。无法存储IP地址的主机可以通过该协议广播MAC反向获取IP,主要用于无盘工作站,在网络智能卡中可以不予实现。
由于采用EEM协议,EEM-NSC的物理层及以太网数据帧的传输在EEM规范和USB规范中有详细描述,本文不再赘述。裁剪后的TCP/IP协议栈如图2所示。
4.2 基于EEM 的TCP/IP协议栈实现
依据以上优化策略,分别对ARP协议、IP协议和TCP协议模块进行相应的优化。首先是ARP协议模块的优化。当一主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的l4J。ARP实现了32bit IP地址和48bit以太网地址之间的转换。具体过程为:源主机广播名为ARP请求的以太网帧。其中,ARP应答包内包含源主机的IP地址、MAC地址及目的主机的IP。目的主机收到ARP广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答。这个应答包含IP地址及对应的MAC地址。收到ARP应答后即可进行IP数据包的传输。因为EEM—NSC工作时只是被动地处理应答,而且同时处理的请求不会太多,因而可以对ARP协议进行简化。可以定义一个如图3所示的固定长度的结构数组。
在此条件下,EEM-NSC不主动发送ARP请求。当收到主机请求时发送应答,并搜索arp—cache数组里active不为True的位置。将主机请求包里的主机IP地址和物理
地址存人数组arp—cache中,并将active设置为True。EEM-NSC通过查找数组arp—cache获得MAC地址并与发出请求的主机进行通讯。当通讯结束后将该主机对应的记录的active属性设置为False。简化后的ARP协议只实现了ARP响应,并且将计算机中常用的双向链表结构的arp—cache改为线性数组结构。不仅可以节约存储窄间,而且具有较快的查找速度。
然后是IP协议模块的优化。IP协议是网络层的主要协议,它负责为传输层提供无连接的数据分组传送服务,是TCP/IP协议栈的核心。EEM-NSC作为一个单纯的嵌入式服务器,不需要实现IP层中的路由功能,当以太网数据包中的IP地址跟本机IP不匹配时直接丢弃该以太网数据包即可。发送数据时通过((destip locip)&locmask)=一0是否成立直接判断出目的地址是否在本地子网内,若是则直接发送.否则将数据包发送给默认网关。
另外,标准IP协议具有数据包的分段和重组功能。数据包的分段和重组校 复杂,会带来较大的系统开销。可根据EEM-NSC的具体应用选择性地实现IP协议的分段重组机制。例如,Web服务应用时,请求数据包较小,发送数据包大,只实现分段机制即可;身份验证、网络授权应用发送、接受数据量都很小,分段重组呵均不实现。这样,可在保证正常使用的前提下有效减少IP协议的代码量。
最后是TCP协议模块的优化。TCP是一种面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。TCP协议在数据传输的过程能够通过确认应答机制来保证数据的可靠传输。TCP模块的优化主要从两个方面着手:(1)删除TCP状态机中不必要的状态;(2)简化TCP的数据传输机制。
EEM-NSC运行的均是服务器端的应用,不需要主动向其它主机发出请求。因此,在建立连接过程中,EEMNSC只需保留被动打开的连接状态,SYN—SENT状态可以省略。当TCP协议被调用时,让TCP协议直接处于LISTEN状态来监听客户端的连接请求,传输完数据后主动断开连接,这样可以及时地释放套接字,节约系统资源。
在计算资源和存储资源充足的情况下,TCP/IP协议栈均采用滑动窗口协议即多个TCP包的发送、确认、重发同时进行。数据量不大时可以采用“发送一停止一等待一确认一发送”的方式。不实现滑动窗口协议,TCP协议每次只发送一个数据包,等待先前的数据包被确认以后再继续发送。简化后的TCP协议可以在最少计算资源和存储资源消耗的前提下完成被动连接和正常的数据传输。
4.3 基于缓冲区的数据交换
EEM-NSC的缓冲区是指其I/O接口和各层之间进行数据交换时使用的临时存储区域。缓冲区的设计直接决定网络智能卡的吞吐速度及整体性能。
EEM-NSC采用链表来存储需要输入输出的数据,这种机制被用于各种BSD风格的TCP/IP的实现以及一些嵌入式的开发中。
根据局部性原理,在前面几条指令中使用频繁的页面很可能在后面的几条指令中也频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内也不会被用到。因此,我们设计缓冲区时,找到最近最少使用的那个页面调出内存即可。EEM 网络智能卡链式缓冲区采用数组与链表相结合的结构,不仅可以有效地节约空间,而且拥有较快的查询速度,其结构如图4所示。
缓冲区工作流程分为初始化、数据输人和数据输出。在缓冲区初始化时,创建数组index—tables[],并且设置所有元素的used属性为False,tmier及length属性为0,data属性为null。在数据输入时,查找缓冲Ⅸ中最少使用的页面,即used为False,且timer值最大的数据头,分配空问并将得到的指针值赋给Heade~‘.data,将数据写入Header.data指向的内存空间,设置Header.1ength为数据长度、Header.used的值为True,Header.timer值为0,将数组中其它所有元素的timer属性置1。在数据输出阶段,根据数据坐标z获取数据指针index—table[x].data,取出数据,释放数据指针所指的内存空间,设置数据头的used属性为False,length属性为0,data属性为null。
N个长度为L n 的数据包存放在数组中需要的空间如Mem array=N*Max(Ln),而采用基于EEM 的链式缓冲区的方式需要的空间。例如,长度分别为71、217、52、255、106、59、148、215、124、146的10个数据包Mem array= 255*10=2 550B,MemEEM=1O*16+1 393=1 553B。显然,采用EEM-N8(2的链式缓冲区需要的空间只有数组的61 。在时间上,查找n个长度的链表的时间复杂度为O(n),查找EEM-NSC的链式缓冲区的时间复杂度为O(1)。
5 结束语
本文所论述的基于EEM 的网络智能卡模型及相应机制已经在中兴公司的智能卡芯片Zi1221上实现。实践表明,通过优化设计使得TCP/IP协议栈能够在网络智能卡内稳定运行,ROM、RAM 占有率及吞吐速度均达到了预期的效果。所采用的手段有两点:(1)采用基于EEM 的网络智能卡模型,从接口上保证了数据的吞吐速率;(2)采用基于对TCP/IP协议栈的代码进行裁剪和链式缓存机制来实现空间和时间上的性能提升。
(文/华中科技大学机械科学与工程学院,吴俊军,周方圆)