用于软件检测的方法和装置以及计算机可读存储介质与流程

文档序号:14897511发布日期:2018-07-08 09:07阅读:205来源:国知局

本发明属于数据保密领域,具体涉及一种软件检测方法、软件检测装置和计算机可读存储介质。



背景技术:

随着计算机和网络技术的发展,工业自动化的程度越来越高,通过终端上运行软件从而实现特定生产目的的情形越来越多。

如图1所示,目前,很多软件用户b都存在软件使用需求,但其自身却不具有软件开发能力。此时,软件用户b通常会委托多个软件开发者c为其开发具有预定功能的软件。当软件开发者c将开发完毕的软件交付给软件用户b时,软件用户b需要对软件进行检测,以确定所述软件是否符合预定设计要求。当所述软件符合预定的设计要求时,软件用户b才会验收所述软件;否则,软件用户b将通知软件开发者c对所述软件进行修改。

为了对所述软件进行检测,软件用户b通常会从软件检测工具开发者a处购得专业的软件检测工具,利用软件检测工具来对软件开发者c交付的软件进行检测。软件检测工具是一种专业软件,它能够辅助软件检测人员完成某一类型或某一领域内的检测工作,判断待测软件是否符合预定设计要求,并指出待测软件存在的问题。

而对于软件检测工具开发者a来说,软件检测工具的开发成本通常是非常高昂的,为了保护自己的智力劳动成果,软件检测工具开发者a需要防止软件检测工具的代码泄露,对软件检测工具进行保护。

目前已知的防止软件检测工具的代码泄露的方法如下:软件检测工具开发者a在软件检测工具上加装“加密狗”后,再将软件检测工具提供给软件用户b,所述加密狗内含有不可复制的硬件信息,用于认证用户身份。一旦软件用户b在某一硬件设备上运行所述软件检测工具,软件检测工具即与该硬件设备绑定,不能再在其他硬件设备上运行。

上述方法存在以下问题:

1.当软件开发者c有多个,即软件用户b委托多个软件开发者c为自己开发软件时,软件用户b需要对多个软件开发者c开发的软件进行检测。此时,软件用户b可以选择在己方工作场所的第一硬件设备m1上运行软件检测工具,对软件开发者c开发的待测软件进行检测。采用这种方式,理论上来说,软件用户b能够对所有软件开发者c开发的待测软件进行检测。但是,实际上,由于这会导致待测软件的代码被遗留在第一硬件设备m1上,而软件开发者c同样希望保护待测软件,不希望待测软件的代码泄露,因此,他们通常会拒绝这种软件检测和验收方式。因此,这种方式不便于软件用户b进行软件检测和验收。

2.软件用户b也可以选择在软件开发者c的工作场所的第二硬件设备m2上运行软件检测工具,软件检测工具将与第二硬件设备m2绑定。这样只能检测一个软件开发者c开发的软件,对于其他软件开发者c开发的软件,还需再次购买软件检测工具,到其他软件开发者c的工作场所的其他硬件设备上运行。这不仅提高了软件用户b付出的成本(需多次购买软件检测工具),而且还可能导致软件检测工具的代码遗留在第二硬件设备m2上,造成软件检测工具的代码泄露;

3.软件检测工具开发者a实际上是将软件检测工具在一台硬件设备上的“永久使用权”提供给软件用户b,价格通常比较高。



技术实现要素:

本发明的目的是提供一种软件检测方法和装置,以及一种对应的计算机可读存储介质,其优点在于:既便于软件检测工具开发者对软件检测工具进行保护,又便于软件用户使用软件检测工具进行软件检测和验收。

第一方面,本发明提供一种软件检测方法,包括:

步骤s11,运行对软件检测工具的运行环境进行封装从而形成的虚拟机;

步骤s12,利用虚拟机中的软件检测工具对待测软件进行检测;

其中,所述软件检测工具的运行环境包括操作系统、所述软件检测工具的程序代码和运行所述软件检测工具所需的相关数据。

优选地,在步骤s11之前,还包括以下步骤:

启动所述虚拟机,所述虚拟机在启动之后提供第一接口;

在第一接口中输入认证码;

所述虚拟机接收所述认证码,并对其进行认证,如果认证成功,虚拟机开始运行;否则,所述虚拟机不运行。

优选地,所述认证码是由服务器生成的,并从服务器发送到用户终端;

从用户终端中获取所述认证码,并在第一接口中输入所述认证码。

优选地,服务器生成所述认证码的步骤为:

服务器生成虚拟机运行指令,对所述虚拟机运行指令进行签名,从而生成所述认证码。

优选地,所述虚拟机运行指令中包括虚拟机的运行时段,虚拟机接收到所述认证码后,对所述签名进行认证,如果认证通过,则虚拟机仅在所述运行时段内运行。

优选地,所述相关数据包括代码检测规范。

优选地,所述虚拟机提供第二接口,用于接收待测软件。

第二方面,本发明提供一种软件检测装置,包括:

运行部件,用于运行虚拟机,所述虚拟机是通过对软件检测工具的运行环境进行封装从而形成的;

检测部件,用于利用虚拟机中的软件检测工具对待测软件进行检测;

其中,所述软件检测工具的运行环境包括操作系统、所述软件检测工具的程序代码和运行所述软件检测工具所需的相关数据。

第三方面,本发明提供一种软件检测装置,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述方法。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述方法。

本发明具有以下有益效果:

(1)便于软件检测工具开发者对软件检测工具进行保护;

(2)便于软件用户利用软件检测工具进行软件检测和验收;

(3)降低软件检测工具的使用价格。

附图说明

图1是现有技术中软件用户对软件进行检测和验收的过程示意图;

图2是本发明中软件工具开发者对软件检测工具进行封装的过程示意图;

图3是本发明中的软件检测过程的整体示意图;

图4是本发明中的软件检测方法的流程示意图;

图5是本发明中的软件检测装置的结构示意图。

具体实施方式

以下结合具体实施例和说明书附图,对本发明作进一步详细说明。

虚拟机(virtualmachine,vm)是通过软件模拟的、具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟通过生成现有操作系统的全新虚拟镜像,从而具备与真实操作系统(例如windows、linux)完全一样的功能,因此,虚拟机实际上就是一个独立的虚拟系统,所有操作都在所述独立的虚拟系统里面进行,可以进行软件安装、数据保存、设置独立桌面等操作,而不会对真正的系统产生任何影响。

当采用虚拟机对软件检测工具的整个运行环境进行封装后,硬盘镜像就展现为一个无法破解的文件,这能够提高软件检测工具的整体安全性。

如图2所示,软件检测工具开发者a将软件检测工具的运行环境从整体上封装为虚拟机,其中所述运行工具包括用于运行软件检测工具的操作系统、软件检测工具的程序代码和运行软件检测工具所需的相关数据;随后,软件检测工具开发者a会将虚拟机提供给软件用户b;当软件用户b需要进行软件检测和验收时,运行虚拟机中的软件检测工具,对待测软件进行检测。

如图3所示,本实施例中,软件检测过程的整体流程如下:

步骤s301,软件用户b从软件测试工具开发者a处得到虚拟机,并从软件开发者c处得到待测软件。

软件检测工具开发者a对软件检测工具的运行环境进行封装,从而形成虚拟机,随后,软件检测工具开发者a将虚拟机提供给软件用户b。软件用户b无需安装,只要运行这个虚拟机,就能获得整个运行环境,方便了软件用户b使用软件检测工具,提高了他们使用软件检测工具进行软件检测工具的意愿。

所述软件检测工具的运行环境包括用于运行所述软件检测工具的操作系统、所述软件检测工具的程序代码和运行所述软件检测工具所需的相关数据;所述相关数据包括代码检测规范,例如,基于通用缺陷枚举(cwe,commonweaknessenumeration)的代码检测规范,和/或基于开放式web应用程序安全项目(owasp,openwebapplicationsecurityproject)发布的安全漏洞的代码检测规范。

软件检测工具开发者a可以通过多种方式将虚拟机提供给软件用户b,例如:(1)将虚拟机存储在计算机可读介质上,再将计算机可读介质提供给软件用户b,其中,所述计算机可读存储介质可以是但不限于:随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、光盘只读存储器(cd-rom)、硬盘等中的一种或多种。(2)通过文件传输协议(ftp)、网盘共享等方式,将虚拟机提供给软件用户b。

软件开发者c受软件用户b的委托,为软件用户b开发具有预定功能的软件,当软件开发完毕时,将软件交付给软件用户b。而软件用户b需要对该软件进行检测,判断该软件是否符合预定的设计要求,例如,是否具有预定功能、整体运行是否安全等。此时,该软件被称为“待测软件”。

步骤s302,启动所述虚拟机,所述虚拟机提供第一接口。

软件用户b在软件开发者c的工作场所的第二硬件设备m2上运行所述虚拟机,当虚拟机被运行时,虚拟机尚未启动,但是提供第一接口,例如具有可视化用户界面的第一接口,所述第一接口用于向软件用户b提供用于输入认证码的入口。

所述第二硬件设备m2包括能够运行虚拟机和软件检测工具的任何设备,包括通用计算机、专用计算机、计算机网络或其他设备。

由于使用了虚拟机封装技术,软件检测工具无需与硬件设备绑定,而是可以在任意硬件设备上运行,从而,软件用户b可以将软件检测工具携带至任意场所,使用软件检测工具进行软件检测和验收。

步骤s303,在第一接口中输入认证码,并对认证码进行认证。

所述认证码是由服务器生成的,并从服务器发送到软件用户b的用户终端。所述服务器由软件检测工具开发者a进行维护。所述用户终端可以为笔记本电脑、平板电脑、手机等便携式终端,其可以通过有线方式(例如同轴电缆、光纤、数字用户线dsl)或无线方式,与服务器进行通信。例如,当软件用户b需要使用软件检测工具进行软件检测和验收时,可以通过用户终端访问服务器主页,或软件检测工具开发者a的微信公众号,向服务器发送认证码获取请求。

服务器接收到所述认证码获取请求后,生成相应的虚拟机运行指令,所述虚拟机运行指令中可以包括虚拟机的运行时段;然后,服务器对虚拟机运行指令进行签名,从而生成认证码,即,所述认证码包括两部分,一部分是虚拟机运行指令的明文,另一部分是用私钥加密后的虚拟机运行指令的摘要;最后,服务器将所述认证码发送给所述用户终端。具体地,所述服务器可以通过电子邮件、即时通信(qq,微信)等方式,将所述认证码发送给所述终端。

对虚拟机运行指令进行签名的目的是保证信息传输的完整性和发送者的身份认证。签名过程如下:服务器将虚拟机运行指令的摘要信息用服务器的私钥加密,与虚拟机运行指令的明文一起,组成认证码。服务器对虚拟机运行指令进行签名时,可以采用已知的签名算法,例如rsa算法等。

所述虚拟机运行时段的长度,可以由软件检测工具开发者a来设定,例如1小时,2小时等。

软件用户b将用户终端接收到的认证码输入到第一接口中,虚拟机基于认证码进行签名认证,即利用公钥对所述签名进行认证,以判断所述虚拟机运行指令是否是由服务器发出的。

由于软件用户b是通过用户终端来接收认证码的,虚拟机无需与服务器联网,只需用户终端与服务器联网即可。从而,当软件开发者c的工作场所是一些特殊的、不便联网的场所,或者是出于信息安全保护而不联网的场所,也能够使用这种认证码接收方式。

软件用户b在没有得到服务器签发的认证码时,无法运行虚拟机,也就无法运行虚拟机中的软件检测工具,这就使得软件用户b不能够随意复制软件检测工具的代码,从而便于软件检测工具开发者a对软件检测工具保护。

步骤s304,虚拟机判断认证是否成功。

如果认证成功,则跳转至步骤305,否则,跳转至步骤307。

步骤305,虚拟机开始运行,提供第二接口,用于接收待测软件。

所述第二接口可以是一个可视化的用户界面,用于向软件用户b提供用于输入待测软件的入口。

步骤s306,接收待测软件,运行软件检测工具,对待测软件进行检测。

虚拟机接收到待测软件后,软件用户b可以运行软件检测工具,对待测软件进行检测,并输出软件检测结果。如果软件检测结果表示待测软件符合设计要求,则软件用户b可以验收该软件;否则,软件检测结果包含待测软件存在的问题,将软件检测结果返回给软件开发者c,由软件开发者c对该软件进行修改。

步骤307,如果认证失败,则虚拟机不运行,软件用户b无法运行软件检测工具。

以上实施方式具有以下优点:

1.软件用户b无需在软件用户b的工作场所的第一硬件设备m1上运行软件检测工具,而是在软件开发者c的工作场所的第二硬件设备m2上运行软件检测工具,由于软件检测工具被封装在虚拟机中,软件检测工具的代码也不会遗留在第二硬件设备m2上,不会发生代码泄露问题;当存在多个软件开发者c时,由于软件检测工具无需与特定硬件设备绑定使用,当软件用户b需要检测多个软件开发者c交付的软件时,可以复制虚拟机的多个副本,分别在多个软件开发者c的工作场所使用,只要获得多个认证码即可。这种软件检测和验收方式,既方便了软件用户b使用软件检测工具,又能使得软件检测工具的代码不被复制和窃取。

2.认证码中包含虚拟机运行时段,虚拟机仅在该运行时段内才能运行,因而,软件检测工具开发者a提供给软件用户b的,实际上是软件检测工具的一次性使用权(一次性license),相比于采用加密狗方式进行加密时提供的永久性使用权(永久性license)而言,一次性使用权的价格比较低廉,降低了软件用户b的生产成本。

如图4所示,基于图3中示出的软件检测过程,本实施例提供一种软件检测方法,包括:

步骤s11,运行对软件检测工具的运行环境进行封装从而形成的虚拟机;

步骤s12,利用虚拟机中的软件检测工具对待测软件进行检测;

其中,所述软件检测工具的运行环境包括操作系统、所述软件检测工具的程序代码和运行所述软件检测工具所需的相关数据。

如图5所示,本实施例还提供一种软件检测装置,软件用户b可使用该软件检测装置来进行软件检测和验收。

所述软件检测装置包括:

运行部件,用于运行虚拟机,所述虚拟机是通过对软件检测工具的运行环境进行封装从而形成的;

检测部件,用于利用虚拟机中的软件检测工具对待测软件进行检测;

其中,所述软件检测工具的运行环境包括操作系统、所述软件检测工具的程序代码和运行所述软件检测工具所需的相关数据。

本实施例提供的软件检测装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要将上述功能集成在一个功能模块中完成,或者,将上述功能分配至不同的功能模块来完成,即,将装置的内部结构划分为不同的功能模块,以完成以上描述的全部或部分功能,本发明对此不作具体限定。

本实施例还提供一种用于软件检测的装置,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述方法。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述方法。

本发明中各个部分均采用递进方式进行描述,各个实施例之间相同或者相似的部分相互参见即可,每个实施例重点介绍的是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本类似于方法实施例,所以描述得比较简单,相关之处可参见方法实施例部分的说明。

本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1