- 相關(guān)推薦
軟件保護機制
軟件保護機制【1】
摘要:計算機安全領(lǐng)域中,軟件保護一直是很熱門的研究課題,針對軟件開發(fā)者來說希望自己的軟件在采用軟件和硬件加密的技術(shù)后不能夠被修改或破解。
但是任何的軟件破解者只要花費足夠的資源和精力,幾乎所有的軟件都能夠被破解和修改。
如何提高軟件的保護能力,提高軟件的安全性是一個迫在眉睫的問題。
該文主要分析常見的軟件保護方法,以及介紹PE文件格式,同時提出了基于混合的軟件殼保護模型。
關(guān)鍵詞:加密;加殼;脫殼;MAC;PE文件
常見的軟件保護方式包括硬加密和軟加密兩種方式。
硬件加密主要是采用加密狗、盤保護兩種方式。
軟加密保護主要是充分利用計算機硬盤序列號、CPU序列號、MAC等唯一性,利用軟件將硬件的唯一性綁定到一起,有效的形成軟件保護。
常見的軟件保護包括:軟件水印、注冊驗證、反跟蹤、軟件加殼保護;隨著目前軟件技術(shù)的發(fā)展,以及惡意軟件感染能力的增強,采用傳統(tǒng)的軟件保護方式針對安全性要求高的軟件來說保護效果不夠明顯,所以需要提出新的軟件保護方式。
軟件開發(fā)者通常會自主開發(fā)軟件加密算法和用戶賬號統(tǒng)一管理工具來提高軟件的安全性。
1 硬加密方式
常用的硬加密通常采用的方式是將被保護的軟件與硬件加密鎖有效的綁定到一起,比如一些重要的敏感數(shù)據(jù)、key file授權(quán)文件、加密算法等都存儲到硬件加密鎖中。
一般根據(jù)使用CPU的不同分為普通加密鎖和智能加密鎖。
硬加密雖然從安全性上來說比較高,但是缺點還是比較明顯:
1)對于升級、維護比較難以管理;
2)由于需要硬件設(shè)備,所以成本偏高,主要包括生產(chǎn)、運輸、安裝等成本;
3)影響用戶體驗,因為需要安裝相應(yīng)硬件的設(shè)備驅(qū)動和硬件設(shè)備。
2 軟加密方式
軟加密是指使用軟件方法來進行各種加密保護,隨著軟件保護技術(shù)的發(fā)展越來越多的軟加密技術(shù)已經(jīng)出現(xiàn),比如常見的:注冊碼保護方式、功能菜單限制保護、使用時間限制保護、采用網(wǎng)絡(luò)驗證機制、驗證文件保護、反跟蹤技術(shù)保護、軟件加殼保護機制等。
2.1基于注冊碼保護機制
注冊碼其實就是序列號保護機制,本質(zhì)為防止軟件被盜版而采取的保護措施。
用戶通常從網(wǎng)絡(luò)上下載一個試用版本的軟件,在使用時間上有限制,如果時間過期后,就必須注冊才能夠繼續(xù)使用,使用者必須將自己的身份證號碼或手機號提供給軟件公司,然后軟件開發(fā)公司利用用戶的信息通過注冊機計算出一個有效的、唯一的序列號。
用戶再利用計算出的序列號和用戶信息輸入軟件中,如果信息合法那么相應(yīng)的限制被取消。
整個過程從數(shù)學(xué)的角度看其實就是映射關(guān)系。
常見的映射關(guān)系有四種,如表1:
表1 序列號映射函數(shù)
2.2基于菜單功能限制保護機制
基于菜單功能限制保護的軟件保護機制,主要用于軟件的demo版本,部分菜單功能被限制不能夠使用,通常有兩種方式方法一:使用版本的軟件和正式版本的軟件本身完全不同,使用版本的軟件在菜單中對于的功能實現(xiàn)函數(shù)根本就沒有,也就是只有正式版本中才有相應(yīng)的功能處理函數(shù)。
方法二:使用版本和正式版本實質(zhì)上是一樣的,只是將功能菜單設(shè)置為非激活狀態(tài)或隱藏,只有用戶成功升級為正式用戶后,被限制的功能才會解除。
對于破解者來說,只需要想辦法如何打開這些受限的菜單功能模塊代碼上。
2.3基于時間限制保護策略
基于時間限制的軟件保護機制主要包括兩種方式:1、總使用時間限制;2單次使用時間限制。
總使用時間限制主要是針對試用版本的軟件在試用時間上的限制,比如某個軟件試用期限為30天,如果用戶超過軟件試用期的時間,此軟件用戶就不能夠再使用了。
第二種方式,主要是指用戶單次使用試用版過程中的使用時間的限制,比如使用版本的軟件單次使用的時間為20分鐘,20分鐘后就不停的彈出提示用戶購買升級為正式用戶。
2.4基于key-file文件保護機制
Key-file(注冊文件保護)文件保護機制,用戶不需要輸入序列號或注冊碼等信息,充分利用文件來保存驗證信息實現(xiàn)軟件安全性保護。
這種方式其實是序列號保護機制的變形,只是驗證信息保存在文件中,通常key-file文件中的文件格式都是軟件開發(fā)者自行定義的,從原理上來說通常與軟件的配置文件(通常xml格式)有點類似。
用戶升級為正式用戶后,軟件開發(fā)者會提供一個key-file文件,你只需要把這個文件放到特定的目錄安裝目錄下面,下次啟動軟件的時候會自動尋找驗證用戶的合法性。
2.5基于軟件保護殼的保護機制
基于加殼技術(shù)的軟件保護主要是對可執(zhí)行文件進行加密、壓縮。
對要保護的軟件加上一個外殼,同時PE文件任然能夠正常運行。
外殼程序主要負責把受保護的軟件解壓解密到內(nèi)存中,并且控制權(quán)交還給原程序。
整個過程用戶不清楚也不并清楚該執(zhí)行過程,并且程序的運行速度也沒有明顯的影響。
整過過程針對用戶來說是透明的。
3 PE文件結(jié)構(gòu)
PE文件對于研究軟件保護,分析、掌握可執(zhí)行文件的組織結(jié)構(gòu)及其執(zhí)行原理是很有必要的。
Windows系統(tǒng)中的“WINNT.H”文件中包含PE文件的詳細格式,常見的PE文件包括:.EXE、.DLL、.OCX、.SYS、.COM 等類型的文件。
這種類型的文件在磁盤上的存儲格式是有一定的規(guī)律的。
從總體上看PE文件分為五大部分:1、Dos Header;2、PE Header;3、Section Table;4、Section;5 調(diào)試信息。
如圖1所示:
圖1 IPE文件結(jié)構(gòu)圖
可執(zhí)行文件加載器加載文件的時候,并不是一次把可執(zhí)行文件一次性裝入內(nèi)存中,而是通過循環(huán)遍歷文件的內(nèi)部結(jié)構(gòu)來判斷那一部分的內(nèi)容被映射到內(nèi)存中。
當文件被加載到內(nèi)存中,內(nèi)存和外存中的文件數(shù)據(jù)結(jié)構(gòu)已經(jīng)發(fā)生了變化。
通?蓤(zhí)行文件在內(nèi)存映射文件中各數(shù)據(jù)塊之間的相對偏移地址已經(jīng)發(fā)生了改變,同時科技將內(nèi)存映射文件偏移與外存文件偏移進行轉(zhuǎn)換(如圖2):
圖2 外存與內(nèi)存映像結(jié)構(gòu)圖
4 加殼軟件保護模型
軟件殼其實就是一段可執(zhí)行代碼用于防止軟件被非法的使用、修改、拷貝等的程序,當可執(zhí)行文件加載到內(nèi)存后,外殼程序首選獲得程序的控制權(quán),然后解壓加密還原PE文件,最后把控制權(quán)交還給原PE文件。
此模型除了采用代碼亂序,還有加密算法和防破解的分析技術(shù),增強了防止破解者修改程序的能力。
從技術(shù)層面上分析目前殼軟件的發(fā)展現(xiàn)狀:
1)多次加殼。
從語義上來說就是對PE文件進行多次加殼,達到增強軟件的保護強度。
就軟件保護而言,并不是加殼的次數(shù)與保護強度成正比的。
2)偽裝加殼。
通常通過改變文件自身的特征屬性來偽裝自己,從而干擾軟件破解者的分析能力,如果用戶沒有正確的分辨出外殼的類型,破解的時候?qū)⒒ㄙM巨大的資源和時間,TrickySigner是目前比較流行的偽裝加殼工具。
3)代碼混淆加殼。
現(xiàn)在JAVA中間代碼的保護就采用的這種方法,目前.net Obfuscator程序上也采用這種保護方式。
4)代碼變化加殼。
這種方式主要是采取合適的算法對代碼進行代碼變化,原程序運行的時候外殼程序就需要把亂序的原程序恢復(fù)為正常的。
從靜態(tài)反匯編后看到的代碼全是亂序的。
4.1 加殼原理
加殼的原理:1)對PE文件各section區(qū)塊壓縮和加密;2)添加解密和解壓程序到新的section區(qū)塊中,以及添加區(qū)塊頭到區(qū)塊表中;3)最后修改原程序的入口地址;加殼結(jié)構(gòu)如圖3:
圖3 加殼結(jié)構(gòu)
4.2外殼加載
外殼的加載過程如圖4:
1)保存程序的入口參數(shù)
2)獲取殼要用的API地址
3)解密原程序中的所有區(qū)塊的數(shù)據(jù)
4)初始化IAT
5) 重定位
6)HOOK-API
7) 跳轉(zhuǎn)到源程序的入口地址
圖4 加殼可執(zhí)行文件的執(zhí)行過程
4.3基于混合的軟件保護模型
常見的脫殼步驟為:首先找到可執(zhí)行原程序的入口地址,再dump可執(zhí)行文件的映像,從加殼后的可執(zhí)行文件自身來看不管什么時候最終都要轉(zhuǎn)入原程序的入口地址。
由于殼技術(shù)本身的要求我們不可能隱藏入口點的地址。
那么我們可以采取的方式是讓脫殼者即使dump了可執(zhí)行文件也沒法還原程序。
基于這個特性本文采用了基于混合的軟件加殼保護模型,將原程序和外殼有效的混合到一起。
圖5 基于混合的軟件保護模型
從圖5中可以看出即使脫殼者查找到程序的入口地址,同時dump可執(zhí)行文件的內(nèi)存映像,也很難還原原程序文件。
因為一旦把殼脫了原程序部分代碼也脫掉了。
這樣就很難還原原代碼從而達到保護軟件的目的。
此模型主要是采用代碼亂序的技術(shù)。
此技術(shù)就是把原程序打亂,讓脫殼者很難分析和破解。
達到外殼和原程序相互混合的目的,增加軟件的安全性。
此模型除了采用代碼亂序技術(shù)以外,也結(jié)合花指令技術(shù)、反-反匯編技術(shù)、以及結(jié)構(gòu)化異常處理技術(shù)等來增強被分析、破解的軟件保護技術(shù)。
4.3.1模型系統(tǒng)架構(gòu)圖
原可執(zhí)行文件處理包括添加殼程序和可執(zhí)行文件重組工程:將需要加殼的文件從磁盤加載到內(nèi)存中去,接著對可執(zhí)行文件內(nèi)存映射每個相關(guān)頭、區(qū)塊進行處理。
外殼程序: 加殼后的PE文件首先運行殼程序時候,會對原來的可執(zhí)行文件進行循環(huán)校驗,同時對原加密的區(qū)塊數(shù)據(jù)進行解密,以及重建輸入表,原程序亂序處理,最后還是跳轉(zhuǎn)到原程序的入口地址。
如上頁圖6。
此保護模型主要由加密部分、外殼部分、外殼添加部分、可執(zhí)行文件處理部分構(gòu)成,詳細的加殼程序流程如圖7所示:
圖7 系統(tǒng)加殼流程圖
5 結(jié)論
該文首先分析了軟件加密的兩種方式:硬加密和軟加密,同時詳細的介紹了當前比較流行的軟件加密的幾種方式。
然后采用軟件殼的軟件保護方式,分析PE文件的結(jié)構(gòu),提出基于混合的代碼保護模型。
假如外殼程序與原程序融合的越緊密,那么起到保護軟件的作用就越顯著。
參考文獻:
[1] 李文.基于殼技術(shù)的軟件保護研究[D].電子科技大學(xué),2012:43-44.
[2] 楊新柱.可執(zhí)行文件格式分析與應(yīng)用[D].北京郵電大學(xué),2009:30-34.
[3] 梁曉.惡意代碼行為自動化分析的研究與實現(xiàn)[D].電子科技大學(xué),2008.
[4] Bruce Schneier,“Security-FOCUS:Attack Trends”,QUEUE,June2005.
[5] Hodong Lee,“The construction and principal of executable file of windows systems”,Hanvit Media,2005.6.
開源軟件版權(quán)保護與利益共享平衡機【2】
摘 要: 隨著開源軟件的不斷商業(yè)化,其本身逐漸成為一種商業(yè)模式的載體并有了自身的利益追求,從而使得在其版權(quán)保護和相關(guān)利益者之間取得利益平衡尤為重要。
首先分析了開源軟件版權(quán)保護與相關(guān)者的利益沖突,然后從四個方面探討了開源軟件版權(quán)保護與利益共享的平衡機制;著作權(quán)的利益平衡要求開源軟件的版權(quán)保護更加多元和開放化;當前環(huán)境下對開源軟件進行“拿來主義”必須注意的事項;雙許可證制度對開源軟件版權(quán)保護和利益獲取的平衡。
關(guān)鍵詞: 開源軟件;版權(quán)保護;利益共享
開源軟件已經(jīng)被證明是一種極具生命力和市場號召力的軟件,但它是以有效的許可證保護制度為基礎(chǔ)的。
因此在實踐過程中,必須在版權(quán)保護和利益獲得方面取得平衡,這就需要本著“共享”的思維,讓開源軟件著作權(quán)人或企業(yè)與最終用戶遵循相關(guān)的游戲規(guī)則,更好、更健康的促進軟件產(chǎn)業(yè)的發(fā)展。
1 開源軟件版權(quán)保護與相關(guān)者的利益沖突
開源軟件(Open Source Software)即開放源代碼軟件,用戶可以免費使用、修改、復(fù)制和再發(fā)布。
但為了防止商業(yè)軟件堂而皇之的不斷竊取各類開源軟件并對其進行修改、完善及在此基礎(chǔ)之上發(fā)布新軟件,也為了激發(fā)眾多程序開發(fā)人員的熱情,保護開源軟件長期的共享繁榮,保證開源軟件的版權(quán)保護及利益獲取方面取得平衡,斯多爾曼創(chuàng)造性的提出了許可證制度。
但即便如此,開源軟件版權(quán)保護和相關(guān)利益獲取者之間仍然存在利益沖突,主要有以下三點:(1)無擔保問題,因為開源軟件是免費的,它強調(diào)“在任何情況下,軟件的原始開發(fā)者和版權(quán)所有者都不對任何損失負責,即使他們已經(jīng)被告知這種損失的可能性”,但如果軟件的發(fā)布者本身就發(fā)布有危害的代碼,未履行署名義務(wù)并標明修改內(nèi)容,獲得一定利益之后又發(fā)現(xiàn)上游發(fā)布的程序存在瑕疵,發(fā)布者本身就侵犯了他人的知識產(chǎn)權(quán)等,都會造成軟件著作權(quán)人與利益相關(guān)者產(chǎn)生利益沖突。
(2)原著作權(quán)人與后續(xù)開發(fā)者的著作權(quán)利益。
《著作權(quán)法》關(guān)于開源軟件的版權(quán)問題未進行明確規(guī)定,而開源軟件的開發(fā)者眾多,有群眾接力進行修改、完善的因素存在,這就不可避免的會出現(xiàn)《著作權(quán)法》中所規(guī)定的情況:被許可者對開源軟件進行修改且具有獨創(chuàng)性,修改的結(jié)果又使得開源軟件能單獨成為一個作品,也即演繹作品,而演繹作品屬于創(chuàng)作作品,其本身受到獨立的著作權(quán)法的保護。
顯然原著作權(quán)人和后續(xù)開發(fā)的演繹作品的版權(quán)歸屬在現(xiàn)有法律體制下產(chǎn)生了利益沖突。
(3)第三方代碼流入導(dǎo)致侵權(quán)。
開源軟件的開發(fā)者不計其數(shù),而且組織非常松散,開發(fā)人員之間可能沒有任何聯(lián)系,或者只是在網(wǎng)絡(luò)上用非真實的身份進行代碼溝通、代碼疊加而完成。
一個大型的項目甚至可能由全世界成千上萬個程序員按照搭建金字塔的方式來完成,那么這些非常自由的個體很難保證他們所貢獻的代碼沒有侵犯已有的權(quán)利。
一旦這些人在開源軟件中引入了具有完整著作權(quán)的代碼,開源軟件不可避免的引發(fā)著作權(quán)侵權(quán),開源軟件的使用者或最終用戶也可能因此而面臨相關(guān)法律訴訟甚至承擔嚴重的經(jīng)濟損失。
2 開源軟件版權(quán)保護與利益共享的平衡機制分析
開源軟件版權(quán)保護與利益相關(guān)者存在著上述潛在的各種利益沖突。
而在開源軟件市場蓬勃發(fā)展的今天,就需要在許可證制度、著作權(quán)法、商業(yè)渠道等方面下功夫,在深化對版權(quán)保護的同時,讓后者在遵循許可證制度基礎(chǔ)之上更加快捷、安全的獲取到相關(guān)利益。
2.1 著作權(quán)的利益平衡要求開源軟件的版權(quán)保護更加多元和開放化
著作權(quán)法、商標法、專利法等是我國知識產(chǎn)權(quán)法的重要組成部分,而知識產(chǎn)權(quán)法是典型的利益平衡法,其根本目的就是識別智力成果并以法律的強制力對其進行保護并賦予壟斷權(quán),同時又關(guān)注其他的利益訴求主體,以防壟斷者濫用權(quán)力,從而實現(xiàn)不同利益體系之間的平衡。
但知識產(chǎn)權(quán)是一種私權(quán),且主要體現(xiàn)其財產(chǎn)權(quán),這里的“私”與開源軟件的“共享”顯然是格格不入的,從而很難達開源軟件版權(quán)保護與利益的有效共享目的。
但現(xiàn)有的知識產(chǎn)權(quán)法體系有兩個問題:其一,未達到有效的平衡并催生了壟斷。
其二,為了達到這種平衡,是否只有充分對版權(quán)擁有者予以強烈的保護才能達到?筆者以為著作權(quán)的利益平衡要求開源軟件的版權(quán)保護更加多元化和開放化。
(1)開源軟件的充分“開源”是為其成功走向商業(yè)化創(chuàng)造了很好的存在條件。
和商業(yè)軟件相比,開源軟件的區(qū)別就是從一開始其著作權(quán)人將財產(chǎn)權(quán)讓渡給社會,但仔細分析會發(fā)現(xiàn)著作權(quán)人、傳播者、最終使用者三者的在同樣的利益鏈條上且呈三角關(guān)系,可以相互轉(zhuǎn)換,它不再是商業(yè)軟件那種雙向的、利益分明的關(guān)系。
參與修改源代碼的程序人本身也是著作權(quán)人,享有部分著作權(quán),其將代碼按照許可證制度的規(guī)定發(fā)布出去后其又成為傳播者,使用者獲得免費使用軟件的權(quán)利但其技術(shù)基礎(chǔ)又是公開的,對競爭對手而言無秘密可言。
因此本質(zhì)上這三者的角色在不斷互換,三者之間相互讓渡權(quán)利,在動態(tài)中獲得利益的再平衡。
利益的多元化讓這三者之間的界線不再像商業(yè)軟件那樣清晰可見,后者存在的保證軟件的獨占權(quán)與公眾獲取利益的博弈不存在。
總體上看,開源模式讓著作權(quán)人有獲得經(jīng)濟利益的權(quán)利與可能,使用者也能通過免費獲得產(chǎn)品、付費獲得服務(wù)等方式獲得需要的軟件,對前者的保護還有利于軟件創(chuàng)新。
這種兼顧著作權(quán)人和社會公眾利益的制度本身就是利益的平衡,非常符合知識產(chǎn)權(quán)制度的初衷。
開源軟件的生存狀態(tài)如此,因此對其進行版權(quán)保護也必須與時俱進,做到著作權(quán)人、傳播者、開源軟件公司、最終使用者等多方的利益平衡。
(2)現(xiàn)實情況開源軟件雖然不能完全取代商業(yè)軟件,但有條件和能力取代相當一部分商業(yè)軟件。
軟件的復(fù)制與重復(fù)利用時困擾軟件侵權(quán)的難題,也是一種必然。
開源軟件則相反,它以開放的姿態(tài)讓任何人有使用和修改的權(quán)利,還為個性化的軟件服務(wù)提供了大量機會。
況且,和其他受著作權(quán)法保護的作品相比,軟件本身是一個工具,人民使用軟件其實享受的是一種服務(wù),而類似美術(shù)、文學(xué)或其他藝術(shù)作品,使用者享受的是信息獲取與美學(xué)感受。
開源軟件實際上已經(jīng)讓軟件產(chǎn)業(yè)從賣軟件回歸到賣服務(wù)的基點上,SAAS(Software-as-a-service,軟件即服務(wù))這一著名的概念就說明了這一點,IBM回歸服務(wù)的商業(yè)理念證明了運用開源軟件搭建商業(yè)生態(tài)環(huán)境并從環(huán)境服務(wù)中收取費用的模式是正確的。
這說明著作權(quán)的利益平衡并不一定要用獨占論實現(xiàn),相反將其當作工具,采取開放和多元化的態(tài)度,能很好的尋求到版權(quán)保護與利益達成共享。
2.2 當前環(huán)境下對開源軟件進行“拿來主義”必須注意的事項
開源軟件是免費的,這造成使用者采用“拿來主義”就以為萬事大吉,這種思想在市場中可能會面臨非常嚴重的訴訟風(fēng)險甚至造成公司的滅頂之災(zāi)。
在現(xiàn)有的市場環(huán)境、法律環(huán)境及許可證制度約束下,要在尊重版權(quán)保護的基礎(chǔ)之上充分共享開源軟件,務(wù)必遵循幾個原則:
(1)對軟件開發(fā)商而言,需要明了不同許可證制度的異同。
因為在同一個軟件項目中可能會使用到不同許可證規(guī)范下的開源軟件,Google開發(fā)的Android手機操作系統(tǒng)極具典型意義,該系統(tǒng)使用了GPLv2規(guī)范下的Linux內(nèi)核,和BSD、Apache等規(guī)范下的中間件、核心應(yīng)用軟件。
之所以如此的目的就在于Linux內(nèi)核的著作權(quán)人在GPL中聲明了運行在內(nèi)核上的程序不受GPL約束,這樣利用其他許可證發(fā)布的程序就可以當作產(chǎn)品銷售從而盈利。
這其實是企業(yè)在市場中面對產(chǎn)權(quán)保護而尋求利益共享的一個實踐。
常用的許可證制度的特點如表1所示。
開源軟件企業(yè)或最終用戶在選擇開源軟件時需要明確知曉不同許可證制度賦予的不同權(quán)利,并在這些規(guī)范下行使權(quán)力以免處于面臨侵權(quán)訴訟的境地。
(2)在技術(shù)層面上做到以下幾點:
①對于流入開源軟件的源代碼進行監(jiān)視。
實現(xiàn)這一問題的難度較大,特別是針對既有的開源代碼。
但是類似Linux以及OSDL等組織已經(jīng)提出“開發(fā)者原創(chuàng)證明”,這相當于要求開發(fā)者對其貢獻的源代碼的原創(chuàng)性進行保證并簽名,從而防止代碼侵權(quán)事件的發(fā)生。
因此在選擇開源軟件時這些具有“保證”的軟件可行度更高,共享的風(fēng)險也更低。
、谲浖_發(fā)是盡可能與開源軟件進行鏈接而是不是將代碼直接嵌入其中。
這與Windows操作系統(tǒng)中dll動態(tài)庫類似,這樣在使用這些代碼時調(diào)用的開源免費的代碼,不存在侵權(quán)問題。
③對涉及到的侵權(quán)代碼進行實質(zhì)性的更換。
目前著作權(quán)法保護的作品表現(xiàn)形式而非設(shè)計思想。
進行實質(zhì)性的更換后能消除代碼侵權(quán)威脅。
2.3 雙許可證制度對開源軟件版權(quán)保護和利益獲取的平衡
所謂雙許可證就是軟件版權(quán)所有人使用不同的許可證進行軟件分發(fā),并對被許可人的權(quán)利做出不同的限制。
這種在一定程度上在開源軟件版權(quán)保護的基礎(chǔ)之上,擴大了相關(guān)者的利益共享范圍。
(1)對沒有多個版權(quán)人的開源軟件,雙許可證制度有利于進行開源版權(quán)保護的同時又獲取一定的利益。
先看一個反面例子Linux:Linus最早開發(fā)了Linux并擁有其全部版權(quán),但隨著該開源軟件在市場上的廣泛使用以及大量的程序愛好者不斷在GPL許可證規(guī)范下發(fā)布其他模塊或補丁,Linus不再擁有其全部版權(quán)。
但如果Linus此時采用雙許可制度,即對一部分使用者發(fā)布GPL規(guī)范下的版本,對另外一部分發(fā)布非GPL約束的版本,那么顯然其就侵犯了其他人的GPL版權(quán)。
但它給我們的啟示是,如果類似的開源軟件能夠獲得以下條件:其他程序修改者或享有著作權(quán)(哪怕是一部分)的人聲明放棄版權(quán),或者所有版權(quán)人都同意發(fā)布帶有商業(yè)許可的版本,那么開源軟件其實就擴展了其共享范圍,并在版權(quán)保護和市場利益中獲得平衡。
因為發(fā)布非GPL版本的軟件并不以犧牲開發(fā)和維護新的GPL版本的Linux為代價。
比如Mysql由于沒有多個版權(quán)人的問題,因此其就了兩個版本:商業(yè)版本和GPL版本。
(2)解決版本兼容問題。
由于不同的許可證制度在不但變化和發(fā)展中,如GPL已經(jīng)升級到v3版本,但是開源軟件本身確實一脈相承的,這意味著同一款開源軟件部分代碼是遵循GPLv2,另外一部分卻遵循GPlv3版本。
如原始版本的開源軟件2006年以前發(fā)布,許可證為v2,但隨后發(fā)不了v3版本的補丁,這樣編譯之后的二進制版本不能再行傳播。
對此可以采用GPLv2+GPLv3雙許可證的方式來規(guī)避這種風(fēng)險,使得開源軟件的版權(quán)在得到保護的同時,軟件使用者也降低了面臨法律訴訟的風(fēng)險,如Mysql的商業(yè)用戶,其修改過的代碼就不必公開,而可以當作商業(yè)機密而存在。
這種方式對促進開源軟件的發(fā)展有非常大的意義。
參考文獻
[1] 張平.共享智慧——開源軟件知識產(chǎn)權(quán)問題解析[M].北京:北京大學(xué)出版社,2005,(1).
[2]傅佳茵.開放源代碼軟件及其許可證法律問題研究[D].北京:中國政法大學(xué),2006.
[3]楊彬.開源軟件許可證研究[D].濟南:山東大學(xué),2008.
[4]許洪波等.開源軟件在世界經(jīng)濟中的角色[J].軟件世界,2007(10).
[5]吳漢東.知識產(chǎn)權(quán)法[M].北京:法律出版社,2009.
軟件工程保護中的軟件防篡改技術(shù)【3】
摘要: 計算機已經(jīng)成為當代人生活、工作中的必須品,尤其是對企業(yè)而言計算機已經(jīng)成為企業(yè)活動之中不可或缺的重要組成部分。
而就計算機使用而言,對軟件的保護工作則是防止企業(yè)信息泄露、保證企業(yè)正常運轉(zhuǎn)的大前提。
就當下軟件篡改方式而言主要這樣三種:盜版軟件、工程逆向和篡改代碼,與之相對的保護方式主要有這樣三種:水印方法、模糊代碼和防篡改法。
以防止軟件篡改為主體,對軟件的保護工作做闡述。
關(guān)鍵詞: 軟件工程;防篡改;方式技術(shù)
伴著計算機的高度普及,軟件已經(jīng)擁有其獨立的知識產(chǎn)權(quán),軟件產(chǎn)生和運算的信息量之大是難以想象的,它是維持整個企業(yè)正常運轉(zhuǎn)的基礎(chǔ)保障。
因此越來越多的篡改、盜用、竊取軟件的事情發(fā)生,并且其技術(shù)也是日益強大。
為了保護企業(yè)、個人自身電腦的安全性和獨立性,方篡改軟件的技術(shù)也在不斷增強、包括給軟件大上水印、給代碼設(shè)置一個模糊環(huán)境、使軟件顯示多樣性、利用時間模式進行限制、安防軟件保安、使用智能卡等措施。
1 軟件保護工作中的防篡改法
防篡改法可以從硬件和軟件兩方面進行。
1.1 用于軟件上的防篡改法
軟件防篡改法主要從驗核工作、安放軟件護衛(wèi)、嚴查斷言、加密密碼等方面入手。
1.1.1 驗核工作
這是一種常用的靜態(tài)保護方式,其主要途徑是隨時對計算機中軟件、文件、信息等項進行檢查核對,并根據(jù)其存儲位置中的相關(guān)文件、備份文件進行比對,以確保軟件的安全性和軟件的完整度。
1.1.2 軟件護衛(wèi)
軟件護衛(wèi)是一種常用的軟件保護程序,它是一種獨立的小程序,分別安放在軟件的各個不同的地方,并且彼此之間有良好的聯(lián)系,以便在軟件中形成一個良好的網(wǎng)站保護結(jié)構(gòu),并將軟件分成一個個獨立的小段,每一小段由一個安全護衛(wèi)負責,當有篡改、盜版等行為發(fā)生時,可以做到立刻確定篡改發(fā)生在哪一區(qū)域,以便及時找尋并將其修復(fù)。
1.1.3 嚴查斷言
嚴查斷言是指檢查程序中的每一個斷言是否正確。
首先我們先來介紹一下什么是斷言,斷言就是計算機軟件特有的表述方法,這種表述方法主要是針對在一定條件下或是程序之中各個變量之間的關(guān)系。
斷言可以有效地對軟件程序的健康度進行檢測,并進行診斷和調(diào)整,所以在保持工作中采用斷言法成效明顯。
1.1.4 加密密碼
對密碼進行加密也是防篡改工作中常用的一種,其方法分兩種:其一,對軟件程序中的散數(shù)列、函數(shù)等做報摘處理,并定期檢測報摘情況是否一致完整;其二,使用軟件程序的公鑰計算法,形成程序自身獨特的簽名以保證程序的獨特性以防止發(fā)成篡改行為。
1.2 用于硬件上的防篡改法
硬件防篡改法是指,利用軟件與硬件之間相互配合的關(guān)系,利用防護設(shè)備阻止篡改情況的發(fā)生。
以往我們最常使用的硬件防篡改方法主要有采用軟件衛(wèi)士或是對軟件盤進行硬加密處理等等,利用軟件的儲存與運算基礎(chǔ)——硬盤,使之具有“保護意識”,進而從根本上防止篡改。
2 新時代的防篡改技術(shù)
在信息資源已經(jīng)變得越來越重要的今天,對信息竊取的技術(shù)支持力度變大,使得信息竊取技術(shù)有了質(zhì)的變化。
想要跟得上篡改技術(shù)的變化速度,滿足新時代對軟件保護工作的需求,只利用老方法、老路子是不行的,我們要利用老傳統(tǒng)的優(yōu)點,結(jié)合新時代篡改技術(shù)的特定,多角度、多防范性的進行思考,才能制定出真正有效的軟件防篡改技術(shù)。
以下就來介紹其中的幾種。
2.1 模糊化技術(shù)
模糊化技術(shù)是指對一段原有程序進行加工再處理,通過對其“模糊”轉(zhuǎn)化使之成為一段新程序,而這段新程序較舊程序而言更加難懂、更加不好解析,但其執(zhí)行結(jié)果有相同的表現(xiàn)形式,從而防止篡改行為的產(chǎn)生,也有效制止逆向軟件程序工作中的分析、拆解行為。
2.2 給軟件加水印
水印在各個領(lǐng)域均得到有效應(yīng)用,并取得卓有成效的成果。
在軟件防篡改工作中我們也可以借鑒這樣方法,在軟件程序中打一個特有的獨立的“水印”作為該程序的獨立標識,并且我們可以以這種表示為依據(jù)找出這段程序的作者、使用者、發(fā)行商等信息,且其中帶有版權(quán)所有信息與身份驗證程序,從而對軟件是否發(fā)生盜版、篡改等行為作出分析。
當有篡改行為或盜版行為發(fā)生時,軟件程序內(nèi)部的水印就會遭到破壞,當水印遭到破壞時內(nèi)部程序就會產(chǎn)生感知立刻終止軟件程序繼續(xù)運行,從而形成雙保險的防篡改機制。
水印技術(shù)作為一種常用的并且非常有效地方篡改機制,在被運用的同時也得到相應(yīng)的完善。
這里來舉兩個例子,第一個,在水印中加入驗算法,這是一種雙重保險機制,這是將水印法和加密法結(jié)合運算的方式,利用此種方式,篡改攻擊就要分兩個步驟進行,第一要避開、接觸水印,第二要結(jié)合加密運算,這樣我們保證篡改的不可發(fā)生性,但我們就將其限制方窄了,降低了軟件程序被篡改的可能。
第二個,針對于動態(tài)圖而言的,在對動態(tài)圖的編碼過程中在其內(nèi)部常量關(guān)系中增加一個函數(shù),該函數(shù)值的存在是依據(jù)動態(tài)圖的現(xiàn)有環(huán)境而定,也就是說,當動態(tài)圖發(fā)生被復(fù)制、轉(zhuǎn)移、重新編碼等過程這個函數(shù)的常數(shù)值就會相應(yīng)地發(fā)生變化,而從導(dǎo)致動態(tài)圖片的失真、程序無法運行,以便保證動態(tài)圖不被盜用。
除了這兩種防篡改方式方法外我們還有很多針對于新時代而做出的改變措施,在這里就不一一列舉了,這些方法的出現(xiàn)不但標志著長篡改機制的程序與進步,更說明了人們當前的信息保護意識越來越強,這位進入全信息時代打下了良好基礎(chǔ)。
3 防篡改程序應(yīng)用實例
1)東模塊加載模式,這種模式下,二進制碼程序被分成幾個,我們對第一個程序不進行處理,選取它的哈希值設(shè)做下個模塊的密匙,而選取第二個程序被解開密匙后的哈希值為第三個的密匙,以此類推,進而進行多重加密運算。
利用這種逐層加密、逐層解密的多層運算方式,可以有效的防治和中止盜用、篡改程序行為的出現(xiàn)。
2)軟件衛(wèi)士的檢查機制,這種常用的機制具有全面的檢查性和自我修復(fù)能力。
這種防篡改方式的作用途徑是將小的單元衛(wèi)士層序逐個安插在重要的程序中,彼此緊密聯(lián)系形成一個良好的信息網(wǎng)站結(jié)構(gòu),并在檢查出篡改、破壞行為后及時中止程序,達到方篡改的目的;在防衛(wèi)衛(wèi)士發(fā)揮作用時,與之同時安插進程序中的修復(fù)衛(wèi)士負責對程序完整性的檢查工作,一旦發(fā)現(xiàn)程序發(fā)生缺失、損毀立即作出修復(fù)動作。
這兩個程序相依存在,每一個衛(wèi)士均在另一個衛(wèi)士的檢查之下,當一個衛(wèi)士程序受到進攻,其他衛(wèi)士層序就能立刻響應(yīng),并且在植物衛(wèi)士的時候應(yīng)將其放在不明顯的地方,這樣在篡改行為發(fā)生時,不易察覺衛(wèi)士的存在,可以使防范功效增強。
另外,防范衛(wèi)士的攻擊響應(yīng)機制不應(yīng)該過于強烈,應(yīng)該在確定了篡改源后等其認為程序環(huán)境相對穩(wěn)定時再發(fā)起攻擊。
4 總結(jié)
隨著信息時代的到來和深化,計算機軟件所包含的信息已經(jīng)越來越突顯出其重要性,在對信息的保護和防篡改工作中,我們應(yīng)該怎么打好這場沒有硝煙的戰(zhàn)爭,以便使企業(yè)或是個人的信息得到更好保護,就成了其工作內(nèi)容的重點。
我們應(yīng)利用水印、多重密匙、軟硬件結(jié)合等多種方式共同作用,達到最好的保護效果。
參考文獻:
[1]徐海銀、董九山、李丹,一種改進的軟件加密自檢測防篡改技術(shù)[J].信息安全與通信保密,2007(3).
[2]沈海波、史毓達,計算機軟件的防篡改技術(shù)[J].現(xiàn)代計算機(專業(yè)版),2005(2).
[3]祝青,Java軟件保護技術(shù)研究[J].科技信息,2009(10).
[4]宋揚、李立新、周雁舟、沈平,軟件防篡改技術(shù)研究[J].計算機安全,2009(1)
【軟件保護機制】相關(guān)文章:
計算機軟件保護條例05-18
計算機軟件保護條例(全文)05-24
機制專業(yè)求職簡歷10-08
林業(yè)生態(tài)補償機制10-05
新股定價機制研究10-08
我國出口退稅機制10-07
計算機軟件保護的法律分析論文10-08
計算機軟件保護條例(2013修訂)05-25