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