999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于程序設計的軟件水印關鍵技術研究

2009-04-29 00:00:00陳鐘龍程久軍
電腦知識與技術 2009年27期

摘要:應用程序設計技術實現軟件水印,比較了兩種當前主流的軟件水印實現方式,研究了一種與軟件開發過程同步的軟件水印技術,從軟件水印的嵌入和提取兩個方面對這種新的軟件水印技術進行描述和形式化證明,開發出一個同步嵌入軟件水印的示例程序來演示軟件開發商信息的嵌入和提取過程。結果表明采用程序設計實現的軟件水印技術可以很好地完成軟件版權信息的隱藏和提取工作,是一種用于版權保護工作的有效方法。

關鍵詞:軟件水印;程序設計;版權保護;同步嵌入

中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2009)27-7725-03

Research on Key Technology of Software Watermark Based on Programming

CHEN Zhong-long, CHENG Jiu-jun

(College of Electronics and Information Engineering, Tongji University, Shanghai 201804, China)

Abstract: This paper studied software watermark implemented by programming. After comparing the two main ways to implement software watermark, a new kind of software watermark developed together with software itself was researched in this paper. The processes of embedding and extracting and the formal proof of the new software watermark were described. A demonstration of synchronous embedding software watermark showed how to embed and extract the declaration of the ownership. The result indicate that software watermark based on programming could well complete the mission of hiding and extracting the software copyright information and could be an effective method of copyright protection.

Key words: software watermark; programming; copyright protection; synchronous embedding

數字水印(Digital watermark)是永久鑲嵌在其它數據(宿主數據)中的具有可鑒別性的數字信號或模式,并且不影響宿主數據的可用性。根據宿主數據的不同,數字水印可以分為圖像水印,音頻水印、視頻水印、軟件水印和文檔水印等。軟件水印[1](Software watermark)是將數字水印應用于軟件宿主的技術,是數字水印技術的一種。

軟件水印技術主要有兩部分構成,即水印嵌入和水印提取/檢測[2]。軟件水印的嵌入過程是指將所有者水印通過某種嵌入算法添加到軟件產品中。這樣所有者水印就可以伴隨軟件的傳播過程,依附在軟件產品中忠實地記錄著該軟件的所有者信息。一旦對于某個軟件產品的版權產生爭議,就可以通過水印的提取(檢測),對產品的所有者和版權聲明進行確認。軟件水印的提取與檢測最大的不同是水印提取不需要所有者水印,而直接提取出該軟件內嵌的水印信息;水印檢測需要所有者提供其水印,然后檢測軟件產品中是否包含有該水印。

1 軟件水印的實現方式

根據軟件水印的嵌入時間不同可以將軟件水印的實現方式主要分為兩種:一種是在軟件開發完成后再進行水印嵌入,另一種是在軟件開發過程中就同步完成水印嵌入。為了方便起見,把前一種方式稱為后期嵌入(post embedding),后一種稱為同步嵌入(synchronous embedding)。

1.1 后期嵌入軟件水印

后期嵌入方式的軟件水印的思想來源于多媒體水印。由于人類感官上的限制,多媒體信息,例如圖像、聲音等都會存在許多冗余信息,多媒體水印采用水印信息替換冗余信息的方式來實現水印嵌入。在主流操作系統上,軟件可執行文件都是采用COFF格式(Common Object File Format),例如Windows平臺下的PE文件,UNIX平臺下的ELF文件等。這種格式的特點是分節(Section),它會將軟件代碼分節存儲,出于對齊的考慮,各節的尾端都存在冗余空間,后期嵌入的水印正是試圖在這些空間中嵌入水印信息。

文獻[3]描述了一種在Win32平臺下對PE文件進行軟件水印嵌入的方案,將軟件水印分散嵌入到各個節尾端的冗余空間。通過分析顯示,大多數PE文件都會存在幾千個字節的冗余空間,足夠完成軟件水印的嵌入工作。此外,這種方案非常簡單,通用性也好。但是它也具有缺陷,最主要的是水印信息集中在節的尾端,與軟件代碼的融合不夠緊密,缺乏良好的隱藏性。

1.2 同步嵌入軟件水印

同步嵌入方式的軟件水印是為了克服軟件水印隱藏性弱的缺陷而出現的,它是軟件水印技術與程序設計、軟件工程等技術相結合的產物。這種方式的主要思想是在軟件開發過程中就考慮版權保護和軟件水印的嵌入,提高水印信息與軟件代碼的結合度,使得軟件代碼更加隱蔽,通過良好的隱藏性來抵御軟件水印攻擊。

同步嵌入方式的軟件水印是當前研究的熱點,在提出算法方面出了不少成果。文獻[4]對這些主要算法都作了一個描述。雖然在軟件水印算法上取得了不錯的進展,但是對于如何將軟件水印融入到軟件開發過程中卻還沒有一個清晰的思路。本文試圖將軟件水印與軟件開發工作結合起來,研究一種新的思路來促進軟件水印技術的實用化。

2 基于程序設計的軟件水印技術

基于程序設計的軟件水印技術是將軟件水印技術融入到軟件開發過程的一種技術。本文主要對水印嵌入和水印提取兩方面的主要步驟進行說明,給出各個步驟的形式化定義。并對這種軟件水印技術的過程進行形式化證明。

2.1 軟件水印嵌入過程

圖1描述了軟件水印的嵌入過程,包括預處理過程、代碼嵌入過程和產品生成過程三個階段。

2.1.1 預處理過程

在預處理過程中,首先選擇特定表現形式的所有者水印,例如一段“某某公司版權所有”的版權聲明,或是開發商的標志LOGO。這里選擇的水印將最終作為產品所有者的證明。然后選擇軟件開發過程中使用程序設計語言生成軟件水印代碼,為了增加水印的強度,還可以使用用戶密鑰進行加密。預處理過程如圖1(a)所示,它的形式化定義為:

Pw=G(W,K)(1)

其中W代表待嵌入的軟件水印,它可以具有文本、圖像或是動畫等多種表現形式;K代表軟件水印的加密密鑰,采用加密手段有助于提高軟件水印的健壯性;G代表源代碼的生成算法,也就是用特定的程序設計語言實現軟件水印的過程;Pw代表軟件水印的源代碼。

2.1.2 代碼嵌入過程

當軟件水印代碼與軟件源代碼分別編寫完成后,可以通過一定的嵌入算法,將軟件水印代碼嵌入到軟件源代碼中,得到二者的混合代碼。代碼嵌入過程中軟件水印代碼要盡可能地分散在軟件的關鍵源代碼中,軟件水印代碼與軟件源代碼不能影響對方的正常功能,同時軟件水印代碼不能嚴重降低軟件本身的運行效率。代碼嵌入過程如圖1(b)所示,它的形式化定義為:

Ps'=I(Pw,Ps)(2)

其中Pw代表由公式(1)得到的軟件水印源代碼;Ps代表軟件源代碼,它可以定義為Ps=G(S),其中S代表軟件本身表現形式;I代表軟件水印嵌入算法,也就是采用一定的策略將軟件水印源代碼分散到軟件源代碼中;Ps'代表混合代碼,也就是嵌入了水印代碼的軟件源代碼。

2.1.3 產品生成過程

完成代碼嵌入過程后,就可以使用編譯器對混合代碼進行編譯。編譯過程將程序設計語言轉換成了可執行代碼(二進制代碼),增加了軟件水印代碼與軟件源代碼的區分難度,因此包含軟件水印信息的代碼就不容易被發現和清除,提高了軟件水印的健壯性。產品生成過程如圖1(c)所示,它的形式化定義為:

Bs'=C(Ps')(3)

其中Ps'代表由公式(2)得到的軟件混合代碼;C代表編譯器,也就是將特定的程序設計語言轉換成機器語言的過程;Bs'代表目標軟件,也就是用于發售的軟件二進制代碼。

2.2 軟件水印提取過程

軟件水印的提取過程,主要有內部提取和外部提取兩種方式。內部提取可以在軟件運行過程中獨立完成水印提取工作,外部提取則需要加載器來完成水印提取。

內部提取將軟件水印提取算法作為一個獨立模塊嵌入到目標軟件中隨同軟件進行發售,在軟件運行過程中,用戶在正常使用軟件過程中并不會觸發軟件提取過程。只有在用戶執行某些特定行為(在正常使用軟件過程中很不常見)才可以觸發軟件水印的提取工作。圖2描述了使用獨立模塊進行軟件水印提取的過程。

外部提取則是通過一個外部加載器對特定的目標軟件進行文件分析或是在調試模式下運行,完成水印提取。外部提取方式可以開發專用的加載器,也可以使用通用的調試器(例如SoftICE,OllyDbg等)。使用外部提取可以避免水印提取代碼被跟蹤執行,提高了軟件水印的安全性,但是由于水印嵌入算法與提取算法是分離的,因此可信性不如使用內部提取方式。

軟件水印的提取工作實際上由兩部分構成,即還原和分離。還原其實就是對軟件的可執行代碼和水印的可執行代碼的執行過程。由于二者互不干擾,因此可以獨立地完成軟件功能和水印生成。分離可以將已經生成的軟件水印從軟件中提取出來。二者的形式化定義分別為:

S'=R(Bs')(4)

其中Bs'代表由公式(3)得到的目標軟件;R代表還原過程,也就是處理器執行軟件機器語言,完成軟件行為(也就是軟件表現形式)的過程;S'代表目標軟件行為,包括軟件自身的行為和軟件水印的行為兩個方面。

W=E(S')(5)

其中S'代表由公式(4)得到的目標軟件行為;E代表軟件水印提取算法,也就是將軟件水印行為與軟件自身行為分離的過程。

2.3 軟件水印技術的形式化證明

本節將對基于程序設計的軟件水印技術進行形式化證明,從邏輯層面上證明這種技術的正確性和完備性。

為了簡單起見,我們在下面證明過程中不考慮軟件水印的加密過程,只使用不加密的軟件水印W進行形式化證明。對于使用密鑰的軟件水印技術,可以使用加密水印W'=f(W,K)代替W。

對于軟件水印嵌入過程來說,程序設計語言源代碼的融合與二進制代碼的融合是對應的,即,

C(I(Ps,Pw))=I(C(Ps),C(Pw))(6)

因此根據公式(2)(3)(6),對于目標軟件的可執行代碼也可以表示為:

Bs'=C(I(Ps,Pw))=I(C(Ps),C(Pw))(7)

對于軟件水印提取過程來說,由于軟件本身可執行代碼的執行與水印可執行代碼的執行是各自獨立的,因此對于還原過程與分離過程來說是順序無關的,即

E(R(Bs'))=R(E(Bs')) (8)

因此根據公式(4)(5)(8),對于軟件水印的提取可以表示為:

W=E(R(Bs'))=R(E(Bs'))(9)

綜合水印嵌入和提取兩個過程,根據公式(7)(9),消去軟件嵌入和提取這一對相互對應的過程,可以得到:

W=R(E(I(C(Ps),C(Pw))))=R(C(pw))(10)

由于對軟件水印可執行代碼的執行過程等價于軟件水印本身,即,

R(C(Pw))=W (11)

證明完畢。

4 實驗結果與分析

本節給出使用程序設計實現手段為軟件添加水印的示例,開發平臺為Visual C++ 6.0,軟件項目BMPViewer是文獻[5]中的一個簡單BMP圖像瀏覽器,可以完成圖像的加載和顯示操作。這里,我們將為它添加一個開發商LOGO水印。將本文第3節中提出的基于程序設計的軟件水印技術運用到實際開發過程中,主要步驟有:

1) 選擇一個分辨率為208*64的人民郵電出版社LOGO灰度圖像作為所有者的版權證明。將像素內容讀入到一個大小為13312字節的水印圖像緩沖區中進行初始化。

2) 將水印圖像緩沖區的初始化代碼拆分成多條賦值語句,然后將代碼插入到BMPViewer項目源代碼中圖像的加載模塊中。這樣在軟件運行過程中已經秘密地生成了水印數據。

3) 將軟件水印的提取作為一個獨立的模塊也嵌入到源代碼中。定義水印提取觸發行為如下:載入特定BMP圖像大小為733*541,并且用戶在鍵盤上按下“test”按鍵序列。當用戶執行特定行為后觸發水印提取,同時還原水印圖像顯示在窗口中。

4) 將嵌入軟件水印的源代碼進行編譯和執行。用戶在正常運行軟件過程中并不會觸發水印顯示,而軟件所有者可以通過特定的行為來提取軟件水印證明其所有權。

如圖3所示,軟件水印能夠在滿足一定觸發條件的情況下顯示軟件所有者信息。由于采用代碼融合技術,軟件水印代碼能夠與軟件代碼緊緊結合,當攻擊者面對二進制代碼時,很難根據地址空間把它們分開。與2.1節提到的后期嵌入方式相比,隱蔽性有了很大提高。另外,由于多媒體圖像天生的冗余性,即使攻擊者能夠除去部分水印信息,軟件所有者依然可能提取殘缺的水印信息來證明其所有權。由此可見,該水印技術也擁有不錯的健壯性。

5 結論

軟件水印是近年來提出并開始研究的一種數字水印技術,它能夠為計算機軟件提供除加密和認證等常規技術以外的另一種版權保護手段,同時可以很好地應用到軟件版權保護工作中,開啟一個版權保護的新時代。本文研究了一種通用的基于程序設計的軟件水印技術,應用于軟件水印嵌入和提取工作,主要是針對軟件水印技術實用化的考慮。結果表明,該技術可以很好地完成軟件所有者信息的嵌入和提取。

參考文獻:

[1] 張立和,楊義先,鈕心忻,等.軟件水印綜述[J].軟件學報[J].2003,14(2):268-277.

[2] Jasvir Nagra, Clark Thomborson, and Christian Collberg.Software Watermarking: Protective Terminology. In Proceedings of the ACSC 2002, 2002.

[3] 吳振強,馮紹東,馬建峰.PE文件的信息隱藏方案與實現[J].計算機工程與應用,2005,41(27):148-150.

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

[5] 張力.Visual C++高級編程[M].北京:人民郵電出版社,2002.

主站蜘蛛池模板: 亚洲一区精品视频在线| 中文字幕色在线| 久久精品91麻豆| 久久久亚洲色| 日韩 欧美 小说 综合网 另类| 依依成人精品无v国产| 看你懂的巨臀中文字幕一区二区 | 最新精品久久精品| 日韩欧美一区在线观看| 国产在线小视频| 国产亚洲精品在天天在线麻豆| 亚洲男人的天堂久久精品| 夜夜操狠狠操| 激情六月丁香婷婷四房播| 国产主播一区二区三区| 国产免费一级精品视频| 久久精品免费国产大片| 亚洲欧美在线综合图区| 高潮毛片无遮挡高清视频播放| 国产成人无码综合亚洲日韩不卡| 91免费国产在线观看尤物| 国产欧美日韩专区发布| 精品黑人一区二区三区| 久久伊人操| 亚洲天堂视频在线观看| 亚洲成在人线av品善网好看| 自慰网址在线观看| 成人午夜天| 国产在线麻豆波多野结衣 | 国产男女免费视频| 久久一色本道亚洲| 国产小视频网站| 国产97视频在线观看| 亚洲精品中文字幕无乱码| 思思99思思久久最新精品| 国产内射一区亚洲| 亚洲国语自产一区第二页| 青青青国产免费线在| 欧美一级在线| 欧美综合区自拍亚洲综合绿色| 青草视频在线观看国产| 伊人激情综合| 午夜毛片免费观看视频 | 茄子视频毛片免费观看| 秋霞午夜国产精品成人片| 少妇精品在线| 欧美综合成人| 亚洲第一综合天堂另类专| 亚洲av无码成人专区| 国产欧美亚洲精品第3页在线| 国产欧美成人不卡视频| 欧美亚洲国产一区| 成人午夜久久| 久久久久国产精品嫩草影院| 亚洲精品视频免费| 丝袜高跟美脚国产1区| 不卡网亚洲无码| 香蕉久久国产精品免| 又猛又黄又爽无遮挡的视频网站| 999福利激情视频| 97久久超碰极品视觉盛宴| 欧美一级高清免费a| 2024av在线无码中文最新| 91亚洲影院| 国产欧美精品一区二区| AV不卡在线永久免费观看| 精品自窥自偷在线看| 国产免费人成视频网| 欧美成人怡春院在线激情| 一级毛片不卡片免费观看| 黄色成年视频| 美女裸体18禁网站| 天天干伊人| 久热99这里只有精品视频6| 久久精品91麻豆| 国产无码性爱一区二区三区| 国产美女人喷水在线观看| 综合社区亚洲熟妇p| 91久久夜色精品国产网站| 国产精品专区第1页| 久久精品这里只有精99品| 国模沟沟一区二区三区|