(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf_第1页
(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf_第2页
(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf_第3页
(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf_第4页
(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机科学与技术专业论文)基于代码混淆的零水印方案的设计与研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号 u d c 密 级 学校代码 1 0 4 9 7 武多萎理歹大穿 学位 论文 题 目 基王岱码湿透数雯丞印左塞笪逡让皇婴究一 英文 r e s e a r c ha n dd e s i g no fz e r o w a t e r m a r k i n gs c h e m e 题 目 旦垒墨曼亟q 坠q 坠亟望垡丛遮堑一 研究生姓名 俭光送 姓名鲑珞 职称教援学位擅一 指导教师单位名称i 土箕扭型堂皇撞苤堂暄邮编垒3 q q 2 q 申请学位级别亟 学科专业名称盐篡扭型堂皇盐 论文提交日期2 q ! ! 生垒旦 论文答辩日期2 盟l 至王且 学位授予单位武这堡王太堂学位授予日期 答辩委员会主席刍匿丞明 评阅人夏红霞一 赵亡龌 2 0 11 年4 月 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 武汉理工大学或其他教育机构的学位或证书而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说 明并表示了谢意。 签名: 一) 名钍爱 学位论文使用授权书 日 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权武汉理工大学可以将本学位论文的 全部内容编入有关数据库进行检索,可以采用影印、缩e i j 或其他复制 手段保存或汇编本学位论文。同时授权经武汉理工大学认可的围家有 关机构或论文数据库使用或收录本学位论文,并向社会公众提供信息 服务。 ( 保密的论文在解密后戍遵守此舰定) 删跏:凉粑暑撕c 签名卿红蚍”罗 摘要 计算机行业的发展己逐渐把我们的社会转向了一个信息化、智能化、多元化 的社会,无论是在生活、工作还是科学研究方面都渗透着计算机的影响。正是因 为计算机的出现,我们的生活和工作才变的更加的便捷和丰富。计算机软件行业 作为计算机领域的一个重要组成部分,其地位和重要性是不言而喻的。计算机行 业的发展的一个主要动力便是来自软件行业的进步。然而,在现今的社会中,软 件行业正面临着各种威胁和阻碍。例如,软件盗版、恶意篡改代码以及获取软件 中的保密数据等,这些非法行为不仅违反了软件版权的问题,更主要的危害是严 重打击了软件开发者开发新的更为实用的软件的动力。因此,为了保证计算机软 件行业的正常发展,对软件安全技术的研究有着重要的现实意义。 软件安全技术分为两种,一种是事前保护技术,例如加密算法、代码混淆、 加密狗等,另外一种则是事后保护技术,例如软件水印、数字水印等技术。本文 将事前和事后技术相结合,提出了一种基于代码混淆的软件水印保护技术。 本文首先提出了三种软件水印的威胁模型,并介绍了现阶段软件保护的主要 技术。然后根据代码混淆的特点提出了相关设计原则,介绍了代码混淆的几种常 用技术,针对其设计和实现的特点对代码混淆方法进行了详细的分析和说明。本 文针对软件水印的设计框架进行了深入的分析,并在此基础上引入了零水印的设 计思想。基于代码混淆的特点和零水印的设计思想提出了基于代码混淆的零水印 设计方案,其核心内容则是将编码后的水印信息通过代码混淆的过程嵌入到软件 体中,在不增加任何冗余水印代码的基础上将水印信息嵌入软件中,从而提高软 件水印的安全性。 为说明基于混淆的软件水印方案的可行性,本文提出了一个简易的原型系 统,通过对该系统进行相关测试并通过将该系统和其他水印方法进行抗攻击能力 对比,从实验角度证明该基于代码混淆的软件水印方法的可行性。然后文章从该 方案的正确性、隐蔽性以及鲁棒性角度进行诠释和分析,从而在理论的层次上对 其进行了说明。 关键字:代码混淆,软件水印,零水印,软件安全,逆向工程 a b s t r a c t c o m p u t e ri n d u s t r yh a sg r a d u a l l yb r i n go u rs o c i e t yt oa ni n f o r m a t i o n ,i n t e l l i g e n c e , p l u r a l i s t i cs o c i e t y , w h e t h e ri nl i v e ,w o r ko rr e s e a r c ha r e a sa r ep e r m e a t e dw i t ht h e e f f e c t so fc o m p u t e r i ti sp r e c i s e l yb e c a u s eo ft h ec o m p u t e ri no u rl i f et h a to u rw o r k h a so n l yb e c o m em o r ec o n v e n i e n ta n da b u n d a n t a sa nc o m p o n e n to fc o m p u t e r , t h e s o f t w a r eh a sa r ti m p o r t a n ts t a t u s t h ep r o g r e s so fs o f t w a r ei st h em a j o r 赫v i n gf o r c e f o rc o m p u t e ra r e a h o w e v e r , i nt o d a y ss o c i e t y , t h es o f t w a r ei sf a c e dw i t hv a r i o u s t h r e a t sa n do b s t a c l e s f o re x a m p l e , s o f t w a r ep i r a c y , m a l i c i o u st a m p e r i n ga n da c c e s s t h ed a t ao fs o f t w a r ev i o l a t i o n ,e r e t h e s ei l l e g a la c t i o n sn o to n l yv i o l a t et h es o f t w a r e c o p y r i 幽b u to n l yh i tt h ec o n f i d e n c eo f s o f t w a r ed e v e l o p e r sw h ow i l ld e v e l o pn e w s o f t w a r e i no r d e rt oe n s u r et h en o r m a ld e v e l o p m e n to fs o f t w a r e ,t h er e s e a r c ho f s o f t w a r es e c u r i t yh a si m p o r t a n tp r a c t i c a ls i g n i f i c a n c e s o f t w a r es e c u r i t yt e c h n o l o g yi sd i v i d e di n t ot w ok i n d s o n ei sp r e p r o t e c t i o n t e c h n o l o g y , s u c ha se n c r y p t i o na l g o r i t h m s ,c o d eo b f u s c a t i o n , d o n g l e ,e t c t h eo t h e ri s a f t e r - p r o t e c t i o nt e c h n o l o g y , s u c ha ss o f t w a r ew a t e r m a r k i n g , d i g i t a lw a t e r m a r k i n ga n d o t h e rt e c h n o l o g i e s c o m b i n i n gt h et w ot e c h n o l o g y , t h i sp a p e rh a sp r o p o s e da z o - w a t e r m a r k i n gs c h e m eb a s e do no b f u s c a t i o n t h i sp a p e r p r e s e n t st h r e et h r e a tm o d e lo f s o f t w a r ew a t e r m a r k i n g , a n di n t r o d u c e s t h em a i ns t a g eo fs o f t w a r ep r o t e c t i o nt e c h n o l o g y a c c o r d i n gt ot h ec h a r a c t e r i s t i c so f c o d eo b f u s c a t i o nt h ed e s i g np r i n c i p l e sa r ep r o p o s e da n ds o m ec o n l m o nt e c h n i q u e sa r e i n t r o d u c e d t h i sd e s i g nf r a m e w o r kf o rs o , w a r ew a t e r m a r k i n gi sc o n d u c t e di n - d e p t h a n a l y s i s ,a n do nt h i sb a s i s ,t h ed e s i g no fz e r o - w a t e r m a r k i n gi si n t r o d u c e d b a s e d0 1 1 t h ef e a t u r e so fc o d eo b f u s c a t i o na n dw a t e r m a r k i n g , t h i sp a p e rh a sp r o p o s e dt h e z e r o - w a t e r m a r k i n gs c h e m eb a s e do no b f u c a t i o na n dt h em a i nc o n t e n ti st h a tt h e w a t e r m a r ki se m b e d d e di n t os o f t w a r ei nt h ep r o c e s so fc o d eo b f u s c a t i o nw i t h o u t a d d i t i o n a lc o d e ,t h u si tc a ni m p r o v et h es e c u r i t yo fs o r w a r ew a t e r m a r k i n g i no r d e rt op r o v et h a tt h es c h e m ei sf e a s i b l e ,t h i sp a p e rp r o p o s eas i m p l e p r o t o t y p es y s t e m ,a n dt h er e s u l to ft h ee x p e r i m e n th a sp r o v e di t t h e nt h i sp a p e r a n a l y s et h es c h e m ef r o mp o i n to ft h ec o r r e c t n e s s ,t h eh i d d e na b i l i t y a n dt h e r o b u s t n e s s ,a n dt h es c h e m ei sp r o v e df e a s i b l et ot h el e v e lo ft h e o r y k e yw o r d s :c o d eo b f u s c a t i o n , s o f t w a r ew a t e r m a r k i n g , z e r o - w a t e r m a r k i n g , s o f t w a r e s e c u r i t y , r e v e r s ee n g i n e e r i n g 目录 摘要1 a b s t r a c t i i 第l 章绪论1 1 1 课题研究背景1 1 2 国内外研究现状3 1 2 1 软件水印的研究现状3 1 2 2 代码混淆的研究现状5 1 3 研究目的、内容及论文组织结构7 1 3 1 研究目的。7 1 3 2 研究内容7 1 3 3 论文组织结构7 第2 章相关理论基础。9 2 1 软件保护技术概述9 2 1 1 软件安全威胁一9 2 1 2 软件保护技术1 0 2 2 代码混淆技术n 2 2 1 代码混淆的原则与目的。l l 2 2 2 代码混淆的分类1 2 2 2 3 代码混淆的特点1 3 2 3 软件水印技术1 3 2 3 1 软件水印基本框架1 3 2 3 2 零水印设计思想1 4 2 3 2 针对软件水印的攻击模型1 s 2 4 本章小结1 s 第3 章基于混淆的软件水印模型的研究1 6 3 1 中间代码概述。1 6 3 2p e 文件简介1 8 3 3m s i l 的特点分析1 8 3 4 基于m s i l 的分段式混淆模型的设计2 0 3 4 1m s i l 分块方案设计2 0 3 4 2 分段式混淆模型2 3 3 5 软件水印的设计与实现。2 s 3 5 1 软件水印码表的设计2 5 3 5 2 软件水印的嵌入2 6 3 5 3 软件水印的防篡改检测2 7 3 6 本章小结2 9 第4 章基于混淆的软件水印原型系统的设计与实现3 0 4 1 系统整体设计3 0 4 2 代码混淆算法实现3 l 4 2 1m s i l 预处理算法3 1 4 2 2 分段式代码混淆算法3 3 4 3 零水印的嵌入与提取3 6 4 3 1 零水印的嵌入3 6 4 3 2 软件水印的提取3 7 4 3 3 防篡改检测算法3 8 4 4 本章小结3 8 第5 章原型系统实验与分析3 9 5 1 原型系统描述3 9 5 1 1 类图结构描述3 9 5 1 2 程序流程结构4 0 5 2 基于原型系统的性能分析实验。4 2 5 3 实验结果分析4 3 5 3 1 正确性分析4 3 5 3 2 隐蔽性分析4 4 5 3 3 鲁棒性分析4 4 5 4 本章小结4 4 第6 章总结与展望4 5 6 1 总结。4 5 6 2 展望4 5 致谢。4 6 参考文献。4 7 附录5 0 武汉理t 大学硕+ 学位论文 第1 章绪论 本章主要介绍了软件安全的研究背景、现状及意义,并引出零水印的设计思 想;然后对论文的研究目的和内容进行了概要的说明,并给出了论文的组织结构。 1 1 课题研究背景 计算机技术的发展在很大的程度上提高和改善了人们的生活和工作环境,它 以高效率和高准确度的优势逐渐代替人们在某些方面的工作。但是从辩证的角度 来说,一个事物的发展必定会引发许多问题,而计算机技术的发展所带来的问题 则主要表现在软件安全方面,其中最为明显的实例便是软件盗版。如表1 1 所示, 该数据是美国商业软件联盟( b s a ) 和市场调查公司i d c 的一项关于软件盗版 的调查报剖,该数据虽然不能详细的说明我国在计算机行业的整体情况,但是 由表中可以看出软件盗版给我们国家带来的经济损失是非常巨大的,而且正在呈 增长的趋势。当然,软件盗版不仅仅是我们国家才有的问题,西方发达国家如美 国等同样存在因软件盗版而带来的巨大的经济损失。因此,软件安全问题是一个 全球性的问题,然而这个问题在中国表现的尤为突出。第一,中国的针对于计算 机软件安全问题没有一个比较完善的法律制度;第二,由于盗版软件价格低廉, 而且与正版软件性能相差无几,中国国民已经习惯使用盗版软件,这一点就道德 观念上导致了我国的软件安全问题的加剧:第三,软件安全技术还有更大的提升 空间,其实软件安全和版权问题所面临的直接问题还是软件的被攻击和防守问 题,只有不断的加强和完善软件安全技术,才能从根本上降低软件破坏和盗版问 题。 表1 - 1 中国软件盗版情况 瓢32 珥2 s2 0 d 62 0 c 72 0 0 82 9 盗版率( ) 9 29 08 68 28 28 07 6 经济损失 3 8 2 33 5 6 53 鼹45 4 2 96 的46 7 8 0 的2 0 ( 百万美 元) 面对如此严重的软件安全问题,完善软件相关法律法规是必不可少的步骤。 在9 0 年代初期,首部软件保护法在我国诞生,这意味着中国开始注重计算机软 件行业的发展和保护,该法规规定:一切未经授权的,对他人拥有著作权的软件 进行非法复制的行为是对软件著作权的一种侵权行为。 2 1 2 0 0 0 年初,我国对该软 l 武汉理工大学硕+ 学位论文 件保护法律法规做了更加详细的补充和完善,从一定程度上抵制了软件盗版和恶 意篡改的行为。 然而仅仅是对法律法规的完善并不能完全的抵制软件盗版等一系列的软件 安全问题,就中国的国情而言,国民素质也是影响国家计算机软件行业发展的一 个重要因素。中国国民已经习惯使用盗版软件,盗版软件不但能提供和正版软件 相同的功能,更主要的盗版软件的费用远远低于正版软件。随着社会的进步,计 算机行业也不断的往前进步着,而软件行业作为其中的一支主要力量是整个行业 发展的关键因素之一,在国民的素质教育中应该培养大家使用正版软件的理念, 从道德水平的层次降低部分软件盗版的现象发生。 面对如此巨大的软件盗版现象和经济损失,最根本有效的办法就是加强软件 保护技术。当前使用较为普遍的软件保护技术有代码混淆、软件水印、加密保护、 数字指纹、基于校验检测的防篡改技术等。其中加密保护的作用是防止未授权的 使用者进行无偿的非法使用,它的作用只是限定软件只能由授权用户使用,即解 密者使用,当授权用户解密后仍然可以对软件进行一些非法操作和破坏,因此, 软件加密保护的保护力度仍然是有限的。数字指纹技术则是通过将不同的具有标 志性的识别代码指纹,利用数字水印技术嵌入到软件媒体中,然后将嵌入指 纹的软件分发给用户使用,一旦软件开发商发现软件盗版现象,便可以通过提取 盗版产品中的识别代码来定位非法拷贝的来源,从而起到对版权的保护作用。除 数字指纹外,软件水印技术也是一种用于软件版权保护的软件安全技术。它通过 将具有版权信息的文字、图像或者其它信息以计算机二进制代码的形式嵌入到软 件体内,如果发现软件侵权问题则可通过水印提取器提取软件中的水印信息,从 而确定软件的版权所有,软件水印技术也是维护软件版权,抵制盗版现象的一种 有效软件安全技术。而软件代码技术则是一种用于增大逆向工程难度的软件保护 技术。由于许多商用的软件产品具有较高的商业价值,因此,也不乏有不法分子 会对软件本身进行相应的逆向工程,以获取其中的程序结构或是源代码,由于商 业软件需用户付款结账后才能享受其中的功能,然而,逆向工程技术则可通过获 取其中关键代码来实现一款相同功能结构的免费软件产品。因此,这不仅损害了 软件公司的利益,其更重要的一面是打击了软件开发商的积极性和信心。而代码 混淆的作用则是在一定程度上增加逆向工程的难度,它主要是通过在不改变源代 码的输入和输出的前提下对源代码进行混淆处理,降低其可理解度,以达到增强 其逆向工程难度的目的。代码混淆作为软件保护的重要技术之一,有着实现容易、 成本较低、安全性能较好的特点,而且由于它是一种事前保护方式,因此被广泛 的应用于软件保护的领域。 在这个计算机软件行业飞速发展的时代,软件安全问题已经越来越受到人们 2 武汉理_ 上= 大学硕士学位论文 的关注,高强度的软件保护技术也越来越有其必要性,由于软件盗版的隐秘性和 私人性,单纯的依靠法律和道德观念防止软件盗版等软件破坏行为的发生,而单 一的软件保护技术也很难较为全面的对软件进行保护。本文提出将代码混淆和软 件水印两种软件保护技术相结合,利用代码混淆一方面增加逆向工程的难度,另 一方面保护软件水印的安全。本文采用的零水印的设计思想,在不增加水印信息 所引起的额外开销的前提下,通过代码混淆的方式嵌入,从一定程度上又提高了 软件水印的安全性。 1 2 国内外研究现状 1 2 1 软件水印的研究现状 软件水印作为版权标识的一个重要手段,它的地位也越来越受到国内外众 多学者和专家的关注。越来越多的软件水印算法和方法相继被提出,总结起来有 以下这些: 在文献【3 4 ,5 】中,d a v i d s o n 以及m y h r v o l d 等人提出了一种软件水印算法,该 算法是基于本块重排方法的。具体说来,首先把一个完整的程序代码进行分割, 分割后每一个片段可以作为一个基本块;接着变更原来的控制流程图,重排每个 划分出来的基本的块并进行相应的编码,在重排和编码的过程中将各种水印信息 嵌入到程序中。如果要从程序中获取这些水印信息,则需要比较有水印的基本块 和无水印的基本块的顺序差异,从这种顺序差异中获取所需的水印信息。在这种 方法中,针对于基本块的重排策略,文献【4 】中提出了一种代码混淆的技术来实 现这一点;而文献【5 】为了修改水印信息,研究了一种修改程序中控制流程图的 方法,利用这种方法,一个包含有不透明的谓词分支被添加到原有的流程图中, 从而生成一种新的控制流图,需要注意的是这个谓词分支是始终为t r u e 的。 不同与重排基本块的思想,m o s k o w i t z 和c o o p e r m a n 将视线投入到程序的一 些资源文件中,这类资源文件不同于程序代码,而是程序中的图片或者是声音等 一类特殊的资源文件,在这类特殊文件中嵌入人们想要的水印信息或者是代码 【6 1 。普遍说来,运行程序时一般先提取资源文件中的代码并装载加入,然后按流 程执行,这种情况下,假若有人或程序恶意篡改了这些特殊资源文件中的代码或 者水印信息,程序将会报错并无法继续运行下去。这种方法有一个明显的缺点, 它容易被篡改者或恶意攻击者发现这些水印和代码信息,因为这些代码和水印信 息出现地比较突兀,运行时易发现其与寻常代码的差异,其隐蔽性较弱。 s t e m 、h a c h c z 和k o o u n e 等人受到通信原理的启发,将扩频技术引入到软件 3 垂 爹 武汉理工大学硕士学位论文 水印的方法中,提出了s h k q 算法【7 1 。在这个算法中,代码仍然是按相关的控制 顺序执行的,但作为一个指令集,每个指令是有自己的频率的,该算法就是在一 些连续的指令集中统计出其频率,利用扩频技术原理,对这些频率进行修改,从 而将代码或水印信息嵌入到代码中;这种算法的软件水印,如果要获取水印信息, 则需要获取这些连续指令集在加入水印之前和加入水印之后的频率变化差异值。 s a h o o 和c o l l b e r g 于2 0 0 4 年在s h k q 算法的基础上增加了一个用于记录指令集 的代码簿,这种代码簿称为c o d eb o o k ,能存储于c o d eb o o k 中的指令集都是拥 有相同语义的指令集【8 1 。在改进的s h k q 算法中,也是通过修改指令集的频率来 嵌入水印信息的,只是这种算法中修改是c o d eb o o k 中指令集的频率;而要获得 水印信息,也是需要获取c o d eb o o k 中加入水印之前和加入水印之后,这些相同 语义的指令集的频率变化差值。在国内,2 0 0 5 年吴建军和高济在浙江大学学报 上发表了一篇文章,该文章也是立足于这种更改指令集频率的思想方法。不管是 s h k q 算法还是改进后的s h k q 算法,它们都有一个共同的缺点,那就是如果 篡改者或恶意攻击者并不修改这些指令集的频率,而是将攻击对象转向这些指令 集的语义,篡改这些语义,那么其添加的代码或水印信息将失去应有的作用。正 是因为这个原因,虽然这种算法较为容易实现,但鉴于安全程度的考虑因素,这 用方法使用的范围并不广泛。 m o n d e n 、l i d a 和m a t s u m o t o 等人利用谓词的不透明性特点,通过程序代码 中虚假的、特意构造的方法将水印信息嵌入到其中去,有的时候这些水印信息可 能直接的镶嵌到这些具有不透明特性的谓词分支中去。这种方法之所以可行的一 个重要因素在于这些不透明的谓词分支,这些分支的计算结果是被程序设计者或 代码编写人员所了解、清楚的,但是篡改者或恶意攻击者无法通过常规的静态分 析来预先知道这些计算结果。随后,a r b o i t 和f u k u s h i m a 两人在这种软件水印算 法的基础上提出了改进的方法l l i , 1 2 。在这种软件水印算法中,不管是加入水印或 者是未加水印的软件程序,每次执行时这些谓词拥有固定的计算结果。这样就产 生了一个漏洞,使得篡改者或恶意攻击者利用动态分析的方法而非静态分析方法 就可以知道这些谓词的计算结果:更甚者,如果篡改者在软件中添加入恶意的、 非设计者编写的攻击性不透明谓词分支,那么软件中的水印信息将会遭到篡改者 的恶意修改。 不同于以上这些软件水印方法,国外一些专家和学者将图理论等相关知识运 用到软件水印中以得到一种新的水印技术,并取得了一定的研究成果,针对于这 种图理论的软件水印方法发表了一些重要的学术文章。作为软件水印技术中一个 比较重要的研究方向,其具有代表性的两个算法就是c o l l b e r g 、t h o m b o r s o n 和 t o w n s e n d 提出的c t 算法【瑚,以及v e n k a t e s a n 、v a x i r a n i 和s i n h a 共同提出的g t w 4 武汉理工人学硕+ 学位论文 算法【1 4 】。c t 算法是一种基于动态图水印的软件水印方法,这种方法通过一定的 技术将水印图分割成许多个子图,每个子图中包含了一部分的水印信息,这些子 图将会分散地嵌入到程序的各个部分里面,在程序的执行过程中,如果输入特定 的条件或值,程序将会产生一些拓扑图结构,这些拓扑图中暗含有软件的水印信 息,同时,这种拓扑结构图是动态生成的,存在于程序的运行堆中。也正因为这 样一个特点,c t 算法具有较高的隐藏能力和安全性能,是一种非常隐蔽的软件 水印算法。而g t w 算法虽然也是通过一定的技术将水印图分割成许多个子图, 这些子图中也包含了一部分的水印图,但它主要是将一些不透明的谓词分支加入 到程序源代码中,以改变程序的控制流程图,而在这个流程图中加入了一些基本 块,这些基本块中包含了一些可以产生水印信息的代码。c o l l b e r g 、h u n t w o r k 、 c a r t e r 等人在g t w 算法的研究基础上,研究了一种标识这些基本块的技术方法, 以较为容易地获取嵌入其中的软件水印信息,同时他们还对这种技术方法进行了 实现【1 5 , 1 6 。 c o l l b e r g 、c a r t e r 和d e b r a y 等人对软件水印算法进行了研究,并提出了一种 基于软件分支的方法【l 刀,这种算法的主要思路是对存在于程序中的转移指令且 无条件限制的加以更改和处理,使这些指令执行时能跳转到另外一个新构造的分 支函数中,对这个分支函数进行处理,改变其返回地址,使这个返回地址指向指 令未修改前所应该指向的原始地址,将这个地址设定为目标地址,通过对这些地 址的对比和比较,计算并隐藏软件的水印信息。 n a g e a 和t h o m b o r s o n 提出了一种不同于基本块或图理论的软件水印算法, 这种算法建立在线程的基础上【l 引。这种基于线程的方法立足于多线程程序,合 理地利用了多线程并发执行时随机性的特点,将软件的水印信息隐藏于这种执行 的轨道顺序中,使得恶意攻击者难以发现,具有较高的安全性,但这种算法无法 隐藏大量的水印信息,使得其使用范围受到了很大的限制。 目前,软件水印技术仍然是一个年轻的研究领域,需要更多学者和专家对 其进行研究和探索,并将其广泛的运用到商业生活中,以提高其社会价值。 1 2 2 代码混淆的研究现状 代码混淆技术是一个比较年轻的研究领域,它始于二十世纪九十年代的中后 期,该领域的产生背景归结于j a v a 语言的迅猛发展和广泛应用。在学术科研和 商业生产中,这种平台无关性十分强的软件开发语言促建了软件程序跨平台运行 的趋势。随着这种趋势,大多源代码程序被编译成后缀名为c l a s s 的字节码文件, 这样一来,篡改者或恶意攻击者可以很方便的对其中间代码进行反编译工作和静 s 武汉理工大学硕士学位论文 态分析,这些过程可能会严重地泄露重要的数据或资源信息,给企业或机构造成 巨大的损失和伤害。而代码混淆技术作为一种软件保护方法在这样一种情景下应 运而生。 图1 - 1 显示了j a v a 语言源代码的字节码文件特点【1 9 郐,2 1 ,2 2 j 。 1 、每个类都单独存储,即一个类拥有一个文件; 2 、类、方法和变量都基于名字来调用; 3 、字节码中保留了大量的符号信息、:类得结构、继承树、方法参数、变 量类型等。 图1 1j a v a 字节码文件特点 从图1 1 可以看出,这种字节码文件具有很多重要的信息,同时也存在着许 多软件安全方面的隐患。针对于这一问题,国外的c o l l b e r g 和t h o m b o r s o n 等专 家,以及国内的w a n g 等诸位学者进行了相关的研究和探索,并取得了一定的研 究成果【2 3 1 。 c o l l b e r y 在总结了代码混淆技术的算法和相关知识的基础上,对这些混淆算 法进行了详细的划分,同时探索了一些不同的算法,在深入研究了代码混淆的基 础上,提出并分析了一些衡量代码混淆可行性、性能、效率等各种指标的因素阱】。 c o l l b e a y 的工作主要集中于研究源代码和中间代码的混淆,并未对目标混淆方法 进行较为深入的研究。 g r e g o r yw r o b l e w s k i 则弥补了这方面的不足,他深入研究了目标代码混淆的 相关理论及技术,他认为目标代码混淆按照混淆方式的不同和侧重点,可以划分 为这样四种混淆:程序指令混淆,程序块混淆,相同功能表达替换,插入代码混 淆。 然而对于混淆性能的评估,g r e g o r yw r b l e w s k i 沿用了c o l l b e r g 提出的方法, 可以从三个角度来对代码混淆的性能进行评估【2 5 1 ,即强度、弹性以及代价。 强度:即通过代码混淆以后的程序使人阅读起来的难度; 弹性:混淆转化的作用就是为了增加逆向工程和反混淆的难度,弹性性能则是用 来评估混淆处理方法给逆向工程和反混淆所带来的难度; 代价:由于混淆处理的程序可能或多或少改变程序的运行结构,因此会影响程序 的执行效率,而代价则主要是用于判断经过混淆转化后的程序是否对原始 程序的运行效率有较大的影响。 c u l l 髓l i n n 从提出了对目标代码混淆技术f 2 5 】另外一种理解,他指出在对软件 6 武汉理工大学硕十学位论文 程序进行逆向分析时,可以采用一种方法阻扰逆向工程的进行,使得软件程序的 汇编指令比较难被获得或者是获得经过处理后的错误的汇编指令。 1 3 研究目的、内容及论文组织结构 1 3 1 研究目的 由于软件盗版和软件破坏等违法行为日益猖獗,严重影响计算机软件行业的 发展,因此,对软件保护技术的研究显得尤为重要,本文将提出一种基于代码混 淆的软件水印技术,通过将软件水印无痕的嵌入代码混淆中,以达到增强软件保 护技术的目的。 1 3 2 研究内容 本文主要研究内容是通过对软件水印和代码混淆技术进行详细的分析和理 解,结合这两种技术方法,提出软件保护的一种解决方案,其相关内容如下所示: l 、研究软件保护技术的国内外现状,通过研究现有的软件保护技术和软件 破坏技术,以达到取长补短的目的。 2 、通过对代码混淆技术进行深入研究,提出一种适合与软件水印相结合的 混淆技术,在增加逆向工程难度的同时,保护软件水印信息。 3 、研究软件水印的编码、嵌入、提取以及防篡改技术,将软件水印技术和 代码混淆相结合,并运用于m s i l 上,以达到软件保护的目的。 4 、实现简单的原型系统,该系统将实现基于混淆的软件水印嵌入以及取出 功能。 5 、对该系统进行相应的测试与分析。 1 3 3 论文组织结构 本文的内容结构如下所示: 第l 章为绪论部分,概要的说明了本文的研究背景,以及代码混淆和软件 水印技术的研究现状,并提出了本文的研究目的及内容。 第2 章综合的描述了软件水印技术和代码混淆技术的工作原理及框架,并 简要提出了相应的攻击方式和算法。 第3 章结合代码混淆和软件水印技术提出一种分段式的代码混淆方案,并 7 茎坚里三奎兰堡堂竺笙奎 _ 一。 在此基础上根据零水印的设计思想嵌入水印信息,并给出了详细的 设计思想和模型。 第4 章提出了一个基于代码混淆的软件水印系统的设计模型,并给出相应 的类图说明和描述。 第5 章通过一些测试方法对该系统的性能做出相应的评价,并指出其中的 优势和不足。 第6 章结束语,对全文进行综合说明,指出本文的不足,并对后续工作进 行展望。 8 武汉理工大学硕十学位论文 第2 章相关理论基础 2 1 软件保护技术概述 2 1 1 软件安全威胁 软件安全问题一直都是软件行业发展的主要障碍之一,般而言,对于软件 安全的威胁可以同威胁模型进行描述。所谓威胁模型就是对一个系统所遇到的威 胁的一个定义【2 6 1 。对于一个软件安全问题来说,重点要研究的是软件体本身存 在哪些缺陷,通过什么样的方式可以对软件体进行攻击,以及其成功的可能性有 多高。而这些都可以通过软件安全的威胁模型来进行分析和研究。 目前,软件安全的威胁模型主要可以分为三类,第一是网络威胁模型;第二 是内部威胁模型;第三是恶意主机威胁模型。其中前两个是通过互联网为中介进 行非法行为,而恶意主机威胁模型则是在本地进行恶意破坏。这三种威胁模型特 点如表2 1 所示。具体描述如下: 网络威胁模型:这种威胁一般是通过互联网的互联特性,从软件体宿主以外 的环境对软件体进行攻击,这种攻击方式难度相对较高。例如网络中流传的各种 病毒程序,以及针对特定软件的缓冲区溢出和协议攻击等方式。 内部威胁模型:该模型相对于网络威胁拥有更高的权限,网络威胁模型一般 需要穿过多道防火墙和网关才能到达目的主机,而内部威胁模型只需经过几个网 关便可以轻易的访问目的主机,因此,这为恶意破坏者提高了较多的便利。 恶意主机威胁模型:相对于前两种威胁模型而言,这种威胁模型拥有最高的 权限和最便利的条件。由于主机本身拥有对操作系统,内核访问以及其它控制权 限,因此,攻击者拥有了最高的权限和所有的特权,其中包括对代码的运行、单 步跟踪、内存调试、攻击调试、逆向工程等一系列的操作。前两种攻击模型只能 对软件体的输入和输出进行研究,因此,它们属于黑盒攻击。而恶意主机威胁模 型不仅可以研究它的输入和输出关系,更可以深入到单步运行跟踪,因此,属于 白盒攻击。其典型威胁包括:版权篡改、修改内存数据和程序、获取软件关键信 息等。 9 武汉理工大学硕士学位论文 表2 1 软件安全威胁模型 网络威胁模型内部威胁模型恶意主机威胁模 型 攻击者的权利 无 肚匕 全部 攻击目标位置 远程局域网内或本地主机本地主机 主机是否受信任任是是 歹k 口 2 1 2 软件保护技术 以上内容对软件安全的威胁模型做出了详细的介绍,下面将对软件安全的保 护技术做一个初步的了解。所谓软件安全保护技术就是用于保护软件体本身的安 全的一种方法。其中包括保护软件不被恶意篡改、逆向工程以及窃取信息等非法 攻击行为破坏。不同软件安全技术可能运用于不同的领域,在选择时,我们需根 据具体的情况来界定我们所需要的软件技术。 网络验证技术:该技术需要通过网络连接客户端和服务器,当客户端运行时, 需向服务器端发送验证请求,并将客户端的相关信息发送到服务器端,如果服务 器段验证通过,则向客户端发送验证通过消息,当客户端收到验证通过消息时, 才能正常运行。这种技术在一定程度上防止了本地破解和篡改,为许多网络所采 用。但是这种方式也有其缺陷所在: ( 1 ) 程序在运行前必须经过网络验证,如果客户端在脱机的状态下便无法验证 和使用,而且对于一些只需单击完成作业的软件来说,需要为他们额外增 加网络连接,使其连入i n t e r n c t ,这样便增加了许多不必要的开销。 ( 2 ) 由于客户端验证需服务器一直处于监听状态,一有客户端连接上了便与客 户端完成交互作业。因此,这就需要服务器处于2 4 小时工作状态,从而 增加了许多成本开销。 ( 3 ) 由于验证数据通过网络发送到客户端,这样很有可能导致验证数据被截获 和篡改,因此,其中也具有一定的安全隐患。 硬件辅助技术【2 7 ,2 8 ,2 9 】:该技术则主要是软件通过硬件载体发布时,对硬件介 质做特殊的处理,以防止软件体被复制盗用等操作。例如,m a c r o 公司s a f e d i s c 就是其中一种方式,它的原理是将数字指纹用激光写入光盘中,通过光盘可以直 接正常运行程序,但是却不能进行非法复制等行为。 防篡改技术:该技术一般是用于防止破坏者恶意修改程序代码等行为。其主 要原理是通过对软件体本身进行完整性校验来判断软件是否被篡改,如果被篡改 武汉理工大学硕士学位论文 则停止程序运行,否则将控制权交还给应用程序。防篡改技术一般采用散列函数 的唯一映射的算法,通过将一大串字符映射到一个固定长度的空间,得到唯一的 映射值,然后将其存放起来,待到下次检测时,用同样的映射方法获取散列值, 并与存储起来的完整的散列值进行比较校验,如果相同则说明软件体是完整的, 否则就是说明被破坏或是被篡改了。防篡改技术在对软件体进行完整性检测的时 一般分为两种【3 0 ,3 ,一种是对磁盘文件进行检测,另一种则是对内存代码的完整 性进行检测。 软件水印技术【3 2 , 3 3 , 3 4 :有些软件保护技术属于事前保护技术,即在恶意破坏 行为发生之前,对软件体进行保护操作。例如上述的集中软件安全技术。有些保 护技术是在恶意行为发生之后的事后保护技术,例如,软件水印技术。软件水印 的作用是在软件发生版权纠纷问题后用于证明软件版权所有的法律依据。因此, 它是在非法复制盗用等恶意行为发生之后用于证明版权问题的一种方式。软件水 印需在软件发布之前对软件体嵌入水印信息,该信息便是用于证明软件版权所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论