一种软件保护方法及装置与流程

文档序号:17539221发布日期:2019-04-29 14:21阅读:173来源:国知局
一种软件保护方法及装置与流程

本发明涉及计算机软件技术领域,尤其涉及一种软件保护方法及装置。



背景技术:

目前,使用软件保护装置实现软件安全保护和版权保护成为了最主要的手段。软件保护装置特指一种附加在计算机接口(比如,usb接口、串口、并口等接口)上的硬件设备,对运行在计算机上的特定的软件进行软件安全保护和版权保护。通常,软件保护装置是由软件厂商提供给用户的,为了防止用户丢失软件保护装置从而造成诸多损失,因此,软件厂商提供了一种将丢失的软件保护装置能够挂失的方式,通常是将软件保护装置的设定数据信息添加到挂失列表中,使用软件保护装置时,需要检查挂失列表中是否存在当前软件保护装置的设定数据信息。挂失列表通常是软件从服务器中定期下载的,软件通过对比当前主机的时间与挂失列表的更新时间来确保挂失列表的有效性,然而一旦软件保护装置丢失被他人捡到,即使用户将装置设定数据信息添加到挂失列表中,他人也可以通过篡改主机时间以保持挂失列表有效,从而非法使用软件保护装置和软件,这样会给用户造成巨大的损失。



技术实现要素:

为了解决现有技术中存在的问题,本发明实施例提供了一种软件保护方法及装置,能够使得软件和软件保护装置更安全,用户的利益进一步得到保障。

其中,本发明实施例提供的一种软件保护方法包括:

步骤s1、软件保护装置等待接收客户端发送命令;

步骤s2、软件保护装置接收客户端发送的命令,解析命令,获取当前自身的工作状态,若解析得到的命令为启动命令,且自身的工作状态为未启动状态时,则执行步骤s3;若解析得到的命令为联机认证响应命令,且自身的工作状态为等待联机认证状态时,则执行步骤s4;

步骤s3、软件保护装置获取风险因子,判断风险因子是否在预设阈值范围内,若不在所述预设阈值范围内则生成联机认证请求,将自身的工作状态修改为等待联机认证状态,向客户端返回联机认证请求;

步骤s4、软件保护装置根据联机认证响应命令获取第二认证数据,验证第二认证数据,若验证通过则执行步骤s5,若验证不通过则执行步骤s6;

步骤s5、软件保护装置根据联机认证响应命令获取软件保护装置的工作状态设定数据,若工作状态设定数据为启动则将自身的工作状态修改为已启动状态,向客户端返回状态数据,若工作状态设定数据为锁定则将自身的工作状态修改为已锁定状态,向客户端返回状态数据;

步骤s6、软件保护装置生成联机认证失败数据,将自身的工作状态修改为未启动状态,向客户端返回联机认证失败数据。

本发明实施例提供的一种软件保护装置包括:

接收模块:用于接收客户端发送的命令;

解析模块:用于解析接收模块接收到的客户端发送的命令;

获取模块:用于获取当前自身的工作状态;

获取模块:还用于当接收模块接收到客户端发送的启动命令,且获取模块获取到的当前自身的工作状态为未启动状态时,获取风险因子;

判断模块:用于判断获取模块获取的风险因子是否在预设阈值范围内;

生成模块:用于当判断模块判断风险因子不在预设阈值范围内时,生成联机认证请求;

修改模块:用于当生成模块生成联机认证请求后,将自身的工作状态修改为等待联机认证状态;

发送模块:用于向客户端发送生成模块生成的联机认证请求;

获取模块:还用于当接收模块接收到客户端发送的联机认证响应命令,且获取模块获取到的当前自身的工作状态为等待联机认证状态时,根据联机认证响应命令获取第二认证数据;

验证模块:用于验证获取模块获取的第二认证数据;

获取模块:还用于当验证模块验证通过时,根据联机认证响应命令获取工作状态设定数据;

修改模块:还用于当获取模块获取的工作状态设定数据为启动时将自身的工作状态修改为已启动状态;

修改模块:还用于当获取模块获取的工作状态设定数据为锁定时将自身的工作状态修改为已锁定状态;

发送模块:还用于当修改模块将自身的工作状态修改为已启动或已锁定状态时,向客户端发送状态数据;

生成模块:还用于当验证模块验证不通过时,生成联机认证失败数据;

修改模块:还用于当生成模块生成联机认证失败数据时,将自身的工作状态修改为未启动状态;

发送模块:还用于向客户端发送生成模块生成的联机认证失败数据。

本发明实施例提供的技术方案的有益效果是:本发明通过客户端侧的挂失列表检查软件保护装置是否被挂失,若未挂失则进一步对软件保护装置的脱机使用次数和/或时间限制等风险因子进行检查,若超出预设阈值范围,则通过服务器与软件保护装置进行双向签名验证,以确保软件保护装置的真实性,服务器若验证通过则进一步检查服务器侧的挂失列表中软件保护装置是否被挂失,确保软件保护装置的安全性。采用本发明提供的方法,即使软件保护装置丢失,也不能继续非法使用软件保护装置,从而保证了软件厂商和用户的利益。

附图说明

图1是本发明实施例1提供的一种软件保护方法流程图;

图2-1、图2-2是本发明实施例2提供的一种软件保护方法流程图;

图3是本发明实施例3提供的一种软件保护装置框图。

具体实施方式

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

实施例1

本发明实施例一提供了一种软件保护方法,本发明中客户端软件需要与软件保护装置交互才能正常运行,在软件保护装置启动之前首先需要客户端检查软件保护装置是否被挂失,客户端本地保存有第一挂失列表,当客户端确定软件保护装置在第一挂失列表中时客户端软件停止运行,当客户端确定软件保护装置不在第一挂失列表时执行本发明提出的方法。

如图1所示,本实施例的方法包括:

101、软件保护装置等待接收客户端发送命令;

在本发明实施例中,软件保护装置可以是加密锁,还可以是软件许可锁等。客户端侧的软件通过与软件保护装置交互才能正常运行。

102、软件保护装置接收客户端发送的命令,解析命令,获取当前自身的工作状态,若解析得到的命令为启动命令,且自身的工作状态为未启动状态时,则执行步骤103;若解析得到的命令为联机认证响应命令,且自身的工作状态为等待联机认证状态时,则执行步骤107;

在本实施例中,客户端发送的命令具体为:启动命令、联机认证响应命令、读取命令等软件保护装置能够执行的命令;

软件保护装置的工作状态可以有:未启动、等待联机认证、已锁定、已启动状态;具体地,软件保护装置根据工作状态标识获取当前工作状态。

软件保护装置获取当前自身的工作状态为已锁定状态时,向客户端返回已锁定数据。

103、软件保护装置获取风险因子;

在本实施例中,风险因子是在软件保护装置出厂时预先设定的;具体地,风险因子可以是软件保护装置的脱机认证次数,可以是软件保护装置的联机认证的时间间隔,还可以是软件保护装置脱机认证的次数和软件保护装置的联机认证时间间隔;其中,软件保护装置的脱机认证次数是通过在软件保护装置中预置的脱机认证次数计时器得到的,软件保护装置的联机认证时间间隔具体为:软件保护装置通过获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将当前时间和预存的联机认证时间的差值作为软件保护装置联机认证的时间间隔。

104、软件保护装置判断获取的风险因子是否在预设阈值范围内,若在则执行105,若不在则执行106;

具体地,当风险因子为软件保护装置的脱机认证次数时,

判断获取的风险因子是否在预设阈值范围内,具体为:软件保护装置根据脱机认证计数器获取软件保护装置的脱机认证次数,将脱机认证次数作为风险因子,判断脱机认证次数是否在第一预设阈值范围内;

例如,第一预设阈值可以设置为10次;软件保护装置判断脱机认证次数是否在第一预设阈值范围内,具体为:软件保护装置获取软件保护装置的脱机认证次数,当获取的脱机认证次数为3时,则认定脱机认证次数在第一预设阈值范围内,当获取的脱机认证的次数为11时,则认定脱机认证次数不在第一预设阈值范围内;

具体地,当风险因子为软件保护装置联机认证的时间间隔时;

判断获取的风险因子是否在预设阈值范围内,具体为:软件保护装置获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将当前时间和预存的联机认证时间的差值作为软件保护装置联机认证的时间间隔;判断联机认证的时间间隔是否在第二预设阈值范围内;

例如,第二预设阈值可以设置为7天;软件保护装置判断联机认证的时间间隔是否在第二预设阈值范围内,具体为:软件保护装置获取当前时间和预存联机认证时间,计算获取的当前时间和预存联机认证时间之间的差值,将差值作为联机认证的时间间隔,判断差值是否超过7天,若获取的当前时间为2015年2月1日,预存的联机认证时间为2015年2月5日,则认定联机认证时间间隔在第二预设阈值范围内,若获取的当前时间为2015年2月1日,预存的联机认证时间为2015年2月10日,则认定联机认证时间间隔不在第二预设阈值范围内;

具体地,当风险因子为软件保护装置的脱机认证次数和联机认证的时间间隔时;

判断获取的风险因子是否在预设阈值范围内,具体为:软件保护装置获取脱机认证的次数、当前时间和预存的联机认证时间,根据当前时间和预存的联机认证时间获取软件保护装置联机认证的时间间隔;判断脱机认证次数是否在第一预设阈值范围内、且软件保护装置联机认证的时间间隔是否在第二预设阈值范围内;

例如,第一预设阈值具体为:10次,第二预设阈值具体为:7天;软件保护装置判断脱机认证次数和联机认证时间间隔是否在预设阈值范围内,具体为:软件保护装置获取当前脱机认证次数、当前时间和预存联机认证时间,计算获取的当前时间和预存联机认证时间之间的差值,将计算得到的差值作为软件保护装置的联机认证时间间隔,当获取的当前脱机认证次数为3,差值未超过7天,则认定脱机认证次数在预设阈值范围内;当获取的当前脱机认证次数为3,差值超过7天,则认定脱机认证次数不在预设阈值范围内;当获取的当前脱机认证的次数为11时,差值未超过7天,则认定脱机认证次数不在预设阈值范围内;

具体地,软件保护装置获取当前时间具体为:软件保护装置获取客户端的当前主机时间,或,软件保护装置从启动命令中获取客户端传入的主机时间,或,软件保护装置获取软件保护装置内部时钟的当前时间。

105、软件保护装置正常启动,将自身的工作状态修改为已启动状态;

在本实施例中,软件保护装置正常启动具体为:软件保护装置将自身的工作状态修改为已启动状态,生成成功响应数据,发送给客户端,使得客户端软件正常运行。

106、软件保护装置生成联机认证请求,将自身工作状态修改为等待联机认证状态,向客户端返回联机认证请求;

在本实施例中,联机认证请求中包括:软件保护装置生成的第一认证数据;

软件保护装置生成联机认证请求具体为:软件保护装置生成第一随机数,使用私钥对第一随机数进行签名得到第一签名结果,将第一随机数和第一签名结果组合得到第一认证数据,根据第一认证数据生成联机认证请求;

其中,软件保护装置将自身工作状态修改为等待联机认证状态,具体为:软件保护装置根据工作状态标识将未启动状态修改为等待联机认证状态。

107、软件保护装置根据联机认证响应命令获取第二认证数据;

在本实施例中,联机认证响应命令具体为:客户端根据服务器发送的包含有第二认证数据的联机认证成功数据生成的命令。

第二认证数据具体为:服务器使用私钥对生成的第二随机数和服务器的签名时间进行签名得到第二签名结果,将第二随机数、服务器的签名时间和第二签名结果组合得到第二认证数据;

第二认证数据还可以具体为:服务器使用私钥对生成的第二随机数、服务器的签名时间和软件保护装置的工作状态设定数据进行签名得到第三签名结果,将第二随机数、服务器的签名时间和第三签名结果组合得到第二认证数据。

108、软件保护装置验证第二认证数据,若验证不通过则执行109,若验证通过则执行步骤110;

在本实施例中,软件保护装置验证第二认证数据具体为:软件保护装置使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间和第二签名结果进行验证签名。

109、软件保护装置生成联机认证失败数据,将自身工作状态修改为未启动状态,向客户端返回联机认证失败数据;

在本实施例中,软件保护装置将自身工作状态修改为未启动状态,具体为:软件保护装置根据工作状态标识将等待联机认证状态修改为未启动状态。

110、软件保护装置根据联机认证响应命令获取软件保护装置的工作状态设定数据;

在本实施例中,根据联机认证响应命令获取工作状态设定数据,还可以为:软件保护装置根据联机认证响应命令获取第二认证数据,从第二认证数据中获取软件保护装置的工作状态设定数据。

111、软件保护装置根据工作状态设定数据修改自身的工作状态,若工作状态设定数据为启动则修改为已启动状态,若工作状态设定数据为锁定则修改为已锁定状态,向客户端返回状态数据;

在本实施例中,根据工作状态设定数据修改自身的工作状态具体为:软件保护装置根据工作状态设定数据中的工作状态标识修改自身的工作状态。在本实施例中,若工作状态设定数据为启动则修改为已启动状态之后还包括:当风险因子为软件保护装置的脱机认证次数时,软件保护装置将脱机认证次数计数器置为零;

当风险因子为软件保护装置联机认证的时间间隔时,软件保护装置从第二认证数据中获取服务器的签名时间,将预存的联机认证时间更新为服务器的签名时间;

当风险因子为软件保护装置的脱机认证次数和联机认证的时间间隔时,软件保护装置将脱机认证次数计数器置为零,且,软件保护装置从第二认证数据中获取服务器的签名时间,将预存的联机认证时间更新为服务器的签名时间。

在本实施例中,若工作状态设定数据为锁定则修改为已锁定状态之后还包括:软件保护装置生成已锁定数据发送给客户端,客户端软件收到数据后提示错误数据,或自动退出。

在本实施例中,软件保护装置生成的第一随机数和接收到的服务器生成的第二随机数是根据预设算法生成的。

在本实施例中,软件保护装置接收客户端发送的命令还包括:读取文件、加解密、删除、修改等命令,当软件保护装置接收到客户端发送的上述命令,且获取到的自身工作状态为已启动时,执行上述命令对应的操作得到执行结果,向客户端返回执行结果。

在本实施例中,软件保护装置接收客户端发送的命令还包括关闭命令,当软件保护装置接收到客户端发送的关闭命令,且获取到的自身工作状态为已启动时,软件保护装置将已启动状态修改为未启动,并关机。

在本实施例中,软件保护装置若遇到断电情况时,例如:客户端主机重启或者软件保护装置重新插拔,软件保护装置重新上电时,软件保护装置的工作状态为未启动状态。

在本实施例中,软件保护装置的工作状态为未启动状态时,若接收到的命令不是启动命令,则向客户端返回错误数据;软件保护装置的工作状态为等待联机认证状态时,若接收到的命令不是联机认证响应命令,则向客户端返回错误数据。

实施例二

本发明实施例二提供了一种软件保护方法,适用于具有客户端、软件保护装置和服务器的系统,本发明中客户端软件需要与软件保护装置交互才能正常运行。

如图2所示,本实施例的方法具体包括:

201、客户端获取软件保护装置的第一标识信息;

在本实施例中,客户端获取的软件保护装置的第一标识信息包括:软件保护装置的唯一标识号,还可以包括:软件保护装置厂商编号和软件保护装置用户信息。

202、客户端确定获取的第一标识信息是否存在于第一挂失列表中,若存在则执行203,若不存在则执行204;

在本实施例中,第一挂失列表具体为:客户端通过服务器下载,并保存在客户端指定位置;

其中,第一挂失列表可以是客户端定期或不定期通过服务器下载保存;

第一挂失列表中具体包括:软件保护装置标识信息、软件保护装置挂失时间。

203、客户端软件停止运行,结束。

204、客户端向软件保护装置发送启动命令;

205、软件保护装置接收客户端发送的启动命令,获取当前自身的工作状态,若获取的工作状态为已锁定状态,则执行206,若获取的工作状态为未启动状态,则执行207,若获取的工作状态为其他状态,则返回错误;

在本实施例中,软件保护装置的其他状态包括:等待联机认证状态,已启动状态。

206、软件保护装置向客户端提示软件保护装置已锁定数据,结束。

207、软件保护装置根据启动命令获取风险因子;

在本实施例中,风险因子是在软件保护装置出厂时预先设定的;具体地,风险因子可以是软件保护装置的脱机认证次数,可以是软件保护装置的联机认证的时间间隔,还可以是软件保护装置脱机认证的次数和软件保护装置的联机认证时间间隔;其中,软件保护装置的脱机认证次数是通过在软件保护装置中预置的脱机认证次数计时器得到的,软件保护装置的联机认证时间间隔具体为:软件保护装置通过获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将当前时间和预存的联机认证时间的差值作为软件保护装置联机认证的时间间隔。

208、软件保护装置判断风险因子是否在预设阈值范围内,若在则执行209,若不在则执行210;

具体地,当风险因子为软件保护装置的脱机认证次数时,

判断风险因子是否在预设阈值范围内,具体为:软件保护装置根据脱机认证计数器获取软件保护装置的脱机认证次数,将脱机认证次数作为风险因子,判断脱机认证次数是否在第一预设阈值范围内;

例如,第一预设阈值可以设置为10次;软件保护装置判断脱机认证次数是否在第一预设阈值范围内,具体为:软件保护装置获取软件保护装置的脱机认证次数,当获取的脱机认证次数为3时,则认定脱机认证次数在第一预设阈值范围内,当获取的脱机认证的次数为11时,则认定脱机认证次数不在第一预设阈值范围内;

具体地,当风险因子为软件保护装置联机认证的时间间隔时;

判断风险因子是否在预设阈值范围内,具体为:软件保护装置获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将当前时间和预存的联机认证时间的差值作为软件保护装置联机认证的时间间隔;判断联机认证的时间间隔是否在第二预设阈值范围内;

例如,第二预设阈值可以设置为7天;软件保护装置判断联机认证的时间间隔是否在第二预设阈值范围内,具体为:软件保护装置获取当前时间和预存联机认证时间,计算获取的当前时间和预存联机认证时间之间的差值,将差值作为联机认证的时间间隔,判断差值是否超过7天,若获取的当前时间为2015年2月1日,预存的联机认证时间为2015年2月5日,则认定联机认证时间间隔在第二预设阈值范围内,若获取的当前时间为2015年2月1日,预存的联机认证时间为2015年2月10日,则认定联机认证时间间隔不在第二预设阈值范围内;

具体地,当风险因子为软件保护装置的脱机认证次数和联机认证的时间间隔时;

判断风险因子是否在预设阈值范围内,具体为:软件保护装置获取脱机认证的次数、当前时间和预存的联机认证时间,根据当前时间和预存的联机认证时间获取软件保护装置联机认证的时间间隔;判断脱机认证次数是否在第一预设阈值范围内、且软件保护装置联机认证的时间间隔是否在第二预设阈值范围内;

例如,第一预设阈值具体为:10次,第二预设阈值具体为:7天;软件保护装置判断脱机认证次数和联机认证时间间隔是否在预设阈值范围内,具体为:软件保护装置获取当前脱机认证次数、当前时间和预存联机认证时间,计算获取的当前时间和预存联机认证时间之间的差值,将计算得到的差值作为软件保护装置的联机认证时间间隔,当获取的当前脱机认证次数为3,差值未超过7天,则认定脱机认证次数在预设阈值范围内;当获取的当前脱机认证次数为3,差值超过7天,则认定脱机认证次数不在预设阈值范围内;当获取的当前脱机认证的次数为11时,差值未超过7天,则认定脱机认证次数不在预设阈值范围内;

具体地,软件保护装置获取当前时间具体为:软件保护装置获取客户端的当前主机时间,或,软件保护装置从启动命令中获取客户端传入的主机时间,或,软件保护装置获取软件保护装置内部时钟的当前时间。

209、软件保护装置正常启动;

在本实施中,软件保护装置正常启动具体为:软件保护装置将自身的工作状态修改为已启动状态,生成成功响应数据,发送给客户端,使得客户端软件正常运行。

210、软件保护装置生成联机认证请求;

在本实施例中,软件保护装置生成的联机认证请求中具体包括:软件保护装置生成的第一认证数据;

其中,软件保护装置生成第一认证数据具体为:软件保护装置生成第一随机数,使用私钥对第一随机数计算签名得到第一签名结果,将第一随机数和第一签名结果组合得到第一认证数据;

软件保护装置生成联机认证请求具体为:软件保护装置根据第一认证数据生成联机认证请求。

211、软件保护装置向客户端发送联机认证请求,将自身的工作状态修改为等待联机认证状态;

在本实施例中,软件保护装置向客户端发送联机认证请求之后,还包括:软件保护装置将自身的工作状态(未启动状态)修改为等待联机认证状态。

212、客户端根据联机认证请求生成联机认证数据;

213、客户端将联机认证数据发送给服务器;

214、服务器根据联机认证数据获取第一认证数据;

215、服务器验证第一认证数据,若验证不通过则执行216,若验证通过则执行217;

216、服务器向客户端返回联机认证失败的数据,结束。

217、服务器根据联机认证数据获取软件保护装置的第二标识信息;

具体地,软件保护装置生成的联机认证请求中还包括软件保护装置的第二标识信息,服务器根据联机认证数据获取软件保护装置的第二标识信息具体为:服务器根据联机认证数据获取联机认证请求中的第二标识信息;

另一方面,客户端根据联机认证请求生成联机认证数据具体为:客户端根据获取的软件保护装置的第一标识信息和联机认证请求生成联机认证数据;服务器根据联机认证数据获取软件保护装置的第二标识信息,具体为:服务器根据联机认证数据中的第一标识信息获取软件保护装置的第二标识信息。

218、服务器确定第二标识信息是否存在于第二挂失列表中,若存在则执行219,若不存在则执行220;

在本实施例中,第二挂失列表具体包括:软件保护装置标识信息、软件保护装置挂失时间。

通常,第二挂失列表由软件保护装置厂商管理人员根据软件保护装置持有者发起的挂失申请进行更新。

219、服务器生成包含有设定已锁定工作状态数据的联机认证响应数据,执行221;

220、服务器生成包含有设定已启动工作状态数据的联机认证响应数据,执行221;

221、服务器向客户端返回联机认证响应数据;

在本实施例中,服务器向客户端返回的联机认证响应数据中具体包括:第二认证数据;

一方面,服务器生成联机认证响应数据具体为:服务器生成第二随机数,获取服务器当前时间作为服务器签名时间,使用服务器私钥对第二随机数和服务器签名时间计算签名,得到第二签名结果,将第二随机数、服务器签名时间和第二签名结果组合生成第二认证数据,服务器根据第二认证数据和工作状态设定数据生成联机认证响应数据发送给客户端;

另一方面,服务器生成联机认证响应数据具体为:服务器生成第二随机数,获取服务器当前时间作为服务器签名时间,使用服务器私钥对第二随机数、服务器签名时间、工作状态设定数据计算签名,得到第二签名结果,将第二随机数、工作状态设定数据、服务器签名时间和第二签名结果组合生成第二认证数据,服务器根据第二认证数据生成联机认证响应数据发送给客户端。

222、客户端根据联机认证响应数据向软件保护装置发送联机认证响应命令;

223、软件保护装置接收联机认证响应命令,并获取自身工作状态,若获取的自身工作状态为等待联机认证时,执行224;

224、软件保护装置根据联机认证响应命令获取第二认证数据;

225、软件保护装置验证第二认证数据,验证失败则执行226,验证成功则执行228;

在本实施例中,软件保护装置验证第二认证数据具体为:软件保护装置使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间和第二签名结果进行验证签名;

软件保护装置验证第二认证数据还具体为:软件保护装置使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间、工作状态设定数据和第二签名结果进行验证签名。

226、软件保护装置生成联机认证失败数据,将自身工作状态修改为未启动状态;

227、软件保护装置向客户端返回联机认证失败数据,结束。

228、软件保护装置根据联机认证响应命令获取软件保护装置的工作状态设定数据;

在本实施例中,根据联机认证响应命令获取工作状态设定数据,还可以为:软件保护装置根据联机认证响应命令获取第二认证数据,从第二认证数据中获取软件保护装置的工作状态设定数据。

229、软件保护装置根据工作状态设定数据修改自身的工作状态,若工作状态设定数据为启动则修改为已启动状态,若工作状态设定数据为锁定则修改为已锁定状态;

230、软件保护装置向客户端返回状态数据。

在本实施例中,若工作状态设定数据为启动则修改为已启动状态之后还包括:当风险因子为软件保护装置的脱机认证次数时,软件保护装置将脱机认证次数计数器置为零;

当风险因子为软件保护装置联机认证的时间间隔时,软件保护装置从第二认证数据中获取服务器的签名时间,将预存的联机认证时间更新为服务器的签名时间;

当风险因子为软件保护装置的脱机认证次数和联机认证的时间间隔时,软件保护装置将脱机认证次数计数器置为零,且,软件保护装置从第二认证数据中获取服务器的签名时间,将预存的联机认证时间更新为服务器的签名时间。

在本实施例中,若工作状态设定数据为锁定则修改为已锁定状态之后还包括:软件保护装置生成已锁定数据发送给客户端,客户端软件收到数据后提示错误数据,或自动退出。

本实施例中,客户端发送的命令还包括:读取文件、加解密、删除、修改等命令,当软件保护装置接收到客户端发送的上述命令,且获取到的自身工作状态为已启动时,执行上述命令对应的操作得到执行结果,向客户端返回执行结果。

实施例三

本发明实施例一提供了一种软件保护装置,该装置需要与客户端软件交互才能正常运行。如图3所示,该装置包括:

接收模块301:用于接收客户端发送的命令;

解析模块302:用于解析接收模块301接收到的客户端发送的命令;

获取模块303:用于获取当前自身的工作状态;

获取模块303:还用于当接收模块301接收到客户端发送的启动命令,且获取模块303获取到的当前自身的工作状态为未启动状态时,获取风险因子;

判断模块304:用于判断获取模块303获取的风险因子是否在预设阈值范围内;

在本实施例中,风险因子具体为:软件保护装置的脱机认证次数;

当获取模块303用于获取风险因子时,获取模块303具体用于:获取脱机认证次数,将脱机认证次数作为风险因子;

判断模块304具体用于:判断获取模块303获取的脱机认证次数是否在第一预设阈值范围内;

具体地,风险因子还包括:软件保护装置联机认证的时间间隔;

当获取模块303用于获取风险因子时,获取模块303具体用于:获取脱机认证次数、当前时间和预存的联机认证时间,根据当前时间和预存的联机认证时间获取软件保护装置联机认证的时间间隔,将脱机认证次数和联机认证的时间间隔作为风险因子;

判断模块304具体用于:判断获取模块303获取的脱机认证次数是否在第一预设阈值范围内、且软件保护装置联机认证的时间间隔是否在第二预设阈值范围内;

可选地,风险因子具体为:软件保护装置联机认证的时间间隔;

当获取模块303用于获取风险因子时,获取模块303具体用于:获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将差值作为软件保护装置联机认证的时间间隔;

判断模块304具体用于:判断软件保护装置联机认证的时间间隔是否在第二预设阈值范围内;

具体地,当获取模块303用于获取当前时间时,获取模块303具体用于:获取客户端的当前主机时间;或,从启动命令中获取客户端传入的主机时间;或,获取内部时钟的当前时间。

生成模块305:用于当判断模块304判断为风险因子不在预设阈值范围内时,生成联机认证请求;

在本实施例中,生成模块305生成的联机认证请求中包括:第一认证数据;

当生成模块305用于生成联机认证请求时,生成模块305具体用于:生成第一随机数,使用私钥对第一随机数进行签名得到第一签名结果,将第一随机数和第一签名结果组合得到第一认证数据,根据第一认证数据生成联机认证请求。

修改模块306:用于当生成模块305生成联机认证请求后,将自身的工作状态修改为等待联机认证状态;

发送模块307:用于向客户端发送生成模块305生成的联机认证请求;

获取模块303:还用于当接收模块301接收到客户端发送的联机认证响应命令,且获取模块303获取到的当前自身的工作状态为等待联机认证状态时,根据联机认证响应命令获取第二认证数据;

验证模块308:用于验证获取模块303获取的第二认证数据;

具体地,验证模块308具体用于:使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间和第二签名结果进行验证签名;

可选地,验证模块308具体用于:使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间、工作状态设定数据和第二签名结果进行验证签名。

获取模块303:还用于当验证模块308验证通过时,根据联机认证响应命令获取工作状态设定数据;

具体地,当获取模块303用于获取工作状态设定数据时,获取模块303具体用于:根据联机认证响应命令获取第二认证数据,从第二认证数据中获取工作状态设定数据。

修改模块306:还用于当获取模块303获取的工作状态设定数据为启动时将自身的工作状态修改为已启动状态;

在本实施例中,当修改模块306用于将自身的工作状态修改为已启动状态时,修改模块306具体用于:当第四获取模块303获取的工作状态设定数据为启动时,将脱机认证次数计数器置为零,并将自身的工作状态修改为已启动;

可选地,获取模块303还用于从第二认证数据中获取服务器签名时间;

当修改模块306用于将自身的工作状态修改为已启动状态时,修改模块306具体用于:当获取模块303获取的工作状态设定数据为启动时,将脱机认证次数计数器置为零,且将预存的联机认证时间更新为获取模块303获取的服务器签名时间,并将自身的工作状态修改为已启动;

进一步地,获取模块303还用于从第二认证数据中获取服务器签名时间;

当修改模块306用于将自身的工作状态修改为已启动状态时,修改模块306具体用于:当获取模块303获取的工作状态设定数据为启动时,将预存的联机认证时间更新为获取模块303获取的服务器签名时间,并将自身的工作状态修改为已启动。

修改模块306:还用于当获取模块303获取的工作状态设定数据为锁定时将自身的工作状态修改为已锁定状态;

发送模块307:还用于当修改模块306将自身的工作状态修改为已启动或已锁定状态时,向客户端发送状态数据;

生成模块305:还用于当验证模块308验证不通过时,生成联机认证失败数据;

修改模块306:还用于当生成模块305生成联机认证失败数据时,将自身的工作状态修改为未启动状态;

发送模块307:还用于向客户端发送生成模块305生成的联机认证失败数据;

在本实施例中,当判断模块304判断获取模块303获取的风险因子在预设阈值范围内时,

修改模块306还用于:将自身的工作状态修改为已启动;

发送模块307还用于:向客户端发送状态数据。

在本实施例中,联机认证响应命令具体为:客户端根据服务器发送的包含有第二认证数据的联机认证成功数据生成的。

可选地,该装置还包括:执行模块;

执行模块:用于当解析模块302解析得到的命令为执行操作命令,且获取模块303获取到的自身的工作状态为已启动时,执行相应的操作;

发送模块307:还用于向客户端发送执行模块执行得到的相应结果;

可选地,发送模块307还用于:当获取模块303获取到当前自身的工作状态为已锁定状态时,向客户端发送已锁定数据。

本实施例通过客户端侧的挂失列表检查软件保护装置是否被挂失,若未挂失则进一步对软件保护装置的脱机使用次数和/或时间限制等风险因子进行检查,若超出预设阈值范围,则通过服务器与软件保护装置进行双向签名验证,以确保软件保护装置的真实性,服务器若验证通过则进一步检查服务器侧的挂失列表中软件保护装置是否被挂失,确保软件保护装置的安全性。采用本发明提供的方法,即使软件保护装置丢失,也不能继续非法使用软件保护装置,从而保证了软件厂商和用户的利益。

以上对本发明所提供的一种软件保护方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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