离线状态下的软件授权方法、服务器及可读存储介质与流程

文档序号:20277800发布日期:2020-04-07 14:45阅读:302来源:国知局
离线状态下的软件授权方法、服务器及可读存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种离线状态下的软件授权方法、服务器及可读存储介质。



背景技术:

随着当前社会的发展,各领域的技术发展日新月异,为缩短开发周期,人们越来越倾向于在已有的技术基础上来开发新的技术,以软件为例,开发、运营新软件的企业通常会与现有软件的提供方合作,在现有软件的基础上开发、运营新软件,这时就需要现有软件的提供方对现有软件进行授权,当授权过期后,软件运营方将不能继续使用现有软件。

目前,软件的授权通常采用在线授权的方式,然而因网络病毒、黑客入侵等多方面的影响,导致当前软件授权时安全性不高,如何保证软件授权的安全性是当前亟需解决的技术问题。



技术实现要素:

鉴于以上内容,有必要提供一种离线状态下的软件授权方法,旨在解决软件授权时安全性不高的问题。

本发明提供的离线状态下的软件授权方法,包括:

加载步骤:响应用户启动某一软件的请求,从预设存储空间加载所述软件对应的第一密钥、加密后的rsa密钥对的公钥,以及加密后的第一证书文件至内存;

解密步骤:根据所述第一密钥及第一解密规则分别解密加载至内存的所述加密后的rsa密钥对的公钥、第一证书文件,解密得到的第二证书文件包括待授权服务器的机器编码及待授权服务项目,判断所述服务器的机器编码与所述第二证书文件包括的机器编码是否匹配;

授权步骤:当所述服务器的机器编码与所述第二证书文件包括的机器编码匹配时,根据所述待授权服务项目对所述软件授权并启动所述软件;

更新步骤:将所述预设存储空间存储的所述第一证书文件再次加载至内存,按照预设更新规则更新内存中的所述第一密钥,并根据更新后的第一密钥及第一加密规则对内存中的所述第一证书文件再次加密得到第三证书文件,并利用所述解密后的公钥加密所述更新后的第一密钥,用所述已加密的更新后的第一密钥、第三证书文件分别替换所述预设存储空间存储的所述第一密钥、第一证书文件。

可选的,所述第一解密规则包括:

根据所述第一密钥及预设拼接规则获取第二密钥,用所述第二密钥解密所述加密后的rsa密钥对的公钥,得到解密后的公钥;

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述解密后的公钥解密所述证书密文,得到第二证书文件。

可选的,所述第一加密规则包括:

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述更新后的第一密钥对所述证书密文进行aes对称加密,得到第三证书文件。

可选的,所述解密步骤还包括:

若所述加密后的rsa密钥对的公钥或第一证书文件解密失败,则拒绝所述软件启动请求。

可选的,所述方法还包括:

校验步骤:每隔预设时间间隔,对所述软件进行校验,若校验失败,则停止运行所述软件,所述校验过程包括:

从所述预设存储空间加载所述软件对应的加密后的第一计时文件至内存,根据第二解密规则解密加载至内存的所述第一计时文件,得到第二计时文件;

根据所述第二计时文件、第二证书文件及预设校验规则对所述软件进行校验;

当校验成功时,更新所述第二计时文件,得到第三计时文件,并用内存存储的所述更新后的第一密钥加密所述第三计时文件,得到第四计时文件,用所述第四计时文件替换所述预设存储空间存储的第一计时文件,并删除内存存储的所述第一、第二、第三、第四计时文件。

可选的,所述第二证书文件还包括授权起始时间及授权终止时间,所述预设校验规则包括:

若主机当前时间早于所述授权起始时间,或者晚于所述授权终止时间,则停止运行所述软件;

若所述第二计时文件记录的时长超过所述授权终止时间与所述授权起始时间之间的总时长,则停止运行所述软件;

若所述软件已授权的服务项目与所述第二证书文件中的待授权服务项目匹配失败,则停止运行所述软件。

可选的,所述方法还包括:

若内存存储的所述第一证书文件及第一计时文件解密失败次数超过预设阈值,则使用所述解密后的rsa密钥对的公钥加密所述软件。

可选的,所述第二解密规则包括:

用所述第一密钥对所述第一计时文件进行解密,得到第二计时文件。

此外,为实现上述目的,本发明还提供一种服务器,该服务器包括:存储器、处理器,所述存储器中存储有可在所述处理器上运行的软件授权程序,所述软件授权程序被所述处理器执行时实现上述离线状态下的软件授权方法的步骤:

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有软件授权程序,所述软件授权程序可被一个或者多个处理器执行,以实现上述离线状态下的软件授权方法的步骤。

相较现有技术,本发明中的服务器通过从预设存储空间加载第一密钥及加密后的rsa密钥对的公钥、第一证书文件至内存,采用第二密钥解密加密后的rsa密钥对的公钥,而第二密钥是根据第一密钥及预设拼接规则获取的,有效防止了反编译,同时使用第一密钥及解密后的rsa密钥对的公钥对第一证书文件进行双层解密,保证了证书文件的安全性,根据解密得到的第二证书文件对软件授权后,根据预设更新规则更新第一密钥,用更新后的第一密钥加密第一证书文件,得到第三证书文件,并利用解密后的rsa密钥对的公钥加密更新后的第一密钥,并将已加密的更新后的第一密钥、第三证书文件分别替换预设存储空间存储的第一密钥、第一证书文件,当软件退出时,内存中文件消失,当软件下次启动时,需软件提供方用rsa密钥对的私钥将更新后的第一密钥解密为明文状态后,才能加载、解密第三证书文件以对软件进行授权,有效保证了软件授权的安全性。

附图说明

图1为本发明服务器一实施例的结构示意图;

图2为图1中的软件授权程序一实施例的程序模块图;

图3为本发明离线状态下的软件授权方法一实施例的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

如图1所示,为本发明服务器1一实施例的结构示意图。服务器1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述服务器1可以是机架式服务器、刀片式服务器、塔式服务器或者机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。

在本实施例中,服务器1包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12,该存储器11中存储有软件授权程序10,所述软件授权程序10可被所述处理器12执行。图1仅示出了具有组件11-12以及软件授权程序10的服务器1,本领域技术人员可以理解的是,图1示出的结构并不构成对服务器1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

其中,存储器11包括内存及至少一种类型的可读存储介质。内存为服务器1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是服务器1的内部存储单元,例如该服务器1的硬盘;在另一些实施例中,该非易失性存储介质也可以是服务器1的外部存储设备,例如服务器1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。本实施例中,存储器11的可读存储介质通常用于存储安装于服务器1的操作系统和各类应用软件,例如存储本发明一实施例中的软件授权程序10的代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器12在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述服务器1的总体操作,例如执行与其他设备进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行软件授权程序10等。

可选的,所述服务器1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在服务器1中处理的信息以及用于显示可视化的用户界面。

在本发明的一实施例中,所述软件授权程序10被所述处理器12执行时实现如下加载步骤、解密步骤、授权步骤及更新步骤。

加载步骤:响应用户启动某一软件的请求,从预设存储空间加载所述软件对应的第一密钥、加密后的rsa密钥对的公钥,以及加密后的第一证书文件至内存。

本实施例中,所述服务器1为运营方的服务器,为保证软件开发、运营的安全性和保密性,所述软件在服务器1上为离线状态运行的。

软件在服务器1上启动、运行时,需要得到软件提供方提供的授权文件,所述授权文件包括第一密钥(明文状态)、加密后的rsa密钥对的公钥、第一证书文件,第一证书文件为加密后的证书文件。

证书文件为软件授权的依据文件,包括待授权服务器的机器编码、授权起始时间、授权终止时间、待授权服务项目。

所述第一密钥是一串预设长度的字符,包括随机字符串段和固定字符串段,用来解密加密后的证书文件。本实施例中,所述第一密钥为aes对称密钥,长度为32位,前16位是随机数,后16位是固定数。

所述第一密钥、加密后的rsa密钥对的公钥、加密后的证书文件由软件提供方提供给软件运营方,并提前存储至服务器1的预设存储空间中,所述预设存储空间可以为所述服务器1的内部存储单元对应的存储空间(例如,服务器1的硬盘的软件目录下),也可以是所述服务器1的外部存储设备对应的存储空间(例如,u盘)。所述内存为所述服务器1的临时存储单元,当软件退出后,内存中的文件将会消失,即每次启动软件时都需重新加载、解密上述文件后才能对软件进行授权,保证了文件的安全性。

本实施例中,软件提供方对证书文件、rsa密钥对的公钥的加密策略为:

用rsa密钥对中的私钥对证书文件进行rsa非对称加密,得到证书密文,用所述第一密钥对所述证书密文进行aes对称加密,得到第一证书文件;

根据所述第一密钥及预设拼接规则设置第二密钥,用所述第二密钥对rsa密钥对的公钥进行aes对称加密,得到加密后的公钥。

所述预设拼接规则为将预先确定的字符串及所述第一密钥中的固定字符串段拼接,将拼接结果作为第二密钥。所述预先确定的字符串为内置在所述软件中的一段固定字符串,本实施例中,所述预先确定的字符串为16位的字符串。采用拼接的方式得到的第二密钥可有效防止反编译。

本实施例中,所述aes对称加密算法采用ecb模式、pkcs#5填充的方式来加密。所述ecb模式为电码本模式,是将整个明文分成若干段相同的小明文块(每一个小段的长度为128bit),然后对每一个小明文块进行加密。

如果最后一个小明文块少于16个字节(128bit),则需要在这个小明文块末尾补足相应数量的字符,pkcs#5填充则表示每个填充的字符的值等于缺少的字符数。例如,最后一个小明文块为{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则采用pkcs#5填充后的小明文块为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}。

aes对称加密,密钥需要在传输前被通讯双方获知,执行速度快,适用大量数据的加密。

rsa非对称加密,密钥对的公钥加密、私钥解密,或者私钥加密、公钥解密。由于需要大数的乘幂求模等算法,安全性高,运行速度慢,适合量小的数据的加密处理。

本实施例中,软件提供方保管所述rsa密钥对的私钥,软件提供方对证书文件采用rsa非对称加密及aes对称加密的双层加密方式,保证了证书文件的安全性,同时,利用密钥对的私钥对证书文件加密,从而实现了对证书文件的本地签名,能够有效防止证书文件被伪造,有利于提高软件授权的安全性。

解密步骤:根据所述第一密钥及第一解密规则分别解密加载至内存的所述加密后的rsa密钥对的公钥、第一证书文件,解密得到的第二证书文件包括待授权服务器的机器编码及待授权服务项目,判断所述服务器1的机器编码与所述第二证书文件包括的机器编码是否匹配。

本实施例中,每次解密时,皆是对内存中的文件进行解密。

所述第一解密规则包括:

根据所述第一密钥及预设拼接规则获取第二密钥,用所述第二密钥解密所述加密后的rsa密钥对的公钥,得到解密后的公钥;

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述解密后的公钥解密所述证书密文,得到第二证书文件。

所述待授权服务器的机器编码为待授权服务器的cpu序列号及网卡的mac地址拼接得到的字符串。所述待授权服务项目对应软件的不同功能模块。

本实施例中,通过判断所述服务器1的机器编码与第二证书文件包括的待授权服务器的机器编码是否匹配,可防止其他服务器被错误授权。

在本发明的一个实施例中,所述解密步骤还包括:

若所述加密后的rsa密钥对中的公钥或第一证书文件解密失败,则拒绝所述软件启动请求。

授权步骤:当所述服务器1的机器编码与所述第一证书文件包括的机器编码匹配时,根据所述待授权服务项目对所述软件授权并启动所述软件。

更新步骤:将所述预设存储空间存储的所述第一证书文件再次加载至内存,按照预设更新规则更新内存中所述第一密钥,并根据所述已更新的第一密钥及第一加密规则对内存中所述第一证书文件再次加密得到第三证书文件,并利用所述解密后的公钥加密所述更新后的第一密钥,用所述已加密的更新后的第一密钥、第三证书文件替换所述预设存储空间存储的所述第一密钥、第一证书文件。

所述第一加密规则包括:

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述更新后的第一密钥对所述证书密文进行aes对称加密,得到第三证书文件。

所述预设更新规则为随机更新所述第一密钥的随机字符串段。本实施例中,采用rsa密钥对中的公钥加密所述更新后的第一密钥,软件退出前,内存中所述更新后的第一密钥为明文状态,软件退出后,内存中的文件消失,待下次启动软件时,若无rsa密钥对中的私钥将不能解密所述更新后的第一密钥,故而,用所述更新后的第一密钥加密的第三证书文件也不能被解密,保证了软件授权的可靠性。

本步骤将已加密的更新后的第一密钥、第三证书文件存储至所述预设存储空间,主要用于软件的下次授权、启动。下次软件启动前,需请软件提供方使用rsa密钥对中的私钥将所述已加密的更新后的第一密钥解密为明文状态,软件启动时,将明文状态的更新后的第一密钥和第三证书文件加载至内存,解密后即可完成授权、启动操作。

在本发明的一个实施例中,所述软件授权程序10被所述处理器12执行时还实现如下步骤:

校验步骤:每隔预设时间间隔(例如,5分钟),对所述软件进行校验,若校验失败,则停止运行所述软件,所述校验过程包括:

从所述预设存储空间加载所述软件对应的加密后的第一计时文件至内存,根据第二解密规则解密加载至内存的所述第一计时文件,得到第二计时文件;

根据所述第二计时文件、第二证书文件及预设校验规则对所述软件进行校验;

当校验成功时,更新所述第二计时文件,得到第三计时文件,并用内存存储的所述更新后的第一密钥加密所述第三计时文件,得到第四计时文件,用所述第四计时文件替换所述预设存储空间存储的所述第一计时文件,并删除内存存储的所述第一、第二、第三、第四计时文件。

所述第二证书文件还包括授权起始时间及授权终止时间,所述预设校验规则包括:

若主机当前时间早于所述授权起始时间,或者晚于所述授权终止时间,则停止运行所述软件;

若所述第二计时文件记录的时长超过所述授权终止时间与所述授权起始时间之间的总时长,则停止运行所述软件;

若所述软件已授权的服务项目与所述第二证书文件包括的待授权服务项目匹配失败,则停止运行所述软件。

本实施例中,另起一个观察线程,用于观察此校验步骤是否被绕过执行,如果被绕过了,则有被破解的可能,则停止运行所述软件。

本实施例中,所述计时文件是以.开头命名的隐藏文件,用于记录软件在其对应的证书文件下运行的时间。

本实施例采用system.nanotime()函数更新所述第二计时文件,所述system.nanotime()函数是java内置函数,基于所述服务器1的cpu核心的时钟周期来计时,用于测量经过的时间且无法人为干预,不依赖主机的时间且计时精度高,有效避免了主机的时间被篡改而带来的影响。

本实施例中,第一计时文件是由软件提供方提供的,并预先存储至服务器1的预设存储空间,所述第一计时文件的加密策略包括:

用所述第一密钥对所述计时文件进行aes对称加密,得到第一计时文件;

所述第二解密规则包括:

用所述第一密钥对所述第一计时文件进行解密,得到第二计时文件。

在本发明的另一个实施例中,所述软件授权程序10被所述处理器12执行时还实现如下步骤:

若内存存储的所述第一证书文件及第一计时文件解密失败次数超过预设阈值,则使用所述解密后的rsa密钥对的公钥加密所述软件。

在本发明的另一个实施例中,所述软件授权程序10被所述处理器12执行时还实现如下步骤:

所述软件启动后,若所述预设存储空间中的计时文件超过预设时间阈值未更新,则使用所述解密后的rsa密钥对的公钥加密所述软件。

由上述实施例可知,本发明提出的服务器1,首先,从预设存储空间加载第一密钥、加密后的rsa密钥对的公钥及第一证书文件至内存,采用第二密钥解密加密后的rsa密钥对的公钥,而第二密钥是根据第一密钥及预设拼接规则获取的,有效防止了反编译,同时使用第一密钥及解密后的rsa密钥对的公钥对第一证书文件进行双层解密,保证了证书文件的安全性;然后,根据解密得到的第二证书文件对软件授权后,根据预设更新规则更新第一密钥,用更新后的第一密钥加密第一证书文件,得到第三证书文件,并用解密后的rsa密钥对的公钥加密更新后的第一密钥,并用已加密的更新后的第一密钥、第三证书文件分别替换预设存储空间存储的所述第一密钥、第一证书,当软件退出时,内存中文件消失,当软件下次启动时,需软件提供方用rsa密钥对的私钥将更新后的第一密钥解密为明文状态后,才能加载、解密第三证书文件以对软件进行授权,有效保证了软件授权的安全性。

在其他实施例中,软件授权程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述软件授权程序10在服务器1中的执行过程。

如图2所示,为图1中的软件授权程序10一实施例的程序模块图。

在本发明的一个实施例中,软件授权程序10包括加载模块110、解密模块120、授权模块130及更新模块140,示例性地:

所述加载模块110,用于响应用户启动某一软件的请求,从预设存储空间加载所述软件对应的第一密钥、加密后的rsa密钥对的公钥,以及加密后的第一证书文件至内存;

所述解密模块120,用于根据所述第一密钥及第一解密规则分别解密加载至内存的所述加密后的rsa密钥对的公钥、第一证书文件,解密得到的第二证书文件包括待授权服务器的机器编码及待授权服务项目,判断所述服务器1的机器编码与所述第二证书文件包括的机器编码是否匹配;

所述授权模块130,用于当所述服务器1的机器编码与所述第二证书文件包括的机器编码匹配时,根据所述待授权服务项目对所述软件授权并启动所述软件;

所述更新模块140,用于将所述预设存储空间存储的所述第一证书文件再次加载至内存,按照预设更新规则更新内存中所述第一密钥,并根据所述已更新的第一密钥及第一加密规则对内存中所述第一证书文件再次加密得到第三证书文件,并利用所述解密后的公钥加密所述更新后的第一密钥,用所述已加密的更新后的第一密钥、第三证书文件分别替换所述预设存储空间存储的所述第一密钥、第一证书文件。

上述加载模块110、解密模块120、授权模块130及更新模块140等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。

如图3所示,为本发明离线状态下的软件授权方法一实施例的流程图,所述软件授权方法包括步骤s1-s4,应用于服务器1。

s1、响应用户启动某一软件的请求,从预设存储空间加载所述软件对应的第一密钥、加密后的rsa密钥对的公钥,以及加密后的第一证书文件至内存。

本实施例中,所述服务器1为运营方的服务器,为保证软件开发、运营的安全性和保密性,所述软件在服务器1上为离线状态运行的。

软件在服务器1上启动、运行时,需要得到软件提供方提供的授权文件,所述授权文件包括第一密钥、加密后的rsa密钥对的公钥、第一证书文件,第一证书文件为加密后的证书文件。

证书文件为软件授权的依据文件,包括待授权服务器的机器编码待授权服务项目。

所述第一密钥(明文状态)是一串预设长度的字符,包括随机字符串段和固定字符串段,用来解密加密后的证书文件。本实施例中,所述第一密钥为aes对称密钥,长度为32位,前16位是随机数,后16位是固定数。

所述第一密钥、加密后的rsa密钥对的公钥、加密后的证书文件由软件提供方提供给软件运营方,并提前存储至服务器1的预设存储空间中,所述预设存储空间可以为所述服务器1的内部存储单元对应的存储空间(例如,服务器1的硬盘的软件目录下),也可以是所述服务器1的外部存储设备对应的存储空间(例如,u盘)。所述内存为所述服务器1的临时存储单元,当软件退出后,内存中的文件将会消失,即每次启动软件时都需重新加载、解密上述文件后才能对软件进行授权,保证了文件的安全性。

本实施例中,软件提供方对证书文件、rsa密钥对的公钥的加密策略为:

用rsa密钥对中的私钥对证书文件进行rsa非对称加密,得到证书密文,用所述第一密钥对所述证书密文进行aes对称加密,得到第一证书文件;

根据所述第一密钥及预设拼接规则设置第二密钥,用所述第二密钥对rsa密钥对的公钥进行aes对称加密,得到加密后的公钥。

所述预设拼接规则为将预先确定的字符串及所述第一密钥中的固定字符串段拼接,将拼接结果作为第二密钥。所述预先确定的字符串为内置在所述软件中的一段固定字符串,本实施例中,所述预先确定的字符串为16位的字符串。采用拼接的方式得到的第二密钥可有效防止反编译。

本实施例中,所述aes对称加密算法采用ecb模式、pkcs#5填充的方式来加密。所述ecb模式为电码本模式,是将整个明文分成若干段相同的小明文块(每一个小段的长度为128bit),然后对每一个小明文块进行加密。

如果最后一个小明文块少于16个字节(128bit),则需要在这个小明文块末尾补足相应数量的字符,pkcs#5填充则表示每个填充的字符的值等于缺少的字符数。例如,最后一个小明文块为{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则采用pkcs#5填充后的小明文块为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}。

aes对称加密,密钥需要在传输前被通讯双方获知,执行速度快,适用大量数据的加密。

rsa非对称加密,密钥对的公钥加密、私钥解密,或者私钥加密、公钥解密。由于需要大数的乘幂求模等算法,安全性高,运行速度慢,适合量小的数据的加密处理。

本实施例中,软件提供方保管所述rsa密钥对的私钥,软件提供方对证书文件采用rsa非对称加密及aes对称加密的双层加密方式,保证了证书文件的安全性,同时,利用密钥对的私钥对证书文件加密,从而实现了对证书文件的本地签名,能够有效防止证书文件被伪造,有利于提高软件授权的安全性。

s2、根据所述第一密钥及第一解密规则分别解密加载至内存的所述加密后的rsa密钥对的公钥、第一证书文件进行解密,解密得到的第二证书文件包括待授权服务器的机器编码及待授权服务项目,判断所述服务器1的机器编码与所述第二证书文件包括的机器编码是否匹配。

本实施例中,每次解密时,皆是对内存中的文件进行解密。

所述第一解密规则包括:

根据所述第一密钥及预设拼接规则获取第二密钥,用所述第二密钥解密所述加密后的rsa密钥对的公钥,得到解密后的公钥;

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述解密后的公钥解密所述证书密文,得到第二证书文件。

所述待授权服务器的机器编码为待授权服务器的cpu序列号及网卡的mac地址拼接得到的字符串。所述待授权服务项目对应软件的不同功能模块。

本实施例中,通过判断所述服务器1的机器编码与证书文件中的待授权服务器的机器编码是否匹配,可防止其他服务器被错误授权。

在本发明的一个实施例中,所述步骤s2还包括:

若所述加密后的rsa密钥对中的公钥或第一证书文件解密失败,则拒绝所述软件启动请求。

s3、当所述服务器1的机器编码与所述第二证书文件包括的机器编码匹配时,则根据所述待授权服务项目对所述软件授权并启动所述软件。

s4、将所述预设存储空间存储的所述第一证书文件再次加载至内存,按照预设更新规则更新内存中所述第一密钥,并根据所述已更新的第一密钥及第一加密规则对内存中所述第一证书文件再次加密得到第三证书文件,并利用所述解密后的公钥加密所述更新后的第一密钥,用所述已加密的更新后的第一密钥、第三证书文件分别替换所述预设存储空间存储的所述第一密钥、第一证书文件。

所述第一加密规则包括:

用所述第一密钥解密所述第一证书文件,得到证书密文,用所述更新后的第一密钥对所述证书密文进行aes对称加密,得到第三证书文件。

所述预设更新规则为随机更新所述第一密钥的随机字符串段。本实施例中,采用rsa密钥对中的公钥加密所述更新后的第一密钥,软件退出前,内存中所述更新后的第一密钥为明文状态,软件退出后,内存中的文件消失,待下次启动软件时,若无rsa密钥对中的私钥将不能解密所述更新后的第一密钥,故而,用所述更新后的第一密钥加密的第三证书文件也不能被解密,保证了软件授权的可靠性。

本步骤将已加密的更新后的第一密钥、第三证书文件存储至所述预设存储空间,主要用于软件的下次授权、启动。下次软件启动前,需请软件提供方使用rsa密钥对中的私钥将所述已加密的更新后的第一密钥解密为明文状态,软件启动时,将明文状态的更新后的第一密钥和第三证书文件加载至内存,解密后即可完成授权、启动操作。

在本发明的一个实施例中,所述软件授权方法还包括:

每隔预设时间间隔(例如,5分钟),对所述软件进行校验,若校验失败,则停止运行所述软件,所述校验过程包括:

从所述预设存储空间加载所述软件对应的加密后的第一计时文件至内存,根据第二解密规则解密加载至内存的所述第一计时文件,得到第二计时文件;

根据所述第二计时文件、第二证书文件及预设校验规则对所述软件进行校验;

当校验成功时,更新所述第二计时文件,得到第三计时文件,并用内存存储的所述更新后的第一密钥加密所述第三计时文件,得到第四计时文件,用所述第四计时文件替换所述预设存储空间存储的第一计时文件,并删除内存存储的第一、第二、第三、第四计时文件。

所述第二证书文件还包括授权起始时间及授权终止时间,所述预设校验规则包括:

若主机当前时间早于所述授权起始时间,或者晚于所述授权终止时间,则停止运行所述软件;

若所述第二计时文件中记录的时长超过所述授权终止时间与所述授权起始时间之间的总时长,则停止运行所述软件;

若所述软件已授权的服务项目与所述解密后的证书文件中的待授权服务项目匹配失败,则停止运行所述软件。

本实施例中,另起一个观察线程,用于观察此校验步骤是否被绕过执行,如果被绕过了,则有被破解的可能,则停止运行所述软件。

本实施例中,所述计时文件是以.开头命名的隐藏文件,用于记录软件在其对应的证书文件下运行的时间。

本实施例采用system.nanotime()函数更新所述第二计时文件,所述system.nanotime()函数是java内置函数,基于所述服务器1的cpu核心的时钟周期来计时,用于测量经过的时间且无法人为干预,不依赖主机的时间且计时精度高,有效避免了主机的时间被篡改而带来的影响。

本实施例中,第一计时文件是由软件提供方提供的,并预先存储至服务器1的预设存储空间,所述第一计时文件的加密策略包括:

用所述第一密钥对所述计时文件进行aes对称加密,得到第一计时文件;

所述第二解密规则包括:

用所述第一密钥对所述第一计时文件进行解密,得到第二计时文件。

在本发明的另一个实施例中,所述方法还包括:

若内存中所述第一证书文件及第一计时文件解密失败次数超过预设阈值,则使用所述解密后的rsa密钥对的公钥加密所述软件。

在本发明的另一个实施例中,所述方法还包括:

所述软件启动后,若所述预设存储空间中的计时文件超过预设时间阈值未更新,则使用所述解密后的rsa密钥对的公钥加密所述软件。

由上述实施例可知,本发明提出的离线状态下的软件授权方法,应用于服务器1,首先,从预设存储空间加载第一密钥、加密后的rsa密钥对的公钥及加密后的第一证书文件至内存,采用第二密钥解密加密后的rsa密钥对的公钥,而第二密钥是根据第一密钥及预设拼接规则获取的,有效防止了反编译,同时使用第一密钥及解密后的rsa密钥对的公钥对第一证书文件进行双层解密,保证了证书文件的安全性;然后,根据解密得到的第二证书文件对软件授权后,根据预设更新规则更新第一密钥,用更新后的第一密钥再次加密第一证书文件得到第三证书文件,并用解密后的rsa密钥对的公钥加密更新后的第一密钥,并用已加密的更新后的第一密钥、第三证书文件分别替换预设存储空间存储的所述第一密钥、第一证书文件,当软件退出时,内存中文件消失,当软件下次启动时,需软件提供方用rsa密钥对的私钥将更新后的第一密钥解密为明文状态后,才能加载、解密第三证书文件以对软件进行授权,有效保证了软件授权的安全性。

此外,本发明实施例还提出一种计算机可读存储介质,计算机可读存储介质可以是硬盘、多媒体卡、sd卡、闪存卡、smc、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器等中的任意一种或者几种的任意组合。计算机可读存储介质中包括软件授权程序10,所述软件授权程序10被处理器执行时实现如下操作:

响应用户启动某一软件的请求,从预设存储空间加载所述软件对应的第一密钥、加密后的rsa密钥对的公钥,以及加密后的第一证书文件至内存;

根据所述第一密钥及第一解密规则分别解密加载至内存的所述加密后的rsa密钥对的公钥、第一证书文件,解密得到的第二证书文件包括待授权服务器的机器编码及待授权服务项目,判断所述服务器1的机器编码与所述第二证书文件包括的机器编码是否匹配;

若所述服务器1的机器编码与所述第二证书文件包括的机器编码匹配,则将所述待授权服务项目授权给所述软件并启动所述软件;

将所述预设存储空间存储的所述第一证书文件再次加载至内存,按照预设更新规则更新内存中所述第一密钥,并根据所述已更新的第一密钥及第一加密规则对内存中所述第一证书文件再次加密得到第三证书文件,并利用所述解密后的公钥加密所述更新后的第一密钥,用所述已加密的更新后的第一密钥、第三证书文件分别替换所述预设存储空间存储的所述第一密钥、第一证书文件。

本发明之计算机可读存储介质的具体实施方式与上述离线状态下的软件授权方法以及服务器1的具体实施方式大致相同,在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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