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