离线状态下对软件实现时间限制的方法与流程

文档序号:15276053发布日期:2018-08-28 22:58阅读:1020来源:国知局

本发明涉及软件保护领域,尤其涉及一种离线状态下对软件实现时间限制的方法。



背景技术:

在软件版权保护领域中,对软件的使用进行限时控制是常用的手段,例如软件定期试用、租赁、定期使用许可等模式,即软件只能在某一设定的日期之前被使用。一般的做法是利用软件保护装置,让其按一定规则,根据主机时间校准加密锁内时钟,这些规则为防止恶意篡改,不允许锁内时钟往更早的时间校准。但是,假设是这样一种情形,用户不使用类似加密锁的软件保护装置,而且可能需要离线使用,这样对于限制时间就会有很大的困难。在此种情况下,用户可以随意调整主机时间,限制时间的机制就可以很轻松的被绕过。



技术实现要素:

本发明提供了一种离线状态下对软件实现时间限制的方法,用来解决离线状态下,用户随意调整主机时间进行绕过限制时间机制或者用户对主机时间的无意中的调整使得软件使用时间计时出错的问题。

为了解决上述问题,本发明提供了一种离线状态下对软件实现时间限制的方法,所述软件安装在终端设备中,所述终端设备中设置存储有虚拟时间的安全容器,所述方法包括:

在终端设备开机时,所述安全容器启动并计算终端设备的当前主机时间与上次关机时的主机时间之间的第一时间差值,且修改虚拟时间为当前虚拟时间加上所述第一时间差值;

在终端设备运行期间,所述安全容器每隔预定时间修改虚拟时间为当前虚拟时间加上所述预定时间;

在检测到当前虚拟时间已达到软件的到期时间时禁用软件。

优选地,所述方法还包括:所述软件激活时,对安全容器内的虚拟时间进行初始化。

优选地,对安全容器内的虚拟时间进行初始化的具体过程包括:

S1,安全容器发送请求包到服务器端,所述请求包包括虚拟时间和所述终端设备的主机时间;

S2,服务器端接收所述请求包并发送校准包到安全容器,所述校准包包括服务器时间以及所述请求包中的虚拟时间和主机时间;

S3,安全容器校验所述校准包的合法性,如果合法,则执行S4,否则返回错误信息;

S4,安全容器将当前虚拟时间与所述请求包中的虚拟时间之间的第二时间差值以及当前主机时间与所述请求包中的主机时间之间的第三时间差值进行比较,如果两者之差处于预定阈值内,执行S5,否则返回错误信息;

S5,安全容器将虚拟时间初始化为:当前主机时间-所述校准包中的主机时间+所述校准包的服务器时间。

优选地,所述安全容器生成随机数并将该随机数保存在所述安全容器内,所述请求包和所述校准包还包括该随机数,所述安全容器利用该随机数校验所述校准包的合法性。

优选地,所述请求包和所述校准包还包括硬件指纹,所述安全容器保存所述硬件指纹并利用该硬件指纹校验所述校准包的合法性。

优选地,所述请求包和所述校准包还包括随机数和硬件指纹,所述安全容器保存所述随机数和硬件指纹并利用该随机数和硬件指纹校验所述校准包的合法性。

优选地,所述安全容器将随机数和/或硬件指纹保存在其内部EEPROM中。

优选地,安全容器和服务器端分别持有相互匹配的公钥和私钥,所述服务器利用所述私钥签发所述校准包,所述安全容器利用所述公钥校验所述校准包的合法性。

优选地,服务器端的所述私钥预存在加密设备中。

优选地,所述安全容器为虚拟磁盘。

与现有技术相比,本发明的有益效果在于:本发明的离线状态下对软件实现时间限制的方法,能够校准安全容器内的虚拟时间,并在离线状态下解决用户随意调整主机时间进行绕过限制时间机制或者对主机时间的无意调整使得软件使用时间计时出错的问题。

附图说明

图1是本发明的离线状态下对软件实现时间限制的方法的流程图;

图2是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的流程图;

图3是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的一个实施例的流程图;

图4是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的另一个实施例的流程图;

图5是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的又一个实施例的流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细描述,但不作为对本发明的限定。

图1示出了本发明的离线状态下对软件实现时间限制的方法的流程图。如图1所示,在本发明的离线状态下对软件实现时间限制的方法中,软件安装在终端设备中,终端设备中设置存储有虚拟时间的安全容器。

该方法包括:在终端设备开机时,所述安全容器启动并计算终端设备的当前主机时间与上次关机时的主机时间之间的第一时间差值,且修改虚拟时间为当前虚拟时间加上第一时间差值;

在终端设备运行期间,安全容器每隔预定时间修改虚拟时间为当前虚拟时间加上预定时间;

在检测到当前虚拟时间已达到软件的到期时间时禁用软件。

其中,在终端设备(例如计算机)运行期间,安全容器可以从终端设备的CPU采集计算机的运行时间,并将安全容器内的虚拟时间修改为当前虚拟时间加上计算机的运行时间。

例如,安全容器内初始储存的主机时间pc_time=2016/8/21 20:05,虚拟时间vclock_time=2016/8/21 20:05。如果终端设备运行20分钟后,用户将主机时间调整为第二天的时间即2016/8/22 20:25,则安全容器内储存的主机时间变为pc_time=2016/8/22 20:25,虚拟时间vclock_time=2016/8/21 20:25。调整主机时间之后,用户将计算机关机,经过12个小时后,用户将计算机再次开机。此时主机时间为2016/8/23 08:25,安全容器启动后,开始计算主机时间的变化值,即从上一次关机时的主机时间pc_time=2016/8/22 20:25与当前的主机时间2016/8/23 08:25之间的差值12小时,并将虚拟时间修改为加上这12小时的差值,得到修改后的虚拟时间为vclock_time=2016/8/22 08:25。可以看到,即使用户将主机时间修改为错误的时间,安全容器仍然能确保其内的虚拟时间是正确的。

通过上述方法,在离线状态中,即使用户更改主机时间,安全容器内的虚拟时间始终为准确的时间,从而保证了限制时间的机制。

在实施例中,软件激活时,可以对安全容器内的虚拟时间进行初始化,从而虚拟时间被校准为准确的时间,保证了离线时的虚拟时间的准确性。

图2是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的流程图。

在本发明一个实施例中,如图2所示,可以对安全容器内的虚拟时间进行如下初始化过程:

S1,安全容器发送请求包到服务器端,请求包包括虚拟时间和终端设备的主机时间;

在步骤S1中,安全容器可以生成请求包,并发送给服务器端,请求包中可以包括安全容器内的虚拟时间和终端设备的主机时间。请求包由专用的安全容器生成,能够有效确保请求包中所包含数据信息的合法性,提高请求包的安全性。

S2,服务器端接收请求包并发送校准包到安全容器,校准包包括服务器时间以及请求包中的虚拟时间和主机时间;

步骤S2中的服务器端安装有为安全容器提供软件保护相关服务的软件,该软件保护相关服务包括对安全容器的虚拟时间进行校准等。

S3,安全容器校验校准包的合法性,如果合法,则执行S4,否则返回错误信息;

步骤S3中,安全容器可以通过多种方式校验校准包的合法性,具体将在下文参照图3-5进行说明。

S4,安全容器将当前虚拟时间与请求包中的虚拟时间之间的第二时间差值以及当前主机时间与请求包中的主机时间之间的第三时间差值进行比较,如果两者之差处于预定阈值内,执行S5,否则返回错误信息;

步骤S4中,通过比较第二时间差值与第三时间差值的两者之差是否处于预定阈值内,可以防止用户在初始化安全容器的虚拟时间时更改主机时间。此预定时间可以是1分钟,如果在1分钟之内,可以认为用户没有更改主机时间。

S5,安全容器将虚拟时间初始化为:当前主机时间-校准包中的主机时间+校准包的服务器时间。

步骤S5中,将安全容器内的虚拟时间初始化,在服务器的时间的基础上加上校准过程中主机时间的变化值,使得安全容器的虚拟时间更加准确。

图3示出了本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的一个实施例的流程图,如图3所示,该过程包括以下步骤:

S1,安全容器生成随机数并将随机数保存到安全容器内,安全容器发送请求包到服务器端,请求包包括随机数、虚拟时间和终端设备的主机时间;

S2,服务器端接收请求包并发送校准包到安全容器,校准包包括服务器时间以及所述请求包中的随机数、虚拟时间和主机时间;

S3,安全容器校验校准包的随机数是否与本地存储的随机数匹配,如果是,则执行S4,否则返回错误信息;

S4,安全容器将当前虚拟时间与请求包中的虚拟时间之间的第二时间差值以及当前主机时间与请求包中的主机时间之间的第三时间差值进行比较,如果两者之差处于预定阈值内,执行S5,否则返回错误信息;

S5,安全容器将虚拟时间初始化为:当前主机时间-校准包中的主机时间+校准包的服务器时间。

在图3所示的实施例中,步骤S1中安全容器的请求包中还包括随机数,步骤S2中服务器在发送校准包时,会将接收到的请求包中的该随机数加入校准包一起发送。安全容器在生成请求包时,会保存一份备份的随机数,从而能够在步骤S3中利用该作为备份的随机数来校验校准包的合法性,以确保该校准包是由合法服务器端发出。

在本发明一个实施例中,例如,安全容器每隔预定时间生成一个新的随机数,例如在发出请求包后的两分钟之后就会改变随机数,如果校准时间超过两分钟,则验证为不合法,还需再次验证,从而进一步保证了安全容器的虚拟时间的准确性。

图4是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的另一个实施例的流程图,如图4所示,该过程包括以下步骤:

S1,安全容器保存硬件指纹到安全容器内,安全容器发送请求包到服务器端,请求包包括硬件指纹、虚拟时间和终端设备的主机时间;

S2,服务器端接收请求包并发送校准包到安全容器,校准包包括服务器时间以及所述请求包中的硬件指纹、虚拟时间和主机时间;

S3,安全容器校验校准包的硬件指纹是否与本地存储的硬件指纹匹配,如果是,则执行S4,否则返回错误信息;

S4,安全容器将当前虚拟时间与请求包中的虚拟时间之间的第二时间差值以及当前主机时间与请求包中的主机时间之间的第三时间差值进行比较,如果两者之差处于预定阈值内,执行S5,否则返回错误信息;

S5,安全容器将虚拟时间初始化为:当前主机时间-校准包中的主机时间+校准包的服务器时间。

在图4所示的实施例中,步骤S1中安全容器的请求包中还包括硬件指纹,此硬件指纹为计算机的硬件信息,例如硬盘序列号,此硬件信息为终端设备所独有。步骤S2中服务器在发送校准包时,会将接收到的请求包中的该硬件指纹加入校准包一起发送。安全容器在生成请求包时,会保存一份备份的硬件指纹,利用不同的终端设备有不同的硬件指纹,从而能够在步骤S3中利用该作为备份的硬件指纹来校验校准包的合法性。

图5是本发明的离线状态下对软件实现时间限制的方法的对安全容器内的虚拟时间进行初始化的具体过程的又一个实施例的流程图,如图5所示,该过程包括以下步骤:

S0,安全容器存放公钥,服务器端存放与公钥匹配的私钥;

S1,安全容器发送请求包到服务器端,请求包包括虚拟时间和终端设备的主机时间;

S2,服务器端接收请求包并将校准包私钥签名后发送到安全容器,校准包包括服务器时间以及请求包中的虚拟时间和主机时间;

S3,安全容器利用公钥校验校准包是否合法,如果是,则执行S4,否则返回错误信息;

S4,安全容器将当前虚拟时间与请求包中的虚拟时间之间的第二时间差值以及当前主机时间与请求包中的主机时间之间的第三时间差值进行比较,如果两者之差处于预定阈值内,执行S5,否则返回错误信息;

S5,安全容器将虚拟时间初始化为:当前主机时间-校准包中的主机时间+校准包的服务器时间。

在图5所示的实施例中,还包括步骤S0,使得安全容器和服务器端分别持有相互匹配的公钥和私钥,步骤S2中,服务器端利用私钥签发校准包,在步骤S3中安全容器接收到校准包后,安全容器利用公钥校验校准包的合法性,以确保该校准包是由合法服务器发出。

图3至图5中示出的实施例的校准方法可以任意组合,例如将图3和图4示出的方法进行组合,请求包和校准包包括随机数和硬件指纹,安全容器保存随机数和硬件指纹并利用该随机数和硬件指纹校验校准包的合法性。利用组合后的方法,能够更加准确和安全的对虚拟时间进行初始化。

在初始化的过程中,可以联网对安全容器的虚拟时间进行初始化,也可以由用户拷贝数据,例如请求包,并利用联网的其他终端设备将该请求包发送到服务器端,当接收到校准包后,可以将校准包拷贝到安全容器所在的终端设备上完成初始化。

本实施例中,利用上述实施例对虚拟时间进行初始化时,安全容器可以将随机数和/或硬件指纹保存在其内部EEPROM中。

本实施例中,在采用公钥和私钥相互匹配实现校验的方法中,服务器端的私钥可以预存在服务器端的加密设备中。

本发明的安全容器可以是虚拟磁盘。

以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

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