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