美章网 资料文库 软件工程防篡改技术研究范文

软件工程防篡改技术研究范文

本站小编为你精心准备了软件工程防篡改技术研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

软件工程防篡改技术研究

关键词:软件保护;防篡改技术;软件安全

1软件防篡改技术的基本概念

1.1软件防篡改技术的定义

第一,静态防篡改技术。依赖软件内部代码的混淆思想,通过添加执行代码,将原本应用程序内部代码混乱后,降低应用程序的可读性,也称之为代码混淆技术。第二,动态防篡改技术。依赖软件检测响应思想,通过内部软件或外部硬件,阻止软件被非法修改后应用程序正常运行。该技术能够在发现软件被非法篡改后作出错误结果输出,软件无响应,终止程序运行,从而保护软件安全。

1.2常见的软件篡改技术攻击模型

软件被下载到客户端后,可能受到不同宿主的攻击,比如修改软件内部授权、修改内部商业信息等。本文分析了常见的三种软件篡改攻击模型。第一,获取非授权访问。软件篡改人员通过绕过软件中的访问控制机制,重新定义软件授权内容,进而绕过原有软件内部机制访问,重新分发软件副本后获取利益。第二,逆向工程。篡改人员通过反汇编技术、反编译技术等逆向思维模式,获取软件内部的全部或部分核心控制源代码,从而从软件内部破解核心加密信息、核心机密等内容,将软件据为己用。第三,破坏代码完整性。篡改人员通过向软件内部嵌入恶意代码或修改、替换部分代码,扰乱程序或绕过原有软件内部验证保护模块,从而获取利益。

1.3软件防篡改技术的应用

第一,商业软件作为付费软件,软件开发人员要保证使用者的商业利益和使用环境。例如,当访问控制模块面临被篡改威胁时,可以启动内部校验机制,验证软件是否被修改,或采用独立模块加密等方式,确保软件的安全性和唯一性。第二,Java应用程序被开发人员广泛使用,面临了更大的威胁。Java程序包内包含若干class类文件,该文件中保存了变量池和语义信息定义[1]。因此,保护人员会在程序中添加诸多加密算法,有效保护软件,防止应用程序被恶意篡改。第三,数字版权系统中,防篡改技术会采用加密或混淆等方式,有效保护传输过程中产生的数字内容,防止中途被恶意截取,有效保护数据。除上述内容外,防篡改技术在C/S、无线网络传输、物联网等均有良好的应用场景。面对恶意篡改带来的威胁,随着新技术的研究和拓展,软件防篡改技术会更加完善。

1.4软件防篡改技术的评价指标

软件防篡改技术的主要评价指标包括以下两方面内容。第一,隐秘性。隐秘性防篡改技术要求修改后的代码与源代码有高度相似性,不会轻易被攻击者探测,可以在一定程度上避免攻击或者绕开攻击代码。该方案应充分考虑空间模块问题,要将隐匿代码分布在不同模块,将攻击者的思路和攻击内容引导至错的区域,进而保护软件。第二,弹性。弹性表现了软件对攻击者有一定抵抗性,面对恶意代码时,软件可以依靠自身防御措施,在一定程度上抵御攻击。例如,某些模块受到攻击时,其他模块仍可正常工作,当危险全面解除,被攻击模块代码安全检测通过后,系统恢复正常运行。

2现有软件防篡改技术

2.1静态防篡改技术

软件静态防篡改技术指通过添加代码或替换程序内容,加大静态分析难度,进而阻止攻击者通过逆向手段获取软件核心代码[2]。现阶段,常见的混淆技术主要包括词法混淆、数据混淆、流混淆、切片混淆和预防混淆等技术。

2.2动态防篡改技术

动态防篡改技术主要包括完整性检测和响应两部分。第一,完整性检测。通过一种标识位识别应用程序是否遭受破坏。完整性检测是动态防篡改技术的检验基础,可以针对当前应用程序的Hash值、校验和、数字签名等内容,计算软件的完整性是否达标。第二,响应检测。现阶段,常见的响应性检测方法包括指针置空响应、哨兵机制检测响应等方式。该设计模式主要依赖软件动态响应技术,面对突发恶意代码,可以结合预编写探针模块执行指定代码,将攻击者引导至错误方向,防止应用程序被篡改。

2.3软件防篡改模型

软件开发人员和测试人员工作过程中,会通过ObliviousHashing等模型来对软件进行攻击模拟实验,并在各个环节计算Hash值,与原始预存Hash值对比,校验程序的完整性。作为一种软件验证模型,与传统Hash校验相比,隐式Hash模型依赖程序运行变量计算而非静态特征代码,保证了程序的隐秘性和安全性。

2.4事件日志检测机制

软件日志很早被应用于软件内部Bug检测,监控软件运行情况,后期被安全防护人员应用于防篡改领域。基于事件日志,可以让开发者验证软件在使用过程中是否被修改。开发者将事件日志和指定保护内容编写到应用程序,软件使用过程中,会不断将信息上传至服务器,进行校验工作。由于校验模块位于服务端,因此可以避开攻击。开发者可以随时通过日志内容,查看软件当前使用情况及安全策略是否正常。因为每条记录都会携带时间戳,所以依据周期性可以良好把控软件安全机制,防止软件被恶意篡改。

2.5多点设置的哨兵防篡改技术

实际应用过程中,软件检测机制和响应机制必不可缺。基于该理论,业内知名学者提出了基于多点设置的哨兵防篡改模型。该技术可以依据不同的内容保护软件。常见的哨兵防篡改模型主要分为两种。第一,动态求和模型。该模型中,哨兵具有完全自我感知能力,应用程序被启动后,不间断计算程序完整性,并与原有库中内容比对,保证程序的安全性。第二,自我修复模型,该模型中,哨兵会检测软件内容的代码模块,当发现代码的完整性被破坏后,哨兵会将该部分代码恢复至初始版本,使攻击者的攻击无法产生任何理化效应,从而保证软件的安全。哨兵模型实际应用过程中,会依照软件的实际使用场景和要求,嵌入到不同的模块中。不同的哨兵模型会组建成一个完整的哨兵网络,攻击者只有移除整个哨兵网络才能实施攻击。由于核心内容由哨兵网络锁保护,因此可以达到保护软件不被恶意篡改的核心目的。

2.6加密技术的应用

近年来,加密技术被应用于软件防篡改领域。软件开发人员可以加密应用程序的部分代码,通过计算校验码和Hash函数,获取秘钥对比数据信息。软件运行中,只有该模块代码运行时才能被解密,执行完毕后继续加密。通过这种执行方法,哨兵模块被更加深入运用。

2.7与硬件相关的防篡改技术

单纯依靠软件实现防篡改技术,不能取得百分百成功。开发人员将原本设计的加密方法拆分为软件和硬件两个组成部分。软件使用者无法通过单一的软件验证秘钥的完整性。软件使用过程中,必须依靠第三方硬件中的非对称数字加密信息才可以使用,在物理层面加以防护,提高软件的安全性。

3软件防篡改技术展望

软件防篡改技术领域,目前尚无行业统一评价体系。因此,建立和完善一套防篡改技术评价体系,对行业的发展有重要意义。对防篡改技术而言,检测和响应两种机制必须相互依赖,二者结合可以大幅度提高破解难度。面对软件中重要的内容模块,将用动、静两种技术相结合,增加软件面对反编译和破解时的理解难度。软件水印技术是后期兴起的一种保护技术。水印可以证明软件的完整性、统一性和正版版权。对于暴力破解或非法篡改,会破坏软件内部水印,从而判定软件是否发生过非法篡改。

4结语

软件防篡改技术是保护软件的重要技术手段之一。本文结合现阶段常见的软件防篡改技术和保护方法,针对软件的实际应用场景,概括分析了业内常见技术的优缺点。

参考文献

[1]马健.软件代码重构的分析与探讨[J].河北北方学院学报(自然科学版),2012,28(1):26-29.

[2]陈容华.软件代码重构的时机[J].科技资讯,2009(28):9.

作者:徐礼金 单位:广东理工学院