摘 要:本文對動態以及靜態的防篡改進行進行了重點介紹,并對現有防篡改技術予以分類,同時對各種方式的局限性和優劣進行了討論和分析,最后面對防篡改領域現存的問題進行了總結,同時對其未來研究和發展方向提出了相應建議。
關鍵詞:軟件;防篡改技術;分析
中圖分類號:TP31 文獻標識碼:A
伴隨軟件應用范圍的擴展,軟件的安全性問題也變得愈發突出。設計出具有時效性的軟件保護方案所具備的現實意義重大。最近幾年,作為軟件保護非常重要的手段,防篡改技術已經引起了研究者廣泛的重視。阻止程序關鍵信息被非法使用或修改是軟件防篡改目標之一,其另一目標便是對篡改予以檢測,同時做出回應。
1 現有的防篡改技術
1.1 動態防篡改技術
(1)完整性表示
程序的未遭破壞指標是用完整性來表示的。程序完整性表示是從程序中提取的。它作為防篡改技術檢測的基礎,其意義重大。目前,防篡改技術包含的完整性表示包含如下內容:校驗和:運行程序之前,通過報文摘要方式計算程序,同時用此結果進行程序完整性的標識。Hash 值:將Hash函數應用在程序運行中間值以及代碼片段上,同時用計算結果來表示完整性。數字簽名:完整性表示采用代碼塊數字簽名。
(2)動態防篡改不完善技術
建立在多塊加密思維基礎上的防篡改技術方案通過自我解密和自我修改,在保護程序里面嵌入驗證模塊,并執行如下任務:對程序完整性進行驗證,也就是對代碼塊預存值和數字簽名進行驗證,并確保這兩者維持一致性;同其他通信相協作,進而使防篡改機制力度得以加強。
(3)動態防篡改完善
實際上,相應機制和檢測機制之間的關系是非常密切的,它們都是防篡改技術里面重要的構成成分。就算檢測機制健全,如若沒有強大的相應機制,那么整個防篡改機制也就是沒有功效的。建立在多點設置基礎上的防篡改技術,通過對哨兵單元加以利用,進而達到保護程序的目的。按照需求的不同可設置多種哨兵,下面為常見的兩種哨兵:修復代碼:此種哨兵可使程序具備自我修復能力。在代碼完成性遭受破壞之后,哨兵會負責對篡改代碼進行修復,使之恢復原狀并正常運行,在保護程序里面嵌入眾多哨兵,從而形成一個哨兵團。
求代碼的校驗和:此種哨兵能使程序具備自我感應功能,在程序運行中對程序完整性以及保護代碼校驗進行計算。
1.2 靜態防篡改技術
通過變換代碼使程序的靜態分析增大分析難度,從而對攻擊人員進行逆向攻擊來提取核心代碼加以阻止。現如今,靜態防篡改技術分為控制流混淆、數據混淆、詞法混淆、預防混淆等,而前三種混淆技術經由對程序中節本元素進行修改來提升程序靜態分析的難度,更加關注的是人工攻擊,而預防混淆更為關注的則是工具的攻擊。詞法混淆主要用于對程序詞法結構進行修改,其中最主要的方式便是對標識符名稱進行修改,把程序里面的域名、方法名、類名轉換成沒有意義的標識符,從而讓攻擊人員不能從詞法上對其功能進行判斷。數據混淆主要作用在于對程序數據元素加以修改,修改的內容包括數組、變量、常量及別的數據結構。控制流混淆主要對程序控制流程加以修改。預防混淆的目的在于使軟件逆向分析程序的難度增大,又或者按照特定方式,采取相應預防對策。
2 防篡改技術的應用
2.1 保護商用軟件的訪問控制機制
商用軟件屬于付費軟件,對軟件供應商而言,確保使用者通過合理途徑來使用軟件能對其利益起到保障作用。當發布軟件里包含訪問控制模塊之時,它就可能被篡改,進而造成軟件訪問控制機制失去效應。可采取防篡改技術使其保護力度加大,例如采用隱式或者校驗形式來檢測訪問機制代碼是否被篡改;對多塊加密形式加以利用,進而用于保護訪問控制機制的代碼。
2.2 保護Java應用程序
Java程序非常容易被攻擊或破解,為對其進行保護,避免程序被非法復用或修改,可在Java程序里面使用隱式Hash防篡改方案,也可使用對手機端的Java字節碼框架予以保護。
2.3 在數字版權管理系統中應用
在具有數字版權管理系統中防篡改技術得到廣泛使用,在這類應用中,內容提供商將編碼數字內容傳給不可信設備。這類設備的軟件運行環境無法被內容提供商所控制。這個時候,系統安全問題便在怎樣避免攻擊者的反匯編或非法獲取解碼之后的數字內容。而在DRM中最常用的防篡改方式便是防止屏幕捕獲、代碼加密、代碼混淆等。
3 防篡改程序應用實例
3.1 東模塊加載模式
此種模式可將二進制代碼分成幾部分,我們可以不處理第一個程序,將其哈希值作為下個模塊的開啟鑰匙,而將第二個程序的希哈值作為第三個模塊的開啟鑰匙,以此類推,實行多重加密形式。通過對逐層加密形式加以利用,能使盜用以及篡改程序的行為得到有效防治。
3.2 軟件衛士的檢查機制,此種機制具備自我修復和全面檢查性的能力。
此種篡改形式通過將單元衛士層序安插在程序中,讓其形成一個信息網站,同時在檢查出破壞和篡改行為之后使程序終止,從而達到防止篡改的目的;當防衛衛士發揮其作用時,修復衛士則負責檢查程序的完整性,如果發現程序出現損毀或者缺失,要立刻將之修復。上述兩個程序的關系是非常緊密的,下個衛士會對上個衛士進行檢查,當衛士程序遭受攻擊時,其余衛士層序便能立刻做出響應,同時將植物衛士放在不顯眼位置,如此一來,在發生篡改行為時,便不太容易發現衛士,如此便能使防范功效得到增強。除此之外,要確保防范衛士不具備過強的攻擊響應機制,需在對篡改源加以確定之后,在程序環境穩定的狀況下再進行攻擊。
結語
作為軟件保護極為有效的一種手段,文章對現有防篡改技術及其方法進行了大致介紹,并就其優點和缺點進行了大致分析。篡改技術不同,則其應用場景也會相應有所不同,針對不同問題要進行具體分析。與此同時,同其他軟件保護相關技術結合能使防篡改技術保護軟件的能力得到增強。
參考文獻
[1]王朝坤,付軍寧,王建民,等.軟件防篡改技術綜述[J].計算機研究與發展,2011,48.
[2]余艷瑋,趙亞鑫.基于三線程保護和軟件哨兵的防篡改技術[J].計算機應用,2013,33.