当前位置: 首页 > 专利查询>四川大学专利>正文

一种软件安全加固方法技术

技术编号:17879284 阅读:70 留言:0更新日期:2018-05-06 01:00
本发明专利技术公开了一种软件安全加固方法,其将软件的安全加固按照软件全生命周期来划分为3个层次:软件源码、可执行文件及软件运行环境。根据不同层各自的特征,提出了不同的加固措施,软件源码层以软件漏洞扫描为主;可执行文件层又分为静态与动态两个方面来加固,前者防止软件被反汇编,以软件混淆技术为主,后者防止软件被动态调试,以反调试技术为主;运行环境层给提供软件产品的自主可控的运行环境,以云端隔离部署技术为主。本发明专利技术方法中,软件加固通过分层级实现,在不同的层中采用不同的技术手段来保证来增强软件的安全,全方位提高软件的安全能力,保证软件不被恶意破坏及侵权传播,保证软件安全。

A method of software safety reinforcement

The invention discloses a method of software security strengthening, which divides software safety and reinforcement into 3 levels according to the whole life cycle of software: software source code, executable file and software running environment. According to the characteristics of different layers, different reinforcement measures are put forward, software source layer is mainly based on software vulnerability scanning, and the executable file layer is divided into two aspects, static and dynamic. The former prevents software from disassembling and is mainly software obfuscation technology. The latter prevents soft parts from being debugged dynamically. The main business environment is the cloud based isolation and deployment technology, which provides independent and controllable operating environment for software products. In the method of the invention, the software reinforcement is realized by hierarchical level, and different technical means are used in different layers to ensure the security of the software, improve the security of the software in all directions, ensure that the software is not damaged by malware and the infringement is spread, and the software is safe.

【技术实现步骤摘要】
一种软件安全加固方法
本专利技术涉及计算机软件安全领域,特别是一种全方位的、分层次的软件安全加固方法。
技术介绍
软件安全是指采用工程化的方法使得软件在敌对攻击的情况下仍能够正常工作的思想,即采用系统化、规范化和数量化的方法来指导构建安全的软件。软件安全作为信息技术发展的基石,对社会经济增长、国家发展具有重要推动力,标志着一个国家的战略方向,成为衡量一个国家综合国力的标志之一。软件安全面临的主要问题包括:软件被非法传播使用导致知识产权被破坏、软件被逆向分析而导致软件的恶意破坏、软件潜在漏洞被发掘并被恶意利用等。2015年丹麦安全公司Secunia的研究团队对来自263个软件供应商的2484款软件进行漏洞扫描,结果发现总漏洞数为16081个。与此同时,软件盗版带来的层出不穷的侵权事件是造成信息泄露的重要原因。目前针对软件安全加固方面的研究,通常以软件的某一侧面为保护对象,主要集中软件防盗版、防逆向、授权加密和防篡改等方面,所使用的技术包括软件水印、代码混淆、软件加壳、虚拟机保护技术等。综上可知,当前软件安全形势严峻,同时对应的安全加固技术仅从一个或某几个侧面来对软件进行增强保护,没有形成一套完整的软件安全加固保护体系,不能对软件进行全面有效的保护。
技术实现思路
本专利技术所要解决的技术问题是提供一种软件安全加固方法,针对软件侵权、软件逆向、软件漏洞等各种软件安全问题,实现软件的安全加固防护。为解决上述技术问题,本专利技术采用的技术方案是:一种软件安全加固方法,包括以下步骤:步骤1:对软件的源代码进行安全加固,包括源代码自身的安全及形式安全,即:首先根据源代码的类型来初步选择工具集;其次根据当前扫描的目标,在选择的工具集中选择最适合的漏洞扫描工具;再次是执行漏洞扫描,生成扫描结果报告;最后根据扫描结果报告来对源文件做修改;步骤2:把源代码编译为可执行文件级后,对可执行文件进行加固,包括静态防护与动态防护;其中,静态防护为:首先对软件实施布局混淆,将可读性好的代码修改为人为难以阅读的代码,其次实施数据混淆,对软件涉及的数据做等价替换,最后实施控制混淆,从软件执行流程上做等价替换,达到软件不能分析出原软件算法逻辑的程度;动态防护为:利用技术手段检测当前进程是否处于被调试环境中,如果正在被调试则改变正常的执行路径或者修改自身程序让自身崩溃,从而增加调试时间和复杂度,以此阻止可执行文件被调试跟踪;步骤3:将软件与使用者物理隔离,保护软件运行环境安全。进一步的,所述步骤1对软件的源代码进行安全加固的步骤分为多次执行,其执行的依据是针对不同的源代码,分为通用的漏洞扫描及专用的漏洞扫描。进一步的,所述步骤2中动态防护采用反调试方法:使用系统函数检测、特征检测及行为检测相结合的方式来实现反调试,首先利用操作系统中提供系统函数(比如Windows系统中的IsDebuggerPresent、CheckRemoteDebuggerPresent函数)来检测自身是否正在被调试,其次枚举当前运行的所有进程,并在进程的内存空间中搜索不同调试器的特征代码段及调试器窗口,再次利用软件正常运行与调试运行的行为差异(比如执行指令的时间差),实现软件的反调试功能。进一步的,所述步骤3具体为:软件部署在专用的云平台中,且应用以独立的虚拟机部署,即单一的应用部署在虚拟机隔离的不同主机上,实现应用的隔离部署;客户端通过云桌面或者SaaS模式来访问应用,用户与软件的交互只有输入与输出,整个使用过程不接触物理的软件。与现有技术相比,本专利技术的有益效果是:1)软件加固通过分层级实现,在不同的层中采用不同的技术手段来保证来增强软件的安全,源代码采用漏洞扫描技术,二进制文件采用混淆及反调试技术,运行环境采用隔离部署技术,全方位提高软件的安全能力,可保证软件不被恶意破坏及侵权传播,保证软件安全。2)本方法既适用于新设计软件也适用于的现有成熟软件,前者建议采用本方法的三层防护方案,而后者可以根据实际需要来针对其中一层或者多层做软件安全加固防护。附图说明图1是本专利技术中软件安全加固体系整体结构图。图2是本专利技术中源码漏洞检测示意图。图3是本专利技术中可执行文件混淆方法。图4是本专利技术中软件隔离部署方法。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术提出了“软件全生命周期”安全加固的理念,以软件的形态为基础,将软件生命周期划分为软件的源代码、软件的可执行文件以及软件的运行环境三个层次。第一层以源代码的漏洞检测为核心;第二层以代码混淆及反调试为核心,第三层以隔离部署为核心,在实际实施过程中,可根据软件产品的状态、业务需求及成本等方面综合考虑,选择该技术体系中的单个层次保护、部分层次保护或者全部层次保护,其结构示意图如图1所示。现详述如下:源代码保护层,主要保护软件源代码的安全,包括源代码自身的安全及形式安全,利用漏洞检测来完成。本专利技术采用的漏洞检测方法:根据源代码的类型及检测目标制定检测策略,根据检测策略来选择第三方检测工具完成漏洞检测,检测结果用于指导源代码的修改,源码漏洞检测示意图如图2所示。其中,检测策略是根据待测源码的编码语言及漏洞类型选择合适的检测工具。源代码的编码语言不同,其漏洞扫描的处理方式及关注点也不尽相同。比如,针对C/C++语言,重点关注内存泄露漏洞;针对Java语言,重点关注异常处理漏洞;针对web应用,重点关注SQL注入、XSS漏洞等。同时待检测漏洞的类型,通常分为通用型漏洞与专有漏洞,前者指不依赖于编码语言,比如死代码;后者与语言密切相关,比如非法指针通常与C/C++有关。检测工具利用第三方工具集来完成检测,比如,针对Java代码的Soot工具,针对C/C++代码的PC-lint工具等。工具的选择需要考虑检测的漏洞类型、优先级及工具的成熟度几个因素。可执行文件保护层,主要分为静态防护与动态防护两方面,静态防止软件被反汇编或动态防止软件被调试。防止静态反汇编利用软件混淆技术完成,其基本原理是:通过替代、置换等方式将原始代码中的字符串、函数名、变量等元素用无意义的字母或数字表示,重写代码中的部分逻辑,使其变成功能上等价,但难以理解的代码形式。本专利技术采用的混淆方法如图3所示,将原始的可执行文件P利用布局混淆、数据混淆及控制混淆等方式转化为语义等价、难以被理解或者反汇编的文件p’,使得对于同样的输入A,二者都能得到同样的输出B。阻止动态调试的方式是利用技术手段检测当前进程是否处于被调试环境中,如果正在被调试则改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度,以此阻止可执行文件被调试跟踪。本专利技术采用的反调试方法:使用系统函数检测、特征检测及行为检测相结合的方式来实现反调试,首先利用操作系统中提供的系统函数(比如Windows系统中的IsDebuggerPresent、CheckRemoteDebuggerPresent函数)来检测自身是否正在被调试,其次枚举当前运行的所有进程,并在进程的内存空间中搜索不同调试器的特征代码段,比如OllyDbg的特征代码段为0x41,0x00,0x62,0x00,0x6F,0x00,0x75,0x00,0x74,0x00….0x4B,0x00,0x00,0x00,或者检测当前是否有正在本文档来自技高网...
一种软件安全加固方法

【技术保护点】
一种软件安全加固方法,其特征在于,包括以下步骤:步骤1:对软件的源代码进行安全加固,包括源代码自身的安全及形式安全,即:首先根据源代码的类型来初步选择工具集;其次根据当前扫描的目标,在选择的工具集中选择最适合的漏洞扫描工具;再次是执行漏洞扫描,生成扫描结果报告;最后根据扫描结果报告来对源文件做修改;步骤2:把源代码编译为可执行文件级后,对可执行文件进行加固,包括静态防护与动态防护;其中,静态防护为:首先对软件实施布局混淆,将可读性好的代码修改为人为难以阅读的代码,其次实施数据混淆,对软件涉及的数据做等价替换,最后实施控制混淆,从软件执行流程上做等价替换,达到软件不能分析出原软件算法逻辑的程度;动态防护为:利用技术手段检测当前进程是否处于被调试环境中,如果正在被调试则改变正常的执行路径或者修改自身程序让自身崩溃,从而增加调试时间和复杂度,以此阻止可执行文件被调试跟踪;步骤3:将软件与使用者物理隔离,保护软件运行环境安全。

【技术特征摘要】
1.一种软件安全加固方法,其特征在于,包括以下步骤:步骤1:对软件的源代码进行安全加固,包括源代码自身的安全及形式安全,即:首先根据源代码的类型来初步选择工具集;其次根据当前扫描的目标,在选择的工具集中选择最适合的漏洞扫描工具;再次是执行漏洞扫描,生成扫描结果报告;最后根据扫描结果报告来对源文件做修改;步骤2:把源代码编译为可执行文件级后,对可执行文件进行加固,包括静态防护与动态防护;其中,静态防护为:首先对软件实施布局混淆,将可读性好的代码修改为人为难以阅读的代码,其次实施数据混淆,对软件涉及的数据做等价替换,最后实施控制混淆,从软件执行流程上做等价替换,达到软件不能分析出原软件算法逻辑的程度;动态防护为:利用技术手段检测当前进程是否处于被调试环境中,如果正在被调试则改变正常的执行路径或者修改自身程序让自身崩溃,从而增加调试时间和复杂度,以此阻止可执行文件被调试跟踪;步骤3:将软件与使用者物理隔离,保护软件运行环境安全。...

【专利技术属性】
技术研发人员:王俊峰吴鹏田斌王标刘东
申请(专利权)人:四川大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1