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