一种软件的保护方法、装置及设备的制作方法

文档序号:6470315阅读:188来源:国知局

专利名称::一种软件的保护方法、装置及设备的制作方法
技术领域
:本发明属于通讯安全领域,尤其涉及一种软件的保护方法、装置及设备。技术背景硬件加密锁(也称为硬件加密卡,俗称加密狗)是为软件开发商提供的一种智能型软件保护工具,是安装在计算机并行口或USB口上的特殊硬件,包括一套适用于各种语言的接口软件和工具软件。硬件加密锁是一种基于硬件的加密技术,其目的是对软件进行加密保护,使软件不被非法使用。采用硬件加密锁对软件进行加密保护的过程如下预先设置查询值和返回值之间的对应关系。软件通过硬件加密锁l是供的应用程序接口(ApplicationProgramInterface,API),如Query函数,调用石更件加密锁中预先存储的加密算法,并将查询值作为该加密算法的输入参^t,硬_件加密锁中的加密算法对输入参数进行一系列处理后,返回与输入参数对应的返回值,软件通过比较硬件加密锁的返回值与预先设置的对应的返回值,即可判断是否存在正确的硬件加密锁,从而达到加密保护软件的目的。^^#^^^#加密锁一般只提供有限的算法存储单元,不同的算法存储单元对应一种加密算法。软件开发商在对软件进行加密时,通常只选择固定的几种加密算法,每次软件与硬件加密锁之间的通讯信息均是相同的,通过窃听软件与硬件加密锁之间的通讯信息,即可轻易的破解被加密保护的软件,导致软件被盗版。
发明内容本发明的目的在于提供一种软件的保护方法,旨在解决现有的被加密软件与硬件加密锁之间的通讯信息容易被窃听,造成加密软件轻易破解的问题。本发明是这样实现的,一种软件的保护方法,所述方法包括下述步骤获取运行被加密操作系统的当前时间信息;调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值;根据所述加密算法的返回值判定是否对被加密软件进行保护。本发明的另一目的在于提供一种软件保护装置,所述装置包括存储单元,用于存储查询值与返回值之间的对应关系;时间信息获取单元,用于获^Ot行^^口密软件的操作系统的当前时间信息;算法调用单元,用于调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值;软件保护判断单元,用于4艮据所述算法调用单元得到的加密算法的返回值判定是否对被加密软件进行保护。本发明的另一目的在于提供一种包括所述软件保护装置的软件保护设备。在本发明实施例中,通过获取操作系统的时间信息,调用硬件加密锁中与所述时间信息对应的加密算法,只有在根据加密算法的返回值判定具有合法的硬件加密锁时,才能运行或者使用软件,从而实现对软件的保护;同时由于被加密软件与硬件加密锁之间的通讯信息是随着操作系统的时间信息的变化而动态改变的,从而有效降低了软件与硬件加密锁之间的通讯信息被窃听的风险。图1是本发明实施例提供的软件的保护方法的实现流程图;图2是本发明实施例提供的硬件加密锁的结构示意图;图3是本发明实施例提供的采用图2所示的硬件加密锁的软件保护方法的实现流程图;图4是本发明实施例提供的软件保护装置的结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例i又仅用以解释本发明,并不用于限定本发明。在本发明实施例中,通过获^:行初L^密软件的操作系统的当前时间信息,将获取的当前时间信息作为调用加密算法的查询值,或者根据获取的当前时间信息自定义调用加密算法的查询值,调用硬件加密锁中与获取的当前时间信息对应的加密算法,根据加密算法的返回值,即可判断是否存在合法的硬件加密锁,从而实现对软件的加密保护。图1示出了本发明实施例提供的采用硬件加密锁的软件保护方法的实现流程,详述如下在步骤SIOI中,获取运行被加密软件的操作系统的时间信息。在本发明实施例中,被加密软件可以通过调用运行被加密软件的操作系统的时间函数来获取该操作系统的时间信息。其中时间信息为年份信息、月份信息、日期信息、时刻信息中的一种或者多种组合。在获取运行被加密软件的当前时间信息时,可以获取多个不同的时间信息。在本发明另一实施例中,在获取运行被加密软件的操作系统的当前时间信息时,可以获取一长时间信息和一短时间信息,其中短时间信息在长时间信息范围内,如可以获取4喿作系统的当前年份信息和当前月份信息,也可以获取操作系统的当前年份信息和月份信息的组合,同时获取操作系统的当前年份信息。如可以采用被加密软件所使用的开发语言提供的时间函数获取4喿作系统的当前时间信息,如可以使用如下Java语言中时间函数获取时间信息SimpleDateFormatmyFmt=newSimpleDateFormat("yyyy-MM-dd—HH-mm-ss");StringstrDate=myFmtformat(newDate(System.currentTimeMillis()));也可以使用如下C射吾言中的时间函数获取时间信息DateTimedt=DateTime.Now;在步骤S102中,调用硬件加密锁中与获取的时间信息对应的算法单元中的加密算法,得到加密算法的返回值。在本发明实施例中,可以通过硬件加密锁提供的API接口,如Query(查询值)函数调用硬件加密锁中与获取的时间信息对应的加密算法。在本发明实施例可以直接将获取的时间信息作为查询值,为了提高加密强度,也可以根据获取的时间信息自定义查询值。当调用加密算法时的查询值不一致时,Query(查询值)函数具有不同的返回值。在本发明另一实施例中,当硬件加密锁中设置有多个具有不同加密算法的算法单元时,可以预先设置算法单元与时间信息的对应关系。此时获取运行#皮加密软件的操作系统的当前时间信息时,可以获取多个时间信息,此时分别调用硬件加密锁中与获取的时间信息对应加密算法单元中的加密算法,得到每个加密算法的返回值。在本发明另一实施例中,当获取的多个时间信息包括一长时间信息和一短时间信息时,分别调用与该长时间信息对应的算法单元中的加密算法,以及与该短时间信息对应的算法单元中的加密算法,得到与长时间信息对应的加密算法的返回值以及与短时间信息对应的加密算法的返回值。在本发明实施例中长时间信息可以是年伤"f言息,短时间信息可以是月个分信息,当然,长时间信息可以是月份信息,短时间信息可以是日期信息,依此类件加密锁中与获取的年4分信息对应的算法单元中的加密算法,得到相应的加密算法返回值,同时根据获取的当前月份信息调用硬件加密锁中与获取的月份信息对应的算法单元中的加密算法,得到相应的加密算法返回值。在本发明实施例中,当被力口密软件与硬件加密锁分离时,被加密软件可以远程调用硬件加密锁提供的API接口函数,以调用硬件加密锁中的对应算法单元中的加密算法。在步骤S103中,冲艮据加密算法的返回值确定是否对软件进行保护。在本发明实施例中,预先在软件的数据库中存储查询值与返回值之间的对应关系,如4艮设查询值与返回值之间的对应关系如下表所示<table>tableseeoriginaldocumentpage9</column></row><table>上述表中查询值与返回值之间的对应关系表示,当查询值为1时,则对应的返回值为5,当查询值为2时,则对应的返回值为9,依此类推。此时根据加密算法的返回值确定是否对软件进行保护的步骤具体为判断加密算法的返回值是否与预先存储的查询值与返回值之间的对应关系中的相应返回值是否一致,如果一致,则判定具有合法的硬件加密锁,此时可以继续运行或者使用软件,如果不一致,则判定不具有合法的硬件加密锁,此时可以停止运行软件或者限制使用软件,从而达到保护软件的目的。在本发明实施例中,当获取的时间信息不同时,将调用不同的加密算法,针对同一个查询值,这些加密算法的返回值不相同。同时直接将时间信息作为调用加密算法时的查询值,或者根据时间信息自定义调用加密算法时的查询值,由于查询值是随着操作系统的时间信息的变化而动态变化的,从而使加密算法的返回值也随着操作系统的时间信息的变化而动态变化。从而采用上述方法对软件进行保护时,被加密的软件与硬件加密锁之间的通讯信息随着时间信息的变化而动态变化,有效的降低了被加密的软件与硬件加密锁之间的通讯信息被窃听,而导致的软件被盗版的风险。在本发明另一实施例中,当在步骤S102中调用了多个与获取的时间信息对应的加密算法时,冲艮据多个加密算法的返回值确定是否对软件进行保护的步骤具体为判断每个加密算法的返回值是否与预先存储查询值与返回值之间的对应关系中的相应返回值一致,如果一致,则判定具有合法的硬件加密锁,此时可以继续运行或者使用软件,如果不一致,则判定不具有合法的硬件加密锁,此时可以停止运行软件或者限制使用软件。在本发明另一实施例中,当硬件加密锁中设置有多个具有不同加密算法的算法单元时,可以通过设置时间信息中的年份信息、月份信息、日期信息、时刻信息等与硬件加密锁中的算法单元之间的对应关系,来对软件进行保护。如当硬件加密锁中设置有13个具有不同加密算法的算法单元,且其中一个算法单元与年份信息对应,其他12个算法单元分別与月伤"信息对应,则此时,分别获取运行被力。密软件的操作系统的年份信息和月份信息;调用硬件加密锁中与获取的年^f分信息对应的算法单元中的加密算法,同时调用硬件加密锁中与获取的月份信息对应的算法单元中的加密算法;根据两个算法的返回值判断是否具有合法的硬件加密锁。依此类推,通过任意设置算法单元与时间信息之间的对应关系,可以调用^_件加密锁中所有与获取的时间信息对应的算法单元中的加密算法,当硬件加密锁中设置的加密算法单元越多时,软件的安全性也越高。以下以年份信息和月份信息的组合为例,对本发明实施例进行详细的说明。请参阅图2,在硬件加密锁中设置至少13个算法单元,其中包括一年份算法单元和12个月份算法单元。其中年份算法单元中存储的加密算法称为年份算法,该年份算法单元与年份信息对应。12个月份算法单元中存储的算法称为月份算法,该12个月份算法单元分别与12个月份信息对应,分别称为1月算法单元、2月算法单元、3月算法单元........12月算法单元。各算法单元的位置可以任意,即各算法单元的地址可以连续、并按顺序排列,如图2所示,也可以不连续、不按顺序排列。采用上述硬件加密锁对软件进行保护的流程如图3所示,详述如下在步骤S301中,获取运行被加密软件的操作系统的当前月份信息。在本发明实施例中,可以通过调用运行被加密软件的操作系统的时间函数来获取该操作系统的当前月份信息。在步骤S302中,调用硬件加密锁中与获取的当前月份信息对应的月份算法,得到月份算法返回值。在本发明实施例中,当获取的当前月4分信息不一致时,则调用的硬件加密锁中的月份算法也不一致,如当获取的当前月份信息为1月时,则调用硬件加密锁中1月算法单元中的加密算法,依次类推,在此不再赘述。在调用硬件加密锁中对应的月份算法时,可以通过硬件加密锁提供的API接口调用,如通过Query(data)函数调用硬件加密锁中对应的月份算法,其中data为查询值。在本发明实施例中,调用对应的月份算法时,可以直接将获取的月份信息作为调用对应的月份算法时的查询值,也可以根据获取的月份信息自由定义调用对应的月份算法时的查询值。调用硬件加密锁中的月份算法后,得到月份算法返回值。在步骤S303中,判断硬件加密锁的月份算法返回值是否正确,如果正确,执行步骤S304,否则,判定不具有合法的硬件加密锁,不再执行以下步骤。其中判断硬件加密锁的月份算法返回值是否正确的步骤具体为判断硬件加密锁的月份算法返回值与预先存储的查询值与返回值之间的对应关系中的相应返回值是否一致,如果一致,则执行步骤S304,如果不一致,则判定不具有合法的硬件加密锁,不再执行以下步骤,此时可以停止运行软件或者限制使用软件。在步骤S304中,获取运行被加密软件的操作系统的当前年份信息。在本发明实施例中,可以通过调用运行被力口密软件的操作系统的时间函数来获取该操作系统的当前年份信息。在步骤S305中,调用硬件加密锁中与获取的当前年份信息对应的年份算法,得到年份算法返回值。在本发明实施例中,可以通过硬件加密锁提供的API接口调用硬件加密锁中与获取的当前年份信息对应的年份算法,如通过Queiy(data)函数调用硬件加密锁中对应的年份算法。其中data值即为获取的当前年份值。当年份值不同时,则Query函数的返回值也不同。在本发明实施例中,可以直接将获取的年份信息作为调用对应年份算法时的查询值,也可以根据获取的年份信息自定义调用对应的年份算法时的查询值。在步骤S306中,判断硬件加密锁的年份算法返回值是否正确,如果正确,则判定具有合法的硬件加密锁,此时可以继续运行或者使用软件,否则,判定不具有合法的硬件加密锁,此时,可以停止运行软件或者限制使用软件。在本发明另一实施例中,也可以先获取运行被加密软件的操作系统的当前年份信息,调用硬件加密锁中的对应的年份算法,得到年份算法返回值;再获取运行被加密软件的操作系统的当前月份信息,调用硬件加密锁中的对应的月份算法,得到月份算法返回值;当年份算法返回值和月份算法返回值均正确时,则判定具有合法的硬件加密锁,否则判定不具有合法的硬件加密锁。在本发明实施例中,通过利用操作系统的时间信息,调用硬件加密锁中与该时间信息对应的加密算法,并将根据该时间信息得到的查询值作为该加密算法的输入参数,根据加密算法的返回值即可判断是否具有合法的硬件加密锁,从而实现对软件的保护。由于被加密的软件与硬件加密锁之间的通讯信息是随着操作系统的时间信息的变化而动态变化的,>火而可以有效的防止通过窃听计算机与硬件加密锁之间的通讯信息,来破解软件,有效的P争低了软件被破解的风险,在保护软件的同时,防止了软件被盗版。图4示出了本发明实施例提供的软件保护装置的结构示意,为了便于说明,仅示出了与本发明实施例相关的部分。该软件保护装置可以是内置于软件保护设备中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的桂件集成到软件保护设备中或者运行于软件保护设备的应用系统中,其中存储单元41存储查询值与返回值之间的对应关系。在本发明实施例中,查询值可以直接釆用月份信息、年份信息、日期信息、时刻信息中的一种或者多种组合。时间信息获取单元42获^:行*^密软件的操作系统的当前时间信息。在本发明实施例中,可以通过调用运行被加密软件的操作系统的时间函数来获取该操作系统的当前时间信息。其中时间信息包括年份信息、月份信息、日期信息、时刻信息中的一种或者多种组合。算法调用单元43调用硬件加密锁中与时间信息获取单元42获取的当前时间信息对应的加密算法,并得到该加密算法的返回值。在本发明实施例中,算法调用单元43可以通过硬件加密锁提供的API接口,如通过Query(data)函数调用硬件加密锁中与获取的当前时间信息对应的加密算法。其中data为调用对应的加密算法时的查询值,可以直接采用获取的时间信息作为查询值,也可以根据获取的时间信息自定义查询值。当调用算法时的查询值不一致时,将得到不同的返回值。在本发明另一实施例中,当硬件加密锁中设置有多个算法单元时,可以预先设置算法单元与时间信息的对应关系,此时,算法调用单元43调用硬件加密锁中与时间信息获取单元42获取的当前时间信息对应的所有加密算法,得到多个返回^直。在本发明另一实施例中,当硬件加密锁中设置有多种算法单元,且预先设置各算法单元与时间信息中的年份信息、月^f分信息、日期信息或者时刻信息中的一种或者多种组合之间的对应关系,此时,时间信息获取单元42获取运行被加密软件的年份信息、月份信息、日期信息或者时刻信息中的一种或多种,算法调用单元43分别调用硬件加密锁中与获取的年份信息、月份信息、日期信息或者时刻信息对应的加密算法,得到对应的返回值。中存储的查询值与返回值之间的对应关系,判断是否具有合法的硬件加密锁。其具体过程如上所述,在此不再赘述。在本发明实施例中,通过获取操作系统的当前时间信息,调用硬件加密锁中与当前时间信息对应的加密算法,并将该时间信息作为加密算法的查询值,或者根据该时间信息自定义加密算法的查询值,再根据调用的加密算法的返回值判断是否具有合法的硬件加密锁,当不具有合法的硬件加密锁时,限制使用或者停止运行该软件,从而达到保护软件的目的;同时由于获取的时间信息不同时,将调用不同的加密算法,且加密算法的查询值也不同,使调用加密算法后的返回值也不同,从而使被力。密的软件与硬件加密锁之间的通讯信息随着操作系统的时间信息的变化而动态变化,从而有效的避免了通过窃听被加密的软件与硬件加密锁之间的通讯信息来破解软件的现象,使软件难以被盗版。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。权利要求1、一种软件的保护方法,其特征在于,所述方法包括下述步骤获取运行被加密软件的操作系统的当前时间信息;调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值;根据所述加密算法的返回值判定是否对被加密软件进行保护。2、如权利要求1所述的方法,其特征在于,在调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法时,将获取的当前时间信息作为调用加密算法时的查询值,或者根据获取的当前时间信息自定义调用加密算法时的查询值。3、如权利要求l所述的方法,其特征在于,在获取操作系统的当前时间信息时,获取操作系统的多个时间信息,此时,所述步骤调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值具体为分别调用硬件加密锁中与获取的时间信息对应的算法单元中的加密算法,得到每个加密算法的返回值。4、如权利要求3所述的方法,其特征在于,在获取操作系统的当前时间信息时,获取的多个时间信息包括一长时间信息和一短时间信息,所述短时间信息在所述长时间信息范围内,此时,所述步骤调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值具体为调用硬件加密锁中与所述长时间信息对应的算法单元中的加密算法,得到与所述长时间信息对应的加密算法的返回值;调用硬件加密锁中与所迷短时间信息对应的算法单元中的加密算法,得到与所述短时间信息对应的加密算法的返回值。5、如权利要求1至4任一权利要求所述的方法,其特征在于,所述获取的当前时间信息包括年份信息、月份信息、日期信息、时刻信息中的一种或者多种组合。6、如权利要求5所述的方法,其特征在于,当获取的长时间信息为当前年份信息,获取的短时间信息为当前月份信息时,所述调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值的步骤具体为调用硬件加密锁中与获取的当前年份信息对应的算法单元中的加密算法,得到年份信息返回值;调用硬件加密锁中与获取的当前月份信息对应的算法单元中的加密算法,得到月份信息返回值。7、如权利要求1至4任一权利要求所述的方法,其特征在于,通过硬件加密锁提供的应用程序接口调用硬件加密锁中与获取的当前时间信息对应的加密算法,得到加密算法的返回值。8、如权利要求1至4任一权利要求所述的方法,其特征在于,根据所述加密算法的返回值判定是否对软件进行保护的步骤具体为判断所述加密算法的返回值是否与预先存储的查询值和返回值之间的对应关系中的对应返回值一致,如果不一致,则对被加密软件进行保护。9、一种软件保护装置,其特征在于,所述装置包括存储单元,用于存储查询值与返回值之间的对应关系;时间信息获取单元,用于获取运新祐J口密软件的操作系统的当前时间信息;算法调用单元,用于调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值;软件保护判断单元,用于根据所述算法调用单元得到的加密算法的返回值判定是否对被加密软件进行保护。10、如权利要求9所述的装置,其特征在于,当所述时间信息获取单元获取了多个时间信息时,所述算法调用单元分别调用^/f牛加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到每个加密算法的返回值。11、如权利要求IO所述的装置,其特征在于,当所述时间信息获取单元获取的多个时间信息包括一长时间信息和一短时间信息,所述短时间信息在所述长时间信息范围内时,所述算法调用单元分别调用硬件加密锁中与所述长时间信息对应的算法单元中的加密算法以及与所述短时间信息对应的算法单元中的加密算法,得到与所述长时间信息对应的加密算法的返回值和与所述短时间信息对应的加密算法的返回值。12、如权利要求9所述的装置,其特征在于,所述算法调用单元在调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法时,将获取的当前时间信息作为调用加密算法时的查询值,或者根据获取的当前时间信息自定义调用加密算法时的查询值。13、一种包括权利要求9至12任一权利要求所述的软件保护装置的软件保护设备。全文摘要本发明适用于通讯安全领域,提供了一种软件的保护方法、装置及设备,所述方法包括下述步骤获取运行被加密软件的操作系统的当前时间信息;调用硬件加密锁中与获取的当前时间信息对应的算法单元中的加密算法,得到加密算法的返回值;根据所述加密算法的返回值判定是否对软件进行保护。本发明实施例通过获取操作系统的时间信息,调用硬件加密锁中与该时间信息对应的加密算法,实现对软件的保护,同时有效的降低了被加密软件与硬件加密锁之间的通讯信息被窃听的风险。文档编号G06F21/22GK101404056SQ20081021699公开日2009年4月8日申请日期2008年10月29日优先权日2008年10月29日发明者刘学鹏申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1