著录项信息
专利名称 | 软件保护的方法和系统 |
申请号 | CN200810104191.0 | 申请日期 | 2008-04-16 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2008-09-17 | 公开/公告号 | CN101266638 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/00 | IPC分类号 | G;0;6;F;2;1;/;0;0查看分类表>
|
申请人 | 北京飞天诚信科技有限公司 | 申请人地址 | 北京市海淀区学清路9号汇智大厦B楼205室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京坚石诚信科技有限公司 | 当前权利人 | 北京坚石诚信科技有限公司 |
发明人 | 陆舟;于华章 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 何文彬 |
摘要
本发明公开了一种软件保护的方法和系统,属于软件保护领域。所述方法包括:第一装置分别在所述软件和信息安全设备中设置相同的算法、密钥和动态因子;第二装置获取所述软件和信息安全设备且安装该软件后,当需要运行该软件时,与信息安全设备建立连接;第二装置获取信息安全设备使用算法、密钥和动态因子生成的识别码,与根据软件中的算法、密钥和动态因子生成的验证码进行比对,一致则允许运行该软件;否则进行异常处理;信息安全设备及第二装置按照相同方式对事件/时间动态因子进行存储或计时更新。所述系统包括第一装置、第二装置和信息安全设备。本发明实现了有效地对软件进行保护,防止接口仿真程序对软件进行盗版。
1.一种软件保护的方法,其特征在于,所述方法包括:
第一装置在所述软件中设置算法、密钥和动态因子,在信息安全设备中设置相同的算法、密钥和动态因子;
第二装置获取所述软件和信息安全设备且安装所述软件后,当需要运行该软件时,与所述信息安全设备建立连接;
所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,并根据所述软件中的算法、密钥和动态因子计算出验证码;
所述第二装置比对所述识别码与所述验证码,如果一致,则允许运行所述软件;否则,进行异常处理;
当所述动态因子为事件同步因子时,所述信息安全设备对所述信息安全设备内的动态因子进行更新,得到第一更新后的动态因子,并对所述第一更新后的动态因子进行存储,所述第二装置按照相同的方式对所述软件中的动态因子进行更新,得到第二更新后的动态因子,并将所述第二更新后的动态因子存储在所述软件中;
当所述动态因子为时间同步因子时,所述信息安全设备对所述信息安全设备内的动态因子通过计时进行更新,所述第二装置按照相同的方式对所述软件中的动态因子进行计时更新。
2.根据权利要求1所述的软件保护的方法,其特征在于,所述算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法。
3.根据权利要求1所述的软件保护的方法,其特征在于,所述更新具体为对所述动态因子增加或减少指定的值。
4.根据权利要求1所述的软件保护的方法,其特征在于,所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,具体包括:
当所述密钥为一个时,所述第二装置向所述信息安全设备发送固定的获取识别码的指令;
所述信息安全设备收到所述指令后,使用所述算法、密钥和动态因子计算出识别码,并将所述识别码发送给所述第二装置。
5.根据权利要求1所述的软件保护的方法,其特征在于,所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,具体包括:
当所述密钥为多个时,所述第二装置向所述信息安全设备发送获取识别码的指令,所述指令中携带指定密钥的索引;
所述信息安全设备收到所述指令后,使用所述算法、所述索引对应的密钥和所述动态因子计算出识别码,并将所述识别码发送给所述第二装置。
6.根据权利要求1所述的软件保护的方法,其特征在于,所述第二装置比对所述识别码与所述验证码,如果一致,则允许运行所述软件;否则,进行异常处理,具体包括:
当所述验证码为多个时,所述第二装置比对所述识别码与所述多个验证码,如果所述多个验证码中有一个验证码与所述识别码相同,则允许运行所述软件;如果所述多个验证码均与所述识别码不同,则进行异常处理。
7.根据权利要求1所述的软件保护的方法,其特征在于,所述方法还包括:
所述第二装置允许运行所述软件后,生成包含所述第二装置更新后的动态因子的日志信息,并存储所述日志信息;
当所述第二装置重新安装所述软件时,根据所述日志信息,将所述软件中的动态因子更新为所述日志信息中的动态因子。
8.一种软件保护的系统,其特征在于,所述系统包括第一装置、第二装置和信息安全设备;
所述第一装置包括:
设置模块,用于在所述软件中设置算法、密钥和动态因子,在所述信息安全设备中设置相同的算法、密钥和动态因子;
所述第二装置包括:
第一通信模块,用于当所述第二装置获取所述软件和信息安全设备且安装所述软件后,当需要运行该软件时,与所述信息安全设备建立连接,并与所述信息安全设备进行通信;
获取模块,用于通过所述第一通信模块获取所述信息安全设备生成的识别码;
验证码生成模块,用于根据所述软件中的算法、密钥和动态因子计算出验证码;
控制模块,用于比对所述获取模块得到的识别码与所述验证码生成模块得到的验证码,如果一致,则允许所述第二装置运行所述软件;否则,所述第二装置进行异常处理;
第一更新模块,用于当所述动态因子为事件同步因子时,按照与所述信息安全设备相同的方式对所述软件中的动态因子进行更新,得到第二更新后的动态因子,并将所述第二更新后的动态因子存储在所述软件中;
当所述动态因子为时间同步因子时,按照与所述信息安全设备相同的方式对所述软件中的动态因子进行计时更新;
所述信息安全设备包括:
存储模块,用于存储所述第一装置的设置模块设置的算法、密钥和动态因子;
识别码生成模块,用于使用所述存储模块存储的算法、密钥和动态因子计算出识别码;
第二通信模块,用于与所述第二装置进行通信,将所述识别码生成模块得到的识别码发送给所述第二装置;
第二更新模块,包括存储单元或计时单元;
所述存储单元,用于当所述动态因子为事件同步因子时,对所述信息安全设备内的动态因子进行更新,得到第一更新后的动态因子,并对所述第一更新后的动态因子进行存储;
所述计时单元,用于当所述动态因子为时间同步因子时,对所述存储模块内的动态因子通过计时进行更新。
9.根据权利要求8所述的软件保护的系统,其特征在于,所述算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法。
10.根据权利要求8所述的软件保护的系统,其特征在于,所述第二更新模块还包括:
电池,用于给所述计时单元提供电量。
11.根据权利要求8所述的软件保护系统,其特征在于,所述计时单元具体为计时芯片。
12.根据权利要求8所述的软件保护的系统,其特征在于,所述信息安全设备的第二更新模块具体包括:
更新单元,用于对所述信息安全设备的存储模块存储的动态因子增加或减少指定的值。
13.根据权利要求8所述的软件保护的系统,其特征在于,所述第二装置的获取模块具体包括:
获取单元,用于当所述密钥为一个时,通过所述第二装置的第一通信模块向所述信息安全设备发送固定的获取识别码的指令,并通过所述第二装置的第一通信模块接收所述信息安全设备返回的识别码;
相应地,所述信息安全设备的识别码生成模块具体包括:
识别码生成单元,用于在接收到所述第二装置发来的获取识别码指令后,使用所述信息安全设备的存储模块存储的算法、密钥和动态因子计算出识别码。
14.根据权利要求8所述的软件保护的系统,其特征在于,所述第二装置的获取模块具体包括:
获取单元,用于当所述密钥为多个时,通过所述第二装置的第一通信模块向所述信息安全设备发送获取识别码的指令,所述指令中携带指定密钥的索引,并通过所述第二装置的第一通信模块接收所述信息安全设备返回的识别码;
相应地,所述信息安全设备的识别码生成模块具体包括:
识别码生成单元,用于在接收到所述第二装置发来的获取识别码的指令后,使用所述信息安全设备的存储模块存储的算法、所述指令中的索引对应的密钥和动态因子计算出识别码。
15.根据权利要求8所述的软件保护的系统,其特征在于,所述第二装置的控制模块具体包括:
比对单元,用于当所述验证码生成模块生成的验证码为多个时,比对所述获取模块得到的识别码与所述多个验证码;
控制单元,用于当所述比对单元比对出所述多个验证码中有一个验证码与所述识别码相同,则允许运行所述软件;当所述比对单元比对出所述多个验证码均与所述识别码不同,则进行异常处理。
16.根据权利要求8所述的软件保护的系统,其特征在于,所述第二装置还包括:
日志生成模块,用于当所述控制模块允许运行所述软件后,生成包含所述第二装置的第一更新模块更新后的动态因子的日志信息;
恢复模块,用于当所述第二装置重新安装所述软件时,根据所述日志生成模块生成的日志信息,将所述软件中的动态因子更新为所述日志信息中的动态因子。
17.根据权利要求8所述的软件保护的系统,其特征在于,所述信息安全设备的第二通信模块具体为USB接口、红外接口、蓝牙接口、并口、串口、射频接口和外部串行高级技术附件eSATA接口中的至少一种。
技术领域\n本发明涉及软件保护领域,特别涉及一种软件保护的方法和系统。\n背景技术\n目前对软件的使用权进行保护的方法最流行的是使用加密锁这种加密工具。加密锁加密是现有加密技术的主流方法,通过在计算机的通信接口插上一个信息安全设备——加密锁,并配合特定的软件保护,使用户软件离开加密锁就无法运行,来实现软件产品的保护。信息安全设备是一种带有微处理器的小型硬件设备,它通过计算机的通信接口与计算机连接,具有密钥生成、安全存储密钥、预置加密算法等功能。信息安全设备与密钥相关的运算完全在设备内部运行,且信息安全设备具有抗攻击的特性,安全性极高。信息安全设备通常通过USB接口与计算机进行连接,简称USB Key。\n通常使用USB key对软件保护的最简单的方法是在设计软件时,将USB key的唯一硬件ID号写入软件中,在运行此软件时,软件会读取所使用的USB key的ID号,如果读取的ID号与软件中写入的ID号相同,则允许使用此软件,否则拒绝运用此软件。\n由于加密锁的ID号是固定的,软件在运行时,需要通过计算机接口读取加密锁的ID号。黑客利用这一弱点编制出了接口仿真程序,当用户插上保护软件原有的加密锁运行时,该接口仿真程序记录下保护软件读取加密锁ID的所有数据,以及在保护软件运行时所有的写入和读出的数据,从而可以将软件读取加密锁ID的指令截获。当用户取下加密锁时,黑客启动仿真程序来模拟加密锁提供的所有数据,并模拟计算机接口通信协议,将ID号返回给软件,从而达到盗版软件的目的。\n发明内容\n为了有效地保护软件,本发明提供了一种软件保护的方法和系统。所述技术方案如下:\n一种软件保护的方法,所述方法包括:\n第一装置在所述软件中设置算法、密钥和动态因子,在信息安全设备中设置相同的算法、密钥和动态因子;\n第二装置获取所述软件和信息安全设备且安装所述软件后,当需要运行该软件时,与所述信息安全设备建立连接;\n所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,并根据所述软件中的算法、密钥和动态因子计算出验证码;\n所述第二装置比对所述识别码与所述验证码,如果一致,则允许运行所述软件;否则,进行异常处理;\n当所述动态因子为事件同步因子时,所述信息安全设备对所述信息安全设备内的动态因子进行更新,得到第一更新后的动态因子,并对所述第一更新后的动态因子进行存储,所述第二装置按照相同的方式对所述软件中的动态因子进行更新,得到第二更新后的动态因子,并将所述第二更新后的动态因子存储在所述软件中;\n当所述动态因子为时间同步因子时,所述信息安全设备对所述信息安全设备内的动态因子通过计时进行更新,所述第二装置按照相同的方式对所述软件中的动态因子进行计时更新。\n所述算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法。\n所述更新具体为对所述动态因子增加或减少指定的值。\n所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,具体包括:\n当所述密钥为一个时,所述第二装置向所述信息安全设备发送固定的获取识别码的指令;\n所述信息安全设备收到所述指令后,使用所述算法、密钥和动态因子计算出识别码,并将所述识别码发送给所述第二装置。\n所述第二装置获取所述信息安全设备使用所述算法、密钥和动态因子计算出的识别码,具体包括:\n当所述密钥为多个时,所述第二装置向所述信息安全设备发送获取识别码的指令,所述指令中携带指定密钥的索引;\n所述信息安全设备收到所述指令后,使用所述算法、所述索引对应的密钥和所述动态因子计算出识别码,并将所述识别码发送给所述第二装置。\n所述第二装置比对所述识别码与所述验证码,如果一致,则允许运行所述软件;否则,进行异常处理,具体包括:\n当所述验证码为多个时,所述第二装置比对所述识别码与所述多个验证码,如果所述多个验证码中有一个验证码与所述识别码相同,则允许运行所述软件;如果所述多个验证码均与所述识别码不同,则进行异常处理。\n所述方法还包括:\n所述第二装置允许运行所述软件后,生成包含所述第二装置更新后的动态因子的日志信息,并存储所述日志信息;\n当所述第二装置重新安装所述软件时,根据所述日志信息,将所述软件中的动态因子更新为所述日志信息中的动态因子。\n一种软件保护的系统,所述系统包括第一装置、第二装置和信息安全设备;\n所述第一装置包括:\n设置模块,用于在所述软件中设置算法、密钥和动态因子,在所述信息安全设备中设置相同的算法、密钥和动态因子;\n所述第二装置包括:\n第一通信模块,用于当所述第二装置获取所述软件和信息安全设备且安装所述软件后,当需要运行该软件时,与所述信息安全设备建立连接,并与所述信息安全设备进行通信;\n获取模块,用于通过所述第一通信模块获取所述信息安全设备生成的识别码;\n验证码生成模块,用于根据所述软件中的算法、密钥和动态因子计算出验证码;\n控制模块,用于比对所述获取模块得到的识别码与所述验证码生成模块得到的验证码,如果一致,则允许所述第二装置运行所述软件;否则,所述第二装置进行异常处理;\n第一更新模块,用于当所述动态因子为事件同步因子时,按照与所述信息安全设备相同的方式对所述软件中的动态因子进行更新,得到第二更新后的动态因子,并将所述第二更新后的动态因子存储在所述软件中;\n当所述动态因子为时间同步因子时,按照与所述信息安全设备相同的方式对所述软件中的动态因子进行计时更新;\n所述信息安全设备包括:\n存储模块,用于存储所述第一装置的设置模块设置的算法、密钥和动态因子;\n识别码生成模块,用于使用所述存储模块存储的算法、密钥和动态因子计算出识别码;\n第二通信模块,用于与所述第二装置进行通信,将所述识别码生成模块得到的识别码发送给所述第二装置;\n第二更新模块,包括存储单元或计时单元;\n所述存储单元,用于当所述动态因子为事件同步因子时,对所述信息安全设备内的动态因子进行更新,得到第一更新后的动态因子,并对所述第一更新后的动态因子进行存储;\n所述计时单元,用于当所述动态因子为时间同步因子时,对所述存储模块内的动态因子通过计时进行更新。\n所述算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法。\n所述动态因子具体为时间同步因子,所述信息安全设备的第二更新模块还包括:\n电池,用于给所述计时单元提供电量。\n所述计时单元具体为计时芯片。\n所述信息安全设备的第二更新模块具体包括:\n更新单元,用于对所述信息安全设备的存储模块存储的动态因子增加或减少指定的值。\n所述第二装置的获取模块具体包括:\n获取单元,用于当所述密钥为一个时,通过所述第二装置的第一通信模块向所述信息安全设备发送固定的获取识别码的指令,并通过所述第二装置的第一通信模块接收所述信息安全设备返回的识别码;\n相应地,所述信息安全设备的识别码生成模块具体包括:\n识别码生成单元,用于在接收到所述第二装置发来的获取识别码指令后,使用所述信息安全设备的存储模块存储的算法、密钥和动态因子计算出识别码。\n所述第二装置的获取模块具体包括:\n获取单元,用于当所述密钥为多个时,通过所述第二装置的第一通信模块向所述信息安全设备发送获取识别码的指令,所述指令中携带指定密钥的索引,并通过所述第二装置的第一通信模块接收所述信息安全设备返回的识别码;\n相应地,所述信息安全设备的识别码生成模块具体包括:\n识别码生成单元,用于在接收到所述第二装置发来的获取识别码的指令后,使用所述信息安全设备的存储模块存储的算法、所述指令中的索引对应的密钥和动态因子计算出识别码。\n所述第二装置的控制模块具体包括:\n比对单元,用于当所述验证码生成模块生成的验证码为多个时,比对所述获取模块得到的识别码与所述多个验证码;\n控制单元,用于当所述比对单元比对出所述多个验证码中有一个验证码与所述识别码相同,则允许运行所述软件;当所述比对单元比对出所述多个验证码均与所述识别码不同,则进行异常处理。\n所述第二装置还包括:\n日志生成模块,用于当所述控制模块允许运行所述软件后,生成包含所述第二装置的第一更新模块更新后的动态因子的日志信息;\n恢复模块,用于当所述第二装置重新安装所述软件时,根据所述日志生成模块生成的日志信息,将所述软件中的动态因子更新为所述日志信息中的动态因子。\n所述信息安全设备的第二通信模块具体为USB接口、红外接口、蓝牙接口、并口、串口、射频接口和外部串行高级附加装置eSATA接口中的至少一种。\n本发明通过在软件和信息安全设备中设置相同的算法、密钥和动态因子,将信息安全设备生成的识别码和第二装置生成的验证码进行比对并同步更新,来对软件进行保护。第二装置安装的软件只有在合法的信息安全设备通过认证后,才能运行使用,即使接口仿真软件盗窃了本次软件对信息安全设备进行验证过程中相关的交互数据,该数据对于下次软件对信息安全设备的验证过程是无效的,从而有效地保护了软件,防止软件被盗版。\n附图说明\n图1是本发明实施例1提供的一种软件保护的方法流程图;\n图2是本发明实施例2提供的一种软件保护的系统结构图。\n具体实施方式\n为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。\n实施例1\n如图1所示,本发明实施例提供了一种软件保护的方法,具体包括:\n步骤101:第一装置在软件中设置算法、密钥和动态因子,在信息安全设备中设置相同的算法、密钥和动态因子。\n例如,第一装置在软件中设置DES算法、密钥2834和动态因子1900,在信息安全设备中也设置DES算法、密钥2834和动态因子1900。\n本实施例中的第一装置通常为生产商的装置,第二装置通常为用户使用的主机,如软件开发商的装置在软件和信息安全设备中设置算法、密钥和动态因子后,软件开发商将软件和信息安全设备提供给用户,用户在主机中安装该软件,并通过该主机与信息安全设备进行通信。\n其中,第一装置设置的算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法,第一装置设置的动态因子具体为事件同步因子或时间同步因子。\n步骤102:第二装置获取所述软件和信息安全设备且安装软件后,当需要运行该软件时,与信息安全设备建立连接。\n步骤103:第二装置获取信息安全设备使用算法、密钥和动态因子计算出的识别码,并根据软件中的算法、密钥和动态因子计算出验证码。本实施例中的验证码不限于可识别的字符。\n当第一装置在软件和信息安全设备中均设置一个密钥时,第二装置获取信息安全设备生成的识别码可以具体如下:\n第二装置向信息安全设备发送固定的获取识别码的指令,信息安全设备收到该指令后,使用信息安全设备中的算法、密钥和动态因子计算出识别码,并将该识别码发送给第二装置。其中,固定的获取识别码的指令是指指令的内容固定不变,例如,固定的获取识别码的指令为8个字节,具体为0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00;当信息安全设备收到该指令后,使用信息安全设备中的算法、密钥和动态因子计算出识别码,并将该识别码发送给第二装置。\n进一步地,当第一装置在软件和信息安全设备中均设置多个密钥时,第二装置获取信息安全设备生成的识别码可以具体如下:\n第二装置向信息安全设备发送获取识别码的指令,其中携带指定密钥的索引,信息安全设备收到该指令后,使用信息安全设备中的算法、该索引对应的密钥和动态因子计算出识别码,并将该识别码发送给第二装置。例如,获取识别码的指令为8个字节,具体为0x0A,0x01,0x00,0x00,0x00,0x00,0x00,0x00,其中0x01表示使用第一个密钥,当该字节为0x02时表示使用第二个密钥等,即指令中的第二个字节为指定密钥的索引值。当信息安全设备收到该指令后,使用信息安全设备中的算法、该索引对应的密钥和动态因子计算出识别码,并将该识别码发送给第二装置。\n本实施例中信息安全设备计算出识别码后,还对信息安全设备内的动态因子进行更新。也可以在信息安全设备计算出识别码前对信息安全设备内的动态因子进行更新。当动态因子为事件同步因子时,信息安全设备对信息安全设备内的动态因子更新后进行存储;当动态因子为时间同步因子时,信息安全设备对信息安全设备内的动态因子通过计时进行更新。\n步骤104:第二装置比对识别码与验证码是否一致,如果一致,则执行步骤105;否则,执行步骤106。\n步骤105:允许运行该软件,然后结束。\n步骤106:第二装置进行异常处理,例如不允许运行该软件,然后结束。\n上述过程中第二装置还按照与信息安全设备相同的方式对软件中的动态因子进行更新,如第二装置与信息安全设备均采用先更新后计算的方式,或者均采用先计算后更新的方式,从而使二者的动态因子同步。当动态因子为事件同步因子时,第二装置还将更新后的动态因子存储在该软件中;当动态因子为时间同步因子时,第二装置按照与信息安全设备相同的方式对软件中的动态因子进行计时更新。\n另外,第二装置允许运行软件后,还可以生成包含第二装置更新后的动态因子的日志信息,并存储该日志信息,如将日志信息存储在第二装置的系统注册表中;当由于某些原因第二装置重新安装该软件时,根据存储的日志信息,将软件安装后初始化的动态因子更新为日志信息中的动态因子,以方便软件中的动态因子与信息安全设备中的动态因子同步。\n在本发明实施例中,对动态因子的更新具体为对动态因子增加或减少指定的值,且第二装置对软件中的动态因子的更新方式与信息安全设备对其内的动态因子的更新方式相同,如均为增加固定的值,或均为减少固定的值。\n下面以一个具体的实例进行详细说明,软件和信息安全设备中预设的算法均为DES算法,密钥均为5821,动态因子均为事件同步因子,以事件计数进行同步,事件计数的初始值均为1238,事件计数的增加值为2,且信息安全设备的唯一硬件标识码为16071127。安装了该软件的主机向信息安全设备发送获取指令后,信息安全设备根据密钥5821和动态因子1238,使用DES算法对硬件标识码16071127进行计算,得到识别码3039B7DC2D0ED449并发送给主机,然后将动态因子计数更新为1240。主机得到该识别码后,将其与根据软件中的密钥5821和动态因子1238且使用DES算法对硬件标识码进行计算得到的验证码进行比对,比对出验证码与识别码相同,则允许在主机中运行该软件,并且将软件中的动态因子也更新为1240。当再次使用该软件时,信息安全设备根据密钥5821和更新后的动态因子1240,使用DES算法对硬件标识码16071127进行计算,得到识别码3039B7DC2D0ED449,并将动态因子更新为1242。主机获取到该识别码后,与根据软件中的密钥5821和更新的动态因子1240使用DES算法对硬件标识码进行计算得到的验证码3039B7DC2D0ED449进行比对,结果为相同,因此允许再次运行该软件,且将该软件中的动态因子也更新为1242。因此,通过事件计数同步使得软件与信息安全设备的动态因子在实现动态变化的同时又保持着同步。\n另外,为了防止由于偶然事件(如误操作)而导致信息安全设备进行了动态因子的更新,而不与软件中的动态因子同步,进一步地,还可以在一个容错范围内对识别码进行验证,即第二装置还可以生成多个验证码,比对时第二装置比对获取的识别码与生成的多个验证码,如果该多个验证码中有一个验证码与该识别码相同,则允许运行该软件;如果该多个验证码均与该识别码不同,则进行异常处理,例如不允许运行该软件。\n例如,密钥为5816,软件中的动态因子经过99次有效认证已经采用增加计数的方式更新为1434,在当前第100次认证时,主机在当前动态因子1434的基础上增加计数得到10个动态因子1436、1438、1440、1442、1444、1446、1448、1450、1452、1454,则包含1434共有11个动态因子,根据密钥5816和11个动态因子用DES算法对信息安全设备的唯一硬件标识码16071127进行加密计算,分别得到11个验证码:D8AE1D7792694CBC、11A007C042B6B152、48A1734518707504、905AF710BB1DA1D6、3F8067A573465A48、1E5E50ECD398A005、1980957B8D14E1CB、768EE8155DC0C7E0、905AF710BB1DA1D6、3F8067A573465A48和1E5E50ECD398A005。主机获取到信息安全设备生成的识别码后,与上述11个验证码逐一进行比对,如果该识别码与11个验证码中的某一个验证码相同,则本次认证通过,允许运行该软件,且根据当前匹配的验证码更新动态因子,用于下次认证的根据,如当前匹配的验证码为48A1734518707504,对应的动态因子为1438,则对其进行更新为1440。如果11个验证码中没有与该识别码相同的验证码,则本次认证失败,第二装置进行异常处理,例如不允许在主机上运行该软件。\n实施例2\n如图2所示,本发明实施例提供了一种软件保护的系统,包括第一装置、第二装置和信息安全设备;\n第一装置包括:\n设置模块,用于在该软件中设置算法、密钥和动态因子,在信息安全设备中设置相同的算法、密钥和动态因子;\n第二装置包括:\n第一通信模块,用于当第二装置获取上述软件和信息安全设备且安装该软件后,当需要运行该软件时,与信息安全设备建立连接,并与信息安全设备进行通信;\n获取模块,用于通过第一通信模块获取信息安全设备生成的识别码;具体地,可以通过通信模块发送获取识别码的指令给信息安全设备,并通过通信模块接收信息安全设备返回的识别码;\n验证码生成模块,用于根据软件中的算法、密钥和动态因子计算出验证码;\n控制模块,用于比对获取模块得到的识别码与验证码生成模块得到的验证码,如果一致,则允许第二装置运行软件;否则,第二装置进行异常处理,例如不允许第二装置运行软件;\n第一更新模块,用于当所述动态因子为事件同步因子时,按照与所述信息安全设备相同的方式对所述软件中的动态因子进行更新,得到第二更新后的动态因子,并将所述第二更新后的动态因子存储在所述软件中;\n当该动态因子为时间同步因子时,按照与该信息安全设备相同的方式对该软件中的动态因子进行计时更新。\n信息安全设备包括:\n存储模块,用于存储第一装置的设置模块设置的算法、密钥和动态因子;\n识别码生成模块,用于使用存储模块存储的算法、密钥和动态因子计算出识别码;\n第二通信模块,用于与第二装置进行通信,将识别码生成模块得到的识别码发送给第二装置;\n第二更新模块,用于包括存储单元或计时单元;\n该存储单元,用于当所述动态因子为事件同步因子时,对所述信息安全设备内的动态因子进行更新,得到第一更新后的动态因子,并对所述第一更新后的动态因子进行存储;\n该计时单元,用于当该动态因子为时间同步因子时,对该存储模块内的动态因子通过计时进行更新。\n本实施例中的算法具体为HOPT、DES、RSA、SHA算法或由生产商预先设定的算法,动态因子具体为事件同步因子或时间同步因子。\n当上述动态因子具体为时间同步因子时,图2中信息安全设备的第二更新模块还包括:\n电池,用于给计时单元提供电量。\n进一步的,该计时单元可以具体为计时芯片。\n进一步地,图2中信息安全设备的第二更新模块具体包括:\n更新单元,用于当识别码生成模块得到识别码后,对信息安全设备的存储模块存储的动态因子增加或减少指定的值。\n进一步地,图2中第二装置的获取模块具体包括:\n获取单元,用于当密钥为一个时,通过第二装置的第一通信模块向信息安全设备发送固定的获取识别码的指令,并通过第二装置的第一通信模块接收信息安全设备返回的识别码;\n相应地,信息安全设备的识别码生成模块具体包括:\n识别码生成单元,用于在接收到第二装置发来的获取识别码指令后,使用信息安全设备的存储模块存储的算法、密钥和动态因子计算出识别码。\n进一步地,图2中第二装置的获取模块具体包括:\n获取单元,用于当密钥为多个时,通过第二装置的第一通信模块向信息安全设备发送获取识别码的指令,指令中携带指定密钥的索引,并通过第二装置的第一通信模块接收信息安全设备返回的识别码;相应地,信息安全设备的识别码生成模块具体包括:\n识别码生成单元,用于在接收到第二装置发来的获取识别码的指令后,使用信息安全设备的存储模块存储的算法、该指令中的索引对应的密钥和动态因子计算出识别码。\n进一步地,图2中第二装置的控制模块具体包括:\n比对单元,用于当验证码生成模块生成的验证码为多个时,比对获取模块得到的识别码与多个验证码;\n控制单元,用于当比对单元比对出多个验证码中有一个验证码与识别码相同,则允许运行软件;当比对单元比对出多个验证码均与识别码不同,则进行异常处理,例如不允许运行软件。\n进一步地,图2中第二装置还包括:\n日志生成模块,用于当控制模块允许运行软件后,生成包含第二装置的第一更新模块更新后的动态因子的日志信息;\n恢复模块,用于当第二装置重新安装软件时,根据日志生成模块生成的日志信息,将软件中的动态因子更新为日志信息中的动态因子。\n本实施例中的信息安全设备的第二通信模块可以具体为USB接口、红外接口、蓝牙接口、并口、串口、射频接口和eSATA(External Serial Advanced Technology Attachment,外部串行高级技术附件)接口中的至少一种。\n具体的,信息安全设备的存储模块、识别码生成模块、通信模块和更新模块可以集成在一颗安全控制芯片上来实现,如集成在有USB接口的芯片CY7C63813上。\n本发明实施例通过在软件和信息安全设备中设置相同的算法、密钥和动态因子,将信息安全设备生成的识别码和第二装置生成的验证码进行比对并同步更新,来对软件进行保护。第二装置安装的软件只有在合法的信息安全设备通过认证后,才能运行使用,即使接口仿真软件盗窃了本次软件对信息安全设备进行验证过程中相关的交互数据,该数据对于下次软件对信息安全设备的验证过程是无效的,从而有效地保护了软件,防止软件被盗版。\n以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2018-01-12
专利权的转移
登记生效日: 2017.12.22
专利权人由飞天诚信科技股份有限公司变更为北京坚石诚信科技有限公司
地址由100085 北京市海淀区学清路9号汇智大厦B座17层变更为北京市海淀区学清路9号汇智大厦B楼205室
- 2011-08-24
专利权人的姓名或者名称、地址的变更
专利权人由北京飞天诚信科技有限公司变更为飞天诚信科技股份有限公司
地址由100083 北京市海淀区学院路40号研7楼5层变更为100085 北京市海淀区学清路9号汇智大厦B座17层
- 2010-04-21
- 2008-11-05
- 2008-09-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-02-08
|
2004-08-22
| | |
2
| |
2001-11-14
|
2000-04-28
| | |
3
| |
2007-04-18
|
2006-11-02
| | |
4
| |
2005-05-11
|
2004-11-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |