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