基于智能卡的嵌入式網(wǎng)絡(luò)加密安全系統(tǒng)設(shè)計(jì)
文章出處:http:// 作者:吳成波, 寇雅楠 , 湯 黎 人氣: 發(fā)表時(shí)間:2011年10月09日
引 言
金融安全支付系統(tǒng)是專門針對金融領(lǐng)域應(yīng)用需求,實(shí)現(xiàn)小型化、便捷、安全的自助交易的軟硬件平臺(tái),能夠?yàn)槎喾N應(yīng)用提供高速安全服務(wù),解決目前交易信息在傳輸過程中存在的各種安全問題,實(shí)現(xiàn)金融信息的安全交易?;谠撉度胧较到y(tǒng)的網(wǎng)絡(luò)安全加密系統(tǒng)就是為了保證客戶端的某些重要的數(shù)據(jù)信息在與銀行服務(wù)器通信過程中能夠安全地傳輸。
1 智能卡基礎(chǔ)
1.1 內(nèi)部結(jié)構(gòu)及特點(diǎn)
智能卡又稱為Ic卡,英文名稱為smart card或Integrated CircuitCard。根據(jù)卡中使用的集成電路的不同可以分為存儲(chǔ)器卡、邏輯加密卡、CPU卡和射頻卡。由于CPU卡中集成了微處理器CPU、存儲(chǔ)單元(包括隨機(jī)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM(FLASH)、用戶數(shù)據(jù)存儲(chǔ)器EEPR0M)以及芯片操作系統(tǒng)COS(chipoperating system),從而構(gòu)成一個(gè)完整的計(jì)算機(jī)系統(tǒng)。
它不僅具有數(shù)據(jù)存儲(chǔ)功能,同時(shí)還具有命令處理和數(shù)據(jù)安全保護(hù)等功能,因此安全性大大增強(qiáng),從而得到了廣泛的應(yīng)用,成為智能卡中的主流產(chǎn)品?。本系統(tǒng)所采用的CPU卡,其芯片內(nèi)核為ASIC硬件實(shí)現(xiàn),安全度非常高,符合ISO/IEC 7816智能卡標(biāo)準(zhǔn),符合《中國金融集成電路(Ic)卡規(guī)范》。其內(nèi)部結(jié)構(gòu)(如圖1所示),智能卡具有以下特點(diǎn) :① 自身的物理安全機(jī)制和COS的安全體系為CPU卡提供了雙重的安全保證;② 自帶操作系統(tǒng)的CPU卡對計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)要求較低,可實(shí)現(xiàn)脫機(jī)操作;③ 可實(shí)現(xiàn)真正意義上的一卡多應(yīng)用,每個(gè)應(yīng)用之間相互獨(dú)立,并受控于各自的密鑰管理系統(tǒng);④ 存儲(chǔ)容量大,可提供1K~64K字節(jié)的數(shù)據(jù)存儲(chǔ)空間;⑤使用壽命長,數(shù)據(jù)存儲(chǔ)時(shí)間可達(dá)l0年以上。
1.2 主要功能
智能卡具有以下功能:①身份認(rèn)證:對持卡人、卡終端和卡片3方的合法身份做認(rèn)證;②支付和結(jié)算工具:電子錢包和電子存折的支付手段,可避免攜帶大量現(xiàn)金和找零的不便,提高交易效率;③ 安全模塊:使用相應(yīng)的密鑰實(shí)現(xiàn)加密、解密以及交易處理,從而完成與用戶卡之間的安全認(rèn)證;④數(shù)據(jù)載體:CPU卡可作為個(gè)人檔案或重要數(shù)據(jù)的安全載體,數(shù)據(jù)可至少保存l0年以上。
1.3 工作原理
智能卡安全體系包括3部分:安全狀態(tài)、安全屬性以及安全機(jī)制。安全狀態(tài)是指智能卡當(dāng)前所處的安全級(jí)別,即當(dāng)前安全狀態(tài)寄存器的值。安全屬性又稱為訪問權(quán)限,即在進(jìn)行某種操作時(shí)要求安全狀態(tài)寄存器的值是什么。安全機(jī)制從廣義上說是卡片支持的各種安全模式,從狹義上說是安全狀態(tài)實(shí)現(xiàn)轉(zhuǎn)移所采用的方法和手段。一種安全狀態(tài)通過上述安全機(jī)制轉(zhuǎn)移到另一種狀態(tài),把該安全狀態(tài)與某個(gè)安全屬性相比較,如果一致,則表明能夠執(zhí)行該屬性對應(yīng)的命令;如果不一致,則相關(guān)命令不能被執(zhí)行,從而達(dá)到了安全控制的目的 。這就是智能卡安全體系的基本工作原理。
智能卡主要是對由客戶端發(fā)出的信息進(jìn)行加密和對由服務(wù)器端傳來的信息進(jìn)行解密。該智能卡支持多種對稱密碼體制,它還存儲(chǔ)著客戶端主密鑰和客戶端ID號(hào),通過它可以對文件傳輸過程中產(chǎn)生的各種敏感信息進(jìn)行加密,對用戶的身份進(jìn)行認(rèn)證,以保證信息的安全性和完整性。
在密鑰管理方面,智能卡根據(jù)注入其中的客戶端ID號(hào),利用Diversify密鑰分散算法生成客戶端主密鑰。在與密碼服務(wù)器進(jìn)行通信時(shí),服務(wù)器取得其ID號(hào),同樣利用密鑰分散算法生成客戶端主密鑰,再利用客戶端主密鑰加密附帶工作密鑰的簽到回應(yīng)報(bào)文傳回客戶端,客戶端的智能卡解密得到工作密鑰,利用工作密鑰調(diào)用相應(yīng)算法完成加解密及消息完整性驗(yàn)證“】。
2 設(shè)計(jì)原則
要設(shè)計(jì)一個(gè)網(wǎng)絡(luò)安全加密系統(tǒng),應(yīng)該考慮以下幾個(gè)方面:
(1)標(biāo)準(zhǔn)化、模塊化設(shè)計(jì)原則。在產(chǎn)品軟件和硬件的設(shè)計(jì)過程中,遵循模塊化設(shè)計(jì)原則,各個(gè)功能模塊相對獨(dú)立,各模塊之間界定清晰的接口界面。遵循標(biāo)準(zhǔn)化設(shè)計(jì)路線,遵循人民銀行PBOC銀行卡規(guī)范(算法除外),采用標(biāo)準(zhǔn)的接口,提供標(biāo)準(zhǔn)化的安全服務(wù);
(2)適應(yīng)性、可擴(kuò)展性原則??傮w設(shè)計(jì)緊密結(jié)合實(shí)際應(yīng)用,能夠適應(yīng)復(fù)雜應(yīng)用環(huán)境及其通信線路、多種操作系統(tǒng)平臺(tái)、Web服務(wù)平臺(tái)、瀏覽器平臺(tái),支持各種流行的開發(fā)環(huán)境。另外,具有可擴(kuò)展性,能夠適應(yīng)未來需求變化,能夠應(yīng)對安全威脅變化帶來的新的安全風(fēng)險(xiǎn),保障本系統(tǒng)在其整個(gè)生命周期的安全;
(3)合理的密鑰管理。密鑰的安全控制和管理是系統(tǒng)設(shè)計(jì)的關(guān)鍵,在保證系統(tǒng)安全的基礎(chǔ)上,密鑰管理體系的設(shè)計(jì)盡量簡潔、實(shí)用;
(4)要在系統(tǒng)合適的地方對傳輸報(bào)文中的關(guān)鍵敏感字段進(jìn)行加密保護(hù)。如果在低級(jí)的地方進(jìn)行加密,就會(huì)因?yàn)檫^于相信底層的系統(tǒng)元素,而這些離用戶層太遠(yuǎn),即使被替換也不會(huì)引起用戶的注意,這就引入了脆弱性;如果加密模塊離用戶太近,用戶的頻繁干預(yù)會(huì)很容易引入錯(cuò)誤,不適合平常的使用?;谝陨峡紤],一個(gè)網(wǎng)絡(luò)安全加密系統(tǒng)在保證安全的同時(shí),還要保證系統(tǒng)的運(yùn)行效率和易用性。所以本文設(shè)計(jì)的加密系統(tǒng)體現(xiàn)出以下原則 :
(1)易用性。無論客戶端還是服務(wù)器端,用戶都不用關(guān)心加密和解密操作,所有的加解密操作和用戶身份認(rèn)證操作都由安全模塊來自動(dòng)完成;
(2)安全性。采用多方面的安全機(jī)制,加密芯片自身具有身份認(rèn)證和很強(qiáng)物理防分析機(jī)制,并且密鑰的使用受用戶口令保護(hù)。設(shè)置3級(jí)密鑰管理體制,建立密鑰管理中心,制定統(tǒng)一的安全管理策略,對全網(wǎng)密碼設(shè)備的使用進(jìn)行統(tǒng)一的安全監(jiān)測和管理;
(3)系統(tǒng)的高效率。加密系統(tǒng)不占用太多的內(nèi)存,盡量使用系統(tǒng)中的各種緩存,以保證系統(tǒng)的整體效率不受太大影響;
(4)對嵌入式操作系統(tǒng)的其它部分影響盡量小。加密系統(tǒng)不干擾操作系統(tǒng)其它部分的執(zhí)行,安全模塊獨(dú)立。
3 實(shí)現(xiàn)方式
傳統(tǒng)用戶層實(shí)現(xiàn)方式中(如圖2所示),安全模塊放在用戶層,在應(yīng)用程序要寫文件的時(shí)候,數(shù)據(jù)要從用戶層的應(yīng)用程序經(jīng)過系統(tǒng)調(diào)用進(jìn)入系統(tǒng)核心層,核心層需要將數(shù)據(jù)交給應(yīng)用層的安全模塊處理,安全模塊將數(shù)據(jù)處理完畢后再經(jīng)過系統(tǒng)調(diào)用進(jìn)入系統(tǒng)核一tl,層,最后核心層將數(shù)據(jù)送到遠(yuǎn)程服務(wù)器。數(shù)據(jù)在用戶層和核心層多次交換,應(yīng)用程序也需要在核心空問和用戶空問多次切換,在用戶空問和核心空問均需要對數(shù)據(jù)進(jìn)行緩存,這樣必然使系統(tǒng)的效率降低,而且,運(yùn)行在應(yīng)用層的安全模塊很容易受到威脅。比如運(yùn)行在核心空間的進(jìn)程可以沒有任何限制地訪問應(yīng)用層的內(nèi)存,從而也就可以訪問安全模塊的內(nèi)存空問,導(dǎo)致機(jī)密信息泄漏。但是這樣實(shí)現(xiàn)具有系統(tǒng)兼容性好,實(shí)現(xiàn)簡單,對系統(tǒng)改動(dòng)小的優(yōu)點(diǎn),可以非常容易地在不同的操作系統(tǒng)上移植。
我們所采用的核心層實(shí)現(xiàn)方式(如圖3所示)將安全模塊放到核心層實(shí)現(xiàn),這樣數(shù)據(jù)只需從應(yīng)用程序所在的用戶空間通過系統(tǒng)調(diào)用進(jìn)入核心層,通過核心層的安全模塊進(jìn)行處理,也就沒有了多個(gè)空問層次的切換,系統(tǒng)的效率得到很大的提高。同時(shí),將系統(tǒng)代碼固化在Flash中,不支持對系統(tǒng)存儲(chǔ)區(qū)域的寫操作,因此一般的網(wǎng)絡(luò)病毒或木馬無法植于系統(tǒng)的可執(zhí)行代碼存儲(chǔ)區(qū)中,這種固化特性使得通過客戶端來攻擊Web服務(wù)器變得非常困難。另外,在生成操作系統(tǒng)運(yùn)行代碼時(shí)只開放了8080瀏覽端口,禁用了其它不必要的網(wǎng)絡(luò)服務(wù)端口,通過網(wǎng)絡(luò)手段登陸客戶端再進(jìn)而以合法身份對Web服務(wù)器進(jìn)行攻擊也是不易做到的。線路上的中問攻擊因?yàn)榧用芏y以實(shí)施,并且如果Web服務(wù)器沒有受到攻擊,則瀏覽安全的Web服務(wù)器~ 般不會(huì)受到攻擊。所以,核心層實(shí)現(xiàn)方式所采用的系統(tǒng)固化、禁用服務(wù)、關(guān)鍵配置設(shè)定等安全增強(qiáng)措施極大的提高了系統(tǒng)的安全性和可靠性。
4 網(wǎng)絡(luò)安全加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
4.1 Microwindows和TinyWidgets基礎(chǔ)
Microwindows(如圖4所示)是一個(gè)著名的開放源碼的嵌入式GUI軟件,目的是把圖形視窗環(huán)境引入到運(yùn)行Linux的小型設(shè)備和平臺(tái)上。作為XWindow的替代品,Microwindows可以使用更少的RAM和文件存儲(chǔ)空間(100 K~600 K)提供與x Window 相似的功能。Microwindows允許設(shè)計(jì)者輕松加入各種顯示設(shè)備、鼠標(biāo)、觸摸屏和鍵盤等 。
Microwindows的可移植性非常好,基本上用c語言實(shí)現(xiàn),只有某些關(guān)鍵代碼使用了匯編以提高速度。Microwindows支持Intel 16位、32位cPu,MIPS R4000以及ARM 芯片。盡管Microwindows完全支持Linux,但是它內(nèi)部的可移植結(jié)構(gòu)是基于一個(gè)相對簡單的屏幕設(shè)備接口,可在許多不同的RTOS和裸機(jī)上運(yùn)行。Microwindows系統(tǒng)以圖形方式支持在主機(jī)平臺(tái)上的仿真目標(biāo)平臺(tái)。這樣, 為Linux設(shè)計(jì)的Microwindows應(yīng)用程序就可以在臺(tái)式機(jī)上進(jìn)行編寫和開發(fā)而不用進(jìn)行交叉編譯就可測試和運(yùn)行,并且直接在目標(biāo)平臺(tái)上運(yùn)行。
MicroWindows是一個(gè)基于典型客戶/服務(wù)器體系結(jié)構(gòu)的GUI系統(tǒng),基本分為3層。最底層是面向圖形輸出和鍵盤、鼠標(biāo)或觸摸屏的驅(qū)動(dòng)程序;中間層提供底層硬件的抽象接口,并進(jìn)行窗口管理;最高層分別提供兼容于X.Window和WindowscE(win32子集)的API。但由于Microwindows沒有實(shí)現(xiàn)窗口管理,這樣對窗口的管理就需要系統(tǒng)提供一個(gè)插件集。TinyWidget就是這樣的一個(gè)控件集供程序員來調(diào)用。TinyWidge~是一個(gè)基于Microwindows的c控件集,提供了一些比較基本的控件對象,比如窗口、按鈕、標(biāo)簽、文本輸入框、列表框和組合框等。
4.2 uClinux及其文件系統(tǒng)構(gòu)建方案
嵌入式操作系統(tǒng)uClinux(micro.contro1.Linux)是模塊化,簡化版的Linux,具有可剪裁、可配置、高安全性、好的可移植性和擴(kuò)展性等特點(diǎn),容易進(jìn)行升級(jí)換代,以不斷適應(yīng)新的應(yīng)用 。
uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對于一般的ext2文件系統(tǒng)要求更少的空間??臻g的節(jié)約來自于兩個(gè)方面,首先內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,其次romfs文件系統(tǒng)相對簡單,在建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。Romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理。ram盤將采用ext2(第二擴(kuò)展文件系統(tǒng))或者jffs2(日志閃存文件系統(tǒng))。
因此,綜合考慮存儲(chǔ)空間可用性因素,我們可以混合使用romfs和jffs2文件系統(tǒng)。使用romfs文件系統(tǒng)可以得到更大的空間節(jié)省和更快的運(yùn)行速度,使用jfs2文件系統(tǒng)可以為用戶提供讀寫空間,方便用戶添加自己的個(gè)人文件和數(shù)據(jù)。Romfs文件系統(tǒng)作為uClinux的根文件系統(tǒng),可以將jffs2文件系統(tǒng)掛載到romfs的/home目錄下供用戶來讀寫。
4.3 具體實(shí)現(xiàn)
我們采用Microwindows做界面,在uClinux下通過調(diào)用智能卡的命令實(shí)現(xiàn)對信息的加解密操作。具體實(shí)現(xiàn)包括:①身份認(rèn)證,保證通信雙方身份的有效;②采用高強(qiáng)度加密算法對通訊數(shù)據(jù)進(jìn)行加密和解密,上傳時(shí)相關(guān)數(shù)據(jù)被加密,下收時(shí)相關(guān)數(shù)據(jù)首先被解密,然后再作另行處理;⑧ 安全報(bào)文傳送,保證數(shù)據(jù)的可靠性、完整性和對發(fā)送方的認(rèn)證。
4-3.1 身份認(rèn)證
客戶端的身份是由安全模塊確定的,每一個(gè)安全模塊具有一個(gè)惟一的ID號(hào),在實(shí)際交易前,客戶端發(fā)送簽到報(bào)文將ID號(hào)上傳服務(wù)器,服務(wù)器首先檢驗(yàn)該ID的合法性,通過后則下發(fā)加密后的工作密鑰,如果客戶端能夠解密得出工作密鑰并繼續(xù)進(jìn)行交易,則表明服務(wù)器的身份是合法的,從而完成對客戶端的實(shí)體認(rèn)證;簽到完成后,服務(wù)器要求用戶輸入用戶名、口令,并對ID號(hào)、用戶名、口令進(jìn)行驗(yàn)證,完成對客戶的身份認(rèn)證。
4.3.2 加解密
加解密采用的是已經(jīng)燒到智能卡中的高強(qiáng)度對稱加密算法和128位的數(shù)據(jù)加密密鑰對傳輸報(bào)文中的關(guān)鍵敏感字段進(jìn)行加密。
(1)數(shù)據(jù)加密步驟
第1步:用LD表示明文數(shù)據(jù)的長度,在明文數(shù)據(jù)前加上LD產(chǎn)生新數(shù)據(jù)塊;
第2步:將第1步中生成的數(shù)據(jù)塊分解成8字節(jié)數(shù)據(jù)塊,標(biāo)號(hào)為D ,D ,D ,D 等。最后一個(gè)數(shù)據(jù)塊的長度有可能不足8位;
第3步:如果最后(或惟一)的數(shù)據(jù)塊長度等于8字節(jié),轉(zhuǎn)入第4步;如果不足8字節(jié),在右邊添加16進(jìn)制數(shù)字“80”。如果長度已達(dá)8字節(jié),轉(zhuǎn)入第4步;否則,在其右邊添加1字節(jié)16進(jìn)制數(shù)字“0”直到長度達(dá)到8字節(jié);
第4步:對每個(gè)數(shù)據(jù)塊用相應(yīng)的密鑰進(jìn)行加密;
第5步:計(jì)算結(jié)束后,所有加密后的數(shù)據(jù)塊依照原順序連接在一起(加密后的D ,加密后的D:等),并將結(jié)果數(shù)據(jù)塊插入到命令數(shù)據(jù)域中。
(2)數(shù)據(jù)解密步驟
第1步:將命令數(shù)據(jù)域中的數(shù)據(jù)塊分解成8字節(jié)長的數(shù)據(jù)塊,標(biāo)號(hào)為D ,D ,D ,D4等,用與加密相同的密鑰進(jìn)行解密;
第2步:計(jì)算結(jié)束后,所有解密后的數(shù)據(jù)塊依照順序(解密后的D。,解密后的D 等)鏈接在一起。數(shù)據(jù)塊由LD,明文數(shù)據(jù),填充字符組成;
第3步:因?yàn)長D表示明文數(shù)據(jù)的長度,因此,它被用來恢復(fù)明文數(shù)據(jù)。
4-3-3 安全報(bào)文傳送
數(shù)據(jù)完整性和對發(fā)送方的認(rèn)證通過使用消息認(rèn)證碼MAC(message authentication code)來實(shí)現(xiàn)。MAC是消息內(nèi)容和密鑰的公開函數(shù),其輸出是定長的短數(shù)據(jù)塊:MAC=C(M,K)。其中M 是消息內(nèi)容,K是通信雙方共享的密鑰,C是MAC值的生成算法。算法C要求已知M1和C(M1.K),無法構(gòu)造出滿足C(M2,K)=C(Ml,K)的報(bào)文M2,所以MAC能惟一鑒別原報(bào)文。消息鑒別密鑰(MAK)利用3DES算法計(jì)算交易信息的MAC值進(jìn)行消息鑒別,通過對報(bào)文進(jìn)行消息鑒別運(yùn)算,確保報(bào)文不被篡改。
(1)3DES算法:3DES算法是指使用16字節(jié)密鑰K=(KL,KR)將8字節(jié)明文數(shù)據(jù)塊加密成8字節(jié)密文數(shù)據(jù)塊,如下所示:Y=DES(KL)[DES.1(KR)[DES(KL[x])]]。解密的方式如下:x=DES.1(KL)[DES(KR)[DES.1(KL[Y])]]。
(2)消息鑒別算法:提取傳輸報(bào)文中的關(guān)鍵敏感字段,以8字節(jié)為單位劃分成若干個(gè)數(shù)據(jù)塊,當(dāng)最后的數(shù)據(jù)塊長度不足8字節(jié)時(shí)后補(bǔ)OX00。劃分完畢后,將每一個(gè)數(shù)據(jù)塊作為一個(gè)參與運(yùn)算的數(shù)據(jù)塊(D ),初值為8字節(jié)的十六進(jìn)制0。最終得到MAC值是計(jì)算結(jié)果 。左側(cè)取得的4字節(jié)長度十六進(jìn)制數(shù)。算法流程如圖5所示 。
5 結(jié)束語
本系統(tǒng)針對客戶端網(wǎng)絡(luò)接入開放性結(jié)構(gòu)的安全保密需求,綜合采用多種安全措施,實(shí)現(xiàn)了對交易信息關(guān)鍵字段的傳輸加密保護(hù)與消息認(rèn)證,確保交易信息安全及其加密設(shè)備的安全,具有較強(qiáng)的網(wǎng)絡(luò)適應(yīng)性。由于系統(tǒng)采用了公開源代碼的操作系統(tǒng),使得集成各種通信應(yīng)用成為可能,能夠很好的適應(yīng)未來金融通信的發(fā)展。
在以后的工作中,我們還需要從硬件、穩(wěn)定性、使用環(huán)境各方面加強(qiáng)系統(tǒng)的抗攻擊能力。