嵌入式銀行網絡安全終端系統的設計
隨著國內銀行業務量的迅速發展,銀行需要能有效解決銀行網點前臺業務量大,耗時長等問題,并為持卡人提供安全迅捷服務的一種自助型終端產品。網絡安全終端系統就是針對這一需求,在銀行現有網絡的基礎上開發的低成本嵌入式產品。本系統的研制對于以銀行為代表的各金融企業的終端服務以及方便人們的生活具有重要的意義。
1.網絡安全系統的總體設計網絡安全終端要實現用戶的交易操作,必須將用戶的交易信息傳遞給銀行后臺。基于銀行現有的網絡,網絡安全終端必需具備網絡通信功能才能與銀行后臺交互數據。網絡安全終端是用于銀行交易的,一旦網絡安全終端傳遞給銀行后臺的數據被竊取或篡改,都將導致用戶和銀行的巨大損失。因此,網絡安全終端必須確保其傳遞數據的安全性。
1.1網絡安全終端交易系統的體系框架
基于局域網的網絡安全終端交易系統,主要由接入服務器系統、密鑰生成與管理系統、終端發卡系統、終端管理系統等部分組成,如圖 1所示。
?
1.2網絡安全終端的模塊需求設計根據功能需求及技術需求,網絡安全終端須具備以下模塊:核心處理模塊:基于 ARM7TDMI核的 SoC芯片 Garfield作為主處理器,附加 SDRAM,FlasliROM等外圍電路并在 Garfield上移植 uCLinux操作系統。該模塊負責協調整個系統工作,進行各個模塊的管理、數據處理/存儲、任務調度及決策等。網卡模塊:接入以太網,與接入前置機交互數據,實現基于 TCP/IP協議的數據通信。人機交互模塊:人機交互模塊是實現用戶與終端之間的通訊和對話,通過液晶顯示屏和鍵盤等設備,提供豐富友好的操作界面及人工介入功能等人性化的設計,為用戶操作提供可靠的支持。安全處理模塊:采用 PSAM卡硬件加密,實現網絡安全終端對重要信息的加密,來滿足交易系統對網絡安全終端安全性的需求。
2.網絡安全系統的硬件設計
硬件平臺主要分成兩部分:主系統和安全處理子系統。主系統和安全處理子系統之間通過串口來實現數據交換。主系統主要包括主處理器、電源模塊、存儲模塊、人機交互模塊、網卡模塊等,其原理圖如圖 2所示。
?
2.1主處理器存儲接口電路
由于 16位數據訪問方式即可滿足網絡安全終端對存儲速度的要求,與 32位數據訪問方式相比,可大大減小硬件布局布線的難度,從而提高產品的性價比,因此網絡安全終端選用 16位訪問方式。由于處理器的數據寬度配置為 16位訪問外部啟動存儲器,故下面的存儲設備均選擇 16位數據線連接。存儲模塊主要包含 8M字節的 FLASH和 16M字節的 SDRAM。
?
2.2網絡模塊接口電路
網絡安全終端采用 RTL8019AS實現網絡模塊的物理層。它們之間的通信主要是通過總線和一些控制信號來完成的。由于網卡模塊使用的是 Garfield的總線(數據和地址總線 ),所以將網卡模塊的低 10根地址線及低 16根數據線與之相應連接。同時由于網卡模塊需要有一些控制引腳來實現對網卡模塊的控制(如啟動、復位、中斷、讀、寫等 ),因此可以使用主處理器的引腳來和這些引腳連接。Garfield的很多引腳可以復用為特殊的控制信號和 GPIO口。所有的 GPIO口都可以通過獨立編程來控制它的輸入輸出方向和輸出電平的高低,而且可以將 GPIO引腳設置為中斷功能,可以靈活地監測各種類型信號的變化,來實現對網卡模塊的監控,其電路圖如 4所示。
?
2.3安全處理子系統電路
安全處理子系統主要包含:協處理器 C52,磁卡讀卡器和 PSAM卡。安全處理子系統的工作如下:協處理器 C52讀取磁卡信息,將信息傳遞給 PSAM卡進行加密,并將 PSAM卡加密后的信息傳遞給主系統,安全處理子系統與網絡安全終端的集成接口如下圖 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用戶主程序
?
主程序主要為本系統提供應用操作,包含在自定義的 user/ethterminal文件夾中。系統初始化定義在 SysInit()中,對自定義的參數進行初始化,如消息等。由于這里的人機交互模塊是自定義的 LCD顯示,沒有用 minigui等來實現,而采用自定義圖形顯示函數來實現的鍵盤采用輪詢方式檢測,故有一部分設備初始化工作在這里完成。
系統自檢:定義在 SystemCheck()中。對安全處理子系統、網絡模塊、存儲模塊等進行檢測,并在顯示器給出相應提示信息。
與監控服務器連接:定義在 SendDevStaToRemCtrl()中。主要用于通過網絡來實現本系統的軟件管理以及后繼版本升級等。
在完成與監控服務器的連接后,網絡安全終端 LCD屏上會顯示“XX銀行”的操作界面,開始等待用戶的操作;若操作超時,將進入液晶屏保護程序,否則進入主菜單循環。
4結束語
本文在銀行交易系統對銀行自助終端需求分析的基礎上,提出了利用東南大學國家專用集成電路系統工程技術研究中心自主研發的ARM7TDMI內核的嵌入式SoC芯片Garfield,設計出基于 ucLinux操作系統和 TCP/IP網絡的銀行自助設備——網絡安全終端,通過原理圖設計、操作系統移植、接口和應用程序的開發,本系統樣機通過了銀行模擬交易系統的測試,該終端系統達到了設計的要求。
參考文獻
[1]劉崢嶸等,《嵌入式 Linux應用開發詳解》,機械工業出版社
[2]田澤,丁敦山,盛世敏,《ARM SOC體系結構》,北京航空航天大學出版社
[3]范建華等,《TCP/IP詳解卷 1:協議》,機械工業出版社
[4]杜春蕾,《ARM體系結構與編程》,清華大學出版社
[5]龔儉等著,《計算機網絡安全導論》,東南大學出版社
[6] 葉瑋瓊,余永權,劉志煌.智能家居電力線總線研究與實現 [J].微計算機信息,2008, 3-2: 305-307。
電子發燒友App















評論