摘要:本文提出了利用SoC 芯片Garfield,設計基于uClinux 操作系統和TCP/IP 網絡的銀行自助設備——網絡安全終端。從網絡安全終端的功能定義與系統方案、網絡安全終端的硬件實現原理圖與樣機制作、uClinux 操作系統在Garfield 芯片上的移植、網絡安全終端各接口驅動以及TCP/IP 驅動的編制、終端安全性的實現和終端與相應銀行交易系統B/S 架構下應用程序的開發等方面論述了系統實現的過程。 引言 隨著國內銀行業務量的迅速發展,銀行需要能有效解決銀行網點前臺業務量大,耗時長等問題,并為持卡人提供安全迅捷服務的一種自助型終端產品。網絡安全終端系統就是針對這一需求,在銀行現有網絡的基礎上開發的低成本嵌入式產品。本系統的研制對于以銀行為代表的各金融企業的終端服務以及方便人們的生活具有重要的意義。 1. 網絡安全系統的總體設計 網絡安全終端要實現用戶的交易操作,必須將用戶的交易信息傳遞給銀行后臺。基于銀行現有的網絡,網絡安全終端必需具備網絡通信功能才能與銀行后臺交互數據。網絡安全終端是用于銀行交易的,一旦網絡安全終端傳遞給銀行后臺的數據被竊取或篡改,都將導致用戶和銀行的巨大損失。因此,網絡安全終端必須確保其傳遞數據的安全性。 1.1 網絡安全終端交易系統的體系框架 基于局域網的網絡安全終端交易系統,主要由接入服務器系統、密鑰生成與管理系統、終端發卡系統、終端管理系統等部分組成,如圖1 所示。 圖 1 網絡安全系統結構圖 1.2 網絡安全終端的模塊需求設計 根據功能需求及技術需求,網絡安全終端須具備以下模塊:核心處理模塊:基于ARM7TDMI 核的SoC 芯片Garfield 作為主處理器,附加SDRAM,FlasliROM 等外圍電路并在Garfield 上移植uCLinux 操作系統。該模塊負責協調整個系統工作,進行各個模塊的管理、數據處理/存儲、任務調度及決策等。 網卡模塊:接入以太網,與接入前置機交互數據,實現基于 TCP/IP 協議的數據通信。人機交互模塊:人機交互模塊是實現用戶與終端之間的通訊和對話,通過液晶顯示屏和鍵盤等設備,提供豐富友好的操作界面及人工介入功能等人性化的設計,為用戶操作提供可靠的支持。 安全處理模塊:采用 PSAM 卡硬件加密,實現網絡安全終端對重要信息的加密,來滿*易系統對網絡安全終端安全性的需求。 2. 網絡安全系統的硬件設計 硬件平臺主要分成兩部分:主系統和安全處理子系統。主系統和安全處理子系統之間通過串口來實現數據交換。主系統主要包括主處理器、電源模塊、存儲模塊、人機交互模塊、網卡模塊等,其原理圖如圖2 所示。 圖 2 網絡安全終端的硬件平臺 2.1 主處理器存儲接口電路 由于 16 位數據訪問方式即可滿足網絡安全終端對存儲速度的要求,與32 位數據訪問方式相比,可大大減小硬件布局布線的難度,從而提高產品的性價比,因此網絡安全終端選用16 位訪問方式。由于處理器的數據寬度配置為16 位訪問外部啟動存儲器,故下面的存儲設備均選擇16 位數據線連接。存儲模塊主要包含8M 字節的FLASH 和16M 字節的SDRAM。 圖 3 存儲模塊接口 2.2 網絡模塊接口電路 網絡安全終端采用 RTL8019AS 實現網絡模塊的物理層。它們之間的通信主要是通過總線和一些控制信號來完成的。由于網卡模塊使用的是Garfield 的總線(數據和地址總線),所以將網卡模塊的低10 根地址線及低16 根數據線與之相應連接。同時由于網卡模塊需要有一些控制引腳來實現對網卡模塊的控制(如啟動、復位、中斷、讀、寫等),因此可以使用主處理器的引腳來和這些引腳連接。Garfield 的很多引腳可以復用為特殊的控制信號和GPIO 口。 所有的GPIO 口都可以通過獨立編程來控制它的輸入輸出方向和輸出電平的高低,而且可以將GPIO 引腳設置為中斷功能,可以靈活地監測各種類型信號的變化,來實現對網卡模塊的監控,其電路圖如4 所示。 圖 4 網卡模塊接口 2.3 安全處理子系統電路 安全處理子系統主要包含:協處理器 C52,磁卡讀卡器和PSAM 卡。安全處理子系統的工作如下:協處理器C52 讀取磁卡信息,將信息傳遞給PSAM 卡進行加密,并將PSAM卡加密后的信息傳遞給主系統,安全處理子系統與網絡安全終端的集成接口如下圖5 所示。 圖 5 安全處理子系統接口 3. 網絡安全終端的軟件設計 在對嵌入式產品的體系模型研究的基礎上,進行基于Garfield 的網絡安全終端的軟件框架設計。軟件實現部分包括:uClinux 在Garfield 處理器上的移植、uClinux 的網卡驅動移植、安全網絡通信的設計,以及交易流程的實現。 3.1 uClinux 在Garfield 處理器上的移植 首先是內核配置系統,配置信息保存在配置文件.config 中,原有的.config 文件被更名為.config.old。Makefile 根據.config 中的配置信息,構造并編譯源文件列表,通過鏈接器腳本,把目標代碼鏈接到一起,最終形成Linux Kernel Image 。然后設置內核啟動入口,入口代碼是linux/arch/armnommu/kernel/head-army.S。對于中斷處理,uClinux Kernel 的C 代碼入口函數start_kernel()定義在linux/init/main.c 中。該函數首先調用setup_arch()處理內核啟動參數等內容,然后對中斷進行處理。 最后進行系統時鐘設計,Garfield 中的定時器是片內集成的定時器,能夠向系統提供定時中斷。網絡安全終端使用Garfield 的Timed 的重啟計數模式,將其作為系統時鐘源。 3.2 網絡設備驅動的實現 網絡設備驅動程序主要由初始化部分和數據包的發送與接收部分組成,相關程序代碼在linux-2.4.x/drivers/net/ne.c 和linux-2.4.x/drivers/net/8390.c 中,其實現的關鍵代碼如下: 主要的初始化函數 int init ne}robe(struct net device *dev) 檢測網卡的復位響應代碼如下: bad card=((dev->basa_ addr != 0)&&(de->mem end==0xbad)); { unsigned long reset start time = jiffies; Outb(inb(ioaddr+NE_RESET), ioaddr+NE_RESET); while ((inb_p(ioaddr+ENO_ISR)& RNISR_RESET)==0) if(jiffies-reset_start_time>2*HZ/100){ if (bad card){ printk(" (warning: no reset ack)"); break; }else{ printk(" not found (no reset ack)\n"); ret= - ENODEV; goto err_out; } } outb}(oxff, ioaddr+ENO_ ISR); } 3.3 安全性通信的實現 網絡安全終端的主系統通過將重要信息發送給安全處理子系統,由安全處理子系統將信息加密。主系統接收該密文并發送,信息以密文的形式在網絡中傳遞,這樣可以滿足終端安全的需求。網絡安全終端是通過主處理器的uart2 與安全處理子系統的協處理器C52 進行串口通信的。 串口通信編程的實現過程如下: (1) 串口操作涉及的頭文件,linux/include/asm/arch-GFD/serial.h。 (2) 打開串口,Linux 下串口的設備文件是/dev/ttySO, /dev/ttySl 等。 (3) 設置串口,最基本的設置串口包括波特率設置,校驗位和停止位設置。串口的設置主要是設置struct ermios 結構體的各成員值。 (4) 寫數據到端口,數據到端口只需要使用write 系統調用去傳送數據。 (5) 從端口讀數據,以行數據模式操作端口,每個read 系統調用都會返回,不論多少字符實際存在于串行輸入緩沖中。如果沒有字符存在,調用將阻塞(等待)到有字符進入,或出現超時和錯誤。 3.4 用戶主程序 圖 6 主程序流程圖 主程序主要為本系統提供應用操作,包含在自定義的user/ethterminal 文件夾中。系統初始化定義在SysInit()中,對自定義的參數進行初始化,如消息等。由于這里的人機交互模塊是自定義的LCD 顯示,沒有用minigui 等來實現,而采用自定義圖形顯示函數來實現的鍵盤采用輪詢方式檢測,故有一部分設備初始化工作在這里完成。 系統自檢:定義在 SystemCheck()中。對安全處理子系統、網絡模塊、存儲模塊等進行檢測,并在顯示器給出相應提示信息。 與監控服務器連接:定義在 SendDevStaToRemCtrl()中。主要用于通過網絡來實現本系統的軟件管理以及后繼版本升級等。 在完成與監控服務器的連接后,網絡安全終端 LCD 屏上會顯示“XX 銀行”的操作界面,開始等待用戶的操作;若操作超時,將進入液晶屏保護程序,否則進入主菜單循環。 4 結束語 本文在銀行交易系統對銀行自助終端需求分析的基礎上,提出了利用東南大學國家專用集成電路系統工程技術研究中心自主研發的ARM7TDMI內核的嵌入式SoC芯片Garfield,設計出基于ucLinux 操作系統和TCP/IP 網絡的銀行自助設備——網絡安全終端,通過原理圖設計、操作系統移植、接口和應用程序的開發,本系統樣機通過了銀行模擬交易系統的測試,該終端系統達到了設計的要求。 |