月光博客 - 再谈软件保护中软加密和硬加密的安全强度
原文鏈接:http://www.williamlong.info/archives/2429.html?轉載自月光博客
?
在軟件保護技術中一般存在兩種主要的保護方式:不需要額外的硬件設備,完全由軟件實現的方式和使用硬件加密鎖的方式。往往前者被稱作“軟加密”方式;而后者被稱作“硬加密”方式。普遍認為,硬加密方式的安全強度要大于軟加密方式。
但真的是這樣嗎?
一?軟件解密方法
如同軟件加密的方式千差萬別,軟件解密的辦法也多種多樣。但從根本上,無外乎三種主要手段:
1.?逆向工程
采用軟件代碼分析和跟蹤的方法,找到軟件中調用加密驗證或判斷驗證結果的代碼,并進行修改或替換,以繞過保護。
2.?通訊欺騙
在軟件代碼調用驗證機制的通道上對通訊指令截取和分析,并通過修改或回放的方法欺騙軟件,使之產生錯誤的判斷。
3.?指紋復制
對軟件進行加密認定的硬件信息或硬件本身進行復制。
其中逆向工程的破解方法與底層采用何種加密機制的關系不大,破解難度主要由軟件代碼的復雜程度以及核心安全庫的防護機制決定。下面主要分析通訊欺騙和指紋復制的破解方法對軟加密和硬加密的難易程度。
通訊欺騙
通訊欺騙往往通過監視、修改及復制系統功能調用的結果來實現。它需要破解者有能力在不影響軟件正常運行的情況下截獲及修改與軟件保護相關的系統調用。要能正常實現通訊欺騙,必須要滿足以下幾個條件:
1.?有能力找到所有與軟件保護相關的系統調用。
這對硬加密非常容易——所有對加密鎖硬件的IO操作;但對軟加密則不太容易,任何系統調用,包括文件、注冊表、系統信息、時間的調用都可能與軟件保護操作相關。
2.?能夠分析了解系統調用的輸入、輸出參數所代表的意義,能夠偽造返回結果。
3.?能夠在不影響系統及應用程序正常工作的條件下修改返回結果。
設計精良的硬加密產品可以在軟件代碼和硬件加密鎖之間構建所謂的“安全通道”,使得破解者雖然能夠截獲通訊命令,卻無法分析得到其中的原始數據,也無法偽造通訊命令,從而基本無法進行通訊欺騙。
對于軟加密來說,破解者總是可以得到系統調用命令的原始數據,但要想在不影響系統以及應用程序功能的情況下修改系統調用結果則并不容易。一方面,破解者必須能夠了解哪些系統調用與軟件保護機制有關;另一方面,系統調用的結果并不總是容易截獲——很多獲取硬件指紋的命令基于系統中斷調用;最后,修改系統調用結果在很多情況下將會影響系統和軟件的運行,使得破解過程無法正常進行。
從理論上來說,除非破解者能夠營造一個有能力任意監視并改寫所有系統調用結果的獨立環境,否則將無法完全實現通訊欺騙,而這樣做的工作要比逆向工程還要復雜,從而導致對軟加密采用通訊欺騙的破解方法失去意義。
從本質上來說,軟加密基于系統功能調用,而硬加密基于對硬件本身功能的調用。因此軟加密實現與系統本身的結合程度要比硬加密高得多。
指紋復制
軟加密的安全指紋由所運行的軟、硬件環境獲取;而硬加密的指紋就是加密鎖本身。與普遍的認知相反,對計算機運行環境指紋的復制要比想象中困難得多,而對加密鎖硬件的復制則要比想象中的更容易也更危險。
為什么計算機運行環境不容易復制:
1.?有一些計算機硬件設備包含了唯一的ID,比如說CPU或者某些型號的硬盤,這些唯一ID是不可復制的。
2.?包括硬盤分區序列號或網卡MID等都具有很好的唯一性。
3.?IP地址具有很好的唯一性,而偽造會導致系統網絡通訊異常。
4.?在局域網內部,機器名、用戶名及內網IP地址都是很好的唯一特征。
5.?根據操作系統及硬盤文件可以產生非常好的唯一特征。
6.?最重要的是,要復制所有上述這些硬件和軟件特征,其投入的成本不低。因此不具備大規模復制的可行性。
關于硬件加密鎖的復制:
1.?主要的加密鎖芯片都可以通過硬件剖片的方法讀出內容,從而進行復制,包括智能卡芯片。這個過程的成本比通常想象的要低,因為破解者往往會租用專業設備而不需要自己購買。
2.?破解者總是可以買到廠家的加密鎖,并進行分析和改造。
3.?破解者可能會通過加密鎖的代理或開發商內部相關人員得到加密鎖內部的算法相關數據,從而在無需硬件分析的情況下復制加密鎖。
4.?需要注意的是,加密鎖復制的前期成本較高,但一旦形成復制能力,后期的平均復制成本則很低。
結論
精心設計的軟加密實現方案可以在通訊欺騙和指紋復制的破解環節上提供足夠高的安全性,使破解者轉向通過逆向工程的方法破解軟件。在這種情況下,軟件的防分析及跟蹤能力以及代碼內部的加密技巧成為了安全系統的核心,底層基于硬加密還是軟加密將不再影響系統的實際安全性。
二?軟加密的新技術及四大優勢
通過利用網絡通訊和服務器認證,軟加密方式在實際應用中可以獲得比上述分析好得多的安全應用效果。
所謂服務器認證,是指軟件安全系統首次運行的時候在服務器端“備案”,存儲客戶端硬件特征,并獲取開發商授權的過程。除了首次運行的激活過程外,服務器認證還可以在今后再次進行,以核查及升級授權內容。
由北京比特安索公司開發的比特平臺除了支持服務器認證技術,還提供了將授權運行于服務器系統之上的“云授權”保護方案。云授權采用客戶端與服務器實時連接的驗證方案,安全系統指紋始終依附在服務器上,因此具有更高的安全性。它與傳統的軟加密具有明顯的區別,因此不在這里進行分析。
集成了服務器認證的軟加密方案具有硬加密不具備的四大優勢。
雙因素驗證
無論是傳統的硬加密還是軟加密,安全驗證都是單因素的,即基于加密鎖或本機硬件指紋。集成了服務器認證之后,加密方案本身是雙因素的:既與本機硬件指紋相關,又與服務器相關。
雙因素驗證大大加強了系統整體的安全性,破解者無法通過破解其中的一個因素實現完整的盜版。它使新一代的軟加密技術的安全性實質上超過傳統硬加密成為現實。
破解追蹤
世上沒有絕對可靠的保護技術,而運行于客戶環境的軟件代碼總是可以被跟蹤和分析。與硬加密不同的是,實現雙因素驗證的軟加密方案中很容易實現對破解應用的追蹤。
除非通過逆向工程的辦法把所有與服務器通訊相關的代碼完全替換——這個工作比軟件破解本身的難度還要大——否則服務器將有可能對軟件的破解拷貝進行追蹤。以比特平臺為例,通過設置授權模版的“強制認證”或“智能連接”屬性,客戶端軟件將定期或不定期地嘗試與服務器進行連接驗證,服務器因此可以發現是否有授權盜用的情況,并且可以根據相應的授權碼找到盜用源頭,解后進行封鎖。
也就是說,新一代的軟加密技術本身通過服務器驗證的機制,不再是單純的本地安全技術。它是包含了本地安全與網絡安全的綜合性系統架構。
補救措施
軟加密的一個明顯優勢是可以方便地推出對破解版本的補救措施。
當基于硬加密的應用程序被破解后,一般來說,為保證升級后的應用程序與舊版本程序使用的加密鎖不兼容,軟件開發商在應用升級的時候必須同時升級應用程序代碼并提供新的加密鎖。這樣的升級措施需要很大的成本,開發商實際上往往無法實施。
而軟加密的補救措施是零成本的。
同樣以比特平臺為例,當開發商發現現有版本被破解后,可以在平臺上為現有產品添加新的特征項(即功能模塊),或升級已有的功能算法;開發商相應地升級應用程序代碼,制作升級補丁,并發送給合法用戶。
合法用戶拿到升級補丁并升級應用程序后,應用軟件可以自動連接到授權服務器進行算法更新并升級本地授權文件,從而完成升級。而盜版用戶因為無法通過服務器驗證而不能應用升級內容。破解者也必須再次實施破解才能使用新的功能。
破解風險
前面提到了,軟加密與系統和使用環境的結合程度要比硬加密高得多。對于硬加密的破解版本使用者,除了軟件本身可能會因破解不充分而存在問題外,使用者不存在任何其它使用風險,盜版使用的成本很低。
對于軟加密,盜版使用者往往需要為使用軟件而更改系統設置,如網卡MIC地址或系統時間,而這些都會對整個系統及其它應用程序造成影響,從而提高盜版使用難度,增加使用成本。這些系統設置和負面影響使得盜版使用不可能大規模推廣。
三?效果為王
使用軟件保護技術或產品的目標是以最小的成本達成最佳的防盜版效果,其本身是一個系統性的工作,軟件的整體安全性受系統中最薄弱部分的制約,并與實施難度、應用風險、危害程度等密切相關。
新一代軟加密技術以服務器驗證為基礎,其整體安全性已超出包括傳統硬加密在內的單純的本地安全技術,并顯著降低了盜版使用的擴散范圍,具有更好的實際安全效果。?
此外,軟加密特有的無物流、易管理以及授權靈活方案等眾多特點,使用它成為互聯網時代的最佳軟件保護方案。
轉載于:https://www.cnblogs.com/wanbinghong/archive/2011/12/06/2277674.html
總結
以上是生活随笔為你收集整理的月光博客 - 再谈软件保护中软加密和硬加密的安全强度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【javascript位置属性】scre
- 下一篇: 实现Windows Phone、Andr