• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Easter EGG算法的軟件水印實(shí)現(xiàn)

      2018-01-06 00:59李天科
      電腦知識(shí)與技術(shù) 2017年35期

      李天科

      摘要: 隨著軟件產(chǎn)業(yè)的迅速發(fā)展,軟件版權(quán)的保護(hù)已成為亟待解決的問題。分析了軟件版權(quán)保護(hù)的重要性和必要性,給出了軟件水印模型,介紹了DM軟件水印算法和Easter EGG軟件水印算法,借鑒了DM軟件水印算法中水印信息預(yù)處理方法,同時(shí)借鑒了Easter EGG軟件水印算法,給出了一種軟件水印實(shí)現(xiàn)的方法,并對實(shí)現(xiàn)的結(jié)果做了分析。

      關(guān)鍵詞: DM算法;Easter EGG算法;軟件水印

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)35-0116-02

      隨著計(jì)算機(jī)軟件技術(shù)的發(fā)展,計(jì)算機(jī)軟件已經(jīng)成為國家的基礎(chǔ)性、戰(zhàn)略性產(chǎn)業(yè)。計(jì)算機(jī)軟件在促進(jìn)國民經(jīng)濟(jì)和社會(huì)發(fā)展、轉(zhuǎn)變經(jīng)濟(jì)增長方式、提高經(jīng)濟(jì)運(yùn)行效率、推進(jìn)信息化與工業(yè)化融合等方面具有重要的地位和作用。同時(shí),隨著計(jì)算機(jī)網(wǎng)絡(luò)的普遍應(yīng)用,計(jì)算機(jī)網(wǎng)絡(luò)為軟件產(chǎn)品的傳播帶來了極大的便利,普通用戶可以隨時(shí)通過網(wǎng)絡(luò)下載、復(fù)制、分發(fā)軟件。

      然而,在網(wǎng)絡(luò)環(huán)境下,軟件產(chǎn)品的非授權(quán)復(fù)制和分發(fā)現(xiàn)象越來越多,軟件的盜版、篡改日趨泛濫。這不僅給軟件產(chǎn)品的開發(fā)企業(yè)、分銷商和服務(wù)商帶來極大的經(jīng)濟(jì)損失,同時(shí),這也不利于軟件產(chǎn)業(yè)的持續(xù)發(fā)展,容易引發(fā)諸多的計(jì)算機(jī)安全問題。因此,軟件產(chǎn)品的版權(quán)保護(hù)技術(shù)是軟件產(chǎn)業(yè)界和學(xué)術(shù)界長期研究的主要問題。

      軟件水印是20世紀(jì)90年代出現(xiàn)的一種源于數(shù)字水印技術(shù)的軟件版權(quán)保護(hù)技術(shù),受到國內(nèi)外許多學(xué)者的重視,出現(xiàn)了不少研究成果。但是這些研究主要集中在完善軟件水印理論以及構(gòu)造新的或者改進(jìn)原有的軟件水印算法,很少涉及到軟件水印的具體實(shí)現(xiàn)。本文基于Davidson-Myhrvold水印算法和Easter EGG水印算法,對軟件水印的具體實(shí)現(xiàn)做了簡單的嘗試。

      1 軟件水印的概念、模型

      1.1 概念

      軟件水印是指不被感知地嵌入在軟件中的一段有標(biāo)識(shí)意義的信息[1],有標(biāo)識(shí)意義的信息既水印信息,可以是用來標(biāo)識(shí)作者、發(fā)行者、所有者、使用者身份的信息,也可以是其它能用來標(biāo)識(shí)版權(quán)的信息,如數(shù)字、字符串、圖片等;這里的軟件通常是指可執(zhí)行的應(yīng)用程序,

      如java應(yīng)用程序經(jīng)過編譯之后生成的class文件、或者是有多個(gè)class文件經(jīng)打包后生成的jar文件、或者是Windows系統(tǒng)中可執(zhí)行的PE文件等,它們是軟件水印的載體。將水印信息嵌入到軟件中,需要驗(yàn)證軟件版權(quán)的時(shí)候可以從載體軟件中提取出來,以證明該載體軟件所有者的版權(quán),并且在保持載體軟件的功能和語義不變的情況下難以去除所嵌入的水印消息,以達(dá)到軟件版權(quán)保護(hù)的目的。

      1.2 模型

      軟件水印的模型如圖1所示,主要包括:軟件水印信息的預(yù)處理、軟件水印信息的嵌入和軟件水印信息的提取。軟件水印信息的預(yù)處理是將代表軟件版權(quán)的水印信息或標(biāo)識(shí)有用戶身份的水印信息(w),應(yīng)用某算法進(jìn)行處理,如使用Knuth算法將整數(shù)水印信息轉(zhuǎn)換成長度為t的排列,使用Graph-Theoretic算法將整數(shù)信息編碼成為圖等等,通過這樣的預(yù)處理能提高水印信息的隱蔽性。水印信息的嵌入是應(yīng)用嵌入算法將預(yù)處理后的水印信息(w)嵌入到軟件P中,形成攜帶有特殊水印信息的目標(biāo)軟件(Pw)。水印信息的提取是嵌入部分的逆過程,應(yīng)用相應(yīng)的提取算法從受保護(hù)的軟件(Pw)中提取出水印 信息(w'),再經(jīng)過反預(yù)處理得到解密后的水印信息(w),或者應(yīng)用相應(yīng)的驗(yàn)證算法驗(yàn)證水印信息(w)是否存在于受保護(hù)的軟件(Pw)中,這兩種提取方法都可以證明軟件的版權(quán)。

      2 軟件水印算法

      2.1 DM軟件水印算法

      DM軟件水印算法是Davidson和Myhrvold于1996年提出的是最早的軟件水印算法,該算法通過對程序流程圖中的基本塊進(jìn)行重排嵌入水印信息。其基本思想是將水印信息轉(zhuǎn)換成一個(gè)唯一的序列,在程序中選取指定個(gè)數(shù)的基本塊,選取的基本塊的個(gè)數(shù)不小于序列的長度,按照序列的順序?qū)緣K在程序流程中的位置進(jìn)行重排,然后在基本塊中加入分支指令,保持基本塊原始的執(zhí)行順序,從而確保程序的功能不變。

      DM算法的缺點(diǎn)是提取水印信息需要提供原始程序,將原始程序的流程圖與嵌入了水印信息程序的流程圖進(jìn)行比較。同時(shí)還需要知道水印信息序列的長度或水印信息的值才能正確的提取。

      2.2 Easter Egg軟件水印算法

      Easter Egg軟件水印算法的基本思想是將水印信息隱藏在源程序中,水印信息可以是一個(gè)字符串、一幅圖像、一段動(dòng)畫或者是一段視頻。驗(yàn)證軟件版權(quán)的時(shí)候,需要運(yùn)行該應(yīng)用程序,并輸入一個(gè)特定的序列,激活與水印相關(guān)的代碼,水印信息就會(huì)呈現(xiàn)在屏幕上。

      Easter EGG水印信息在應(yīng)用程序設(shè)計(jì)階段或者實(shí)現(xiàn)階段嵌入,水印信息提取的實(shí)現(xiàn)代碼也封裝在應(yīng)用程序中,水印信息的提取需要特定的輸入并在程序運(yùn)行過程中實(shí)現(xiàn),因此,Easter Egg水印算法屬于動(dòng)態(tài)軟件水印算法。Easter EGG水印的優(yōu)點(diǎn)是不容易受到扭曲攻擊,缺點(diǎn)是水印容易被定位,一旦特定的輸入序列被發(fā)現(xiàn),采用標(biāo)準(zhǔn)的調(diào)試技術(shù)就可以跟蹤可執(zhí)行代碼中水印的位置,然后可以將其移除或者使其失效。

      3 軟件水印實(shí)現(xiàn)

      3.1 軟件水印實(shí)現(xiàn)思想

      借鑒DM算法中水印信息的處理方法,選取一個(gè)數(shù)字做水印信息,在應(yīng)用程序中將該水印數(shù)字轉(zhuǎn)換成對應(yīng)的序列,保存在數(shù)組中。需要驗(yàn)證應(yīng)用程序版權(quán)的時(shí)候,啟動(dòng)該應(yīng)用程序啟動(dòng),在登錄界面的用戶名欄輸入水印信息,在密碼欄輸入包含有水印序列數(shù)字和其他字符組成的密碼,應(yīng)用程序從輸入的密碼中提取數(shù)字序列,與水印數(shù)字轉(zhuǎn)換成的序列進(jìn)行對比,若相同則輸出驗(yàn)證成功的提示信息。

      3.2 軟件水印實(shí)現(xiàn)過程

      1) 水印信息的預(yù)處理

      利用permute算法將水印信息轉(zhuǎn)換成一個(gè)唯一的序列,其實(shí)現(xiàn)的核心代碼如下:

      private static int[] permute(int i, int array[]) {

      // i表示水印信息;array[]存放轉(zhuǎn)換后的序列;t表示水印序列的長度。

      int s;

      for (int a = 2; a < t; a++) {

      s = i % a;

      i = i / a;

      int j = array[a - 1];

      array[a - 1] = array[s];

      array[s] = j; }

      return array; }

      2) 水印信息的嵌入與提取

      借鑒Easter EGG算法,將水印信息處理方法、密碼處理方法,提示信息的輸出方法分散在應(yīng)用程序源代碼中的不同位置。需要驗(yàn)證版權(quán)時(shí),輸入水印信息和密碼,從密碼中采用正則表達(dá)式提取水印數(shù)字序列,然后與調(diào)用permute()方法轉(zhuǎn)換的序列進(jìn)行比較,兩者相同則輸出提示信息。核心代碼如下:

      private static String toNumString(String str){

      //str輸入的密碼字符串

      String a=str;

      String regEx="[^0-9]";

      Pattern p = Pattern.compile(regEx);

      Matcher m = p.matcher(a);

      String s = m.replaceAll("").trim();

      return s; }//s水印數(shù)字序列字符串

      4 結(jié)果分析

      1) DM算法中提取水印信息,需要將嵌入了水印的程序與原始程序進(jìn)行比對,找出重排的基本塊,同時(shí)還要知道重排的基本塊的個(gè)數(shù),因?yàn)橹嘏诺幕究靷€(gè)數(shù)不同表示的水印信息也不同。DM算法實(shí)現(xiàn)困難,無法抵抗扭曲攻擊。本文借鑒了DM算法中水印信息的預(yù)處理方法,實(shí)現(xiàn)簡單。由于沒有基本塊的重排,所以能抵抗扭曲攻擊。

      2) 借鑒了Easter Egg算法,通過一個(gè)特殊的輸入激活水印信息的輸出,如在應(yīng)用程序運(yùn)行的登錄界面用戶名欄輸入數(shù)字7,密碼欄輸入:re3j4cx12k5zZ6p7m。生成的水印序列與密碼中提取的序列相同,屏幕上輸出提示信息。Easter EGG算法實(shí)現(xiàn)簡單,但是容易受去除攻擊,本文將水印信息處理方法、密碼處理方法、提示信息輸出方法分布在源程序的不同位置,對抵抗去除攻擊有所改善。

      3) 對水印序列與密碼中提取的數(shù)字序列匹配成功后,輸出的提示信息進(jìn)行變換,如輸出一幅特定的圖像或者演示一段動(dòng)畫,可以用這個(gè)特定的圖像或者動(dòng)畫表示該應(yīng)用程序的版權(quán)信息。

      參考文獻(xiàn):

      [1] 王建明,王朝坤,余志偉.軟件保護(hù)技術(shù)[M].北京:清華大學(xué)出版社,2013.

      [2] 王葉茂,車生兵.軟件水印及其研究現(xiàn)狀概述[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(4):6-10.

      [3] 楊建龍,王建民,李德毅.軟件水印技術(shù)及其新進(jìn)展[J]. 計(jì)算機(jī)工程,2007,33(17):168-175.

      [4] 張立和,楊義先,鈕心忻.軟件水印綜述[J]. 軟件學(xué)報(bào),2003,14(2):268-277.

      [5] 羅養(yǎng)霞,房鼎益. 多水印技術(shù)在軟件版權(quán)管理中的應(yīng)用研究[J].計(jì)算機(jī)科學(xué),2011, 38 (10):103-109.

      冕宁县| 郸城县| 旌德县| 龙游县| 盈江县| 保德县| 扬州市| 嘉定区| 龙海市| 金湖县| 松阳县| 秀山| 桦南县| 浪卡子县| 安远县| 岳普湖县| 修武县| 华阴市| 卢龙县| 双峰县| 巩留县| 涡阳县| 宝鸡市| 鄂伦春自治旗| 曲靖市| 康保县| 肇东市| 新晃| 丰镇市| 江安县| 潞城市| 喀喇沁旗| 宜君县| 漳平市| 山东省| 钟祥市| 璧山县| 汶川县| 浦北县| 南江县| 渝北区|