1基于軟件層面的防篡改技術
1.1軟件哨兵。所謂的軟件哨兵,事實上是一段程序,規模微小,嵌在軟件中,可以用于執行代碼模糊、加密等任務,能夠使軟件不易被入侵,維護軟件的安全性和完整性。在軟件中,嵌入哨兵的數目可多可少,可以存放在不同的位置,它們所產生的作用也有所不同。這種軟件哨兵的工作原理是,如果攻擊者想訪問并企圖篡改軟件,一定要避開或者清除這些哨兵。如果攻擊者真的避開某些哨兵,留下的還沒被清除的哨兵便會立刻發現這種惡意攻擊,能有效阻止攻擊者篡改程序的繼續運行。不僅如此,正常程序的某些區域還被哨兵安置了監測代碼,使得攻擊者的入侵行為難上加難。軟件哨兵這種技術有一大優勢就是不僅能防止軟件被篡改,還能把篡改的代碼進行自動修復。因此,為了預防軟件被篡改,用戶通常會在軟件中嵌入大量的軟件哨兵,力求使攻擊者無懈可擊。
1.2軟件老化。所謂的軟件老化,就是指軟件經過一段時間后,性能大大下降,并且出現癱瘓的現象。目前解決這種辦法通常是軟件的更新,即利用軟件的再生技術。通過在合適的時間終止某個程序的應用,再把內部錯誤文件、程序等清除掉,切換新的應用功能,最后達到重新使用程序。利用此種方法進行防篡改,就必須要對軟件進行功能升級,定時對軟件進行檢測,并且程序上要和相應的插件保持同步升級。通過此來縮短舊軟件的生命周期,從而迫使攻擊者不斷進行軟件更新,提高及時發現攻擊者和盜版者的可能性。但是,此技術也存在缺陷,因為這種技術的操作對象是以文檔為主導的應用程序,只能適合對特殊數據的處理。這種技術只能把原版本文檔格式修改轉變為另一個版本,但不能逆向修改,這樣勢必給用戶使用帶來諸多不便。為此,軟件開發商應提供一個方便的應對策略。
1.3斷言檢查。所謂的斷言,就是計算機一種特有的邏輯表達方式,用來特別解釋說明一個條件或程序變量之間的關系。通過嚴格去檢查程序中每一個斷言是不是正確,能有效地對軟件進行檢測,發現軟件是否被篡改。如在程序中,在某特定點設置此表達式的值為真,但如出現軟件被篡改,當在此特定點之前分配其值為某些參數的非法值時,程序運行到此就會出錯。實質上,斷言是用來調試和驗證程序的一種工具,在任何時候都能啟用,故能更有效防止軟件被篡改。但這種方法也有缺陷。第一,變量的非期望值可能來自于程序錯誤,而不是來自于程序篡改。程序本來可從錯誤中恢復,但這種防篡改技術可能會終止程序的運行,降低了程序的容錯性。第二,大量的斷言檢查對于程序的執行效率影響性增大。最后,由于這種技術很難實現自動化,不得不加大人工的投入。
1.4水印技術。水印技術的應用甚為普遍。因為它能通過水印來驗證版權保護信息和身份屬性的真假。軟件防篡改的保護技術也引用這個特點,在軟件程序中打一個特有的獨立的“水印”作為該程序的獨立標識,并且以這種表示為依據找出這段程序的作者、使用者、發行商等信息,且其中帶有版權所有信息與身份驗證程序,從而對軟件是否發生盜版、篡改等行為做出分析。當有篡改行為或盜版行為發生時,軟件程序內部的水印就會遭到破壞,當水印遭到破壞時內部程序就會產生感知立刻終止軟件程序繼續運行,從而形成雙保險的防篡改機制。
1.5密碼技術。防止軟件被篡改的根本任務就是阻止軟件代碼被篡改。利用密碼技術對代碼進行加密,是目前防止攻擊者修改軟件的最可靠方法。加密是利用加密算法將軟件代碼轉換為不可讀的格式,從而達到保護數據的目的。普遍采用的方法之一是利用公鑰算法實現的數字簽名技術來防止應用軟件被篡改。應用程序的源代碼在連接編譯時,利用程序發布方的私鑰對其進行加密,即對程序進行簽名,簽名與程序綁定在一起,就有了對該程序是否被篡改進行檢驗的依據。簽名一旦成功,就具有確定性,無法偽造,也不可否認。另外一種方法是利用散列函數能對報文進行鑒別的特點。這種技術原理是:系統周期性地對數據文件利用散列函數產生一個報文摘要,并存儲起來。然后對數據文件,周期性地將新的報文摘要與舊的報文摘要進行比較,如果新舊數據有任何不同,則說明所監控的文件已被篡改。然而,此技術一旦攻擊者獲得密鑰,就可篡改軟件,而且由于系統必須在運行程序之前解密代碼,這會影響程序的執行效果,因此一般要用其他設備先解密代碼。
2基于硬件層面的防篡改技術
不僅在軟件層面能對軟件實行保護,防止軟件被篡改,利用硬件也可以,但是需要軟件的配合。軟件衛士技術和對軟件的各個盤實行硬加密方式,是當前人們經常使用的硬件防篡改技術。這種防篡改技術的原理,主要運用軟件的儲存位置硬盤,賦予它們保護功能,徹底地防止軟件被篡改。為了加大在硬件層面上對軟件實現更有效的保護,從根本上防止軟件被攻擊者篡改。當前,Intel公司發起了一個新的組織,希望通過這個組織研發出一種安全可靠和信任度高的硬件運算平臺來對軟件進行保護。而微軟公司為了實現信任度較高的計算,正準備推出一種命為“Palladium”的結構模式,這個模式可以創建一個更加安全的環境,使微軟應用軟件系統有效安全地運行。“Palladium”的結構模式能提供一種安全機制,使軟件不會被攻擊者利用各種程序進行窺探和隨意修改,并且保證了只有用戶信任的其他軟件和編程才能進行訪問。據說,這種結構模式對那些未被用戶信任或者授權的程序軟件,在遠程就可以被檢測到并且清楚它們。不過,這種技術受很多因素限制,可不可以成功還只能拭目以待。
3結束語
上文從軟件和硬件兩個層面,對軟件防篡改技術進行分析論述,并提出有用的建議,僅供參考。希望在今后的軟件防護工程中,能綜合上述的各種技術,使防篡改的技術得到更大的改善,提高防篡改技術的安全性和可靠性,從根本上杜絕軟件被篡改的情況。
作者:于文新 單位:同濟大學軟件學院