基于EEM 的網絡智能卡研究
文章出處:http://botanicstilllife.com 作者:吳俊軍,周方圓 人氣: 發(fā)表時間:2011年10月07日
1 引言
隨著Internet的發(fā)展和普及,越來越多的電子設備可以接入并通過Internet獲取資源和提供服務。而互聯網上欺騙、竊聽、病毒、非法入侵等事件的數量和破壞程度不斷增加,使得網絡安全越來越來受到重視。智能卡因其可安全存儲秘密信息和安全計算可以在其內部安全完成的特點,在信息安全領域得到了廣泛的應用。將智能卡同網絡相結合無疑可以在增強網絡安全的同時,使在智能卡上實現創(chuàng)新應用成為可能,因此網絡智能卡應運而生。
網絡智能卡是一種可以通過標準網絡協(xié)議與主機或者遠程計算機進行通訊的智能卡。由于現有智能卡均沒有45或光纖等以太網常用的物理接口,網絡智能卡需要通過計算機或者其它終端來接入Intemet。同普通智能卡相比,網絡智能卡支持標準的網絡協(xié)議——TCP/IP協(xié)議。通過對TCP/IP協(xié)議的支持,可省略傳統(tǒng)智能卡系統(tǒng)中較為復雜的中間協(xié)議轉換部件,從而大大簡化智能卡系統(tǒng)的結構,可以在縮減成本的同時,有效提高智能卡系統(tǒng)的安全性和響應速度。但是,由于智能卡的內存等硬件資源非常緊張,而且其基于ISO 7816的接口對于數據傳輸速度也是一個很大的約束,如何在智能卡內部實現高效的TCP/IP協(xié)議棧的同時解決數據接口問題,是網絡智能卡實現的關鍵。
2 網絡智能卡研究現狀
雖然智能卡技術的發(fā)展非常迅速,但它的通訊協(xié)議大體上并未改變,仍然采用傳統(tǒng)的ISO 7816協(xié)議。由于ISO7816協(xié)議的限制,其在速度上與主流的因特網協(xié)議TCP/IP不能很好匹配,因此智能卡在網絡領域方面的應用受到很大限制。
為了實現智能卡和Internet的連接,研究人員做了大量的工作,實現了許多網絡智能卡的模型和實例,如UrienP的iSimplify!、密歇根大學Rees J和Honeyman P的Webcard[ 、微軟的WebCamSIM、Axalto和Gemplus公司的網絡智能卡等。
按照有無內嵌的TCP/IP協(xié)議??梢詫⒛壳暗木W絡智能卡模型分為兩大類。一類是無內嵌TCP/IP協(xié)議棧的網絡智能卡模型,如iSimplify!和WebSIM_3]。此方案的特點是不在卡內實現TCP/IP協(xié)議棧,可以節(jié)省卡內資源的消耗。不過由于需要主機實現協(xié)議的轉換,此類網絡智能卡均需要在主機上安裝中間件來進行通訊。另一類是內嵌TCP/IP協(xié)議棧的網絡智能卡模型,如Webcard、Axalto、Gieseeke& Devrient、Oberthur Card Systems等。與前面的模型相比,此類模型需要消耗更多的存儲空間(RAM和EEPR0M)。由于采用標準的TCP/IP協(xié)議,此類網絡智能卡不需要在主機上安裝中間件來進行協(xié)議的轉換,具有較好的易用性。
隨著智能卡技術的發(fā)展,智能卡的內存容量也越來越大,內嵌TCP//P協(xié)議棧是網絡智能卡的發(fā)展趨勢。當前采用內嵌TCP/IP協(xié)議棧的實現方式所消耗的系統(tǒng)資源比較巨大,這使網絡智能卡在進行網絡服務時性能非常低下。比如,密歇根大學CITI的Webcard的實際傳輸速率只有130字節(jié)每秒。
本文針對這一問題,提出使用基于EEM 的網絡智能卡模型并在卡內實現TCP/IP協(xié)議棧,通過簡約化非必要協(xié)議及復雜協(xié)議對TCP/IP協(xié)議棧進行了有效的空間和時間優(yōu)化,同時使用基于鏈式緩沖區(qū)的設計進一步提升了網絡智能卡的空間效率和執(zhí)行效率。
3 基于EEM 的網絡智能卡模型
EEM(Ethernet Emulation Model,簡稱EEM)是基于USB總線的以太網仿真模型,目的在于簡單、高效地在USB總線上傳輸以太網幀。USB接口因其高速、簡單、即插即用等良好的特性,廣泛使用于PC及各種終端設備上。當前USB接口已經在高端智能卡芯片上成了一種必備的配置,基于EEM模型的網絡智能卡不僅可以實現高速的數據傳輸,從而從接口上解決了數據傳輸的瓶頸問題;同時,基于EEM 可以不用過多考慮以太網幀的實現細節(jié),有利于網絡智能卡的快速部署。
基于EEM的網絡智能卡EEM-NSC是一個可在邏輯上獨立存在的節(jié)點。在其內部實現TCP/IP協(xié)議棧,通過EEM協(xié)議同H0ST進行數據包的通信,從而可使應用程序通過高層的應用層協(xié)議來訪問智能卡內部的資源,同時結合智能卡天生所具備的安全性,極大方便了安全應用程序的開發(fā)?;贓EM的網絡智能卡的框架如圖1所示。
該模型包括主機和網絡智能卡兩個部分。主機是連接網絡智能卡和Internet的計算機或終端設備。其工作機理如下所述:首先,主機將目的主機為EEM-NSC的IP數據包路由給主機中的USB虛擬網卡,同時將USB虛擬網卡接收到的IP包發(fā)送至Internet;接著,USB虛擬網卡將待發(fā)送的IP數據包依次打包為以太網數據包、EEM數據包、USB數據包,并將接收到的USB數據包依次解包為EEM數據包、以太網數據包、IP數據包;最后,主機通過USB總線完成與EEM網絡智能卡之間的USB數據包的傳遞。
而EEM網絡智能卡是EEM網絡智能卡框架的主體。
主要包括EEM接口、TCP/IP協(xié)議棧、智能卡操作系統(tǒng)、網絡應用程序四個部分。EEM接El對接收到的USB數據包進行校驗,將USB數據包依次解包為EEM數據包、以太網數據包。同時,將TCP/IP協(xié)議棧傳送的以太網包打包為EEM數據包、USB數據包,通過USB總線傳送至主機。TCP/IP協(xié)議棧是EEM 網絡智能卡模型的核心,用于實現TCP/IP層的連接、認證、數據傳輸、數據校驗等工作。該模塊為智能卡操作系統(tǒng)提供可靠的數據傳輸。智能卡操作系統(tǒng)屏蔽底層的數據交換,為網絡應用程序提供數據傳輸的接口。網絡應用程序為運行在EEM 網絡智能卡上的提供網絡服務的應用程序,這些程序可以通過智能卡操作系統(tǒng)提供的API實現安全網絡應用。
相比傳統(tǒng)智能卡,EEM-NSC有諸多優(yōu)勢。協(xié)議方面。采用標準網絡協(xié)議——TCP/IP協(xié)議,消除了傳統(tǒng)智能卡因協(xié)議不兼容需要進行協(xié)議轉換的問題;接I:1方面,采用目前普遍使用的USB接口,不需要讀卡器等硬件中間件。不過,任何外設均需要驅動程序。在附有EEM 驅動的主機上,EEM-NSC無需任何軟硬中間件即可實現互聯網接入。
目前,微軟、蘋果等操作系統(tǒng)供應商都紛紛表示將在其下一代操作系統(tǒng)中集成EEM驅動。
4 面向智能卡的TCP/IP協(xié)議棧
智能卡的處理能力和存儲資源都相當有限,直接使用標準的TCP/IP協(xié)議棧是不合適的。為了在實現相應的網絡功能的同時盡量縮減資源的消耗,必須依據智能卡的特點有針對性地對TCP/IP協(xié)議棧的結構和運行機制進行空間和時間上的優(yōu)化。
4.1 優(yōu)化策略
本文主要從兩方面對智能卡TCP/IP協(xié)議棧進行優(yōu)化:(1)對TCP/IP協(xié)議棧的代碼進行裁剪,保證正常使用的同時有效地縮減代碼量,減少TCP/IP協(xié)議棧本身所占的內存空間,即空間上的優(yōu)化;(2)采用鏈式緩存和零拷貝機制,減少RAM 的消耗及拷貝數據帶來的系統(tǒng)開銷,從而提高TCP/IP協(xié)議棧的運行速度,即時間上的優(yōu)化。完整實現TCP/IP協(xié)議棧的代碼量為70KB~150KB,對于資源有限的智能卡來說是不能承受之重。在網絡智能卡中,我們只需要實現可靠的數據傳輸和簡單的地址解析。傳輸層協(xié)議包括TCP和UDP兩種協(xié)議。TCP提供一種面向連接的、可靠的字節(jié)流服務,具有較高的安全性和穩(wěn)定性。UDP是一個簡單的面向數據報的傳輸層協(xié)議,提供不可靠的服務。兩者只需實現其-lp可。智能卡對可靠性及安全性要求較高,若選擇UDP,則需在應用程序中設計相應的機制來保證數據的正確性和完整性,不僅增加了程序設計的復雜度,而且重復設計將造成代碼冗余,浪費空間。因此,在網絡智能卡中,我們選用較為復雜但具有較高安全性和穩(wěn)定性的TCP協(xié)議。
網絡層協(xié)議包括IP、ICMP和IGMP協(xié)議。IP協(xié)議是網絡層上的主要協(xié)議,所有的TCP/IP數據包均通過IP協(xié)議在互聯網上進行傳播,是TCP/IP協(xié)議的核心,必須予以實現。ICMP是IP協(xié)議的附屬協(xié)議。IP層用它來與其他主機或路由交換錯誤報文和其他重要信息。網絡智能卡只需要進行簡單的數據傳輸即可,因此ICMP協(xié)議的大多內容可以不予以實現。為了方便測試傳輸層是否正常,實現ICMP協(xié)議中的ping應答即可。ICMP用于把一個UDP包多播到多個主機。由于選用TCP協(xié)議作為傳輸層協(xié)議,所以ICMP不予實現。
數據鏈路層協(xié)議包括ARP和RARP協(xié)議。以太網上的數據幀傳輸是通過MAC地址來進行識別的,主機需要通過ARP協(xié)議建立IP地址和MAC地址的動態(tài)映射,所以ARP協(xié)議必須實現。RARP為逆向地址解析協(xié)議。無法存儲IP地址的主機可以通過該協(xié)議廣播MAC反向獲取IP,主要用于無盤工作站,在網絡智能卡中可以不予實現。
由于采用EEM協(xié)議,EEM-NSC的物理層及以太網數據幀的傳輸在EEM規(guī)范和USB規(guī)范中有詳細描述,本文不再贅述。裁剪后的TCP/IP協(xié)議棧如圖2所示。
4.2 基于EEM 的TCP/IP協(xié)議棧實現
依據以上優(yōu)化策略,分別對ARP協(xié)議、IP協(xié)議和TCP協(xié)議模塊進行相應的優(yōu)化。首先是ARP協(xié)議模塊的優(yōu)化。當一主機把以太網數據幀發(fā)送到位于同一局域網上的另一臺主機時,是根據48 bit的以太網地址來確定目的接口的l4J。ARP實現了32bit IP地址和48bit以太網地址之間的轉換。具體過程為:源主機廣播名為ARP請求的以太網幀。其中,ARP應答包內包含源主機的IP地址、MAC地址及目的主機的IP。目的主機收到ARP廣播報文后,識別出這是發(fā)送端在詢問它的IP地址,于是發(fā)送一個ARP應答。這個應答包含IP地址及對應的MAC地址。收到ARP應答后即可進行IP數據包的傳輸。因為EEM—NSC工作時只是被動地處理應答,而且同時處理的請求不會太多,因而可以對ARP協(xié)議進行簡化??梢远x一個如圖3所示的固定長度的結構數組。
在此條件下,EEM-NSC不主動發(fā)送ARP請求。當收到主機請求時發(fā)送應答,并搜索arp—cache數組里active不為True的位置。將主機請求包里的主機IP地址和物理
地址存人數組arp—cache中,并將active設置為True。EEM-NSC通過查找數組arp—cache獲得MAC地址并與發(fā)出請求的主機進行通訊。當通訊結束后將該主機對應的記錄的active屬性設置為False。簡化后的ARP協(xié)議只實現了ARP響應,并且將計算機中常用的雙向鏈表結構的arp—cache改為線性數組結構。不僅可以節(jié)約存儲窄間,而且具有較快的查找速度。
然后是IP協(xié)議模塊的優(yōu)化。IP協(xié)議是網絡層的主要協(xié)議,它負責為傳輸層提供無連接的數據分組傳送服務,是TCP/IP協(xié)議棧的核心。EEM-NSC作為一個單純的嵌入式服務器,不需要實現IP層中的路由功能,當以太網數據包中的IP地址跟本機IP不匹配時直接丟棄該以太網數據包即可。發(fā)送數據時通過((destip locip)&locmask)=一0是否成立直接判斷出目的地址是否在本地子網內,若是則直接發(fā)送.否則將數據包發(fā)送給默認網關。
另外,標準IP協(xié)議具有數據包的分段和重組功能。數據包的分段和重組校 復雜,會帶來較大的系統(tǒng)開銷。可根據EEM-NSC的具體應用選擇性地實現IP協(xié)議的分段重組機制。例如,Web服務應用時,請求數據包較小,發(fā)送數據包大,只實現分段機制即可;身份驗證、網絡授權應用發(fā)送、接受數據量都很小,分段重組呵均不實現。這樣,可在保證正常使用的前提下有效減少IP協(xié)議的代碼量。
最后是TCP協(xié)議模塊的優(yōu)化。TCP是一種面向連接的協(xié)議,無論哪一方向另一方發(fā)送數據之前,都必須先在雙方之間建立一條連接。TCP協(xié)議在數據傳輸的過程能夠通過確認應答機制來保證數據的可靠傳輸。TCP模塊的優(yōu)化主要從兩個方面著手:(1)刪除TCP狀態(tài)機中不必要的狀態(tài);(2)簡化TCP的數據傳輸機制。
EEM-NSC運行的均是服務器端的應用,不需要主動向其它主機發(fā)出請求。因此,在建立連接過程中,EEMNSC只需保留被動打開的連接狀態(tài),SYN—SENT狀態(tài)可以省略。當TCP協(xié)議被調用時,讓TCP協(xié)議直接處于LISTEN狀態(tài)來監(jiān)聽客戶端的連接請求,傳輸完數據后主動斷開連接,這樣可以及時地釋放套接字,節(jié)約系統(tǒng)資源。
在計算資源和存儲資源充足的情況下,TCP/IP協(xié)議棧均采用滑動窗口協(xié)議即多個TCP包的發(fā)送、確認、重發(fā)同時進行。數據量不大時可以采用“發(fā)送一停止一等待一確認一發(fā)送”的方式。不實現滑動窗口協(xié)議,TCP協(xié)議每次只發(fā)送一個數據包,等待先前的數據包被確認以后再繼續(xù)發(fā)送。簡化后的TCP協(xié)議可以在最少計算資源和存儲資源消耗的前提下完成被動連接和正常的數據傳輸。
4.3 基于緩沖區(qū)的數據交換
EEM-NSC的緩沖區(qū)是指其I/O接口和各層之間進行數據交換時使用的臨時存儲區(qū)域。緩沖區(qū)的設計直接決定網絡智能卡的吞吐速度及整體性能。
EEM-NSC采用鏈表來存儲需要輸入輸出的數據,這種機制被用于各種BSD風格的TCP/IP的實現以及一些嵌入式的開發(fā)中。
根據局部性原理,在前面幾條指令中使用頻繁的頁面很可能在后面的幾條指令中也頻繁使用。反過來說,已經很久沒有使用的頁面很可能在未來較長的一段時間內也不會被用到。因此,我們設計緩沖區(qū)時,找到最近最少使用的那個頁面調出內存即可。EEM 網絡智能卡鏈式緩沖區(qū)采用數組與鏈表相結合的結構,不僅可以有效地節(jié)約空間,而且擁有較快的查詢速度,其結構如圖4所示。
緩沖區(qū)工作流程分為初始化、數據輸人和數據輸出。在緩沖區(qū)初始化時,創(chuàng)建數組index—tables[],并且設置所有元素的used屬性為False,tmier及l(fā)ength屬性為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 的鏈式緩沖區(qū)的方式需要的空間。例如,長度分別為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的鏈式緩沖區(qū)需要的空間只有數組的61 。在時間上,查找n個長度的鏈表的時間復雜度為O(n),查找EEM-NSC的鏈式緩沖區(qū)的時間復雜度為O(1)。
5 結束語
本文所論述的基于EEM 的網絡智能卡模型及相應機制已經在中興公司的智能卡芯片Zi1221上實現。實踐表明,通過優(yōu)化設計使得TCP/IP協(xié)議棧能夠在網絡智能卡內穩(wěn)定運行,ROM、RAM 占有率及吞吐速度均達到了預期的效果。所采用的手段有兩點:(1)采用基于EEM 的網絡智能卡模型,從接口上保證了數據的吞吐速率;(2)采用基于對TCP/IP協(xié)議棧的代碼進行裁剪和鏈式緩存機制來實現空間和時間上的性能提升。
(文/華中科技大學機械科學與工程學院,吳俊軍,周方圓)