买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种软件保护方法及装置_飞天诚信科技股份有限公司_201811600811.X 

申请/专利权人:飞天诚信科技股份有限公司

申请日:2018-12-26

公开(公告)日:2020-09-15

公开(公告)号:CN109684791B

主分类号:G06F21/12(20130101)

分类号:G06F21/12(20130101);G06F21/10(20130101)

优先权:

专利状态码:有效-授权

法律状态:2020.09.15#授权;2019.05.21#实质审查的生效;2019.04.26#公开

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

主权项:1.一种软件保护方法,其特征在于,所述方法包括:步骤S1、软件保护装置等待接收客户端发送命令;步骤S2、所述软件保护装置接收所述客户端发送的命令,解析所述命令,获取当前自身的工作状态,若解析得到的命令为启动命令,且自身的工作状态为未启动状态时,则执行步骤S3;若解析得到的命令为联机认证响应命令,且自身的工作状态为等待联机认证状态时,则执行步骤S4;步骤S3、所述软件保护装置获取风险因子,判断所述风险因子是否在预设阈值范围内,若不在所述预设阈值范围内则生成联机认证请求,将自身的工作状态修改为等待联机认证状态,向所述客户端返回所述联机认证请求,所述联机认证请求中包括所述软件保护装置生成的第一认证数据;步骤S4、所述软件保护装置根据联机认证响应命令获取第二认证数据,验证所述第二认证数据,若验证通过则执行步骤S5,若验证不通过则执行步骤S6,其中,所述联机认证响应命令包括服务器根据所述客户端发送的联机认证请求生成的第二认证数据;步骤S5、所述软件保护装置根据联机认证响应命令获取所述软件保护装置的工作状态设定数据,若工作状态设定数据为启动则将自身的工作状态修改为已启动状态,向客户端返回状态数据,若工作状态设定数据为锁定则将自身的工作状态修改为已锁定状态,向客户端返回状态数据;步骤S6、所述软件保护装置生成联机认证失败数据,将自身的工作状态修改为未启动状态,向客户端返回联机认证失败数据。

全文数据:一种软件保护方法及装置技术领域本发明涉及计算机软件技术领域,尤其涉及一种软件保护方法及装置。背景技术目前,使用软件保护装置实现软件安全保护和版权保护成为了最主要的手段。软件保护装置特指一种附加在计算机接口比如,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.一种软件保护方法,其特征在于,所述方法包括:步骤S1、软件保护装置等待接收客户端发送命令;步骤S2、所述软件保护装置接收所述客户端发送的命令,解析所述命令,获取当前自身的工作状态,若解析得到的命令为启动命令,且自身的工作状态为未启动状态时,则执行步骤S3;若解析得到的命令为联机认证响应命令,且自身的工作状态为等待联机认证状态时,则执行步骤S4;步骤S3、所述软件保护装置获取风险因子,判断所述风险因子是否在预设阈值范围内,若不在所述预设阈值范围内则生成联机认证请求,将自身的工作状态修改为等待联机认证状态,向所述客户端返回所述联机认证请求;步骤S4、所述软件保护装置根据联机认证响应命令获取第二认证数据,验证所述第二认证数据,若验证通过则执行步骤S5,若验证不通过则执行步骤S6;步骤S5、所述软件保护装置根据联机认证响应命令获取所述软件保护装置的工作状态设定数据,若工作状态设定数据为启动则将自身的工作状态修改为已启动状态,向客户端返回状态数据,若工作状态设定数据为锁定则将自身的工作状态修改为已锁定状态,向客户端返回状态数据;步骤S6、所述软件保护装置生成联机认证失败数据,将自身的工作状态修改为未启动状态,向客户端返回联机认证失败数据。2.根据权利要求1所述的方法,其特征在于,所述风险因子具体为:所述软件保护装置的脱机认证次数;所述软件保护装置获取风险因子,判断所述风险因子是否在预设阈值范围内,具体为:所述软件保护装置获取脱机认证次数,将脱机认证次数作为风险因子,判断脱机认证次数是否在第一预设阈值范围内。3.根据权利要求2所述的方法,其特征在于,所述若工作状态设定数据为启动则修改为已启动状态,具体为:若工作状态设定数据为启动,所述软件保护装置将脱机认证次数计数器置为零,并将自身的工作状态修改为已启动状态。4.根据权利要求2所述的方法,其特征在于,所述风险因子还包括:所述软件保护装置联机认证的时间间隔;所述软件保护装置获取风险因子,判断风险因子是否在预设阈值范围内,具体为:所述软件保护装置获取脱机认证的次数、当前时间和预存的联机认证时间,根据当前时间和预存的联机认证时间获取软件保护装置联机认证的时间间隔;判断所述脱机认证次数是否在第一预设阈值范围内、且所述软件保护装置联机认证的时间间隔是否在第二预设阈值范围内。5.根据权利要求4所述的方法,其特征在于,所述若工作状态设定数据为启动则修改为已启动,具体为:若工作状态设定数据为启动,所述软件保护装置将脱机认证次数计数器置为零,且,从第二认证数据中获取服务器签名时间,将预存的联机认证时间更新为服务器签名时间,并将自身的工作状态修改为已启动。6.根据权利要求1所述的方法,其特征在于,所述风险因子具体为:软件保护装置联机认证的时间间隔;所述软件保护装置获取风险因子,判断所述风险因子是否在预设阈值范围内,具体为:所述软件保护装置获取当前时间和预存的联机认证时间;计算当前时间和预存的联机认证时间的差值,将当前时间和预存的联机认证时间的差值作为软件保护装置联机认证的时间间隔;判断所述联机认证的时间间隔是否在第二预设阈值范围内。7.根据权利要求6所述的方法,其特征在于,所述若工作状态设定数据为启动则修改为已启动,具体为:若工作状态设定数据为启动,所述软件保护装置从第二认证数据中获取服务器签名时间,将预存的联机认证时间更新为服务器签名时间,并将自身的工作状态修改为已启动。8.根据权利要求4或6所述的方法,其特征在于,所述软件保护装置获取当前时间具体为:所述软件保护装置获取所述客户端的当前主机时间;或,所述软件保护装置从所述启动命令中获取所述客户端传入的主机时间;或,所述软件保护装置获取软件保护装置内部时钟的当前时间。9.根据权利要求1所述的方法,其特征在于,所述联机认证请求中包括:所述软件保护装置生成的第一认证数据;所述软件保护装置生成联机认证请求具体为:所述软件保护装置生成第一随机数,使用私钥对所述第一随机数进行签名得到第一签名结果,将所述第一随机数和第一签名结果组合得到第一认证数据,根据所述第一认证数据生成联机认证请求。10.根据权利要求9所述的方法,其特征在于,所述软件保护装置验证所述第二认证数据具体为:所述软件保护装置使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间和第二签名结果进行验证签名。11.根据权利要求9所述的方法,其特征在于,所述步骤S5中,所述根据联机认证响应命令获取所述软件保护装置的工作状态设定数据,具体为:所述软件保护装置根据联机认证响应命令获取第二认证数据,从第二认证数据中获取所述软件保护装置的工作状态设定数据。12.根据权利要求11所述的方法,其特征在于,所述软件保护装置验证所述第二认证数据具体为:所述软件保护装置使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间、所述软件保护装置的工作状态设定数据和第二签名结果进行验证签名。13.根据权利要求1所述的方法,其特征在于,所述软件保护装置判断所述风险因子是否在预设阈值范围内,若在预设阈值范围内所述软件保护装置将自身的工作状态修改为已启动,向客户端返回状态数据。14.根据权利要求1所述的方法,其特征在于,所述联机认证响应命令具体为:所述客户端根据服务器发送的包含有第二认证数据的联机认证成功数据生成的。15.根据权利要求1所述的方法,其特征在于,所述步骤S2中还包括:若解析得到的命令为执行操作命令,且自身的工作状态为已启动状态时,则执行相应的操作,向客户端返回相应的结果。16.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述获取当前自身的工作状态为已锁定状态时,向客户端返回已锁定数据。17.一种软件保护装置,其特征在于,所述装置包括:接收模块:用于接收客户端发送的命令;解析模块:用于解析所述接收模块接收到的客户端发送的命令;获取模块:用于获取当前自身的工作状态;所述获取模块:还用于当所述接收模块接收到客户端发送的启动命令,且所述获取模块获取到的当前自身的工作状态为未启动状态时,获取风险因子;判断模块:用于判断所述获取模块获取的风险因子是否在预设阈值范围内;生成模块:用于当所述判断模块判断为所述风险因子不在预设阈值范围内时,生成联机认证请求;修改模块:用于当所述生成模块生成联机认证请求后,将自身的工作状态修改为等待联机认证状态;发送模块:用于向客户端发送所述生成模块生成的联机认证请求;所述获取模块:还用于当所述接收模块接收到客户端发送的联机认证响应命令,且所述获取模块获取到的当前自身的工作状态为等待联机认证状态时,根据联机认证响应命令获取第二认证数据;验证模块:用于验证所述获取模块获取的第二认证数据;所述获取模块:还用于当所述验证模块验证通过时,根据联机认证响应命令获取所述工作状态设定数据;所述修改模块:还用于当所述获取模块获取的工作状态设定数据为启动时将自身的工作状态修改为已启动状态;所述修改模块:还用于当所述获取模块获取的工作状态设定数据为锁定时将自身的工作状态修改为已锁定状态;所述发送模块:还用于当所述修改模块将自身的工作状态修改为已启动或已锁定状态时,向客户端发送状态数据;所述生成模块:还用于当所述验证模块验证不通过时,生成联机认证失败数据;所述修改模块:还用于当所述生成模块生成联机认证失败数据时,将自身的工作状态修改为未启动状态;所述发送模块:还用于向客户端发送所述生成模块生成的联机认证失败数据。18.根据权利要求17所述的装置,其特征在于,所述风险因子具体为:所述软件保护装置的脱机认证次数;当所述获取模块用于获取风险因子时,所述获取模块具体用于:获取脱机认证次数,将脱机认证次数作为风险因子;所述判断模块具体用于:判断所述获取模块获取的脱机认证次数是否在第一预设阈值范围内。19.根据权利要求18所述的装置,其特征在于,当所述修改模块用于将自身的工作状态修改为已启动状态时,所述修改模块具体用于:当所述第四获取模块获取的工作状态设定数据为启动时,将脱机认证次数计数器置为零,并将自身的工作状态修改为已启动状态。20.根据权利要求18所述的装置,其特征在于,所述风险因子还包括:所述软件保护装置联机认证的时间间隔;当所述获取模块用于获取风险因子时,所述获取模块具体用于:获取脱机认证次数、当前时间和预存的联机认证时间,根据当前时间和预存的联机认证时间获取软件保护装置联机认证的时间间隔,将脱机认证次数和联机认证的时间间隔作为风险因子;所述判断模块具体用于:判断所述获取模块获取的脱机认证次数是否在第一预设阈值范围内、且所述软件保护装置联机认证的时间间隔是否在第二预设阈值范围内。21.根据权利要求20所述的装置,其特征在于,所述获取模块还用于从第二认证数据中获取服务器签名时间;当所述修改模块用于将自身的工作状态修改为已启动状态时,所述修改模块具体用于:当所述获取模块获取的工作状态设定数据为启动时,将脱机认证次数计数器置为零,且将预存的联机认证时间更新为所述获取模块获取的服务器签名时间,并将自身的工作状态修改为已启动状态。22.根据权利要求17所述的装置,其特征在于,所述风险因子具体为:软件保护装置联机认证的时间间隔;当所述获取模块用于获取风险因子时,所述获取模块具体用于:获取当前时间和预存的联机认证时间,计算当前时间和预存的联机认证时间的差值,将所述差值作为软件保护装置联机认证的时间间隔;所述判断模块具体用于:判断所述软件保护装置联机认证的时间间隔是否在第二预设阈值范围内。23.根据权利要求22所述的装置,其特征在于,所述获取模块还用于从第二认证数据中获取服务器签名时间;当所述修改模块用于将自身的工作状态修改为已启动状态时,所述修改模块具体用于:当所述获取模块获取的工作状态设定数据为启动时,将预存的联机认证时间更新为所述获取模块获取的服务器签名时间,并将自身的工作状态修改为已启动。24.根据权利要求20或22所述的装置,其特征在于,当所述获取模块用于获取当前时间时,所述获取模块具体用于:获取所述客户端的当前主机时间;或,从所述启动命令中获取所述客户端传入的主机时间;或,获取内部时钟的当前时间。25.根据权利要求17所述的装置,其特征在于,所述生成模块生成的联机认证请求中包括:第一认证数据;当所述生成模块用于生成联机认证请求时,所述生成模块具体用于:生成第一随机数,使用私钥对所述第一随机数进行签名得到第一签名结果,将所述第一随机数和第一签名结果组合得到第一认证数据,根据所述第一认证数据生成联机认证请求。26.根据权利要求25所述的方法,其特征在于,所述验证模块具体用于:使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间和第二签名结果进行验证签名。27.根据权利要求25所述的方法,其特征在于,当所述获取模块用于获取所述工作状态设定数据时,所述获取模块具体用于:根据所述联机认证响应命令获取第二认证数据,从所述第二认证数据中获取所述工作状态设定数据。28.根据权利要求27所述的方法,其特征在于,所述验证模块具体用于:使用服务器侧公钥对第二认证数据中的第二随机数、服务器的签名时间、所述工作状态设定数据和第二签名结果进行验证签名。29.根据权利要求17所述的装置,其特征在于,当所述判断模块判断所述获取模块获取的风险因子在预设阈值范围内时,所述修改模块还用于:将自身的工作状态修改为已启动;所述发送模块还用于:向客户端发送状态数据。30.根据权利要求17所述的装置,其特征在于,所述联机认证响应命令具体为:所述客户端根据服务器发送的包含有第二认证数据的联机认证成功数据生成的。31.根据权利要求17所述的装置,其特征在于,所述装置还包括:执行模块;所述执行模块:用于当所述解析模块解析得到的命令为执行操作命令,且所述获取模块获取到的自身的工作状态为已启动时,执行相应的操作;所述发送模块:还用于向客户端发送所述执行模块执行得到的相应结果。32.根据权利要求17所述的装置,其特征在于,所述发送模块还用于:当所述获取模块获取到当前自身的工作状态为已锁定状态时,向客户端发送已锁定数据。

百度查询: 飞天诚信科技股份有限公司 一种软件保护方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。