歡迎您訪問鄭州興邦電子股份有限公司官方網站!
    阿里巴巴誠信通企業
    全國咨詢熱線:40000-63966
    興邦電子,中國水控機第一品牌

    聯系興邦電子

    全國咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區蓮花街電子電器產業園

    基于智能卡的嵌入式網絡加密安全系統設計

    文章出處:http://www.xujuanpiju.com 作者:吳成波, 寇雅楠 , 湯 黎   人氣: 發表時間:2011年10月09日

    [文章內容簡介]:針對C/S模式中傳統的用戶層網絡通信方式效率低,安全性差的問題,全面考慮了系統整體的安全保密性能,提出了核·22層實現方案。采用客戶身份認證、數據完整性驗證、傳輸信息加密安全策略,在智能卡的硬件支持和嵌入式uClmux平臺下基于MicrowindowsGUI和TinyWidgets控件集設計實現加密系統。

        引 言
     
        金融安全支付系統是專門針對金融領域應用需求,實現小型化、便捷、安全的自助交易的軟硬件平臺,能夠為多種應用提供高速安全服務,解決目前交易信息在傳輸過程中存在的各種安全問題,實現金融信息的安全交易。基于該嵌入式系統的網絡安全加密系統就是為了保證客戶端的某些重要的數據信息在與銀行服務器通信過程中能夠安全地傳輸。
     
        1 智能卡基礎
     
        1.1 內部結構及特點
     
        智能卡又稱為Ic卡,英文名稱為smart card或Integrated CircuitCard。根據卡中使用的集成電路的不同可以分為存儲器卡、邏輯加密卡、CPU卡和射頻卡。由于CPU卡中集成了微處理器CPU、存儲單元(包括隨機存儲器RAM、程序存儲器ROM(FLASH)、用戶數據存儲器EEPR0M)以及芯片操作系統COS(chipoperating system),從而構成一個完整的計算機系統。
     
        它不僅具有數據存儲功能,同時還具有命令處理和數據安全保護等功能,因此安全性大大增強,從而得到了廣泛的應用,成為智能卡中的主流產品?。本系統所采用的CPU卡,其芯片內核為ASIC硬件實現,安全度非常高,符合ISO/IEC 7816智能卡標準,符合《中國金融集成電路(Ic)卡規范》。其內部結構(如圖1所示),智能卡具有以下特點 :① 自身的物理安全機制和COS的安全體系為CPU卡提供了雙重的安全保證;② 自帶操作系統的CPU卡對計算機網絡系統要求較低,可實現脫機操作;③ 可實現真正意義上的一卡多應用,每個應用之間相互獨立,并受控于各自的密鑰管理系統;④ 存儲容量大,可提供1K~64K字節的數據存儲空間;⑤使用壽命長,數據存儲時間可達l0年以上。


        1.2 主要功能
     
        智能卡具有以下功能:①身份認證:對持卡人、卡終端和卡片3方的合法身份做認證;②支付和結算工具:電子錢包和電子存折的支付手段,可避免攜帶大量現金和找零的不便,提高交易效率;③ 安全模塊:使用相應的密鑰實現加密、解密以及交易處理,從而完成與用戶卡之間的安全認證;④數據載體:CPU卡可作為個人檔案或重要數據的安全載體,數據可至少保存l0年以上。
     
        1.3 工作原理
     
        智能卡安全體系包括3部分:安全狀態、安全屬性以及安全機制。安全狀態是指智能卡當前所處的安全級別,即當前安全狀態寄存器的值。安全屬性又稱為訪問權限,即在進行某種操作時要求安全狀態寄存器的值是什么。安全機制從廣義上說是卡片支持的各種安全模式,從狹義上說是安全狀態實現轉移所采用的方法和手段。一種安全狀態通過上述安全機制轉移到另一種狀態,把該安全狀態與某個安全屬性相比較,如果一致,則表明能夠執行該屬性對應的命令;如果不一致,則相關命令不能被執行,從而達到了安全控制的目的 。這就是智能卡安全體系的基本工作原理。
     
        智能卡主要是對由客戶端發出的信息進行加密和對由服務器端傳來的信息進行解密。該智能卡支持多種對稱密碼體制,它還存儲著客戶端主密鑰和客戶端ID號,通過它可以對文件傳輸過程中產生的各種敏感信息進行加密,對用戶的身份進行認證,以保證信息的安全性和完整性。
     
        在密鑰管理方面,智能卡根據注入其中的客戶端ID號,利用Diversify密鑰分散算法生成客戶端主密鑰。在與密碼服務器進行通信時,服務器取得其ID號,同樣利用密鑰分散算法生成客戶端主密鑰,再利用客戶端主密鑰加密附帶工作密鑰的簽到回應報文傳回客戶端,客戶端的智能卡解密得到工作密鑰,利用工作密鑰調用相應算法完成加解密及消息完整性驗證“】。
     
        2 設計原則
     
        要設計一個網絡安全加密系統,應該考慮以下幾個方面: 

        (1)標準化、模塊化設計原則。在產品軟件和硬件的設計過程中,遵循模塊化設計原則,各個功能模塊相對獨立,各模塊之間界定清晰的接口界面。遵循標準化設計路線,遵循人民銀行PBOC銀行卡規范(算法除外),采用標準的接口,提供標準化的安全服務;
     
        (2)適應性、可擴展性原則。總體設計緊密結合實際應用,能夠適應復雜應用環境及其通信線路、多種操作系統平臺、Web服務平臺、瀏覽器平臺,支持各種流行的開發環境。另外,具有可擴展性,能夠適應未來需求變化,能夠應對安全威脅變化帶來的新的安全風險,保障本系統在其整個生命周期的安全;
     
        (3)合理的密鑰管理。密鑰的安全控制和管理是系統設計的關鍵,在保證系統安全的基礎上,密鑰管理體系的設計盡量簡潔、實用;
     
        (4)要在系統合適的地方對傳輸報文中的關鍵敏感字段進行加密保護。如果在低級的地方進行加密,就會因為過于相信底層的系統元素,而這些離用戶層太遠,即使被替換也不會引起用戶的注意,這就引入了脆弱性;如果加密模塊離用戶太近,用戶的頻繁干預會很容易引入錯誤,不適合平常的使用。基于以上考慮,一個網絡安全加密系統在保證安全的同時,還要保證系統的運行效率和易用性。所以本文設計的加密系統體現出以下原則 :
     
        (1)易用性。無論客戶端還是服務器端,用戶都不用關心加密和解密操作,所有的加解密操作和用戶身份認證操作都由安全模塊來自動完成;
     
        (2)安全性。采用多方面的安全機制,加密芯片自身具有身份認證和很強物理防分析機制,并且密鑰的使用受用戶口令保護。設置3級密鑰管理體制,建立密鑰管理中心,制定統一的安全管理策略,對全網密碼設備的使用進行統一的安全監測和管理;
     
        (3)系統的高效率。加密系統不占用太多的內存,盡量使用系統中的各種緩存,以保證系統的整體效率不受太大影響;
     
        (4)對嵌入式操作系統的其它部分影響盡量小。加密系統不干擾操作系統其它部分的執行,安全模塊獨立。
     
        3 實現方式
     
        傳統用戶層實現方式中(如圖2所示),安全模塊放在用戶層,在應用程序要寫文件的時候,數據要從用戶層的應用程序經過系統調用進入系統核心層,核心層需要將數據交給應用層的安全模塊處理,安全模塊將數據處理完畢后再經過系統調用進入系統核一tl,層,最后核心層將數據送到遠程服務器。數據在用戶層和核心層多次交換,應用程序也需要在核心空問和用戶空問多次切換,在用戶空問和核心空問均需要對數據進行緩存,這樣必然使系統的效率降低,而且,運行在應用層的安全模塊很容易受到威脅。比如運行在核心空間的進程可以沒有任何限制地訪問應用層的內存,從而也就可以訪問安全模塊的內存空問,導致機密信息泄漏。但是這樣實現具有系統兼容性好,實現簡單,對系統改動小的優點,可以非常容易地在不同的操作系統上移植。
     

        我們所采用的核心層實現方式(如圖3所示)將安全模塊放到核心層實現,這樣數據只需從應用程序所在的用戶空間通過系統調用進入核心層,通過核心層的安全模塊進行處理,也就沒有了多個空問層次的切換,系統的效率得到很大的提高。同時,將系統代碼固化在Flash中,不支持對系統存儲區域的寫操作,因此一般的網絡病毒或木馬無法植于系統的可執行代碼存儲區中,這種固化特性使得通過客戶端來攻擊Web服務器變得非常困難。另外,在生成操作系統運行代碼時只開放了8080瀏覽端口,禁用了其它不必要的網絡服務端口,通過網絡手段登陸客戶端再進而以合法身份對Web服務器進行攻擊也是不易做到的。線路上的中問攻擊因為加密而難以實施,并且如果Web服務器沒有受到攻擊,則瀏覽安全的Web服務器~ 般不會受到攻擊。所以,核心層實現方式所采用的系統固化、禁用服務、關鍵配置設定等安全增強措施極大的提高了系統的安全性和可靠性。

        4 網絡安全加密系統的設計與實現
     
        4.1 Microwindows和TinyWidgets基礎

        Microwindows(如圖4所示)是一個著名的開放源碼的嵌入式GUI軟件,目的是把圖形視窗環境引入到運行Linux的小型設備和平臺上。作為XWindow的替代品,Microwindows可以使用更少的RAM和文件存儲空間(100 K~600 K)提供與x Window 相似的功能。Microwindows允許設計者輕松加入各種顯示設備、鼠標、觸摸屏和鍵盤等 。

        Microwindows的可移植性非常好,基本上用c語言實現,只有某些關鍵代碼使用了匯編以提高速度。Microwindows支持Intel 16位、32位cPu,MIPS R4000以及ARM 芯片。盡管Microwindows完全支持Linux,但是它內部的可移植結構是基于一個相對簡單的屏幕設備接口,可在許多不同的RTOS和裸機上運行。Microwindows系統以圖形方式支持在主機平臺上的仿真目標平臺。這樣, 為Linux設計的Microwindows應用程序就可以在臺式機上進行編寫和開發而不用進行交叉編譯就可測試和運行,并且直接在目標平臺上運行。
     
        MicroWindows是一個基于典型客戶/服務器體系結構的GUI系統,基本分為3層。最底層是面向圖形輸出和鍵盤、鼠標或觸摸屏的驅動程序;中間層提供底層硬件的抽象接口,并進行窗口管理;最高層分別提供兼容于X.Window和WindowscE(win32子集)的API。但由于Microwindows沒有實現窗口管理,這樣對窗口的管理就需要系統提供一個插件集。TinyWidget就是這樣的一個控件集供程序員來調用。TinyWidge~是一個基于Microwindows的c控件集,提供了一些比較基本的控件對象,比如窗口、按鈕、標簽、文本輸入框、列表框和組合框等。
     
        4.2 uClinux及其文件系統構建方案
     
        嵌入式操作系統uClinux(micro.contro1.Linux)是模塊化,簡化版的Linux,具有可剪裁、可配置、高安全性、好的可移植性和擴展性等特點,容易進行升級換代,以不斷適應新的應用 。 

        uClinux系統采用romfs文件系統,這種文件系統相對于一般的ext2文件系統要求更少的空間。空間的節約來自于兩個方面,首先內核支持romfs文件系統比支持ext2文件系統需要更少的代碼,其次romfs文件系統相對簡單,在建立文件系統超級塊(superblock)需要更少的存儲空間。Romfs文件系統不支持動態擦寫保存,對于系統需要動態保存的數據采用虛擬ram盤的方法進行處理。ram盤將采用ext2(第二擴展文件系統)或者jffs2(日志閃存文件系統)。
     
        因此,綜合考慮存儲空間可用性因素,我們可以混合使用romfs和jffs2文件系統。使用romfs文件系統可以得到更大的空間節省和更快的運行速度,使用jfs2文件系統可以為用戶提供讀寫空間,方便用戶添加自己的個人文件和數據。Romfs文件系統作為uClinux的根文件系統,可以將jffs2文件系統掛載到romfs的/home目錄下供用戶來讀寫。
     
        4.3 具體實現
     
        我們采用Microwindows做界面,在uClinux下通過調用智能卡的命令實現對信息的加解密操作。具體實現包括:①身份認證,保證通信雙方身份的有效;②采用高強度加密算法對通訊數據進行加密和解密,上傳時相關數據被加密,下收時相關數據首先被解密,然后再作另行處理;⑧ 安全報文傳送,保證數據的可靠性、完整性和對發送方的認證。
     
        4-3.1 身份認證
     
        客戶端的身份是由安全模塊確定的,每一個安全模塊具有一個惟一的ID號,在實際交易前,客戶端發送簽到報文將ID號上傳服務器,服務器首先檢驗該ID的合法性,通過后則下發加密后的工作密鑰,如果客戶端能夠解密得出工作密鑰并繼續進行交易,則表明服務器的身份是合法的,從而完成對客戶端的實體認證;簽到完成后,服務器要求用戶輸入用戶名、口令,并對ID號、用戶名、口令進行驗證,完成對客戶的身份認證。
     
        4.3.2 加解密
     
        加解密采用的是已經燒到智能卡中的高強度對稱加密算法和128位的數據加密密鑰對傳輸報文中的關鍵敏感字段進行加密。
     
        (1)數據加密步驟
        第1步:用LD表示明文數據的長度,在明文數據前加上LD產生新數據塊;
     
        第2步:將第1步中生成的數據塊分解成8字節數據塊,標號為D ,D ,D ,D 等。最后一個數據塊的長度有可能不足8位;
     
        第3步:如果最后(或惟一)的數據塊長度等于8字節,轉入第4步;如果不足8字節,在右邊添加16進制數字“80”。如果長度已達8字節,轉入第4步;否則,在其右邊添加1字節16進制數字“0”直到長度達到8字節;
     
        第4步:對每個數據塊用相應的密鑰進行加密;
     
        第5步:計算結束后,所有加密后的數據塊依照原順序連接在一起(加密后的D ,加密后的D:等),并將結果數據塊插入到命令數據域中。
     
        (2)數據解密步驟
     
        第1步:將命令數據域中的數據塊分解成8字節長的數據塊,標號為D ,D ,D ,D4等,用與加密相同的密鑰進行解密;
        第2步:計算結束后,所有解密后的數據塊依照順序(解密后的D。,解密后的D 等)鏈接在一起。數據塊由LD,明文數據,填充字符組成;
        第3步:因為LD表示明文數據的長度,因此,它被用來恢復明文數據。
     
        4-3-3 安全報文傳送

        數據完整性和對發送方的認證通過使用消息認證碼MAC(message authentication code)來實現。MAC是消息內容和密鑰的公開函數,其輸出是定長的短數據塊:MAC=C(M,K)。其中M 是消息內容,K是通信雙方共享的密鑰,C是MAC值的生成算法。算法C要求已知M1和C(M1.K),無法構造出滿足C(M2,K)=C(Ml,K)的報文M2,所以MAC能惟一鑒別原報文。消息鑒別密鑰(MAK)利用3DES算法計算交易信息的MAC值進行消息鑒別,通過對報文進行消息鑒別運算,確保報文不被篡改。
     
        (1)3DES算法:3DES算法是指使用16字節密鑰K=(KL,KR)將8字節明文數據塊加密成8字節密文數據塊,如下所示:Y=DES(KL)[DES.1(KR)[DES(KL[x])]]。解密的方式如下:x=DES.1(KL)[DES(KR)[DES.1(KL[Y])]]。
     
        (2)消息鑒別算法:提取傳輸報文中的關鍵敏感字段,以8字節為單位劃分成若干個數據塊,當最后的數據塊長度不足8字節時后補OX00。劃分完畢后,將每一個數據塊作為一個參與運算的數據塊(D ),初值為8字節的十六進制0。最終得到MAC值是計算結果 。左側取得的4字節長度十六進制數。算法流程如圖5所示 。
     
        5 結束語
     
        本系統針對客戶端網絡接入開放性結構的安全保密需求,綜合采用多種安全措施,實現了對交易信息關鍵字段的傳輸加密保護與消息認證,確保交易信息安全及其加密設備的安全,具有較強的網絡適應性。由于系統采用了公開源代碼的操作系統,使得集成各種通信應用成為可能,能夠很好的適應未來金融通信的發展。

        在以后的工作中,我們還需要從硬件、穩定性、使用環境各方面加強系統的抗攻擊能力。

    本文關鍵詞:智能卡,嵌入式網絡,網絡加密
    回到頂部