智能卡操作終端面臨的安全攻擊及其防御
文章出處:http://m.coolbang.cn 作者:唐川,張森強(qiáng),唐朝京 人氣: 發(fā)表時(shí)間:2011年09月28日
1 引言
在智能卡應(yīng)用日益廣泛的今天,智能卡應(yīng)用系統(tǒng)的安全問題非常重要。根據(jù)“箍桶原理”,整個(gè)應(yīng)用系統(tǒng)安全強(qiáng)度由系統(tǒng)中安全性最弱的部分決定。智能卡本身具有較高的安全性,但由于操作終端數(shù)量多且地理上分布零散,相對中心而言其安全設(shè)計(jì)容易被輕視,安全弱點(diǎn)也容易被利用,從而導(dǎo)致整個(gè)應(yīng)用系統(tǒng)安全性降低。分析智能卡終端系統(tǒng)面臨的安全攻擊,研究相應(yīng)的防御措施,對于保證整個(gè)智能卡應(yīng)用系統(tǒng)的安全性有重大的意義。
本文首先簡要分析了智能卡系統(tǒng)的安全性,指出智能卡終端是系統(tǒng)中最易受攻擊的部分;然后,建立了一個(gè)四維空間用于分析描述終端面臨的安全攻擊,分別針對物理層、軟件層和管理層的攻擊威脅提出了防御措施。作者將本文的思路應(yīng)用于實(shí)際系統(tǒng)的安全設(shè)計(jì)中,取得了良好的效果。
2 智能卡應(yīng)用系統(tǒng)安全性簡述
一個(gè)典型的智能卡應(yīng)用系統(tǒng)主要由業(yè)務(wù)中心服務(wù)器、業(yè)務(wù)終端、智能卡發(fā)卡中心、密鑰管理中心以及其中使用的各種智能卡組成,如圖1 所示。依據(jù)系統(tǒng)中各組成部分所受到的安全保護(hù)程度,作者將整個(gè)系統(tǒng)劃分為三個(gè)區(qū)域:中心區(qū)、終端區(qū)和用戶區(qū)。
圖1 智能卡應(yīng)用系統(tǒng)的結(jié)構(gòu)
(1) 中心區(qū):各種中心服務(wù)器所在的區(qū)域,包括業(yè)務(wù)中心服務(wù)器、智能卡發(fā)卡中心和密鑰管理中心等。由于中心區(qū)處理業(yè)務(wù)系統(tǒng)核心信息,是系統(tǒng)安全設(shè)計(jì)的重心,一般其中的設(shè)備多置于專人負(fù)責(zé)的安全機(jī)房中,有嚴(yán)格的安全策略,所以中心區(qū)安全性很高。
(2) 終端區(qū):通過網(wǎng)絡(luò)與中心服務(wù)器相連的業(yè)務(wù)終端所在區(qū)域,包括業(yè)務(wù)終端計(jì)算機(jī)、智能卡讀取設(shè)備以及用于鑒別用戶卡的SAM 卡。它是一個(gè)智能卡系統(tǒng)安全性的樞紐,聯(lián)系著用戶區(qū)和中心區(qū),但往往其安全設(shè)計(jì)遠(yuǎn)不及中心區(qū),終端區(qū)的設(shè)備一般也不會(huì)置于建設(shè)和管理成本很高的安全機(jī)房中,其安全性很大程度上依靠操作員的安全意識(shí)和自律,終端區(qū)容易存在安全漏洞。
(3) 用戶區(qū):用戶及其持有的智能卡所在區(qū)域。這是整個(gè)系統(tǒng)中最松散的區(qū)域,發(fā)卡中心將卡片發(fā)放給用戶后,只有在用戶通過終端區(qū)進(jìn)行業(yè)務(wù)操作時(shí)才與中心發(fā)生聯(lián)系。這個(gè)區(qū)域的安全性主要集中于用戶卡。用戶卡的安全同時(shí)受到智能卡安全機(jī)制和終端區(qū)安全機(jī)制的保障,而且卡片由用戶自己保管,因此其安全性并不脆弱。
根據(jù)以上分析,作者認(rèn)為終端區(qū)處于信息處理的樞紐地位,其脆弱的安全保障決定了該區(qū)域最易受到攻擊。
3 智能卡操作終端面臨的安全攻擊及其防御
終端區(qū)面臨的安全攻擊有不同的對象和方法。為體現(xiàn)攻擊涉及的對象和方法的特點(diǎn),作者建立了一個(gè)四維空間對攻擊行為進(jìn)行描述,并在此基礎(chǔ)上提出了針對特定攻擊的防御措施。
3. 1 攻擊描述空間的建立
攻擊描述空間的四個(gè)坐標(biāo)分別表示為:S(Subject):主體維,指攻擊實(shí)施者的類型;O (Object):客體維,指被攻擊的對象;M(Method):方法維,指攻擊實(shí)施者所采取的方法;E(Effect):效果維,指攻擊實(shí)施后被攻擊對象信息安全受到的影響。
此攻擊描述空間簡稱為SOME 空間。任何一種具體的安全攻擊都由上述四個(gè)基本參數(shù)界定,都對應(yīng)SOME 空間中的某個(gè)具體位置。SOME 空間的建立為描述具體攻擊提供了方便。
(1) 主體維(S 維) 。攻擊實(shí)施者不同,其攻擊的對象和采取的攻擊方法也往往不同,因而使得相應(yīng)選擇的防御措施不同。智能卡操作終端面臨的安全攻擊的S 維可以分為三大區(qū)域;
① S1 ———聰明的外部人員:了解一些公開、常用的攻擊方法,但對終端系統(tǒng)缺乏了解,很難接觸到系統(tǒng)的設(shè)備。他們的攻擊一般依賴于現(xiàn)存的、公開的系統(tǒng)漏洞,借助普通的工具實(shí)施攻擊。
② S2 ———具專業(yè)知識(shí)的內(nèi)部人員:有豐富的知識(shí)和經(jīng)驗(yàn),對系統(tǒng)有一定程度的了解,可以接觸到系統(tǒng)中幾乎所有的設(shè)備和資料,能通過分析發(fā)現(xiàn)安全隱患,可以利用較復(fù)雜的工具實(shí)施攻擊。對智能卡終端而言,具專業(yè)知識(shí)的操作員威脅概率最大,也是本文關(guān)注的重點(diǎn)。
③ S3 ———受資助的專業(yè)組織:受到資助、由專家組成的攻擊團(tuán)隊(duì),能夠利用高級(jí)的分析工具深入分析系統(tǒng),設(shè)計(jì)復(fù)雜的攻擊方式,常常需要S2 中的人員參與。
(2) 客體維(O 維) 。特定的攻擊都是針對終端區(qū)中某一個(gè)特定的對象實(shí)施的。根據(jù)信息流經(jīng)過的處理環(huán)節(jié),將終端區(qū)細(xì)分為如圖2 所示的三個(gè)層次:
圖2 智能卡終端的結(jié)構(gòu)層次
①O1 ———物理層:包括SAM 卡、讀卡器等與智能卡相關(guān)的硬件設(shè)備;
②O2 ———軟件層:包括與智能卡相關(guān)的驅(qū)動(dòng)程序、動(dòng)態(tài)鏈接庫和終端業(yè)務(wù)程序;
③O3 ———管理層:主要指對終端計(jì)算機(jī)的操作權(quán),包括使用操作系統(tǒng)、業(yè)務(wù)程序及其它程序的權(quán)力。
(3) 方法維(M 維) 。實(shí)施安全攻擊涉及軟硬件許多技術(shù),采用何種攻擊方法與主體和客體密切相關(guān)。下文的主體、客體環(huán)境中有詳細(xì)討論。
(4) 效果維( E 維) 。根據(jù)攻擊實(shí)施后對客體維對象信息安全的影響,效果維有四大部分:
① E1 ———秘密泄露,信息機(jī)密性遭破壞;
② E2 ———原信息被修改,完整性遭破壞;
③ E3 ———信息被偽造,信息真實(shí)性遭破壞;
④ E4 ———信息不可被處理,可用性遭破壞。
在各種智能卡應(yīng)用系統(tǒng)中,獲取敏感信息、篡改和偽造數(shù)據(jù)是攻擊者的主要目的,破壞系統(tǒng)可用性在此不討論。
3. 2 攻擊方法及防御措施
依據(jù)以上建立的描述空間,可以從客體維出發(fā)分析針對智能卡終端區(qū)特點(diǎn)的攻擊方法及相應(yīng)的防御措施。分析前需要明確以下幾點(diǎn):
(1) 假定終端區(qū)與中心區(qū)之間的鏈路及中心區(qū)都是可信和可靠的;
(2) 任何終端區(qū)系統(tǒng)都有安全風(fēng)險(xiǎn)概率,可通過某些應(yīng)對措施有效降低攻擊成功的概率;
(3) 所有防御措施都有其固有的弱點(diǎn),因此不可能將安全風(fēng)險(xiǎn)概率降為0。
3. 2. 1 發(fā)生在物理層O1 的攻擊及防御措施
表1 發(fā)生在O1 的攻擊
發(fā)生在O1 的攻擊如表1 所示。智能卡自身有比較成熟的安全機(jī)制。
簡言之,關(guān)鍵數(shù)據(jù)加解密在芯片內(nèi)部實(shí)現(xiàn), 且密鑰不可讀出;通過用戶卡與SAM卡對同一隨機(jī)數(shù)的加解密進(jìn)行卡片與終端的相互認(rèn)證;通過用戶輸入PIN 鑒別持卡人合法性;通過卡片與終端的認(rèn)證和PIN 的鑒別控制操作權(quán)限。自智能卡推廣以來,由于上述智能卡的安全機(jī)制具有相當(dāng)高的保密性和防篡改性,使得在物理層獲得E1 、E2 的效果難度很大。發(fā)生在O1的攻擊通常要將芯片從卡基上分離下來,而且需要一定的硬件設(shè)備,一些攻擊方法還會(huì)破壞芯片。
(1) M1:基于物理特征的密碼分析。基于物理特征的密碼分析技術(shù)自1996 年提出到此法被證實(shí),對智能卡的保密性提出了巨大挑戰(zhàn)。這類密碼分析技術(shù)包括電壓分析、故障分析、侵入分析、時(shí)間分析、簡單的電流分析、差分電流分析、電磁輻射分析等。利用這些技術(shù),攻擊者可以在獲得密碼算法運(yùn)行載體(計(jì)算機(jī)、保密機(jī)、加密盒、IC 卡等等) 的情況下,快速獲得密鑰,從而破譯整個(gè)密碼系統(tǒng)。
(2) M2 :光攻擊。文獻(xiàn)[ 8 ]中提出了一種“光攻擊”技術(shù),可以修改存儲(chǔ)器中指定的bit 位,攻擊成本也不高,很有可能被用于篡改SAM卡或用戶卡信息。
3. 2. 2 防御措施
對于這些針對智能卡芯片各種物理參數(shù)泄漏信息的攻擊方法,最理想的防御措施是改變芯片在處理二進(jìn)制信號(hào)過程中功率、電壓、電流、電磁輻射、故障發(fā)生率等各種參數(shù)的不對稱性,這需要從芯片硬件設(shè)計(jì)上提供保障。文獻(xiàn)[ 8 ]提出“光攻擊”方法的同時(shí),也提出了一種防御措施。不用單一的高電平信號(hào)表示邏輯“1”,低電平信號(hào)表示邏輯“0”,而是所有的數(shù)據(jù)都采用一對值編碼。因此,一個(gè)高- 低信號(hào)對就代表“1”,一個(gè)低- 高信號(hào)對就代表“0”,一個(gè)低- 低狀態(tài)被認(rèn)為是“清零”信號(hào),高- 高狀態(tài)表示出錯(cuò)。這種方案使得基于物理特征的分析技術(shù)難度加大,可以較好地增強(qiáng)物理層的安全性。
3. 2. 3 發(fā)生在軟件層O2 的攻擊及防御措施軟件層是整個(gè)終端區(qū)工作的核心,它控制對智能卡的各種操作,負(fù)責(zé)向與中心相連的網(wǎng)絡(luò)收發(fā)數(shù)據(jù)。由于操作系統(tǒng)、應(yīng)用軟件本身容易被修改,一般又沒有嚴(yán)格的認(rèn)證機(jī)制,所以在O2 比較容易發(fā)生攻擊。發(fā)生在O2 的攻擊如表2 所示。
表2 發(fā)生在O2 的攻擊
(1) M3:偽造SAM 卡和用戶卡欺騙終端程序。
目前,終端SAM卡與用戶卡相互認(rèn)證的基礎(chǔ)是兩者持有相同的認(rèn)證密鑰,具體過程如下:
①用戶卡:將Salt (一般是卡序號(hào)) 與產(chǎn)生的隨機(jī)數(shù)R 發(fā)送給SAM卡;
②SAM卡:{{Kasam ,Salt} →K,R} →R*,發(fā)送R* 給用戶卡;
③用戶卡:{ Kausr,R*} -1 →R′,比較R 與R′,相同則通過驗(yàn)證。
密鑰Kausr和Kasam由可信的權(quán)威機(jī)構(gòu)———密鑰管理中心通過發(fā)卡中心寫入SAM卡和用戶卡。
軟件發(fā)送“認(rèn)證”命令給卡片。認(rèn)證通過后,卡片COS 提供一定的操作權(quán),并返回“認(rèn)證通過”信息給操作軟件。至此,軟件認(rèn)為卡片合法,并執(zhí)行其他操作。通常的終端軟件設(shè)計(jì)時(shí)都假定SAM 卡是可信的,對物理層的信任與否實(shí)質(zhì)在于是否收到“認(rèn)證通過”信息,而并沒有驗(yàn)證SAM卡密鑰的真實(shí)性。這是一個(gè)嚴(yán)重的安全漏洞。如果來自S2 和S3 的攻擊者嚴(yán)格仿照合法卡片的數(shù)據(jù)結(jié)構(gòu),用同類型空白卡偽造一對SAM卡和用戶卡,分別寫入的偽認(rèn)證密鑰K′asam和K′ausr只要滿足關(guān)系{K′asam ,Salt} →K′ausr ,即可通過驗(yàn)證,達(dá)到欺騙終端程序的目的,使終端程序?qū)⑵洚?dāng)作合法卡片操作,獲得E3 的效果。
(2) M4:替換或改寫智能卡操作模塊。
目前的軟件開發(fā)基本都是模塊化設(shè)計(jì),主程序通過調(diào)用智能卡操作模塊實(shí)現(xiàn)各種管理卡片的功能。通常操作模塊獨(dú)立于主程序而位于某個(gè)動(dòng)態(tài)鏈接庫文件(用A 表示) 中,而主程序?qū)τ谄湔{(diào)用的動(dòng)態(tài)鏈接庫是完全信任的。如果來自S2 、S3的攻擊者用動(dòng)態(tài)鏈接庫文件B 替換掉A ,且B 中各模塊的接口與A 的完全一樣,B 將完全取代A操作卡片,如圖3 所示。
圖3 替換或改寫智能卡操作模塊
這樣,攻擊者就可以在B 中附加攻擊所需的各種操作。這種攻擊所需的只是對軟件開發(fā)接口的了解和一定的編程技能,代價(jià)不高,卻能實(shí)現(xiàn)對出入智能卡數(shù)據(jù)的完全控制,很容易獲得E2 和E3的攻擊效果。這個(gè)安全隱患也同樣存在于整個(gè)應(yīng)用軟件系統(tǒng)調(diào)用其他動(dòng)態(tài)鏈接庫的環(huán)節(jié)中。
3. 2. 4 防御措施
發(fā)生在軟件層的攻擊主要是由各種信任關(guān)系的脆弱性造成的。因此,要改進(jìn)軟件層的安全性,需要改進(jìn)信任機(jī)制。因?yàn)橹行挠休^高的安全保障,所以可以通過中心對SAM卡和用戶卡的認(rèn)證來保證終端區(qū)智能卡的真實(shí)性,具體過程為:
(1) 每次進(jìn)行業(yè)務(wù)操作前終端先向中心申請一個(gè)隨機(jī)數(shù)Rc。
(2) SAM卡中{Kasam ,R} →R*sam ,用戶卡中{Kausr ,R} →R*usr ,終端發(fā)送的業(yè)務(wù)請求包附加上(R*sam ,Salt sam) 和(R*usr ,Saltusr) ,其中Salt sam、Salt usr分別為SAM卡和用戶卡的唯一標(biāo)識(shí)號(hào)(UID) 。
(3) 中心:{ Kc , Saltasm} →K′asm , { Kc , Saltusr} →K′ausr ;{ K′asm ,R3} - 1 →R′sam ,{K′ausr ,R3} - 1 →R′usr ,比較R′sam、R′usr與Rc ,相同則通過驗(yàn)證,接受終端的業(yè)務(wù)請求。
動(dòng)態(tài)鏈接庫的獨(dú)立性與其在智能卡終端安全中的重要地位相矛盾。為了使動(dòng)態(tài)鏈接庫中的模塊與主程序緊密結(jié)合,作者提出三個(gè)解決方案:
方案1 在主程序中加入對動(dòng)態(tài)鏈接庫文件特征碼的驗(yàn)證。在主程序編譯發(fā)布時(shí)附加對重要?jiǎng)討B(tài)鏈接庫的特征碼(比如Hash 摘要) ,在程序運(yùn)行時(shí)再對庫文件取特征碼并比較驗(yàn)證。
方案2 重要的操作模塊不以動(dòng)態(tài)鏈接庫的形式開發(fā),而是直接內(nèi)嵌于主程序。以用C 語言開發(fā)為例,對于智能卡廠商提供的智能卡操作模塊以靜態(tài)鏈接庫形式包含到主程序中,這樣重要的操作模塊就不會(huì)以文件的形式獨(dú)立于主程序而是主程序的一段代碼了,畢竟對一個(gè)程序代碼段的攻擊難度要大于替換一個(gè)文件的難度。
方案3 中心加入對終端程序真實(shí)性的驗(yàn)證功能。終端程序向中心發(fā)送動(dòng)態(tài)鏈接庫(DLL) 驗(yàn)證請求,請求數(shù)據(jù)包M 是根據(jù)硬件唯一識(shí)別碼、時(shí)戳和DLL 文件在主程序中加密生成,中心對M驗(yàn)證通過后才接受終端的其他業(yè)務(wù)請求。
3. 2. 5 發(fā)生在管理層O3 的攻擊及防御措施
發(fā)生在管理層的攻擊主要是非授權(quán)者在終端系統(tǒng)上進(jìn)行程序調(diào)試、反編譯、改寫內(nèi)存、復(fù)制重要文件、植入特洛伊木馬等操作。這些操作可以跟蹤監(jiān)視終端程序、獲取操作員口令、業(yè)務(wù)數(shù)據(jù)等信息,而獲得E1 的攻擊效果,進(jìn)一步還可以修改操作的數(shù)據(jù),獲得E2 、E3 的效果。因?yàn)镸4 的攻擊一般都依賴于獲取終端系統(tǒng)的某些操作權(quán)限,這也常常是進(jìn)一步對軟件層進(jìn)行攻擊的入口。
3. 2. 6 防御措施
在進(jìn)行終端安全設(shè)計(jì)時(shí),應(yīng)制定完善的安全策略,盡可能減少終端管理層的安全隱患。
(1) 根據(jù)角色嚴(yán)格控制操作系統(tǒng)、業(yè)務(wù)程序、重要文件的讀寫權(quán)限。對于終端操作員,以最小特權(quán)原則授予操作權(quán)限,絕不能賦予系統(tǒng)管理員的權(quán)限,對終端區(qū)系統(tǒng)的絕對控制權(quán)應(yīng)交由中心區(qū)的安全人員掌管。對操作員可以采用指紋識(shí)別等基于生物特征的鑒別方法。
(2) 定期對系統(tǒng)和業(yè)務(wù)程序的日志執(zhí)行嚴(yán)格的審計(jì),這對于防范需要時(shí)間潛伏的攻擊很有效。
(3) 密切關(guān)注操作系統(tǒng)等的漏洞公告,即安裝補(bǔ)丁,防止攻擊者利用漏洞提升權(quán)限。
4 結(jié)束語
智能卡終端是一個(gè)安全環(huán)境很復(fù)雜的系統(tǒng),本文為分析這個(gè)系統(tǒng)面臨的安全攻擊提供了一個(gè)思路,為系統(tǒng)的安全設(shè)計(jì)提供了依據(jù)。攻擊描述空間的建立是個(gè)嘗試,下一步工作是量化分析該空間的特性,探索在降低安全威脅與增加終端成本之間尋找最佳平衡點(diǎn)的方法。