利用加密锁对软件进行保护的方法及加密锁的制作方法

文档序号:6400954阅读:165来源:国知局
专利名称:利用加密锁对软件进行保护的方法及加密锁的制作方法
技术领域
本发明涉及软件保护领域,特别涉及一种利用加密锁对软件进行保护的方法及加密锁。
背景技术
软件作为一种特殊的产品,由于其纯数字化的特征,从问世起就一直遭受盗版的困扰。盗版的存在不仅给软件开发者造成了巨大的损失,也极大阻碍了整个软件行业的发展。因此,几乎所有的软件都采取了相应的技术措施来避免软件遭受破解和盗版,其中最为有效的就是基于硬件的加密锁技术。加密锁是一个连接在计算机并口或USB 口上的硬件设备,内部包含特定的功能,例如一部分存储空间、一些密码算法或者一些用户自定义的算法或功能。在软件发行之前,软件开发者修改自己的软件代码,使得软件在运行过程中需要使用到加密锁内部的一些功能,这样软件离开加密锁就无法运行,同时加密锁作为一种硬件设备,复制的难度较大,从而起到防止盗版软件非法传播的作用。当前市场上主要的加密锁包括:美国SafeNet公司的Sentinel Superpro>以色列Aladdin公司的Hasp HL、中国北京深思洛克数据保护中心的精锐IV以及德国W1-Bu公司的WIBU-Key等。所有这些加密锁都提供了内置的存储空间、私有或者公开的密码算法,当软件运行过程中,可以调用这些功能来验证是否属于正版。软件版权保护的强度取决于两个方面:第一是加密锁的可靠性,包括其硬件的安全性、内部算法的安全性;第二是软件与加密锁之间结合的紧密性。与此相对应,软件的破解也是从这两个方面入手。通常来说,如果加密锁的硬件足够安全,例如选用安全级别很高的智能卡芯片,并采用国际通用的密码学算法或者用户自定义的相对较为复杂的算法,硬件的安全性是比较高的。也就是说,破解者很难从加密锁自身入手来制作软件的盗版。多数情况下,破解者会利用各种软件调试工具,对软件运行过程中与加密锁的通信进行跟踪,从而得知软件对加密锁的使用意图,然后通过软件打补丁、模拟加密锁的功能等方式来制作盗版。也就是说,软件版权保护的强度,实际上取决于软件与加密锁捆绑的紧密程度,这种捆绑越紧密,破解者就越难以实现加密锁的剥离(即盗版)。然而,由于操作系统的开放性,软件的全部执行过程是在破解者的监控之下的,换而言之,破解者可以对软件执行过程的任何一个环节进行跟踪,包括软件与加密锁的通信过程,以及调用加密锁后的结果处理过程。而现有方法中,加密锁是属于从属设备,每次调用过程都是被动的根据应用软件的输入给出对应的结果,软件调用和硬件输出的过程中没有时间限制,这种方式下,破解者破解某个加密点的时候,只需要动态调试软件,在加密点附近设置断点,并耐心分析这部分的软件功能、调用规则及返回结果使用方式,从而实现破解
发明内容
本发明的目的是提供一种利用加密锁对软件进行保护的方法及加密锁,以解决现有技术中因软件调用和硬件输出的过程中没有时间限制而导致软件容易被破解的问题。为了实现上述目的,本发明提供了一种利用加密锁对软件进行保护的方法,所述软件运行在终端设备中,所述终端设备与加密锁相互通信连接,所述方法包括以下步骤:S1:软件向加密锁发送开始计时指令;S2:加密锁接收到所述开始计时指令后检查自身是否处于自锁状态,如果是,则加密锁不能被调用,结束执行;如果否,则执行步骤S3 ;S3:加密锁启动内置的计时器开始累计时间,并向软件发送允许调用指令;S4:软件接收到所述允许调用指令后向加密锁发送功能调用指令和所需数据;S5:加密锁接收到所述功能调用指令和所需数据后检查所述计时器当前累计的时间是否超过预定值,如果是,则执行步骤S10,如果否,则执行步骤S6 ;S6:加密锁对所述所需数据进行处理后将处理结果返回给软件;S7:软件接收到所述返回结果后向加密锁发送终止计时指令;S8:加密锁接收到所述终止计时指令后检查所述计时器当前累计的时间是否超过所述预定值,如果是,则执行步骤S10,如果否,则执行步骤S9 ;S9:所述计时器停止计时,加密锁等待下次调用;SlO:加密锁进入自锁状态。作为优选,所述终端设备与加密锁之间的通信方式为串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙通信、红外通信、无线保真通信或者IS07816通信。作为优选,步骤S2中,如果加密锁处于自锁状态,则还包括:加密锁向软件返回预定义的错误码的步骤。作为优选,步骤S3中,所述计时器启动时先清零上次调用时累计的时间。作为优选,步骤S9中,所述计时器停止计时后将累计的时间清零。为了实现上述目的,本发明还提供了一种加密锁,用于对软件进行保护,所述软件运行在终端设备中,所述终端设备与加密锁相互通信连接,所述加密锁包括第一判断模块、通信模块、自锁模块、数据处理模块、计时器和第二判断模块;所述第一判断模块用于在所述加密锁接收到软件发送的开始计时指令后检查加密锁是否处于自锁状态,所述自锁状态为加密锁不能被调用的状态;所述计时器用于当所述第一判断模块判定加密锁未处于自锁状态时开始累计时间;所述通信模块用于当所述第一判断模块判定加密锁未处于自锁状态时向软件发送允许调用指令,以及接收软件接收到所述允许调用指令后向加密锁发送的功能调用指令和所需数据;所述第二判断模块用于在所述加密锁接收到软件发送的功能调用指令和所需数据后检查所述计时器当前累计的时间是否超过预定值;所述自锁模块用于当所述第二判断模块判定所述计时器当前累计的时间超过预定值时使加密锁进入自锁状态;所述数据处理模块用于当所述第二判断模块在加密锁接收到软件发送的功能调用指令和所需数据后判定所述计时器当前累计的时间未超过预定值时对所述所需数据进行处理;所述通信模块还用于将所述数据处理模块的处理结果返回给软件;所述第二判断模块还用于在所述加密锁接收到软件发送的终止计时指令后检查所述计时器当前累计的时间是否超过所述预定值;所述计时器还用于当所述第二判断模块在所述加密锁接收到软件发送的终止计时指令后判定所述计时器当前累计的时间未超过预定值时停止计时。作为优选,所述终端设备与加密锁之间的通信方式为串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙通信、红外通信、无线保真通信或者IS07816通信。作为优选,还包括错误码发送模块,其用于当所述第一判断模块检查到加密锁处于自锁状态时,向软件返回预定义的错误码。作为优选,所述预定值由加密锁提供商预设或者由软件开发商设定。作为优选,所述计时器还用于在停止计时后将累计的时间清零或者在启动时清零上次调用时累计的时间。与现有技术相比,本发明具有以下有益效果:通过本发明提供的方法及加密锁,破解者动态调式受保护软件时,如果破解者分析和调试软件的时间超过了加密锁内设定的预定值,那么加密锁就会自锁,此后软件将无法调用加密锁内的功能,这就防止了破解者跟踪加密锁的输出结果,极大程度上提高了反破解能力。


图1为本发明的利用加密锁对软件进行保护的方法的流程示意图;图2为本发明的加密锁的结构示意图。
具体实施例方式下面结合附图对本发明的具体实施例进行详细说明。如图1所示,提供了一种利用加密锁对软件进行保护的方法,所述软件运行在终端设备中,所述终端设备与加密锁相互通信连接,所述方法包括以下步骤:S1:软件向加密锁发送开始计时指令;S2:加密锁接收到所述开始计时指令后检查自身是否处于自锁状态,如果是,则加密锁不能被调用,结束执行;如果否,则执行步骤S3 ;S3:加密锁启动内置的计时器开始累计时间,并向软件发送允许调用指令;S4:软件接收到所述允许调用指令后向加密锁发送功能调用指令和所需数据;S5:加密锁接收到所述功能调用指令和所需数据后检查所述计时器当前累计的时间是否超过预定值,如果是,则执行步骤S10,如果否,则执行步骤S6 ;S6:加密锁对所述所需数据进行处理后将处理结果返回给软件;S7:软件接收到所述返回结果后向加密锁发送终止计时指令;S8:加密锁接收到所述终止计时指令后检查所述计时器当前累计的时间是否超过所述预定值,如果是,则执行步骤S10,如果否,则执行步骤S9 ;
S9:所述计时器停止计时,加密锁等待下次调用;SlO:加密锁进入自锁状态。其中,所述加密锁与计算机主机之间的通信方式可以是串行接口通信、并行接口通信、1394接口通信、射频识别(RFID)接口通信、无线局域网接口(IEEE802.11接口等)通信、通用串行总线(USB)接口通信、蓝牙通信、红外通信、无线保真(W1-Fi)通信以及IS07816通信等。加密锁处于自锁状态时,软件将无法调用加密锁内的预定义功能,如果软件再次向加密锁发出开始计时指令或者功能调用指令,加密锁将返回预定义的错误码。所述预定值可以由加密锁提供商预设,也可以由软件开发商自定设定。加密锁执行完锁内功能后,可以将计时器清零并重新计时,也可以基于当前的累计时间值继续递增,等待下一个功能调用指令或者终止计时指令。下面通过对某文字处理软件的加密和保护过程说明本发明的方法。这是为了说明本发明的一个简化实施例,实际的加密过程要比这个例子复杂得多,假设本例中只对字处理软件的打印设置过程进行加密,步骤如下:一、确定软件需要加密的功能要素,比如控制页面的大小、字体的大小、字体的间距、打印页数等;也就是说,在当受保护的软件需要进行打印时,其页面的大小、字体的大小、字体间距的结果与加密锁内部计算密切相关。二、软件向加密锁发送开始计时指令,如果加密锁未自锁,则启动计时器,开始累计时间。三、软件向加密锁发送功能调用指令,同时将要打印的内容的特征信息发送给加密锁,例如:字数、段落数、预期的打印页数。加密锁接收到上述指令和数据后,先检查当前的累计时间值是否超过最大限定值,如果没有超过最大限定值,那么调用内部相应的功能模块,根据字数、段落数、预期的打印页数来估算字体的大小、字体的间距以及页面的大小,计算完毕后将估算结果输出给软件。四、在步骤三中,如果软件完成了加密锁内的功能调用,则向加密锁发送终止计时指令,加密锁接收到指令后,检查当前的累计时间值是否超过最大限定值,如果没有超过最大限定值,那么加密锁将停止计时,并将计时器清零,等待下一次限时调用。结合图2,下面对本发明提供的加密锁进行详细说明。加密锁装置是用于软件版权保护的硬件设备,包括MCU、存储器以及与CPU相连接的接口模块。所述的存储器与MCU相连接,用于保存用户的数据;所述的接口模块与MCU相连接,负责MCU与主机CPU之间的通信。所述MCU、存储器、接口模块也可以集成到同一个芯片中,由单一的芯片提供所有的功能。加密锁装置内部包括:通信模块1、进程管理模块2、资源管理模块3。通信模块I负责加密锁与终端设备(例如计算机主机)之间的通信,通信方式可以是串行接口通信、并行接口通信、1394接口通信、射频识别(RFID)接口通信、无线局域网接口(IEEE802.11接口等)通信、通用串行总线(USB)接口通信、蓝牙接口通信、红外接口通信、无线保真(W1-Fi)接口通信、IS07816串行通信等。进程管理模块2负责进程的启动、执行和终止。所述进程管理模块2可以通过通信模块I与计算机主机之间进行通信,进程启动后,进程也可以通过通信模块I与计算机主机之间进行通信。进程管理模块2可以根据需要自行启动进程,例如在加密锁装置上电启动后即启动进程,也可以在接收到计算机主机的指令后启动进程。进程启动后即进入执行过程,所述进程可以是一个循环执行的程序代码,在进程管理模块2终止进程的执行前始终保持运行状态。进程在执行过程中可以接收计算机主机发送的调用指令、所需数据、获取处理结果指令等,根据指令的要求在内部转移到相应的程序分支,完成需要的处理过程。所述的内部程序分支,可以是加密锁预定义的内部功能,比如数据的加密或解密处理,也可以是用户自定义的程序片段。加密锁装置为进程的执行提供所需的内存,内存在加密锁装置的芯片内部,外部无法直接访问,以保证内部执行环境的安全。进程可以将处理的最终结果或者所需的中间变量放置在加密锁内部的内存中,当受保护的软件程序需要使用某次调用的处理结果时,进程可以通过通信模块I或者通过管理模块和通信模块I将所需的数据从内存中取出并传送给受保护的软件程序。资源管理模块3负责对加密锁装置内部的资源进行管理,包括前面所述的内存管理、加密锁装置内部的非易失存储单元管理(例如Flash或者EEPR0M)、除接口模块所使用到的IO端口之外的其它IO端口等。所述进程可以通过资源管理模块3对所述的资源进行访问,例如向Flash或者EEPROM中写入或者读出数据、通过控制某个IO端口实现指示灯的亮、灭等。资源管理模块3也可以直接与通信模块I相连,在受控制的情况下不通过进程直接向计算机主机提供部分非敏感资源的访问,例如指示灯的亮灭。本发明的加密锁内部除包括上述基本模块外,还包括:第一判断模块4、自锁模块
7、数据处理模块8、错误码发送模块9、计时器5和第二判断模块6 ;第一判断模块4用于在所述加密锁接收到软件发送的开始计时指令后检查加密锁是否处于自锁状态,如果是,则加密锁不能被调用;如果否,则所述加密锁启动所述计时器5开始累计时间,并向软件发送允许调用指令;错误码发送模块9用于当第一判断模块4检查到加密锁处于自锁状态时,向软件返回预定义的错误码;计时器5用于当第一判断模块4判定加密锁未处于自锁状态时开始累计时间;通信模块I用于当第一判断模块4判定加密锁未处于自锁状态时向软件发送允许调用指令;第二判断模块6用于在所述加密锁接收到软件发送的功能调用指令和所需数据后检查所述计时器5当前累计的时间是否超过预定值,如果是,则加密锁进入自锁状态,如果否,则加密锁对所述所需数据进行处理后将处理结果返回给软件;自锁模块7用于当第二判断模块6判定计时器5当前累计的时间超过预定值时使加密锁进入自锁状态;数据处理模块8用于当第二判断模块6在加密锁接收到软件发送的功能调用指令和所需数据后判定计时器5当前累计的时间未超过预定值时对所述所需数据进行处理;通信模块I还用于将数据处理模块8的处理结果返回给软件;第二判断模块6还用于在所述加密锁接收到软件发送的终止计时指令后检查所述计时器5当前累计的时间是否超过所述预定值,如果是,则加密锁进入自锁状态,如果否,则所述计时器5停止计时,加密锁等待下次调用;
计时器5还用于当第二判断模块6在所述加密锁接收到软件发送的终止计时指令后判定计时器5当前累计的时间未超过预定值时停止计时,将累计的时间清零。加密锁处于自锁状态时,软件将无法调用加密锁内的预定义功能。如果软件再次向加密锁发出开始计时指令或者功能调用指令,加密锁将返回预定义的错误码。所述预定值可以由加密锁提供商预设,也可以由软件开发商自定设定。加密锁执行完锁内功能后,可以将计时器5清零并重新计时,也可以基于当前的累计时间值继续递增,等待下一个功能调用指令或者终止计时指令。以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
权利要求
1.一种利用加密锁对软件进行保护的方法,所述软件运行在终端设备中,所述终端设备与加密锁相互通信连接,其特征在于,所述方法包括以下步骤: S1:软件向加密锁发送开始计时指令; 52:加密锁接收到所述开始计时指令后检查自身是否处于自锁状态,如果是,则加密锁不能被调用,结束执行;如果否,则执行步骤S3 ; 53:加密锁启动内置的计时器开始累计时间,并向软件发送允许调用指令; 54:软件接收到所述允许调用指令后向加密锁发送功能调用指令和所需数据; S5:加密锁接收到所述功能调用指令和所需数据后检查所述计时器当前累计的时间是否超过预定值,如果是,则执行步骤S10,如果否,则执行步骤S6 ; 56:加密锁对所述所需数据进行处理后将处理结果返回给软件; 57:软件接收到所述返回结果后向加密锁发送终止计时指令; S8:加密锁接收到所述终止计时指令后检查所述计时器当前累计的时间是否超过所述预定值,如果是,则执行步骤S10,如果否,则执行步骤S9 ; S9:所述计时器停止计时,加密锁等待下次调用; SlO:加密锁进入自锁状态。
2.根据权利要求1所述的利用加密锁对软件进行保护的方法,其特征在于,所述终端设备与加密锁之间的通信方式为串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙通信、红外通信、无线保真通信或者IS07816通信。
3.根据权利要求1所述的利用加密锁对软件进行保护的方法,其特征在于,步骤S2中,如果加密锁处于自锁状态,则还包括:加密锁向软件返回预定义的错误码的步骤。
4.根据权利要求1所述的利用加密锁对软件进行保护的方法,其特征在于,步骤S3中,所述计时器启动时先清零上次调用时累计的时间。
5.根据权利要求1所述的利用加密锁对软件进行保护的方法,其特征在于,步骤S9中,所述计时器停止计时后将累计的时间清零。
6.一种加密锁,用于对软件进行保护,所述软件运行在终端设备中,所述终端设备与加密锁相互通信连接,其特征在于,所述加密锁包括第一判断模块、通信模块、自锁模块、数据处理模块、计时器和第二判断模块; 所述第一判断模块用于在所述加密锁接收到软件发送的开始计时指令后检查加密锁是否处于自锁状态,所述自锁状态为加密锁不能被调用的状态; 所述计时器用于当所述第一判断模块判定加密锁未处于自锁状态时开始累计时间; 所述通信模块用于当所述第一判断模块判定加密锁未处于自锁状态时向软件发送允许调用指令,以及接收软件接收到所述允许调用指令后向加密锁发送的功能调用指令和所需数据; 所述第二判断模块用于在所述加密锁接收到软件发送的功能调用指令和所需数据后检查所述计时器当前累计的时间是否超过预定值; 所述自锁模块用于当所述第二判断模块判定所述计时器当前累计的时间超过预定值时使加密锁进入自锁状态; 所述数据处理模块用于当所述第二判断模块在加密锁接收到软件发送的功能调用指令和所需数据后判定所述计时器当前累计的时间未超过预定值时对所述所需数据进行处理; 所述通信模块还用于将所述数据处理模块的处理结果返回给软件; 所述第二判断模块还用于在所述加密锁接收到软件发送的终止计时指令后检查所述计时器当前累计的时间是否超过所述预定值; 所述计时器还用于当所述第二判断模块在所述加密锁接收到软件发送的终止计时指令后判定所述计时器当前累计的时间未超过预定值时停止计时。
7.根据权利要求6所述的加密锁,其特征在于,所述终端设备与加密锁之间的通信方式为串行接口通信、并行接口通信、1394接口通信、射频识别接口通信、无线局域网接口通信、通用串行总线接口通信、蓝牙通信、红外通信、无线保真通信或者IS07816通信。
8.根据权利要求6所述的加密锁,其特征在于,还包括错误码发送模块,其用于当所述第一判断模块检查到加密锁处 于自锁状态时,向软件返回预定义的错误码。
9.根据权利要求6所述的加密锁,其特征在于,所述预定值由加密锁提供商预设或者由软件开发商设定。
10.根据权利要求6所述的加密锁,其特征在于,所述计时器还用于在停止计时后将累计的时间清零或者在启动时清零上次调用时累计的时间。
全文摘要
本发明公开了一种利用加密锁对软件进行保护的方法及加密锁,所述方法包括以下步骤软件向加密锁发送开始计时指令;加密锁检查自身是否处于自锁状态,如果否,则加密锁启动计时器开始累计时间;软件向加密锁发送功能调用指令和所需数据;加密锁检查计时器当前累计的时间是否超过预定值,如果是,则加密锁进入自锁状态,如果否,则加密锁将处理结果返回给软件;软件向加密锁发送终止计时指令;加密锁检查当前累计的时间是否超过预定值,如果是,则加密锁进入自锁状态,如果否,则计时器停止计时,加密锁等待下次调用。通过利用加密锁内部的计时器,对软件调用加密锁进行限时,有效地提高了破解者动态调试及破解的难度。
文档编号G06F21/12GK103186729SQ20131010001
公开日2013年7月3日 申请日期2013年3月26日 优先权日2013年3月26日
发明者孙吉平, 韩勇 申请人:北京深思数盾科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1