基于EEM 的網絡智能卡研究
文章出處:http://www.nyfzw.net 作者:吳俊軍,周方圓 人氣: 發表時間: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協議??梢詫⒛壳暗木W絡智能卡模型分為兩大類。一類是無內嵌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進行數據包的通信,從而可使應用程序通過高層的應用層協議來訪問智能卡內部的資源,同時結合智能卡天生所具備的安全性,極大方便了安全應用程序的開發?;贓EM的網絡智能卡的框架如圖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協議進行簡化??梢远x一個如圖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協議棧的代碼進行裁剪和鏈式緩存機制來實現空間和時間上的性能提升。
(文/華中科技大學機械科學與工程學院,吳俊軍,周方圓)