一种脚本加密方法、脚本解密运行方法和相关装置与流程

文档序号:16755405发布日期:2019-01-29 17:18阅读:663来源:国知局
一种脚本加密方法、脚本解密运行方法和相关装置与流程

本发明涉及计算机技术领域,尤其涉及一种脚本加密方法、脚本解密运行方法和相关装置。



背景技术:

随着linux系统广泛应用于各种企业的开发运营中,其主流脚本语言shell也随之被用于各种工具开发、系统配置以及自动运维脚本中。而现有的开发、配置或运维中,shell脚本的源代码都是可见的,但shell脚本汇聚了企业和个人的劳动成果和智慧结晶,一旦shell脚本被盗取或是非法运行,将会给企业和个人带来损失。

因此,如何提高脚本的安全性是亟待解决的技术问题之一。



技术实现要素:

本发明实施例提供一种脚本加密方法、脚本解密运行方法和相关装置,用以提高脚本的安全性。

第一方面,本发明实施例提供一种脚本加密方法,包括:

获取待加密脚本;

利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本;并

在加密的脚本中嵌入运行权限控制代码,得到加密脚本文件,所述运行权限控制代码用于指示是否允许解密所述加密的脚本。

通过执行上述方法,一方面根据用户选择出的密钥生成算法生成密钥信息,然后利用生成的密钥信息加密所述待加密脚本,由于非受信用户无法获知用户选择的密钥生成算法,故也无法获知用于加密待加密脚本的密钥信息,进而也就无法破解加密的脚本,由此可以提高加密的脚本的安全性;另一方面,由于在加密的脚本中嵌入运行权限控制代码,对脚本进行了二重保护,进一步提高了加密脚本文件的安全性。

第二方面,本发明实施例提供一种脚本解密运行方法,包括:

运行可执行文件,所述可执行文件为根据前述脚本加密方法得到的加密脚本文件执行编译处理得到的;

根据运行权限控制代码确定允许解密所述加密脚本文件中加密的脚本,则调用脚本解密解析引擎解密所述加密的脚本;并

运行解密后的脚本。

通过实施上述脚本解密运行方法,在运行可执行文件后,只有在根据运行权限控制代码确定允许解密所述加密脚本文件中加密的脚本,才能调用脚本解密解引擎执行解密所述加密脚本文件中的加密的脚本的操作,否则退出脚本解密运行程序,这样可以保证非受信用户无法找到自定义的解析脚本的路径,此外本发明对脚本执行了加密操作,即使脚本被盗走,由于对所述脚本执行了加密处理,由于非受信用户无法解密出脚本,其也就无法运行使用脚本,从而保证了脚本的安全性。

第三方面,本发明实施例提供一种脚本加密装置,包括:

获取单元,用于获取待加密脚本;

加密处理单元,用于利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本;

嵌入单元,用于在加密的脚本中嵌入运行权限控制代码,得到加密脚本文件,所述运行权限控制代码用于指示是否允许解密所述加密的脚本。

第四方面,本发明实施例提供一种脚本解密运行装置,包括:

运行单元,用于运行可执行文件,所述可执行文件为本发明提供脚本加密方法得到的加密脚本文件执行编译处理得到的;

解密单元,用于若根据运行权限控制代码确定允许解密所述加密脚本文件中加密的脚本,则调用脚本解密解析引擎解密所述加密的脚本;

运行单元,用于运行解密后的脚本。

第五方面,本发明实施例提供一种计算装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器执行所述程序时实现如本申请提供的任一项所述的脚本加密方法,或者实现如本申请提供的任一项所述的脚本解密运行方法。

第六方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请提供的任一项所述的脚本加密方法中的步骤,或者实现如本申请提供的任一项所述的脚本解密运行方法中的步骤。

本发明提供的脚本加密方法,在获取到待加密脚本后,利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本,由于非受信用户不知道待加密脚本中的用户选择出的密钥生成算法,故无法获得密钥信息,进而也就无法破解加密的脚本,由此可以提高加密的脚本的安全性;然后再利用密钥信息加密所述待加密脚本,并在加密的脚本中嵌入运行权限控制代码,得到处理后的脚本,由于本发明中的运行权限控制代码用于指示是否允许解密加密的脚本,由此可以对脚本进行二重保护,同时还进一步提高了加密脚本文件的安全性。

此外,通过实施本发明提供的脚本解密运行方法,在运行基于本发明提供的脚本加密方法得到的可执行文件后,只有根据运行权限控制代码在确定出允许解密加密脚本文件中加密的脚本时,才能调用脚本解密解析引擎解密所述加密脚本文件中的加密的脚本的操作,并运行解密后的脚本;否则退出脚本解密运行程序,这样可以保证非受信用户无法找到自定义的解析脚本的路径,从而保证了脚本的安全性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例提供的实施脚本加密方法的计算装置的结构示意图;

图2为本发明实施例提供的脚本加密方法的实施流程示意图;

图3为本发明实施例提供的利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本的流程示意图之一;

图4为本发明实施例提供的利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本的流程示意图之二;

图5为本发明实施例提供的脚本解密运行方法的流程示意图之一;

图6为本发明实施例提供的确定允许解密加密脚本文件中加密的脚本的流程示意图之一;

图7为本发明实施例提供的确定允许解密加密脚本文件中加密的脚本的流程示意图之二;

图8为本发明实施例提供的确定允许解密加密脚本文件中加密的脚本的流程示意图之三;

图9为本发明实施例提供的脚本解密运行方法的流程示意图之二;

图10为本发明实施例提供的脚本加密装置的结构示意图;

图11为本发明实施例提供的脚本解密运行装置的结构示意图。

具体实施方式

本发明实施例提供的一种脚本加密方法、脚本解密运行方法和相关装置,用以提高脚本的安全性。

为了便于理解本发明,本发明涉及的技术术语中:

1、脚本:为可以完成某项或多项特定工作的计算机程序。本发明中的脚本可以但不限于为shell脚本。

2、终端设备,为可以安装各类应用程序,并且能够将已安装的应用程序中提供的对象进行显示的设备,该电子设备可以是移动的,也可以是固定的。例如,手机、平板电脑、各类可穿戴设备、车载设备、个人数字助理(personaldigitalassistant,pda)、销售终端(pointofsales,pos)、或其它能够实现上述功能的电子设备等。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

针对现有技术中脚本存在安全性较低的问题,本发明实施例提供了一种解决上述问题的计算装置,利用该计算装置来实施本发明提供的脚本加密方法,或执行本发明提供的脚本解密运行方法。该计算装置可以以通用计算设备的形式表现。下面参照图1来描述根据本发明的计算装置10。图1显示的计算装置10仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图1所示,计算装置10的组件可以包括但不限于:至少一个处理器11、至少一个存储器12及存储在存储器12上并可在处理器11上运行的计算机程序、连接不同系统组件(包括存储器12和处理器11)的总线13,处理器11执行上述程序时实现本发明提供的脚本加密方法,或者实现本发明提供的脚本解密运行方法。

总线13表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器12可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)121和/或高速缓存存储器122,还可以进一步包括只读存储器(rom)123。

存储器12还可以包括具有一组(至少一个)程序模块124的程序/实用工具125,这样的程序模块124包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算装置10也可以与一个或多个外部设备14(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置10交互的设备通信,和/或与使得该计算装置10能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口15进行。并且,计算装置10还可以通过网络适配器16与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器16通过总线13与用于计算装置10的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置10使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

参照图2所示,为本发明提供的脚本加密方法的实施流程示意图。在下文的介绍过程中,以将该方法应用在图1所示的计算装置中为例。该计算装置中设置有脚本加密引擎,由所述脚本加密引擎执行本发明提供的脚本加密方法,该方法的实施流程如下:

s11、获取待加密脚本。

在一实施例中,脚本加密引擎在获取到每一个开发人员编写的脚本后,均可以执行后续的加密流程,这样可以保证加密的脚本的安全性。具体地,可以获取存储待加密脚本的文件名称,由此即可根据所述文件名称获取待加密脚本。

s12、利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本。

在一实施例中,脚本加密引擎根据用户选择出的密钥生成算法生成密钥信息,然后利用生成的密钥信息加密所述待加密脚本,由于非受信用户无法获知用户选择的密钥生成算法,故也无法获知用于加密待加密脚本的密钥信息,导致非受信用户较难破解加密的脚本。因此,采用本发明提供的加密方法可以提升加密的脚本的破解难度。

具体地,脚本加密引擎在利用待加密脚本中的代码,生成密钥信息时可以根据使用者要求生成密钥信息,并根据使用者要求利用生成的密钥信息加密待加密脚本。

在一个实施方式中,计算装置可以按照图3所示的方法利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本,包括以下步骤:

s21、将待加密脚本划分成若干个脚本片段。

具体实施时,脚本加密引擎可以根据待加密脚本的字节长度,将待加密脚本划分成若干个脚本片段。例如,从待加密脚本的起始位置开始,截取出预设长度的代码得到第一个脚本片段,然后再从余下的待加密脚本中截取预设长度的代码得到第二个脚本片段等等。比如,待加密脚本的字节长度为1024字节,预设长度为256字节,则可以将待加密脚本划分成4个脚本片段。

针对划分得到的每一脚本片段,均执行步骤s22和s23得到各个脚本片段对应的加密的脚本片段。

s22、利用该脚本片段和基于上一个脚本片段的密钥信息生成用于加密该脚本片段的密钥信息。

其中,第一个脚本片段的密钥信息为基于产生的随机数和/或所述第一个脚本片段生成的,如基于产生的随机数和/或所述第一个脚本片段利用密钥派生函数生成第一脚本片段的秘钥信息。

s23、利用所述用于加密该脚本片段的密钥信息加密该脚本片段。

步骤s22和s23中,首先随机生成一个随机数,然后将该随机数输入到密钥派生函数中得到第一个脚本片段的密钥信息,然后利用该密钥信息加密第一个脚本片段,得到第一个加密的脚本片段;当然,还可以将该随机数和第一个脚本片段输入到密钥派生函数中,以此得到第一个脚本片段的密钥信息,然后再利用该密钥信息加密第一个脚本片段得到第一个加密的脚本片段。

针对第n个脚本片段,n大于等于2,则将基于第n-1个脚本片段的密钥信息和第n个脚本片段输入到密钥派生函数中,得到第n个脚本片段的密钥信息,然后利用第n个脚本片段的密钥信息加密第n个脚本片段,得到第n个加密的脚本片段。由此可以得到各个加密的脚本片段。

还以待加密脚本共1024个字节,预设长度为256个字节为例进行说明,假设划分成4个脚本片段,则分别为0~255字节对应的第一个脚本片段、256~511字节对应的第二个脚本片段、512~767字节对应的第三个脚本片段和768~1023字节对应的第四个脚本片段,首先利用随机数输入到密钥派生函数中得到第一个密钥信息m0,或者将随机数和0~255字节输入到密钥派生函数中得到第一个密钥信息m0,然后利用上述任一种方法生成的m0对0~255字节对应的第一个脚本片段进行加密处理;然后利用m0和256~511字节输入到密钥派生函数中得到第二个密钥信息m1,即第二个脚本片段对应的密钥信息,然后利用m1对第二个脚本片段进行加密处理;再将m1和512~767字节输入到密钥派生函数中得到第二个密钥信息m2,即第三个脚本片段对应的密钥信息,然后利用m2对第三个脚本片段进行加密处理;最后将m2和768~1023字节输入到密钥派生函数中得到第三个密钥信息m3,即第四个脚本片段对应的密钥信息,然后利用m3对第四个脚本片段进行加密处理,由此得到了四个加密的脚本片段。

s24、基于各个加密的脚本片段,得到加密的脚本。

基于步骤s23得到的各个加密的脚本片段,按序组合得到加密的脚本。

通过采用步骤s21~s24所示的方法得到加密的脚本,利用该脚本片段和基于上一个脚本片段的密钥信息生成用于加密该脚本片段的密钥信息,然后利用生成的密钥信息加密脚本片段,并对全部脚本进行加密,加密性更强,由于非受信用户不知道待加密脚本中的代码,故无法获得密钥信息,进而也就无法破解加密的脚本,由此可以提高加密的脚本的安全性。

在一种实施方式中,脚本加密引擎可以按照图4所示的方法执行步骤s12,即利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本可以包括以下步骤:

s31、对用户设置的密码和随机产生的盐值salt执行迭代次数的迭代处理,生成用于加密所述待加密脚本的密钥信息。

本步骤中,用户可以设置加密密码和加密算法,然后脚本加密引擎按照用户设置的密码和加密算法对待加密脚本件加密。对用户设置的密码和随机产生的盐值salt采用密钥生成算法执行迭代次数的迭代处理,得到用于加密待加密脚本的密钥信息。

较佳地,所述密钥生成算法可以但不限于包括基于密码的密钥派生函数2(password-basedkeyderivationfunction2基于密码的密钥派生函数,pbkdf2)、安全散列算法(securehashalgorithm,sha))函数,sha函数可以但不限于为sha1、sha256、sha384和sha512等。

以密钥生成算法为pbkdf2算法生成密钥为例进行说明,将用户设置的密码和随机生成的salt利用pbkdf2算法进行迭代次数的迭代处理,最后生成用于加密待加密脚本的密钥信息。本发明中的迭代次数可以根据实际情况而定,例如可以为10000~20000之间。

s32、利用所述密钥信息对所述待加密脚本进行加密处理,得到加密的脚本。

具体地,可以通过对称加密算法利用密钥信息对待加密脚本进行加密处理,所述对称加密算法可以但不限于包括:高级加密标准(advancedencryptionstandard,aes)、cast5、国际数据加密算法(internationaldataencryptionalgorithm,idea)、tdea和blowfish等等。例如可以利用分组对称加密方式利用上述加密算法对待加密脚本进行加密。

s13、在加密的脚本中嵌入运行权限控制代码,得到加密脚本文件。

具体地,所述运行权限控制代码用于指示是否允许解密所述加密的脚本。

通过在加密的脚本中嵌入运行权限控制代码,可以基于控制代码校验确定是否允许执行加密脚本文件的设备解密加密的脚本,只有校验通过才允许对加密脚本进行解密,由此对脚本达到了二重保护的作用,进一步提高了加密脚本文件的安全性。

较佳地,运行权限控制代码包括以下至少一项:用于监测所述加密的脚本是否被追溯的代码、用于指示是否在有效期限内的代码、加壳代码和license认证逻辑代码。

具体地,通过在加密的脚本中嵌入用于监测所述加密的脚本是否被追溯的代码,以检测加密的脚本是否被追溯,若被追溯则表征非受信用户利用非法的方法跟踪调试脚本的运行过程,则不能执行解密上述加密的脚本的流程,这样可以防止非受信用户获取脚本运行产生的中间值。具体地,脚本加密引擎在加密的脚本中嵌入脚本运行时的逻辑程序,可以使用c语言进行编写,所述逻辑程序用于实现运行时禁止追溯功能,以及其他认证需要的流程逻辑程序。

较佳地,还可以对加密的脚本进行加壳处理。

为了进一步提高脚本的安全性,脚本加密引擎还可以设置环境变量,利用所述环境变量设计逻辑语言对脚本进行加壳处理,或者对嵌入了用于检测加密的脚本是否被追溯的代码后的加密的脚本进行加壳处理,即进行二次自动调用运行,对加密的脚本起到了二重保护的作用,增加反汇编的难度,以提高脚本的安全性。

较佳地,还可以在加密的脚本中嵌入用于指示加密的脚本是否在有效期限内的代码,这样可以基于设置的有效期限,在检测到设备运行加密脚本文件时可以判断加密的脚本是否在有效期限内,如果不在则退出执行解密加密的脚本的流程。由此也可以保证加密的脚本的安全性。

优选地,还可以在加密的脚本中嵌入license认证逻辑代码,由此可以对运行加密脚本文件的设备进行限制,只有license认证逻辑代码对设备认证成功时,方可许可该设备执行加密的脚本的解密流程,从而也能保证加密的脚本的安全性。

较佳地,所述加密脚本文件可以包括加密的时间信息,和/或加密的允许运行所述加密脚本文件的硬件设备的硬件信息等信息,其中,所述时间信息用于指示所述加密脚本文件的有效期限。

本步骤中,脚本加密引擎还可以设置运行待加密脚本的过期时间,即本发明中的加密的时间信息,该时间信息可以为能够运行所述待加密脚本的截止时间,例如,所述截止时间可以为2018年3月26日10点。为了保证时间信息的安全性,可以利用加密算法对所述时间信息进行加密处理得到加密的时间信息。

此外,为了进一步提高待加密脚本的安全性,脚本加密引擎可以在所述加密脚本文件中添加允许运行所述待加密脚本的硬件设备的硬件信息。在加密脚本时通过参数设置只允许本机运行,这样加密脚本时会将本机的硬件设备信息添加到加密脚本文件中,然后在运行之前通过解密硬件信息判断该硬件设备是否授权运行。

若不设置硬件信息这一参数,则在加密时跳过硬件信息加密这一环节,这样任何硬件设备都可以运行,可能存在安全隐患,为了避免这一问题,可以通过给设备添加license文件来给部分机器授权运行,即增加license认证逻辑代码来授权部分机器允许运行脚本。

为了防止所述硬件信息被窃取,可以利用加密算法对所述硬件信息进行加密处理,然后将加密的允许运行所述待加密脚本的硬件设备的硬件信息添加到加密脚本文件中。

需要说明的是,允许运行所述待加密脚本的硬件设备可能不止一个,故可以不在加密脚本文件中添加硬件信息,通过给允许运行的硬件设备添加license来实现权限管控。

较佳地,所述加密脚本文件还包括以下至少一项:随机数、迭代次数、盐值salt、基于用户设置的密码生成的密钥信息和加密算法。

脚本加密引擎在得到加密脚本文件后,可以将加密的时间信息、加密的允许运行所述待加密脚本的硬件设备的硬件信息、和加密的脚本以及上述随机数加密算法等保存在数组中,并将该数组嵌入到加密脚本文件中。以及将加密的时间信息和/或加密的硬件信息所占的字节数等信息及这些信息在数组中的偏移量存储到加密脚本文件中。这样,脚本解密解析引擎可以从该数组中读取迭代次数、盐值salt对密钥进行验证,后续详细介绍之。

需要说明的是,由于本发明对脚本执行了加密处理,而运行所述加密脚本文件的硬件设备与对待加密脚本执行加密操作的硬件设备一般不是同一个,为了保证加密脚本文件能够成功被运行,需要在运行加密脚本文件的硬件设备上配置解密加密脚本文件的代码,这样一来可能需要在各个硬件设备上配置解密代码,部署不太方便。为了解决这一问题,本发明在加密脚本文件中嵌入了解密所述待加密脚本的代码和解析所述待加密脚本的代码。具体地,可以将解密所述加密的脚本的代码和解析所述加密的脚本的代码集成到脚本解密解析引擎中,然后将脚本解密解析引擎嵌入到加密脚本文件中,以实现在运行所述加密的脚本之前,利用脚本解密解析引擎对加密的脚本进行解密。

可选地,还可以将解析所述待加密脚本的代码随解密所述加密的脚本的代码一同嵌入到所述加密脚本文件中。

但实际应用中,如果将脚本解密解析引擎嵌入到加密脚本文件中,一旦加密脚本文件被窃取,由于加密脚本文件中嵌入了与解密和解析相关的代码,可能会存在破解出解密代码的情况,这样可能会导致加密脚本文件被破解,从而导致加密脚本文件存在安全性问题,为了避免这一问题的发生,将脚本解密解析引擎与加密脚本文件分开,在允许执行加密脚本文件的硬件设备中配置脚本解密解析引擎,然后利用脚本解密解析引擎解密加密脚本文件,这样一来更能保证加密脚本文件的安全性。此外,当一个硬件设备上需要允许多个加密脚本文件时,只需部署一个脚本解密解析引擎即可完成解密及解析操作,相比于在加密脚本文件中嵌入脚本解密解析引擎,不仅安全而且工作量更小。

在执行上述流程得到加密脚本文件之后,还包括:对所述加密脚本文件执行编译处理得到可执行文件。

本步骤中,由于硬件设备一般能够识别的为机器语言,即二进制语言,而加密脚本文件为汇编语言编写得到的.c文件,故需要将所述加密脚本文件执行编译处理得到硬件设备能够识别的可执行文件,至此,完成了对待加密脚本的加密处理过程。

通过执行步骤s11~s13的加密过程,一方面根据用户选择出的密钥生成算法生成密钥信息,然后利用生成的密钥信息加密所述待加密脚本,由于非受信用户无法获知用户选择的密钥生成算法,故也无法获知用于加密待加密脚本的密钥信息,进而也就无法破解加密的脚本,由此可以提高加密的脚本的安全性;另一方面,由于在加密的脚本中嵌入运行权限控制代码,而运行权限控制代码用于指示是否允许解密所述加密的脚本,这样通过设置这一检测机制,可以对脚本进行二重保护,进一步提高了加密脚本文件的安全性。

此外,在按照本发明提供的脚本加密方法对待加密脚本执行加密操作后,为了进一步提升加密脚本文件的安全性,本发明在运行执行编译处理的加密脚本文件(可执行文件)时,提出了一种脚本解密运行方法,可以应用到各个具有运行所述可执行文件的运行环境的硬件设备中,所述硬件设备的装置可以参考图1所示的计算装置的结构示意图,该硬件设备可以为计算机等设备,以硬件设备为计算机,且该计算机设备中安装有脚本解密解析引擎为例进行说明,计算机可以按照图5所示的流程运行所述可执行文件,包括以下步骤:

s41、运行可执行文件。

本步骤中,计算机在获得基于步骤s11~s13得到的可执行文件后,执行运行所述可执行文件的操作,由于所述可执行文件是对加密脚本文件执行编译处理得到的,故在运行所述可执行文件时,若加密脚本文件中嵌入了外壳程序,则先运行可执行文件中的外壳程序,然后当所述外壳程序执行完后再通过调用方式执行解密和解析加密脚本文件的操作。若确定调用不成功则不执行后续操作,退出脚本解密运行过程。

s42、根据运行权限控制代码确定是否允许计算机解密所述加密脚本文件中加密的脚本;若是则执行步骤s43;否则执行步骤s45。

通过加密脚本文件中嵌入的运行权限控制代码可以确定出运行可执行文件的计算机是否具有解密加密的脚本的权限,若有可以执行解密流程,若没有则不能执行解密上述加密的脚本的流程,由此可以保护加密的脚本的安全性。

所述运行权限控制代码包括用于监测所述加密的脚本是否被追溯的代码;则可以按照下述方法执行步骤s42,即确定所述加密的脚本是否未被追溯:

判断是否接收到派生子进程附着成功的确认消息;

具体地,若确定接收到,则确定加密的脚本未被追溯;若未接收到,则确定加密的脚本被追溯。

本发明中的追溯是指,在程序执行过程中,有一种跟踪工具,比如strace、ptrace、gdb等可以跟踪程序的运行过程,跟踪程序的调用以及程序运行过程的产生的中间值,当运行加密的脚本时程序被追溯,意味着可以获知程序运行时的系统调用,同时会输出一些路径信息。比如加密脚本在完成运行权限的校验后,如果校验通过,会调用脚本解密解析引擎进行解密和解析,如果程序被追溯,就会暴露脚本解密解析引擎的路径位置,从而导致脚本存在安全隐患。因此通过添加禁止追溯功能,在检测到被追溯时则不能执行解密上述加密的脚本的流程,由此可以防止脚本解密解析引擎的路径的泄露。

本步骤中,本发明为了防止非受信用户盗取脚本并追溯出脚本的调用路径,在脚本启动运行时,一旦监测到脚本正在被追溯,表明运行可执行文件的计算机不具备解密加密脚本文件的权限,则立即自动结束脚本运行。具体地,加密脚本文件中添加了运行所述加密的脚本的运行代码,脚本会基于所述运行代码派生出子进程,得到派生子进程,派生子进程会向脚本发送附着请求,派生子进程若确定出附着成功则表明脚本未被其它子进程附着,则可以确定所述脚本未被追溯,则向脚本发送附着成功的确认消息,脚本接收到该确认消息后即可执行后续流程。派生子进程若确定出其未成功完成附着,则表明脚本已被其它子进程附着,也就是说脚本存在被追溯的情况,则派生子进程会向脚本返回未附着成功的消息,使得脚本在接收到该消息后结束当前操作,退出脚本运行程序,即不执行后续步骤。

通过禁止用户的脚本追溯功能,使得非受信用户无法找到自定义的脚本解密解析引擎的路径,即使盗走了被加密的脚本也无法运行使用,由此在一定程度上提高了加密的脚本的安全性。

在一种实施方式中,所述加密脚本文件包含加密的时间信息;以及还可以执行按照图6所示的流程确定允许解密加密脚本文件中加密的脚本,包括以下步骤:

s51、从加密脚本文件中解密出时间信息。

本步骤中,由于加密脚本文件中包含了加密的时间信息所占的字节数及在加密脚本文件中的位置,故脚本在运行完外壳程序后,根据加密的时间信息在加密文件中的位置及所占字节数,从加密脚本中提取所述加密的时间信息,然后对加密的时间信息进行解密处理,解析出时间信息。

s52、确定所述时间信息在有效期限内。

还以解析出的时间信息为截止时间2018年3月26日10点为例进行说明,当解析出所述时间信息后,则确定当前系统时间是否早于所述截止时间,如当前系统时间为2018年3月26日9点,则确定当前时间早于所述截止时间,进而确定所述时间信息在有效期限内,则可以执行解密加密的脚本的操作。否则确定所述时间信息不在有效期限内,则不能执行解密加密的脚本的操作,退出脚本运行程序。当非受信用户拿到加密脚本文件后,可以利用一些手段解密所述加密脚本文件,则当非受信用户破解成功后,由于未在加密脚本文件中设置时间信息,则非受信用户还可以执行解密脚本的操作,从而会导致加密的脚本存在安全隐患。而本发明通过在加密脚本文件中设置时间信息,这样,即使非受信用户获取到加密脚本文件后,由于破解文件需要耗费一定的时间,当破解出信息后有可能已经晚于截止时间,即使破解了文件也会因晚于截止时间而退出脚本运行程序,从而可以在一定程度上保证了加密的脚本的安全性。

由于shell脚本不会关联用户的主机信息就可以运行,这样容易造成脚本被利用,为了防止这一情况的发生,本发明在另一种实施方式中给出了解决方案,即:所述加密脚本文件还包括允许所述加密脚本文件的硬件设备的硬件信息;以及还可以按照图7所示的流程确定允许解密加密脚本文件中加密的脚本,包括以下步骤:

s61、读取当前运行所述加密脚本文件的硬件设备的硬件信息。

具体地,由于加密脚本文件中包含了允许运行所述待加密脚本的硬件设备的硬件信息及其在加密脚本文件中的位置,则可以基于此脚本可以获取加密脚本文件中加密的硬件信息,并利用解密算法解密出硬件信息,同时脚本在运行时可以从本地自动读取当前运行所述加密脚本文件的硬件设备的硬件信息。

s62、确定读取的硬件信息与所述加密脚本文件包含的硬件信息一致。

本步骤中,当脚本确定出解密出的硬件信息和从本地读取的硬件信息一致时,才能执行后续解密加密的脚本的操作。当确定出不一致时,表明运行脚本的硬件设备不是许可的设备,则不执行解密加密的脚本的操作,退出脚本解密运行程序。

这样,可以防止一些非受信用户利用其硬件设备运行加密脚本文件,保证了运行过程中脚本的安全性。

当加密脚本文件中未包括硬件信息时,为了防止脚本在非法用户的硬件设备上被利用,本发明在一种实施方式中给出了解决方案,具体为:所述运行权限控制代码包括license认证逻辑代码;则可以按照图8所示的流程确定允许解密加密脚本文件中加密的脚本,包括以下步骤:

s71、读取当前运行所述加密脚本文件的硬件设备的硬件信息。

本步骤中,从本地读取运行所述加密脚本文件的硬件设备的硬件信息,当所述硬件设备为计算机时,则读取计算机的硬件信息。

s72、根据读取的硬件信息生成license文件。

具体地,脚本可以按照预设算法根据读取的硬件信息生成license文件。

s73、从本地或网页服务器获取当前运行所述加密脚本文件的硬件设备的license文件。

具体地,在执行步骤s72的同时,还可以从硬件设备本地查找是否存储有license文件,若本地存储license文件,则直接从本地获取license文件,并根据预设规则生成解密key,解密所述license文件。

若本地未存储license文件,则向网页服务器web发送获取license的http请求,该请求中需要携带有硬件设备的标识信息;网页服务器在接收到所述http请求后,解密请求体内容,并校验请求体内容是否受信任有效,若有效则下载license,为了保证传输过程中license文件的安全性,网页服务器可以按预设规则生成加密key,利用加密key加密下载的license文件,并将加密的license文件发送给硬件设备。

具体地,网页服务器可以校验请求体中携带的硬件设备的标识信息是否受信任有效,若确定出所述标识信息存储在可信的硬件设备的标识信息列表中,则确定该硬件设备可信,或者还可以在http请求中携带硬件设备的mac地址等信息,则网页服务器还可以再判断mac地址是否为可信的硬件设备的mac地址,当然可以将携带的信息进行组合校验,例如,当http请求中携带硬件设备的标识信息和mac地址时,则一方面可以按照上述方法判断所述标识信息是否有效,另一方面还可以在判断有效时,确定预先存储的标识信息与mac地址的对应关系中是否包含http请求中携带标识信息和mac地址这一组对应关系,若存在则确定该硬件设备为可信的。

s74、确定生成的license文件与获取的license文件一致且确定所述license在有效期限内。

本步骤中,脚本在基于步骤s73获取到license文件后,可以利用解密key解密所述license文件,然后再判断基于步骤s72的生成license文件和解密的license文件是否一致,若一致且确定license文件在有效期限内,则确定该当前运行所述加密脚本文件的硬件设备是可信的,即可以执行解密加密脚本文件的操作。

若确定出基于步骤s72的生成license文件和解密的license文件不一致,则确定该硬件设备为不可信的,则脚本会立即退出脚本解密运行程序,即不执行解密加密脚本文件等操作。

s43、调用脚本解密解析引擎解密所述加密的脚本。

本步骤中,当基于图6~图8所述的步骤,确定出可以执行解密操作后,则调用脚本解密解析引擎对加密脚本文件中的加密的脚本进行解密。具体地,若所述加密脚本文件中包含脚本解密解析引擎,直接调用该脚本解密解析引擎,由该脚本解密解析引擎执行解密操作;当加密脚本文件中未包含脚本解密解析引擎时,若确定出计算机允许执行解密操作,则其内必安装有解密解析引擎,通过调用安装的脚本解密解析引擎来执行解密操作。

具体地,脚本解密解析引擎可以从加密脚本文件的数组,根据预先定义的数组中包含的信息的偏移量,读取解密相关信息,若读取出随机数,则表明加密的脚本是按照图3所示的流程加密得到的,则利用该随机数和对应的解密算法解密加密的脚本;若读取出迭代次数、盐值salt和基于用户设置的密码生成的密钥信息和加密算法,即所述加密脚本文件包括用户设置的密码、迭代次数、盐值salt和基于用户设置的密码生成的密钥信息,则在调用脚本解密解析引擎解密所述加密的脚本之前,还包括图9所示的流程,包括以下步骤:

s81、根据用户输入的密码和盐值salt执行迭代次数的迭代处理,得到密钥信息。

s82、确定所述密钥信息与基于用户设置的密码生成的密钥信息一致。

步骤s81和步骤s82中,脚本解密解析引擎通过向用户展示输入密码的界面提示用户输入密码,在接收到用户输入的密码后,利用用户输入的密码和盐值salt执行迭代次数的迭代处理,得到密钥信息,若确定出得到的密钥信息与加密脚本文件中包含的基于用户设置的密码生成的密钥信息一致,则确定可以执行解密流程,通过执行图9所示的流程,对加密的脚本作进一步安全防护,提高了加密的脚本的安全性。

在执行图9所示的流程之后,脚本解密解析引擎可以通过脚本加密文件中的加密算法确定解密算法,然后利用该解密算法对加密的脚本进行加密处理。若加密的脚本是利用aes算法进行加密的,则脚本解密解析引擎可以根据密钥信息利用aes算法对应的解密算法对加密的脚本进行解密。至此可以实现加密的脚本的解密操作。

s44、运行解密后的脚本,流程结束。

具体地,当脚本解密解析引擎解密所述加密的脚本后,即可运行脚本内容。

s45、不执行解密所述加密脚本文件中的加密的脚本的操作,流程结束。

通过实施本发明提供的脚本解密运行方法,在运行可执行文件后,只有根据运行权限控制代码确定允许解密所述加密脚本文件中加密的脚本,才能调用脚本解密解析引擎解密所述加密的脚本,否则退出脚本解密运行程序,这样可以保证非受信用户无法找到自定义的解析脚本的路径,此外本发明对脚本执行了加密操作,即使脚本被盗走,由于对所述脚本执行了加密处理,由于非受信用户无法解密出脚本,其也就无法运行使用脚本,从而保证了脚本的安全性。

基于同一发明构思,本发明实施例中还提供了一种脚本加密装置,由于上述装置解决问题的原理与脚本加密方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。

如图10所示,为本发明实施例提供的脚本加密装置的结构示意图,包括:

获取单元91,获取待加密脚本;

加密处理单元92,用于利用选择出的密钥生成算法生成的密钥信息加密所述待加密脚本;并

嵌入单元93,用于在加密的脚本中嵌入运行权限控制代码,得到加密脚本文件,所述运行权限控制代码用于指示是否允许解密所述加密的脚本。

较佳地,所述加密处理单元92,用于将所述待加密脚本划分成若干个脚本片段;并针对每一个脚本片段,均执行以下过程:利用该脚本片段和基于上一个脚本片段的密钥信息生成用于加密该脚本片段的密钥信息;并利用所述用于加密该脚本片段的密钥信息加密该脚本片段;基于各个加密的脚本片段,得到加密的脚本;其中,第一个脚本片段的密钥信息为基于产生的随机数和/或所述第一个脚本片段生成的。

优选地,所述加密处理单元92,还用于对用户设置的密码和随机产生的盐值salt执行迭代次数的迭代处理,生成用于加密所述待加密脚本的密钥信息;并利用所述密钥信息对所述待加密脚本进行加密处理,得到加密的脚本。

优选地,所述加密脚本文件包括加密的时间信息,和/或加密的允许运行所述加密脚本文件的硬件设备的硬件信息,所述时间信息用于指示所述加密脚本文件的有效期限。

较佳地,所述加密脚本文件还包括以下至少一项:随机数、迭代次数、盐值salt、基于用户设置的密码生成的密钥信息和加密算法。

较佳地,所述运行权限控制代码包括以下至少一项:用于监测所述加密的脚本是否被追溯的代码、用于指示加密的脚本是否在有效期限内的代码、加壳代码和license认证逻辑代码。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

基于同一发明构思,本发明实施例还提供一种脚本解密运行装置,由于上述装置解决问题的原理与脚本解密运行方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。

如图11所示,为本发明实施例提供的脚本解密运行装置的结构示意图,包括:

第一运行单元101,用于运行可执行文件,所述可执行文件为本发明提供脚本加密方法得到的加密脚本文件执行编译处理得到的;

解密单元102,用于根据运行权限控制代码确定允许解密所述加密脚本文件中加密的脚本,则调用脚本解密解析引擎解密所述加密的脚本;并

第二运行单元103,用于运行解密后的脚本。

较佳地,所述运行权限控制代码包括用于监测所述加密的脚本是否被追溯的代码;以及

所述解密单元102,具体用于接收到派生子进程附着成功的确认消息。

优选地,所述加密脚本文件包含加密的时间信息;以及

所述解密单元102,具体用于从所述加密脚本文件中解密出时间信息;确定所述时间信息在有效期限内。

可选地,所述加密脚本文件还包括允许所述加密脚本文件的硬件设备的硬件信息;以及

所述解密单元102,具体用于读取当前运行所述加密脚本文件的硬件设备的硬件信息;并确定读取的硬件信息与所述加密脚本文件包含的硬件信息一致。

较佳地,所述运行权限控制代码包括license认证逻辑代码;以及

所述解密单元102,具体用于读取当前运行所述加密脚本文件的硬件设备的硬件信息;并根据读取的硬件信息生成license文件;以及从本地或网页服务器获取当前运行所述加密脚本文件的硬件设备的license文件;确定生成的license文件与获取的license文件一致且确定所述license在有效期限内。

较佳地,若所述加密脚本文件包括用户设置的密码、迭代次数、盐值salt和基于用户设置的密码生成的密钥信息;则所述装置,还包括:

处理单元,用于在所述解密单元102调用脚本解密解析引擎解密所述加密的脚本之前,根据用户输入的密码和盐值salt执行迭代次数的迭代处理,得到密钥信息;并确定所述密钥信息与基于用户设置的密码生成的密钥信息一致。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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