用于软件测试过程中的软件完整性校验及软件测试方法与流程

文档序号:18301444发布日期:2019-07-31 10:11阅读:599来源:国知局
用于软件测试过程中的软件完整性校验及软件测试方法与流程

本发明涉及软件安全技术领域,尤其涉及到一种用于软件测试过程中的软件完整性校验及软件测试方法。



背景技术:

完整性是信息安全的三个基本要点之一,其目的是通过阻止威胁或探测威胁,保护可能遭到不同方式危害的数据的完整性和数据相关属性的完整性,具体到软件方面,完整性校验是为了确保软件发布后没有被篡改,从而防止获取该软件的用户终端无法正确运行该软件或者该软件对用户终端产生不良影响。

目前,广泛使用的软件完整性校验方法为软件的发布者在完整的原始软件的基础上使用预定的签名运算产生一个电子安全标记“数字签名”,并将该数字签名附加在软件内,用户终端获取软件的同时获取附加在软件内的数字签名,并通过使用同样的签名运算验证获取的软件的数字签名与该软件内附加的数字签名是否相同,对获取的软件的完整性进行校验。目前的软件完整性校验方法中的数字签名为附加在发布后的软件中的,软件发布者在软件发布之前,对软件进行测试时,也需要每次均对软件进行数字签名验证,而软件在发布之前被篡改的可能性较小,测试时的不必要的数字签名验证会导致测试效率较低。



技术实现要素:

有鉴于此,本发明实施例提供了一种用于软件测试过程中的软件完整性校验及软件测试方法,以解决使用现有软件完整性校验方法导致的对软件进行测试时需要进行不必要的数字签名验证,软件测试效率较低的问题。

根据第一方面,本发明实施例提供了一种用于软件测试过程中的软件完整性校验方法,包括如下步骤:获取用于进行软件测试的待校验软件及其初始密文,初始密文为通过预定加密算法对软件测试之前完整的软件版本进行加密后生成的;初始密文的存储路径和待校验软件的存储路径不同;使用预定加密算法对待校验软件进行加密运算,得到待校验密文;判断待校验密文与初始密文是否相同;当待校验密文与初始密文相同时,确定待校验软件完整。

通过在获取存储路径不同的初始密文和待校验软件后,使用获取到的初始密文对用于进行软件测试的待校验软件进行完整性校验,能够在实现对待校验软件的完整性校验的同时,使待校验软件和初始密文分离,从而能够使软件发布者在对该用于进行软件测试的待校验软件进行了一次或者指定次数的必要的完整性校验,确定待校验软件完整后,仅启动运行待校验软件本身进行软件测试即可,而不需要每次进行软件测试,运行编译待校验软件时都生成校验文件(即不需要每次都对待校验软件进行数字签名验证),从而能够提高对待校验软件进行测试的效率。

结合第一方面,在第一方面第一实施方式中,初始密文进行base64编码后存储于一密文文件内,判断待校验密文与初始密文是否相同的步骤,包括:对密文文件内的文本进行base64解码,得到初始密文;判断待校验密文与初始密文是否相同。

结合第一方面或第一方面第一实施方式,在第一方面第二实施方式中,待校验软件为使用预定加密密钥加密后的软件,使用预定加密算法对待校验软件进行加密运算,得到待校验密文的步骤之前,还包括:使用与预定加密密钥对应的预定解密密钥对加密后的软件进行解密,得到待校验软件。

通过使用将待校验软件设置为使用预定加密密钥加密后的软件,并在对待校验软件进行加密运算之前,使用与预定加密密钥对应的预定解密密钥对加密后的软件进行解密,能够防止待校验软件被非正常用户获取时被反编译。

根据第二方面,本发明实施例提供了一种软件测试方法,包括如下步骤:接收待测试软件的启动指令;获取待测试软件以及待测试软件的初始密文的存储路径;执行第一方面或者第一方面任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验;当待测试软件的校验结果为完整时,启动待测试软件,对待测试软件进行测试。

通过在接收到待测试软件的启动指令后,获取待测试软件以及待测试软件的初始密文的存储路径,从而能够使用第一方面或者第一方面任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法完成对未附加初始密文(即数字签名)的待测试软件的校验,并在校验结果为完整时,启动该待测试软件,对待测试软件进行测试,能够在对待测试软件进行软件测试的过程中,仅进行一次或者指定次数的必要的待测试软件的完整性校验即可,而不需要每次进行软件测试都进行一次软件完整性校验,从而,能够提高该软件测试方法的测试效率。

结合第二方面,在第二方面第一实施方式中,当待测试软件的校验结果为完整时,通过exec函数族启动待测试软件。

由于exec函数族提供了一个在进程中启动另一个程序执行的方法,因此,当待测试软件的校验结果为完整时,使用exec函数族启动待测试软件,能够直接在执行用于软件测试过程中的软件的完整性校验方法的进程中启动并运行待测试软件,而不用调用新的进程,减少了本发明实施例的软件测试方法所占用的计算机资源。

根据第三方面,本发明实施例提供了一种用于软件测试过程中的软件完整性校验装置,包括:文件获取模块,用于获取用于进行软件测试的待校验软件及其初始密文,初始密文为通过预定加密算法对软件测试之前完整的软件版本进行加密后生成的;初始密文的存储路径和待校验软件的存储路径不同;加密模块,用于使用预定加密算法对待校验软件进行加密运算,得到待校验密文;密文判断模块,用于判断待校验密文与初始密文是否相同;结果确定模块,用于当待校验密文与初始密文相同时,确定待校验软件完整。

结合第三方面,在第三方面第一实施方式中,初始密文进行base64编码后存储于一密文文件内,密文判断模块包括:密文解码单元,用于对密文文件内的文本进行base64解码,得到初始密文;密文判断单元,用于判断待校验密文与初始密文是否相同。

根据第四方面,本发明实施例提供了一种软件测试装置,包括:指令获取模块,用于接收待测试软件的启动指令;路径获取模块,用于获取待测试软件以及待测试软件的初始密文的存储路径;软件校验模块,用于执行第一方面或者第一方面任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验;软件测试模块,用于当待测试软件的校验结果为完整时,启动待测试软件,对待测试软件进行测试。

根据第五方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或者第一方面的任意一种实施方式或者第二方面或者第二方面的任意一种实施方式中所述的方法。

根据第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面或者第一方面的任意一种实施方式或者第二方面或者第二方面的任意一种实施方式中所述的方法。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种用于软件测试过程中的软件完整性校验方法的方法流程图;

图2为本发明实施例提供的一种软件测试方法的方法流程图;

图3为本发明实施例提供的一种用于软件测试过程中的软件完整性校验装置的原理框图;

图4为本发明实施例提供的一种软件测试装置的原理框图;

图5为本发明实施例提供的一种电子设备的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

本发明实施例提供的用于软件测试过程中的软件完整性校验方法以及软件测试方法,可以应用于广义的绿色软件(即不需要安装,可以直接启动的软件),也可以应用于需要安装的软件。具体地,当本发明实施例中的方法应用于广义的绿色软件时,则在首次或者预定次数接收到软件启动指令时(也即当软件仍处于发布者的测试阶段时,首次或者预定次数接收到软件测试指令时)执行本发明实施例中的方法,在这里,需要说明的是,用于软件测试过程中的软件完整性校验方法中的“获取用于进行软件测试的待校验软件及其初始密文”,并不是指从软件发送终端获取待校验软件及其初始密文(该步骤应执行于接收到软件启动指令之前),并保存到接收终端(执行用于软件测试过程中的软件完整性校验方法的终端),而是指从接收终端中保存了待校验软件及其初始密文的位置处,获取待校验软件及其初始密文到具体执行用于软件测试过程中的软件完整性校验方法的进程中,因此,与接收到软件启动指令时执行本发明实施例中的方法并不矛盾;当本发明实施例中的方法应用于需要安装的软件时,则在软件安装完成后,(首次或者预定次数)接收到软件启动指令时执行本发明实施例中的方法。

实施例1

图1示出了本发明实施例的用于软件测试过程中的软件完整性校验方法的流程图,如图1所示,该方法可以包括如下步骤:

s101:获取用于进行软件测试的待校验软件及其初始密文,初始密文为通过预定加密算法对软件测试之前完整的软件版本进行加密后生成的。在这里,初始密文的存储路径和待校验软件的存储路径不同。

在这里,预定加密算法可以包括一个或者多个算法,例如,预定加密算法可以仅包括一个摘要算法,也可以包括一个摘要算法和一个密钥加密算法,并且,当预定加密算法包括多个算法时,多个算法之间的先后顺序可以为任意一种,沿用上例,当预定加密算法包括一个摘要算法和一个密钥加密算法时,可以先执行摘要算法再执行密钥加密算法,也可以先执行密钥加密算法再执行摘要算法。在这里,上述摘要算法可以为hash摘要算法,md2摘要算法、md5摘要算法或者sha-1算法等现有的摘要算法中的任一种;上述密钥加密算法可以为现有的对称密钥加密算法或者非对称密钥加密算法中的任一种,在此不做任何限制。

在这里,初始密文存储于一密文文件中,并且,该密文文件与待校验软件的存储位置不同,在实际应用中,一般会对初始密文进行base64编码,将其从二进制转换为字符后存储于密文文件中。

s102:使用预定加密算法对待校验软件进行加密运算,得到待校验密文。在这里,预定加密算法与上述步骤s101中的预定加密算法相同。

s103:判断待校验密文与初始密文是否相同。在这里,当待校验密文与初始密文相同时,执行步骤s104;当待校验密文与初始密文不同时,则确定待校验软件不完整,在实际应用中,当待校验密文与初始密文不同时,还可以输出待校验软件不完整、待校验软件被篡改、待校验软件存在风险等能够体现校验结果的信息。

在这里,沿用上例,当对初始密文进行base64编码,并将其从二进制转换为字符后存储于密文文件中时,步骤s103可以包括:

步骤a:对密文文件内的文本进行base64解码,得到初始密文。

步骤b:判断待校验密文与初始密文是否相同。

s104:确定待校验软件完整。

在本发明实施例中,通过执行获取存储路径不同的用于进行软件测试的待校验软件及其初始密文的步骤,能够分别得到仅存储有待校验软件自身的文件,以及存储有使用预定加密算法对软件测试之前完整的软件版本进行加密生成的初始密文的文件;通过执行判断待校验密文(使用预定加密算法对待校验软件进行加密运算得到)与初始密文是否相同的步骤,能够实现对待校验软件的完整性校验;同时,由于待校验软件和初始密文分别存储,使待校验软件和初始密文分离,因而当使用本发明实施例的用于软件测试过程中的软件完整性校验方法时,能够使软件发布者在对该用于进行软件测试的待校验软件进行了一次或者指定次数的必要的完整性校验,确定待校验软件完整后,仅启动运行待校验软件本身进行软件测试即可,而不需要每次进行软件测试,运行编译待校验软件时都生成校验文件(即不需要每次都对待校验软件进行数字签名验证),从而能够提高对待校验软件进行测试的效率。

作为本发明实施例的一种可选实施方式,为了防止待校验软件被非正常用户获取时被反编译,可以将待校验软件设置为使用预定加密密钥加密后的软件,则本发明实施例的用于软件测试过程中的软件完整性校验方法中的步骤s101之前还可以包括如下步骤:

s105:使用与预定加密密钥对应的预定解密密钥对加密后的软件进行解密,得到待校验软件。在这里,预定加密密钥和预定解密密钥rsa算法密钥对或者elgamal算法密钥对等非对称加密算法密钥对,也可以为rc算法密钥对或者des算法密钥对等对称加密算法密钥对。

实施例2

图2示出了本发明实施例的软件测试方法的流程图,如图2所示,该方法可以包括如下步骤:

s201:接收待测试软件的启动指令。在这里,启动指令是指进行首次或者指定次数的软件测试时的待测试软件的启动指令。

s202:获取待测试软件以及待测试软件的初始密文的存储路径。在这里,初始密文和待测试软件的存储路径不同。

s203:执行实施例1任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验。在这里,将待检测软件作为待校验软件,并执行实施例1任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验,此外,本步骤所述方法的具体内容可以参考实施例1来理解,在此不再赘述。

s204:当待测试软件的校验结果为完整时,启动待测试软件,对待测试软件进行测试。

本发明实施例的具体内容可以参照实施例1来理解,在此不再赘述。

在本发明实施例中,通过在接收到待测试软件的启动指令(进行首次或者指定次数的软件测试时的待测试软件的启动指令)后,获取待测试软件以及待测试软件的初始密文的存储路径,能够为获取存储路径不同的待测试软件和该待测试软件的初始密文以及执行实施例1中的方法提供基础,而通过执行在使用实施例1及其任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验,以及在待测试软件的校验结果为完整时,启动待测试软件,对待测试软件进行测试的步骤,能够使在对待测试软件进行软件测试的过程中,仅进行一次或者指定次数的必要的待测试软件的完整性校验,而不需要每次进行软件测试都进行一次软件完整性校验,从而,能够提高该软件测试方法的测试效率,同时,由于软件测试是在待测试软件发布之前进行的,软件被篡改的可能性较小,因此,进行一次或者指定次数的待测试软件的完整性校验也能够满足软件的安全启动运行的要求。

作为本发明实施例的一种可选实施方式,由于exec函数族提供了一个在进程中启动另一个程序执行的方法,因此,为了能够直接在执行用于软件测试过程中的软件完整性校验方法的进程中启动并运行待测试软件,而不用调用新的进程,减少执行本发明实施例的软件测试方法时所占用的计算机资源,因此,在执行步骤s204时,可以通过exec函数族启动待测试软件。

实施例3

图3示出了本发明实施例的一种用于软件测试过程中的软件完整性校验装置的原理框图,该装置可以用于实现实施例1或者其任意可选实施方式所述的用于软件测试过程中的软件完整性校验方法。如图3所示,该装置包括:文件获取模块10、加密模块20、密文判断模块30和结果确定模块40。其中,

文件获取模块10用于获取用于进行软件测试的待校验软件及其初始密文,初始密文为通过预定加密算法对软件测试之前完整的软件版本进行加密后生成的。在这里,初始密文的存储路径和待校验软件的存储路径不同。详细内容可参见上述实施例1所述的用于软件测试过程中的软件完整性校验方法的步骤s101的相关描述。

加密模块20用于使用预定加密算法对待校验软件进行加密运算,得到待校验密文。详细内容可参见上述实施例1所述的用于软件测试过程中的软件完整性校验方法的步骤s102的相关描述。

密文判断模块30用于判断待校验密文与初始密文是否相同。详细内容可参见上述实施例1所述的用于软件测试过程中的软件完整性校验方法的步骤s103的相关描述。

结果确定模块40用于当待校验密文与初始密文相同时,确定待校验软件完整。详细内容可参见上述实施例1所述的用于软件测试过程中的软件完整性校验方法的步骤s104的相关描述。

在本发明实施例中,通过获取存储路径不同的初始密文和待校验软件后,使用获取到的初始密文对用于进行软件测试的待校验软件进行完整性校验,能够在实现对待校验软件的完整性校验的同时,使待校验软件和初始密文分离,从而能够使软件发布者在对该用于进行软件测试的待校验软件进行了一次或者指定次数的必要的完整性校验,确定待校验软件完整后,仅启动运行待校验软件本身进行软件测试,而不需要每次进行软件测试,运行编译待校验软件时都生成校验文件(即不需要每次都对待校验软件进行数字签名验证),提高了对待校验软件进行测试的效率。

作为本发明实施例中一种可选实施方式,初始密文进行base64编码后存储于一密文文件内,密文判断模块30包括:密文解码单元和密文判断单元。

其中,密文解码单元用于对密文文件内的文本进行base64解码,得到初始密文;密文判断单元用于判断待校验密文与初始密文是否相同。

本发明实施例还提供了一种软件测试装置,该装置可以用于实现实施例2或者其任意可选实施方式所述的软件测试方法。如图4所示,该装置包括:指令获取模块50,路径获取模块60,软件校验模块70和软件测试模块80。其中,

指令获取模块50用于接收待测试软件的启动指令。详细内容可参见上述实施例2所述的软件测试方法的步骤s201的相关描述。

路径获取模块60用于获取待测试软件以及待测试软件的初始密文的存储路径。详细内容可参见上述实施例2所述的软件测试方法的步骤s202的相关描述。

软件校验模块70用于执行实施例1任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法对待测试软件进行校验。详细内容可参见上述实施例2所述的软件测试方法的步骤s203的相关描述。

软件测试模块80用于当待测试软件的校验结果为完整时,启动待测试软件,对待测试软件进行测试。详细内容可参见上述实施例2所述的软件测试方法的步骤s204的相关描述。

在本发明实施例中,通过在接收到待测试软件的启动指令后,获取待测试软件以及待测试软件的初始密文的存储路径,从而能够使用第一方面或者第一方面任意一种实施方式所述的用于软件测试过程中的软件完整性校验方法完成对未附加初始密文(即数字签名)的待测试软件的校验,并在校验结果为完整时,启动该待测试软件,对待测试软件进行测试,能够在对待测试软件进行软件测试的过程中,仅进行一次或者指定次数的必要的待测试软件的完整性校验,而不需要每次进行软件测试都进行一次软件完整性校验,从而,能够提高该软件测试方法的测试效率。

本发明实施例还提供了一种电子设备,如图5所示,该电子设备可以包括处理器51和存储器52,其中处理器51和存储器52可以通过总线或者其他方式连接,图5中以通过总线连接为例。

处理器51可以为中央处理器(centralprocessingunit,cpu)。处理器51还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的用于软件测试过程中的软件完整性校验方法或者软件测试方法对应的程序指令/模块(如图3示出的文件获取模块10、加密模块20、密文判断模块30和结果确定模块40,或者图4示出的指令获取模块50,路径获取模块60,软件校验模块70和软件测试模块80)。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。

存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器51所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至处理器51。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器52中,当被所述处理器51执行时,执行如图1-2所示实施例中的方法。

上述电子设备具体细节可以对应参阅图1至图2所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

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