吳勝楠
(廣州廣電運通金融電子股份有限公司,廣東 廣州 510663)
隨著信息科技日新月異的不斷發(fā)展,網(wǎng)絡(luò)時代的新技術(shù)給予我們前所未有的沖擊,自助設(shè)備終端的安全正面臨著不停增加的多種形態(tài)威脅。極具專業(yè)性的惡意軟件變種的爆發(fā),業(yè)界迅速意識到傳統(tǒng)防病毒的方式已不足以應(yīng)對遇到各種威脅,這些惡意軟件目標直接指向特定自助設(shè)備,專業(yè)掌握了行業(yè)流程漏洞獲取非法利益,金融機構(gòu)對于自助終端的安全需求日益提升,行業(yè)內(nèi)急需全方位終端安全防護產(chǎn)品的研究突破。
本文所述的安全防護產(chǎn)品整體解決方案定位適用于ATM、VTM、STM 等各類智能自助服務(wù)終端設(shè)備、柜面系統(tǒng)的安全防護,全方位保障自助終端設(shè)備的安全,從安全策略、系統(tǒng)進程、移動存儲介質(zhì)、網(wǎng)絡(luò)入侵防護、資源防護、系統(tǒng)升級等維度靈活根據(jù)用戶具體安全需求予以應(yīng)用,有效地防范自助終端平臺各種威脅,保護資金安全和敏感數(shù)據(jù),通過硬件及軟件的改造,以達到資金交易安全可控的目的。
方案專門為自助設(shè)備終端安全量身定制,具備更多的特色功能,在確保系統(tǒng)安全同時對系統(tǒng)資源開銷少,重點專注于主動防御技術(shù),做好事前的預(yù)防措施。
機芯安全:使用TPM 安全可信模塊進行PC 端數(shù)據(jù)加解密;機芯端使用自研發(fā)機芯加密模塊(HSM)進行數(shù)據(jù)加解密,與機芯交互的數(shù)據(jù),通過硬件加密模塊加解密,保證了鏈路的安全性。
出鈔場景控制:防止外連電腦控制機芯,合法工控機中只有白名單應(yīng)用程序使用合法流程才能控制機芯,通信加密傳輸,增加隨機數(shù)機制防止重發(fā)共計。在ATM 行業(yè)內(nèi)首次提出業(yè)務(wù)交流流程校驗,取款的流程應(yīng)該有符合特定的場景,只有特定的場景才可以出鈔,保證了出鈔的安全性。
系統(tǒng)安全策略:提出了通過雙用戶機制,確保ATMC交易運行在最小權(quán)限環(huán)境中,避免運行環(huán)境的攻擊風險,保證了系統(tǒng)的安全性。
賬務(wù)數(shù)據(jù)安全檢測:在程序運行過程中,對涉及賬務(wù)的數(shù)據(jù)進行實時檢查校驗,避免錯誤的數(shù)據(jù)上賬后導(dǎo)致的賬務(wù)問題。
系統(tǒng)采用Cluster 方案和Load Balancer 方案(如圖1所示),使用SSH(Struts,Spring,Hibernate)技術(shù)框架進行開發(fā),表示層:由Struts 實現(xiàn),以Struts-config.xml 為核心,通用的控制組件ActionServlet 承擔MVC 中的Controller 的角色,ActionForm 類封裝與用戶界面有關(guān)的數(shù)據(jù)元素,用Action 類實現(xiàn)業(yè)務(wù)邏輯,動作處理,鏈接轉(zhuǎn)向。業(yè)務(wù)層:由Spring 實現(xiàn)業(yè)務(wù)組件的組裝關(guān)聯(lián),通過依賴注入,AOP 應(yīng)用,面向界面編程,來降低業(yè)務(wù)組件之間的耦合度,增強系統(tǒng)兼容性和可擴展性。持久層:借助ORM 工具Hibernate 實現(xiàn)數(shù)據(jù)庫訪問性能優(yōu)化和與數(shù)據(jù)庫交互的常用操作(添加,修改,刪除,瀏覽),并將數(shù)據(jù)庫表與對象進行關(guān)聯(lián),把利用SQL 對數(shù)據(jù)表的交互轉(zhuǎn)化為直接針對對象進行數(shù)據(jù)庫交互,大大提高編碼效率。
圖1 技術(shù)框架圖
系統(tǒng)部署分服務(wù)端及客戶端,系統(tǒng)部署架構(gòu)圖如圖2所示。服務(wù)端需要部署兩臺(主從)終端安全防護系統(tǒng)服務(wù)器及數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫可以安裝在終端安全防護系統(tǒng)服務(wù)器中,支持Oracle 及MySQL 等多數(shù)據(jù)庫??蛻舳思锤髯灾K端設(shè)備,需要安裝終端安全防護系統(tǒng)客戶端代理軟件,在實現(xiàn)系統(tǒng)本身安全的同時,支持與服務(wù)端通過網(wǎng)絡(luò)通信連接,實現(xiàn)監(jiān)控及管理。
圖2 部署架構(gòu)圖
服務(wù)端主要提供設(shè)備管理、授權(quán)、安全策略、遠程升級、日志提取等功能。服務(wù)端可以獲取所有終端設(shè)備的信息,包括當前終端設(shè)備硬件型號配置信息、狀態(tài)、內(nèi)存、硬盤、正在運行的進程等信息,能夠?qū)崿F(xiàn)對終端設(shè)備的全面監(jiān)控及操作管理;對用戶密碼、Ukey 等進行管理,對設(shè)備進行授權(quán)激活等操作;對已聯(lián)網(wǎng)的終端設(shè)備進行白名單更新控制、移動存儲設(shè)備授權(quán)控制、文件及注冊表等權(quán)限管理控制;同時遠程升級功能,方便對下屬終端設(shè)備進行遠程升級;提供日志提取功能,節(jié)約現(xiàn)場單臺設(shè)備提取日志的人力成本。
客戶端主要提供白名單防護、存儲設(shè)備訪問控制、系統(tǒng)權(quán)限控制、網(wǎng)絡(luò)保護功能。通過白名單控制訪問機制,只允許白名單內(nèi)的應(yīng)用程序運行,其他程序禁止運行;通過授權(quán)的存儲設(shè)備能夠正常防護訪問,非授權(quán)的禁止訪問;只有通過授權(quán)的進程能夠在特定目錄下創(chuàng)建文件夾、生成文件、訪問文件及注冊表信息等,非授權(quán)的禁止訪問;網(wǎng)絡(luò)白名單內(nèi)的應(yīng)用網(wǎng)絡(luò)傳輸不受限制,其他設(shè)備必須指定IP 才能訪問;可以根據(jù)需求設(shè)置需要開放的本地端口或者遠程連接端口。
目前金融智能自助設(shè)備的布局越來越廣泛,犯罪分子不再局限于通過盜刷客戶銀行卡信息來盜取客戶用戶賬戶密碼等信息,開始采取一些方法直接侵入ATM 設(shè)備,并直接控制其中的現(xiàn)金模塊,使其達到出鈔的目的。2016年臺灣ATM 自動吐鈔事件就是其中一個典型例子,攻擊者并未使用銀行卡和對ATM 操作,而是通過遠程攻擊方式,直接讓ATM 吐鈔。在這些案例中,攻擊者都是模擬智能自助設(shè)備的上層應(yīng)用程序,或者篡改下發(fā)的數(shù)據(jù)內(nèi)容來進行攻擊。因此,如何避免機芯模塊數(shù)據(jù)傳輸中數(shù)據(jù)被破壞,或者被惡意模仿的方式出鈔,也是目前智能金融設(shè)備需要重點防護的內(nèi)容之一。本章節(jié)主要從機芯安全、場景出鈔、指定上層軟件出鈔、賬務(wù)數(shù)據(jù)安全檢測四個方面,在數(shù)據(jù)傳輸安全、訪問控制、數(shù)據(jù)內(nèi)容準確性等方面進行保證機芯的安全可靠。
通過采用PC 端的加密模塊與機芯硬件端的加解密模塊連接,保證PC 端與機芯端數(shù)據(jù)傳輸?shù)陌踩C 端安裝一個增強計算機安全性和隱私性的加密模塊,直接安裝在PC機主板上,與PC 端為一體,PC 端所有指令下發(fā)及數(shù)據(jù)接收都必須通過該加密模塊進行加解密操作,機芯端的加密模塊與機芯硬件為一體,所有指令下發(fā)及數(shù)據(jù)返回也都需要加解密模塊的加解密操作。通過多個硬加密過程及其他加解密流程,能夠保證下發(fā)給機芯的指令數(shù)據(jù)及機芯返回的數(shù)據(jù)極難被截取及篡改。
在保證數(shù)據(jù)傳輸過程安全可靠的同時,還需要建立機芯與PC 之間的唯一綁定關(guān)系,避免機芯被連接到任何一臺PC上都能出鈔,建立此關(guān)系稱之為授權(quán)綁定操作,由專用的授權(quán)綁定工具執(zhí)行。通過PC 端加密模塊生成PC 的唯一ID 信息,并通過授權(quán)綁定下發(fā)給機芯硬件,機芯硬件將此PC 的唯一ID 信息保存到機芯硬件中。后續(xù)下發(fā)給機芯所有的指令都必須包含此ID 信息,機芯在接收到指令后,若發(fā)現(xiàn)此ID 不匹配,則拒絕執(zhí)行。授權(quán)綁定工具由管理員控制,綁定操作,需要執(zhí)行特定的硬件動作才能完成。
WOSA/XFS 協(xié)議接口是一套標準接口,當違法分子具有一定的專業(yè)性時,可能會嘗試冒仿上層應(yīng)用調(diào)用WOSA指令進行惡意出鈔。場景出鈔模式在軟件層面內(nèi)置多套允許出鈔的場景,只有符合指定場景下的出鈔流程請求才認為是合法的。
場景出鈔是針對出鈔流程的一個審計和控制,作為機芯安全的補充措施存在于機芯驅(qū)動范疇。由于取款操作一定存在相應(yīng)的前序操作指令,當接收到取款指令時,校驗前序指令是否為正常調(diào)用流程,可以在一定程度上判別是否為惡意出鈔。常見的出鈔場景分為有卡取款和無卡取款,兩種取款模式,上層應(yīng)用調(diào)用流程不同,場景出鈔模式通過檢測前序指令是否合理來進行判定。
有卡取款的前序流程大概分為以下步驟:進卡;等待讀取卡信息;輸入密碼;可能的交易按鍵選擇;可能需要再次輸入密碼;計算MAC 值;等待;計算MAC 值;
無卡取款的錢箱流程大概分為以下步驟:可能的交易按鍵選擇;可能輸入密碼;計算MAC 值;等待;計算MAC 值;
為了避免使用測試工具或者其他一些程序仿冒上層應(yīng)用軟件進行出鈔操作,要求底層軟件程序內(nèi)部在每次出鈔指令執(zhí)行前,都需要檢測當前請求出鈔的上層應(yīng)用軟件程序,同時建立可出鈔應(yīng)用的白名單,非法應(yīng)用程序不可出鈔。在底層軟件安裝前,需要和金融機構(gòu)約定好上層應(yīng)用軟件白名單及相關(guān)內(nèi)容,并且在安裝時一次性寫入,此白名單一般不做更新,除非上層應(yīng)用軟件程序更換。
機芯模塊的存取款等交易指令,會直接涉及到客戶賬戶余額及銀行賬務(wù)數(shù)據(jù)。為確保上賬金額的準確性,還可以進一步檢測財務(wù)數(shù)據(jù)安全,進行財務(wù)風險預(yù)警。
2.4.1 上層應(yīng)用程序數(shù)據(jù)監(jiān)測
在取款流程處理中,上層應(yīng)用程序需要監(jiān)測底層軟件挖鈔指令的結(jié)果合法性。當出現(xiàn)底層軟件出鈔結(jié)果返回成功,但實際出鈔數(shù)據(jù)與上層應(yīng)用請求數(shù)據(jù)不一致;出鈔前后,鈔箱信息變化與出鈔結(jié)果不一致;或者出鈔金額及張數(shù)超過錢箱最大能力等情況,均需要報錯且不能再讓設(shè)備進行繼續(xù)送鈔操作,避免后續(xù)鈔票送出后帶來短款等風險。
在存款流程處理中,上層應(yīng)用程序需要檢測底層軟件點鈔指令與存款指令的合法性。當出現(xiàn)底層軟件返回的點鈔、存款結(jié)果中幣種、金額、面額等信息出現(xiàn)異常;客戶多次點鈔結(jié)果與最終存款結(jié)果不一致時;點(存)鈔的張數(shù)、金額超過SP 最大能力值等情況,均需要報錯且不能給客戶上賬,避免后續(xù)帶來更嚴重的賬務(wù)問題。
2.4.2 底層軟件程序數(shù)據(jù)監(jiān)測
針對取款指令,底層軟件通過驅(qū)動庫將請求出鈔數(shù)據(jù)下發(fā)機芯,機芯硬件中的數(shù)據(jù)模塊保存請求數(shù)據(jù),并執(zhí)行響應(yīng)的出鈔動作,每次動作導(dǎo)致的鈔箱鈔票進出數(shù)據(jù),都會記錄于錢箱硬件中的數(shù)據(jù)模塊中。機芯硬件芯片會主動校驗一次請求數(shù)據(jù)與錢箱數(shù)據(jù)模塊中的結(jié)果是否匹配,如不匹配,機芯出鈔指令報錯;如果匹配,將實際出鈔信息保存在機芯數(shù)據(jù)模塊中。底層軟件中的數(shù)據(jù)檢查模塊,在將最終結(jié)果返回給上層應(yīng)用程序前,也要檢測機芯數(shù)據(jù)模塊中的結(jié)果是否與上層應(yīng)用的請求數(shù)據(jù)一致,如不一致,應(yīng)該主動回收鈔票,并報錯告知當筆出鈔失敗。
智能終端設(shè)備的底層軟件程序通過內(nèi)部的檢查模塊,硬件內(nèi)部的機芯數(shù)據(jù)模塊、錢箱數(shù)據(jù)模塊進行多重多場景檢查,可以針對任何一層中內(nèi)存數(shù)據(jù)發(fā)生篡改后,都及時做出預(yù)警。機芯安全方案通過軟硬結(jié)合的模式,在硬件結(jié)構(gòu)、數(shù)據(jù)鏈路傳輸、軟件數(shù)據(jù)安全等方面,進行多方位防護,保證機芯的交易處于安全環(huán)境中,即使遭到攻擊也能夠?qū)①~務(wù)風險降到最低。
本文給出了一種面向金融智能自助設(shè)備終端的整體性安全解決方案,從金融智能終端自助設(shè)備所要求的安全性、穩(wěn)定性、場景性等角度出發(fā),在軟件層面上,保證了程序訪問的可靠性、數(shù)據(jù)的可靠性;在硬件層面上,保證了機芯出鈔安全、出鈔場景安全等機制。從多個角度提供安全防護技術(shù)及實施方案,有效的防范自助設(shè)備所可能遇到的威脅。
本文所述的整體解決方案能為行業(yè)內(nèi)自助服務(wù)設(shè)備提供全方面保駕護航,在自助設(shè)備安全防護領(lǐng)域有重大突破,能夠引領(lǐng)終端安全防護從通用化軟件向特定領(lǐng)域?qū)I(yè)化方向發(fā)展。