文|張立成,楊敬巍,褚堯
業務支撐系統數據安全保障機制研究
文|張立成,楊敬巍,褚堯
在電信領域的IT系統中,尤其是業務支撐領域的系統中,客戶資料、用戶密碼、用戶敏感數據、系統數據庫用戶密碼等等是系統核心機密數據,此部分數據的安全性、隱秘性必須從根本上得到有效保障,如果保障手段不足、不到位,極大可能會出現客戶資料泄露、非授權業務辦理、系統大量數據外泄、被非法更新等一系列問題,直接導致大量用戶的權益受損、公司經營數據泄露、系統數據遭受破壞等嚴重后果出現。國家主席習近平在網絡安全和信息化工作座談會上的講話上指出“網絡安全和信息化是相輔相成的。安全是發展的前提,發展是安全的保障,安全和發展要同步推進。”,可見安全的重要性之大、重要層次之高,努力提高業務支撐系統中數據的安全保障能力是我們工作的重點之一。
保障數據安全性、隱秘性的有效手段是使用加密技術。但即使使用了加密技術,一些數據泄露問題仍然沒有得到根除,尤其是來自于企業內部或合作伙伴的原因導致的泄露問題并不罕見。
據了解,全國大部分業務支撐領域的系統中使用的加密算法主要是由集成商負責提供、并集成到應用系統中。有些管理者能夠意識到加密算法的安全性,能夠回收算法密鑰的管理權限、并予以定期更新,由具體負責人或專門機構予以保管;有的可能還沒有意識到其重要性,還留在集成商手中保留。但不論密鑰是保管在公司方手中還是集成商手中,都存在如下問題:
由于多方合作關系,不能有效避免各方人員接觸到生產系統、看到加密數據;對企業內部人員、尤其是系統管理人員來說,看到、訪問到加密數據更是輕而易舉。對有心人來說,這就是一個快捷的突破途徑。
每個IT系統勢必要使用到解密(如系統數據庫登錄模塊)及密文校驗(如工號、用戶密碼校驗)的方法、函數或接口(在某些情況下,加密數據以安全堡壘的形式保存、以接口的方式對外提供),一般的解密、校驗程序仍然是由集成商提供,要讓集成商提供的解密、校驗程序能夠正常完成業務操作,必然需提供其能夠實現解密的方式,比如:以用加密模塊編譯出來的鏈接庫文件形式提供其連接、編譯程序使用,這樣就相當于變相提供了解密算法、密鑰信息,集成商開發人員完全可以通過此鏈接庫實現解密。
原有集成商開發的程序包括函數名稱、定義、調用方式等信息均已被其掌握并在系統應用程序中應用,僅僅改變密鑰信息,函數信息不變化,熟悉的人員可輕易實現函數調用完成解密操作。
提供的鏈接庫文件包含不穩定因素,對程序開發、編譯、運行機制熟練掌握者可從鏈接庫中尋找到加密密鑰的痕跡。
隨著云計算、大數據的興起,相關技術被逐步引入了業務支撐系統中,更適于云化部署的JAVA技術在被廣泛使用,逐步替代了過去的C、C++進行系統程序開發。而JAVA技術對加密技術的保障能力極弱——只要有機會接觸到運行時程序,可輕易被反編譯、輕易找到解密方法,再如何更換密鑰、加干擾碼也不能屏蔽。
有途徑、有方法,非法解密就可以輕易實現,所以,僅僅管理起密鑰還是遠遠不夠的。
通過上述分析我們可以看出,要想從根本上保障加密數據的安全性、杜絕內外部任何非法解密數據問題的產生,一是要通過管理手段加強對數據訪問的管控、切斷非法解密的快捷途徑——盡管管理手段可能會由于各種因素導致不能徹底杜絕問題的產生,但畢竟通過黑客手段竊取加密數據、之后再找到解密方法并進行破解還是十分不易的;二是要尋找到一種安全有效數據加密算法使用及管理機制,讓解密方法受到系統程序自動控制及保障、切斷人為解密的所有途徑,這是最根本、有效的保障手段。
筆者從以下幾方面進行了深入研究、設計、開發,并實際應用了到黑龍江移動的業務支撐系統中,取得了不錯的效果,主要思路為:
從實際生產過程中看,單一的、靜態的加解密算法是存在安全隱患的,一是盡管算法上已經達到了強加密要求,但長時間使用后就可能被熟知的人惡意破解;二是對于重復度極高的數據,加密結果實質上是不安全的,比如:如果用戶密碼是111111,加密結果是ABCDEFGHIJK,如果采用的是一種靜態加密算法,那么所有密碼為111111的用戶數據加密結果就都是ABCDEFGHIJK,這種情況下,不用解密即可猜測知道這些用戶的密碼。
筆者在研究過程中,在原有的des加密算法基礎之上,對稱加密算法的實現過程通過下述多重加密方案進行了強化:
(一)密鑰安全性保障能力提升:在加密算法中,對密鑰的引用處增加一層加密算法,其目的主要是進行干擾、防止真實密鑰被直觀獲取,為密鑰分離管理做準備;
(二)算法關鍵過程加入“引用密鑰”:在算法的加、解密關鍵環節處,增加程序(過程)的引用授權機制,授權以密鑰形式管理,同樣是在加密算法保護之下,其目的是杜絕關鍵解密環節被直接引用、調度;
(三)實現動態、二次加密:使用動態加密算法對原始數據進行一次加密,實現數據加密結果的動態變換;后使用靜態加密算法,結合上述機制進行二次加密,最終實現動態、多層、多次加解密。
根據不同的業務需要,選擇不同類別的加密算法有助于提升安全性,比如:不需解密、僅用于認證的數據關鍵用于與輸入信息進行吻合性校驗、認證,故不需要明文信息,此時采用rsa等非對稱加密算法進行加密就十分適合,一是安全度足夠,二是不需、也不提供解密,確保了明文內容不被任何人獲取。
加解密算法只是安全工作的基礎之一,選擇何種算法并不十分重要,國際主流加密算法(標準)種類繁多(如des、3des、aes等等),安全性是可以滿足電信行業使用需要的,我們要考慮的不是從種類繁多的主流加密算法中找到一個加密最強的算法,真正決定安全質量的是這些加密算法的使用以及保護手段是否完善——如果算法被很多的人所掌握、可隨時使用,那么就等于是沒有加密。在過去,這些算法掌握在集成商手中,系統中的數據對集成商來說是沒有秘密的,企業因集成商人員竊密、獲取高權限而蒙受損失的情況并不罕見。
為達到安全的目的,筆者的做法是將算法拿回到企業自己手中、私有化:在完成上述加密算法強化后,重點對算法的使用方法進行了調整、封裝。
首先是根據已有業務的需要對加解密算法模塊和應用進行分類,明確各類加密數據的使用方法,如:不需解密、僅用于認證(用戶密碼等),需解密、不展示類(如提供給操作系統進行認證的主機口令、數據庫口令),需解密、需展示(如客戶姓名信息數據)。后根據不同分類分別封裝不同的應用程序庫供業務程序調度使用,主要包含以下方法:
(一)不需解密、僅用于認證:將加密算法、解密算法(如果使用非對稱加密算法則不需要解密算法)、一致性校驗邏輯封裝在一起,對外提供加密功能、校驗功能,不提供解密功能;
(二)需解密、不展示類:將加密算法、解密算法、認證過程邏輯封裝在一起,對外提供加密功能、數據庫或主機的連接通信功能,不提供解密功能;
(三)需解密、需展示:將加密算法、解密算法封裝在一起,同時增加功能調度認證邏輯(即調度解密算法時,程序自動識別調度來源,如果來源在授權范圍內,則允許調度,否則拒絕),對外提供加、解密功能。
(四)所有封裝程序在編譯時隱藏描述符、不規則變量命名等各種防反編譯、防調試手段,增強程序的安全性;
(五)如果是JAVA程序,設計防泄露體系結構(由于涉及專利權事宜,在此不予詳細說明)。
通過上述“私有化”、“封裝”的手段,可有效解決算法被濫用、不可控等問題,可大幅提升企業數據的安全性。
如果管理不善,技術手段再如何強大也起不到應有作用。常見、安全有效的保護方法是將加密數據、加密算法、功能包放在有限的、不同的人的手中,人與人之間、人與數據之間、人與加密算法的使用之間形成制約關系——能看到數據的人不能掌握解密功能和算法,掌握解密功能和算法的人不能看到數據,必須多人合作方可解密等等。相關流程、方法在安全防控工作中是成熟的,在此不予贅述。
數據安全問題是各行各業都面臨的難題,嚴格講是不能實現徹底根除風險的,但通過加密算法強化、算法使用方法的安全保障、管理手段的加強等手段的聯動,可相信數據安全可以得到大幅提升,數據泄露的風險將可降到最低。
作者單位:中國移動通信集團黑龍江有限公司