亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟件特征和軟件水印在軟件保護(hù)中的應(yīng)用研究

        2018-12-13 09:08:28李冬冬龐巖梅
        關(guān)鍵詞:指令集胎記開發(fā)者

        范 潔 李冬冬 龐巖梅

        (北京電子科技學(xué)院網(wǎng)絡(luò)空間安全系 北京 100070)

        0 引 言

        隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,軟件也從傳統(tǒng)的計(jì)算機(jī)軟件發(fā)展到智能手機(jī)APP,這給人們的生活帶來了無窮的便利。同時,軟件盜版、軟件篡改、軟件攻擊等事件頻頻發(fā)生,嚴(yán)重地影響著軟件生產(chǎn)者和使用者的利益。軟件保護(hù)技術(shù)日益受到政府、企業(yè)和研究者的重視。本文綜合運(yùn)用軟件水印術(shù)和軟件特征技術(shù),提出了一種基于靜態(tài)水印和軟件指令集的軟件特征值提取方法,并設(shè)計(jì)了軟件特征值在軟件保護(hù)中的具體應(yīng)用方案。將提取出軟件特征值經(jīng)軟件開發(fā)者對稱加密后隨軟件一起打包發(fā)售給使用者,可在軟件運(yùn)行不正常時,鑒定軟件是否遭受破壞,或在軟件發(fā)生盜版時追溯盜版源頭。

        1 軟件特征

        軟件特征是程序本身所擁有的軟件屬性。軟件特征源自于程序的所有相關(guān)信息,包括程序代碼、API調(diào)用頻率、類繼承關(guān)系、線程執(zhí)行序列、數(shù)據(jù)流等。

        軟件胎記(Software Birthmark)是在軟件變化時,該軟件特征保持不變的、可用于標(biāo)識該軟件的屬性。通過對比兩個軟件胎記特征的相似性,來判斷軟件的相似性,從而檢測出軟件是否存在拷貝或盜版。軟件胎記可分為軟件靜態(tài)胎記和動態(tài)軟件胎記[1,9]。

        定義1軟件靜態(tài)胎記(software static Birthmark):設(shè)P是軟件的程序集合,Extract是從P中提取特征的一種方法,得到程序P在非執(zhí)行狀態(tài)下的靜態(tài)特征集合B,則有Extract(P)→B。

        定義2軟件動態(tài)胎記(software dynamic Birthmark):設(shè)P是軟件的程序集合,I表示對P的一個合法輸入,Extract是從P中提取特征的一種方法,若P運(yùn)行且I不為空集,則稱此時B為動態(tài)胎記,記Extract(P,I)→B。

        2 軟件水印

        軟件水印通過向軟件程序中嵌入隱藏信息來實(shí)現(xiàn)軟件版權(quán)保護(hù)。在軟件開發(fā)時可以將含有版權(quán)保護(hù)的信息嵌入到程序的代碼區(qū)、數(shù)據(jù)區(qū)及程序的執(zhí)行過程中。在發(fā)生軟件版權(quán)糾紛時,嵌入到程序的隱藏信息可以被提取出用于判斷軟件的擁有者或者開發(fā)者,協(xié)助鑒定軟件版權(quán)。

        靜態(tài)軟件水印是指水印在軟件開發(fā)時被添加到軟件的數(shù)據(jù)區(qū)或者代碼區(qū),但不在程序的可執(zhí)行流程中,是一種與軟件運(yùn)行狀態(tài)無關(guān)的水印。動態(tài)軟件水印與靜態(tài)軟件相反,將水印信息隱藏在程序的執(zhí)行過程中,但只有程序在特定的輸入序列下運(yùn)行時,才能提取出的軟件的水印信息[1,9]。

        3 軟件特征值提取方法

        軟件反編譯的結(jié)果可以作為軟件的特征。本文使用靜態(tài)水印和軟件反編譯得到的指令集作為軟件特征值提取的來源。首先對嵌入在軟件中的字符串水印信息進(jìn)行摘要值計(jì)算得到的摘要值為W;再對軟件進(jìn)行反編譯得到的軟件指令集合進(jìn)行統(tǒng)計(jì),得到指令統(tǒng)計(jì)結(jié)果的集合為P;最后將P和W作為哈希算法的輸入計(jì)算出摘要值作為該軟件的特征值。提取流程如圖1所示。

        圖1 軟件特征值提取流程圖

        3.1 嵌入靜態(tài)數(shù)據(jù)水印

        數(shù)據(jù)水印是將水印嵌入到軟件中的最簡單的方法。這種方法將包含數(shù)據(jù)水印的信息插入軟件中指定的位置。假設(shè)軟件的版權(quán)者為電科院,軟件出售給A公司使用,可以在軟件代碼中插入版權(quán)信息如下:

        字符串水印=“版權(quán)&電科院&使用者&A公司”

        采用此種方法插入的水印信息雖然簡單,但可以被用來識別軟件的開發(fā)者和使用者。這種簡單的嵌入與識別水印的方法可以非常容易地應(yīng)用到軟件中,水印信息由軟件開發(fā)方事先嵌入在軟件中。本文提出的基于靜態(tài)水印和軟件指令集的軟件特征值提取方法,需要使用水印的摘要值作為提取特征值的輸入之一。本文開發(fā)的測試程序在開發(fā)過程中嵌入靜態(tài)數(shù)據(jù)水印,水印字符串取值為“電科院”代表軟件的開發(fā)者,采用MD5算法對水印值進(jìn)行哈希計(jì)算,得到水印的摘要值。結(jié)果如圖2所示。

        圖2 靜態(tài)數(shù)據(jù)水印摘要值計(jì)算結(jié)果

        3.2 反編譯并提取軟件的指令集

        軟件反編譯指的是把二進(jìn)制代碼翻譯成匯編助記符。目前有很多專業(yè)的反匯編工具,如IDA Pro(Interactive Disassembly Pro)、W32Dasm等。 .NET中自帶的反編譯工具Ildasm.exe可以對基于.NET平臺開發(fā)的軟件進(jìn)行反匯編。

        本文使用反編譯工具Ildasm.exe對在.NET環(huán)境下使用C#語言開發(fā)的測試程序test.exe進(jìn)行反編譯,并將反編譯結(jié)果存儲在test.il文件中,并在軟件指令提取模塊編程實(shí)現(xiàn)了test.il文件的打開。結(jié)果如圖3所示。

        圖3 中間碼文件打開結(jié)果

        由圖3可知,可執(zhí)行程序經(jīng)過反編譯得到了指令集,接下來需要對指令集進(jìn)行統(tǒng)計(jì)分析,得出每個指令出現(xiàn)的次數(shù)。采用正則表達(dá)公式進(jìn)行多次組合和實(shí)驗(yàn),找到滿足規(guī)律的公式,這也是特征指令提取的關(guān)鍵所在。編程完成特征指令的提取及特征指令的統(tǒng)計(jì),結(jié)果如圖4所示。

        圖4 特征指令提取及統(tǒng)計(jì)結(jié)果

        至此,得到由test.exe反編譯提取出的特征指令集P:

        nop:2;

        ldstr:1;

        call:3;

        pop:1;

        ret:2;

        ldarg:1;

        3.3 基于靜態(tài)水印和軟件指令集的軟件特征值提取

        3.1節(jié)詳細(xì)闡述了水印的賦值及水印的摘要值W的獲取方法,3.2節(jié)詳細(xì)闡述了軟件指令集的求取過程。將水印摘要值W和軟件指令集P合成后,再次進(jìn)行摘要計(jì)算將得到的摘要值作為軟件的特征值。本文采用MD5算法作為求取軟件特征值的哈希算法,最終以128比特的哈希值作為軟件的特征值,具體結(jié)果如圖5所示。

        圖5 軟件特征值提取結(jié)果

        3.4 軟件特征值實(shí)驗(yàn)結(jié)果分析

        本文提出的軟件特征值提取方法對輸入的變化非常敏感,軟件特征值的提取主要依賴于數(shù)據(jù)水印值和軟件反編譯后得到的指令集。下面對不同的軟件和不同的水印值產(chǎn)生的軟件特征值進(jìn)行比較分析。

        從表1分析可以看出,相同的軟件,不同的水印,產(chǎn)生的軟件特征值不同;不同的軟件,相同的水印,產(chǎn)生的特征值也不同。當(dāng)嵌入到軟件中的數(shù)據(jù)水印信息遭到暴力移出后,將對軟件產(chǎn)生損害,由此產(chǎn)生的軟件指令集與原先的指令集不同,最終產(chǎn)生的軟件特征值與之前的軟件特征值也不同。由軟件特征值對輸入的敏感性可知,結(jié)合軟件水印信息和軟件指令集的軟件特征值方法可用于軟件保護(hù)。

        表1 軟件特征值比較

        4 應(yīng)用方案

        軟件特征和軟件水印均可用于軟件的版權(quán)保護(hù),但是軟件特征技術(shù)用于軟件版權(quán)保護(hù)時一般需要可信第三方的支持[5]。本文提出的基于靜態(tài)水印和軟件指令集的軟件特征值提取方法結(jié)合對稱加密技術(shù),在不需要可信第三方支持的情況下,即可完成軟件完整性鑒定和軟件版權(quán)保護(hù)。軟件特征值在軟件保護(hù)中的具體應(yīng)用方案如圖6所示。由軟件開發(fā)者使用加密口令和對稱加密算法對軟件特征值進(jìn)行加密,然后將加密后的軟件特征值文件與可執(zhí)行程序一起打包發(fā)售。

        圖6 軟件特征值在軟件保護(hù)中的具體應(yīng)用方案

        由于加密后的軟件特征值文件在后續(xù)的版權(quán)保護(hù)和軟件完整性鑒定中非常重要,軟件發(fā)行方應(yīng)當(dāng)以隱秘的方式將密文的特征值文件與可執(zhí)行程序一起發(fā)行,且保證密文的軟件特征值文件在用戶計(jì)算機(jī)中隱密存儲。加密密鑰還需用于解密密文的軟件特征值文件,軟件開發(fā)者務(wù)必妥善保管。

        軟件開發(fā)者還需要在本地維護(hù)一個水印值與軟件特征值映射關(guān)系表,以在未來發(fā)生版權(quán)糾紛或者軟件遭受破壞時使用。軟件發(fā)行之前,在軟件中嵌入的數(shù)據(jù)水印值和計(jì)算產(chǎn)生的軟件特征值均需填入表2。

        表2 水印與軟件特征值映射關(guān)系

        4.1 在軟件完整性鑒定中的應(yīng)用

        軟件被發(fā)售并在使用者計(jì)算機(jī)上安裝運(yùn)行后,很容易遭受攻擊而導(dǎo)致軟件不能正常運(yùn)行。本文設(shè)計(jì)的基于軟件特征值的軟件保護(hù)保護(hù)方案可以判斷軟件是否遭受到破壞。當(dāng)懷疑軟件遭受到破壞時,首先由軟件發(fā)行者根據(jù)用戶信息和水印生成規(guī)則,產(chǎn)生水印值,對用戶使用的軟件進(jìn)行反編譯求得軟件指令集,再根據(jù)軟件指令集和水印值產(chǎn)生新的軟件特征值1。接著根據(jù)水印值檢索軟件開發(fā)者存儲的軟件跟特征值表,提取出表中存儲的軟件特征值,稱為軟件特征值2。比較軟件特征值1和軟件特征值2,如果二者相同,說明軟件沒有遭受到破壞;若二者不相同,說明軟件已遭受到破壞。具體過程如圖7所示。

        圖7 軟件特征值和軟件水印在軟件完整性鑒定中的應(yīng)用

        4.2 在軟件盜版追溯中的應(yīng)用

        設(shè)有軟件開發(fā)商A公司將自己開發(fā)的軟件A出售給使用者B使用,發(fā)售時A在發(fā)售軟件中打包了加密后的軟件特征值文件,也稱密文的軟件特征值的文件。B在使用過程中,不小心被C竊取了軟件,并由在C使用,并且任意擴(kuò)散D、E使用。

        A公司發(fā)現(xiàn)C、D、E使用的軟件可能是自己開發(fā)的軟件的盜版版本時,首先從盜版軟件中提取出隱藏的密文的軟件特征值文件,用自己保管的對稱密鑰解密密文的軟件特征值后,得出軟件特征值。然后檢索自己存儲的軟件特征值表,如找到對應(yīng)的軟件特征值,再找出對應(yīng)的水印值,根據(jù)水印值中存儲的使用者信息,找到軟件被盜版的源頭。如果C、D、E在盜版時對密文的軟件特征值文件進(jìn)行了刪除或破壞,此時A公司可以從盜版軟件中嘗試進(jìn)行水印提取。如能提取成功則根據(jù)水印信息判斷軟件的版權(quán)及使用者,確定是否是自己開發(fā)軟件的盜版。具體過程如圖8所示。

        圖8 軟件特征值和軟件水印在軟件盜版追溯中的應(yīng)用

        5 結(jié) 語

        軟件特征是從軟件本身提取出軟件的特有屬性作為識別軟件的方法。軟件水印是將軟件的版權(quán)信息嵌入到軟件中且不影響軟件的正常使用的技術(shù)。本文在充分研究軟件特征和軟件水印技術(shù)的基礎(chǔ)上,提出了一種基于靜態(tài)水印和軟件指令集的軟件特征值提取方法。

        該方法首先基于嵌入到軟件中的靜態(tài)數(shù)據(jù)水印計(jì)算水印摘要值;然后對軟件進(jìn)行反編譯得出軟件指令集并對指令集進(jìn)行統(tǒng)計(jì)分析得到有效的指令集合;最后對水印摘要值和軟件指令集進(jìn)行摘要計(jì)算得到最終的軟件特征值。本文對提取的軟件特征值設(shè)計(jì)了在軟件保護(hù)中的具體應(yīng)用方案,軟件特征值經(jīng)由軟件開發(fā)商對稱加密后以密文的軟件特征值文件的方式隨軟件一起打包發(fā)售。當(dāng)軟件運(yùn)行不正?;蛟谲浖艿焦魰r,可用于鑒定軟件的完整性是否遭受到破壞。當(dāng)軟件發(fā)生盜版時,可供軟件開發(fā)者使用追溯盜版源頭。綜上所述,本文提出的基于靜態(tài)水印和軟件指令集的軟件特征值提取方法及其應(yīng)用方案可用于軟件保護(hù),具有實(shí)際應(yīng)用價值,可在軟件保護(hù)領(lǐng)域推廣使用。

        猜你喜歡
        指令集胎記開發(fā)者
        臉上的胎記,讓我很自卑
        寶寶胎記,不可忽視
        3DNow指令集被Linux淘汰
        寶寶胎記,不可忽視
        寶寶長胎記,家長莫大意
        解放軍健康(2017年5期)2017-08-01 06:27:38
        實(shí)時微測量系統(tǒng)指令集及解析算法
        16%游戲開發(fā)者看好VR
        CHIP新電腦(2016年3期)2016-03-10 13:06:42
        iOS開發(fā)者調(diào)查
        電腦迷(2015年8期)2015-05-30 12:27:10
        iOS開發(fā)者調(diào)查
        電腦迷(2015年4期)2015-05-30 05:24:09
        什么是AMD64
        亚洲综合av永久无码精品一区二区 | 日本少妇高潮喷水视频 | 中文字幕美人妻亅u乚一596| 久久99精品波多结衣一区| 青青草是针对华人绿色超碰| 亚洲爆乳无码精品aaa片蜜桃| 狠狠色噜噜狠狠狠888米奇视频| 国产成+人+综合+亚洲专| 亚洲av国产精品色a变脸| 少妇激情av一区二区三区| 黑人巨大av在线播放无码| 无码国产精品一区二区免费网曝| 一区二区三区在线观看精品视频| 蜜芽亚洲av无码精品色午夜| 国产精选污视频在线观看| 色综合久久加勒比高清88| 国产又湿又爽又猛的视频| 国产av熟女一区二区三区 | 亚洲亚洲人成综合丝袜图片| 久久精品国产自清天天线| 青青草99久久精品国产综合| 成人av综合资源在线| 一本久道综合在线无码人妻| 99久久国产视频| 日本一区二区午夜视频| 亚洲人成网站在线播放2019| 国产成人麻豆精品午夜福利在线| 国产强伦姧在线观看| 久久久精品国产免费看| 粗大猛烈进出高潮视频| 久久国产精品二区99| 少妇激情一区二区三区| 久久久久久人妻无码| 日日噜噜夜夜狠狠久久无码区| 无码精品人妻一区二区三区98| 成人自拍小视频在线看| 久久精品国产视频在热| 亚洲欧洲日韩免费无码h | 国产的自拍av免费的在线观看| 国产综合无码一区二区辣椒 | 在线观看视频一区|