一种撤销软件许可的方法

文档序号:6463435阅读:136来源:国知局
专利名称:一种撤销软件许可的方法
技术领域
本发明涉及软件许可保护技术,特别涉及一种软件许可的远程撤销技术。
背景技术
使用软件保护设备是实现软件安全保护和版权保护的主要手段。软件保 护设备中存储着软件的使用许可,例如决定软件是否可以被使用,哪些模块 被使用等等。简单地在软件保护设备中存储数据并不能避免软件免受盗版等 非合法授权使用的情况。因而,软件保护设备通常具有一些特殊的功能用于 软件版权等保护,最常见的是软件保护设备提供一些可设置的黑箱功能,在 经过软件所有者的初始设置之后,软件保护设备就具备了一些软件开发者私 有的功能,并用于软件的合法性校验。绝大多数情况下,对软件保护设备进 行初始化设置需要验证一个所谓的高级密码,只有拥有这个高级密码才可以 改变软件保护设备的内部功能设置。同时, 一般来说这个高级密码并不能从 软件保护设备中读取敏感数据,也就是说如果高级密码不慎泄漏,并不一定 会威胁到软件保护设备中的数据安全。然而,很少有人将自己软件保护设备 的高级密码泄漏出去,以避免潜在的其它风险,例如有人利用这个高级密码 对软件保护设备的功能进行恶意修改。中国专利申请第99214217.2号中公开了一种软件保护设备。在这个专 利公开文献中,提供了一种软件保护设备的工作方法,可以对软件的版权进 行保护。具体来说,该软件保护设备运行软件开发者在其中写入的汇编代码, 从而使得软件保护设备能够实现特定的功能,即形成一段有特定功能的算 法。软件在运行过程中,既可以直接调用软件保护设备完成特定的功能,也可以通过对软件保护设备中功能的正确性进行验证,来确保软件的授权是合 法的。写入汇编代码时需要一个所谓的"开发商密码",只有这个密码才能 修改装置内部的汇编指令,但是即时拥有开发商密码也不能读出软件保护设 备内部的汇编指令内容。随着时间的推移,旧的软件保护设备由于其功能性和安全性的问题,可 能已经不能适用于新版本的软件,即新版本的软件需要更换为新的软件保护如果继续留给用户,那么用户就可以同时拥有新旧两套软件保护设备设置, 也就意味着同时拥有两套可用的软件,这通常是软件开发者所不允许的。然 而,由于技术条件所限,旧的软件保护设备在发行的时候都没有考虑到远程 撤销授权问题,只提供物理回收(即要求用户将旧软件保护设备邮寄给软件发行者)这样一种解决途径。然而这个唯一的解决途径至少存在两个问题 第一,邮寄的成本问题,用户很难认可承担这部分成本,开发者也会认为这 是一种浪费;第二,时间间隔问题,用户如果在收到新的软件保护设备之前 就将旧设备寄出,就会面临数日内无软件可用的问题,而如果开发者允许用 户在收到新版本后寄出旧版设备,又会面临用户故意拖延甚至不寄出的问 题。因此,最佳的解决方法是,软件开发者可以在提供给用户新版的软件保 护设备的同时,能够可靠的撤销旧版软件保护设备中的软件许可。发明内容为了解决上述问题,本发明提出了一种远程撤销软件保护设备中所拥有 的软件使用许可的方法,在软件开发者的控制策略之下,可以在不回收硬件 设备的基础上,安全地撤销软件保护设备中的已有许可。具体来说,新版本 的软件保护设备(第一软件保护设备)能够对旧版本软件保护设备(第二软 件保护设备)中的软件使用许可是否被安全撤销进行验证,验证成功后新的 软件保护设备的功能才正式启用,从而实现了新旧软件之前的无缝切换。为了便于叙述,首先对以下概念进行说明软件保护设备特指一种附加在计算机接口尤其是USB接口上的硬件 设备,能够利用设备所提供的功能,对运行在计算机上的软件进行版权保护;软件使用许可对软件的使用权利进行规定和约束的许可,例如规定软 件的使用时间,最简单的许可形式为决定软件是否可以被运行。根据本发明的一个方面,提供一种撤销软件许可的方法,其特征在于, 该方法包括步骤A、 将第一软件保护设备设置为受限制状态,并将第一软件保护设备发 送给软件用户;B、 软件用户得到第一软件保护设备后,将替换代码写入第二软件保护 设备中,并且写入的替换代码与第二软件保护设备中未被替换的代码结合工 作以完成新的功能;C、 验证第二软件保护设备是否已经被写入了所述替换代码;D、 如果验证成功,则解除步骤A中对第一软件保护设备受限制状态, 否则继续保持第 一 软件保护设备的受限制状态。根据本发明的一个方面,其特征还在于,在步骤A中,对第一软件保护 设备的限制是限定所保护软件的运行次数或者时间,或者禁止所保护的软 件运行。根据本发明的一个方面,其特征还在于,在步骤B中,所述的替换代码 是可执行代码,或者改变第二软件保护设备的配置数据。根据本发明的一个方面,其特征还在于,如果所述替换代码是可执行代 码,那么替换代码不能全部替代第二软件保护设备中的已有代码,而只能替 换第二软件保护设备中可执行代码的一部分,并与未被替换的代码结合形成 新的功能。根据本发明的一个方面,其特征还在于,如果所述替换代码是改变第二 软件保护设备的配置数据,那么在配置数据被修改后,仍然保留未被修改的 配置数据。根据本发明的一个方面,其特征还在于,改变第二软件保护设备的配置数据是种子码或者密钥。根据本发明的一个方面,其特征还在于,步骤C中验证第二软件保护设 备是否已经被写入了所述替换代码验证的具体步骤是验证步骤B中新的功 能是否被正确实现。根据本发明的一个方面,其特征还在于,在步骤C中,所述验证是发送一个随机数给第二软件保护设备;第二软件保护设备根据步骤B中最终得到的新功能对所述随机数进行 处理;第二软件保护设备将得到的处理结果发送给第一软件保护设备; 第 一软件保护设备验证处理结果是否正确。根据本发明的一个方面,其特征还在于,限制步骤C中重复验证的次数, 如果在限定的次数内没有成功验证,对第一软件保护设备进行锁定,不允许 继续进行-睑i正。根据本发明的一个方面,其特征还在于,步骤C中,验证过程利用网 络进行,或者在第一软件保护设备和第二软件保护设备之间直接进行。


图1为本发明的示意图。图2为根据本发明的第一实施方式的撤销可执行代码的旧版软件保护 设备许可并解除新版软件保护设备初始限制的流程图;图3为根据本发明的第二实施方式的撤销配置型旧版软件保护设备并 解除新版软件保护设备初始限制的流程图。
具体实施方式
本发明的过程包括以下步骤a)软件开发者将新的软件保护设备置于一种受限制的状态并发送给软 件用户;b)软件用户得到新的软件保护设备后,运行软件开发者所提供的软件, 将部分替换代码写入旧版的软件保护设备中,并与残留的代码结合工作,以完成新的功能;法是验证步骤b中新的功能是否被正确实现;如果验证成功,则解 除步骤a中对新的软件保护设备的限制,否则继续保持限制状态。在经过上述步骤之后,旧的软件保护设备中的功能已经被改变,从而导 致原有的软件不能继续运行,其结果是将软件保护设备中的授权撤销;新的 软件保护设备在确认旧的授权被撤销之后方解除对自身的限制,也就使得用 户完全获得了新版本软件的许可。在步骤a中,对新的软件保护设备的限制可以是限定所保护的软件可以 运行的次数或者时间,也可以限制所保护的软件完全不能运行。在步骤b中,所述的替换代码不限于是完全可执行的代码,也可以是能 够改变旧版软件保护设备的配置数据,例如种子码、密钥等。如果所述替换代码是可执行的代码,那么替换代码必须不能全部替代旧 版软件保护设备中的已有代码,而只能是替换旧版软件保护设备中可执行代 码的一部分,并与未被替换即残留的代码结合形成新的功能。因为旧版软件 保护设备中的已有代码是不可预知的,因而尽管被写入的替换代码的功能可 以被截取到,但是替换代码和残留代码结合后,形成的新功能依然无法预知。 这种方式就可以保证只有新版软件保护设备能够校验所述替换代码是否被 写入到了旧版软件保护设备中。如果所述替换代码是改变旧版软件保护设备的配置数据,例如种子码或 者密钥等,那么在配置数据被修改后,仍然可以保留部分旧的配置数据。此 时,新的软件保护设备可以同时对新的配置数据引起的功能改变和残留的配 置数据所附有的功能分别进行验证,根据全部的验证结果来判断所述替换代 码是否被成功写入。在步骤b中可以进一步要求,所述的替换代码具备一定的随机性,针对不同的旧版软件保护设备,所写入的替换代码是可变的,写入的过程受新版 软件保护设备的控制。这样可以避免某个旧版软件保护设备被多个新版软件 保护设备所验证通过。在步骤C中,所述验证可以是发送一个随机数,要求旧版的软件保护设备根据步骤b中所最终得到的新功能对随机数进行处理,将得到的处理结果 发送给新版软件保护设备,由新版软件保护设备验证处理结果是否正确。为 了进一步提高安全性,可以限制步骤c可重复验证的次数,如果在设定的次 数内没有成功验证,将对新版软件保护设备进行锁定,不允许继续进行验证。步骤c中,验证过程既可以是利用互联网远程进行,也可以在软件的协 助下在新版软件保护设备和旧版软件保护设备之间直接进行。下面结合附图2、 3对本发明的具体实施例进行详细描述。 实施例一本实施例中,旧版软件保护设备为可执行代码的软件保护设备,如中国 专利第99214217.2号中公开对软件保护设备。在这种旧版软件保护设备中,通过软件开发者写入的可执行代码,使得 软件保护设备具备了软件开发者所预期的功能。这部分功能只有软件开发者 自己知道细节,也就是任何其他人无法知道可执行代码的内容。可执行代码 是对可以运行的指令的统称,可以是一种汇编指令组成的代码,也可以是一 些指令的集合。这些可执行代码可以被部分进行替换,而且不能够被读出。在本实施例中,包括一个新的软件保护设备A,和一个旧版的软件保护 设备B。其中,软件保护设备B中包含了旧版软件的使用许可,以专利 99214217.2中公开的设备为例,设备中包括了一段汇编代码,例如ADD AX1,BX0MOV BXO, BX1SUB AX1,BX0RORAX1,5上面四句汇编指令的意义是第一句将BXO寄存器中的数据与AX1寄存器中的数据相加,得到的 结果存储到AX1中;第二句将BX1中的数据移到BX0中;第三句将AX1中的数据减去BXO中的数据,得到的结果存储到AX1中;第四句将AX1中的数据向右循环移位5位;这四句组成了一个简单的运算功能Fl,软件在运行过程中将对此运算 功能进行验证,如果验证成功就认为是正版,也就相当于软件保护设备B 中存储了一份软件使用许可。如果这四句的内容被破坏,不能执行原定的功 能,那么软件的验证过程就会失败,从而被判定为盗版。参考图2,图2为根据本发明得到的第一种实施方式的工作流程图。步骤101:准备用于替换软件保护设备B中部分汇编代码的方案,本实 施例将汇编代码的偶数行进行替换,从而改变软件保护设备B中的代码功 能。替换后的汇编代码变为ADD AX1,BX0ADD BXO, BX1SUB AX1,BX0ROL AX1,2即,将原代码中的第二行和第四行进行了替换,从而得到了新的功能F2。步骤102:将功能F2写入到新的软件保护设备A中;步骤103:将步骤101中所述的偶数行代码写入到软件保护设备B中,这样软件保护设备B中的功能就由Fl变成了 F2',软件保护设备B所保护的软件将不能被使用;其中,如果写入过程正确,F2=F2,;步骤104:软件保护设备A中产生一组种子数,例如AX1 = 123, BX1 =456, BX0 = 789,并用F2进行运算,将得到的结果存储在软件保护设备A中步骤105:软件保护设备A将步骤104中的种子数传递给软件保护B, 要求软件保护设备B用步骤103中生成的共F2,对所述种子数进行运算,将 计算结果返回给软件保护设备A;步骤106:软件保护设备A将对步骤104中得到的结果和步骤105中得 到的结果进行比较,如果相同则认为软件保护设备B中的原有功能已经由 F1变成了F2,也就是软件许可被撤销,可以启用软件保护设备A中的新软 件的使用许可;否则,则认为软件保护设备B中原有的软件许可仍然存在, 不能启用软件保护设备A中的软件使用许可;因为设备B中残留的代码是不可知的,所以尽管步骤103中的代码存 在被截获的可能,但是攻击者仍然没有办法知晓组合得到的新功能F2',因 而无法伪造出正确的验证结果。这样,只有对设备B进行了破坏之后,才可 能成功启用设备A中软件许可,达到了撤销软件使用授权的目的。实施例二本实施例中,旧版软件保护设备为配置型,不能在软件保护设备内部运 行可执行代码,但是能够通过设置种子码或者密钥,使软件保护设备提供不 同的算法功能。种子码不能够被读出,而且不同种子码产生的输出结果对于 软件开发者之外的人是不可预知的。在本实施例中,包括一个新的软件保护设备A2,和一个旧版的软件保 护设备B2。其中,软件保护设备B2中包含了旧版软件的使用许可,体现为 设备中包含了两个密钥种子Sl和S2;其中,Sl和S2能够配合软件保护设 备B2产生不同的保密算法。软件在运行过程中,将使用与S1和S2相关的 算法进行数据处理;如果S1或者S2被替换为新的密钥种子,那么相应的算 法也会被改变,从而导致软件不能正常运行。密钥种子码Sl和S2只有软件 开发者知道,攻击者无法得知。参考图3,图3为根据本发明得到的第二种实施方式的工作流程图。步骤201:准备新的密钥种子码S3,用于替换软件保护设备B2中的密钥种子码S2;步骤202:准备验证数据,例如一个随机数Rl,并得到利用密钥种子 S3和Sl计算得到处理结果P3和Pl;步骤203:将R1、 P3和P1写入到软件保护设备A2中;步骤204:修改软件保护设备B2的密钥种子S2,将其覆盖为S3;步骤205:软件保护设备A2将随机数R1发送给软件保护设备B2,要 求软件保护设备B2对Rl进行计算,计算分别釆用Sl和S3所关联的算法 进行,得到结果P1,和P3,,并传送给软件保护设备A2;步骤206:软件保护设备A2对P1和P1,、 P3和P3,进行比较,如果比 较成功,则认为软件保护设备B2中的软件许可已经被撤销,启动软件保护 设备A2中所包含的软件许可;否则认为软件保护设备B2中的许可没有撤 销,不能启用软件保护设备A2中的软件使用许可;因为软件保护设备B2中即使知道了种子码S3,仍然不可能离开设备制 作出正确的输出结果,所以尽管S3存在被截获的可能,但是仍然没有办法 伪造出正确结果。这样,只有对软件保护设备B2进行了破坏之后,才可能 成功启用设备A中软件许可,达到了回收软件使用授权的目的。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种撤销软件许可的方法,其特征在于,该方法包括步骤A、将第一软件保护设备设置为受限制状态,并将第一软件保护设备发送给软件用户;B、软件用户得到第一软件保护设备后,将替换代码写入第二软件保护设备中,并且写入的替换代码与第二软件保护设备中未被替换的代码结合工作以完成新的功能;C、验证第二软件保护设备是否已经被写入了所述替换代码;D、如果验证成功,则解除步骤A中第一软件保护设备的受限制状态,否则继续保持第一软件保护设备的受限制状态。
2、 根据权利要求1所述的方法,其特征在于,在步骤A中,对第一软 件保护设备的限制是限定所保护软件的运行次数或者时间,或者禁止所保 护的软件运行。
3、 根据权利要求1所述的方法,其特征在于,在步骤B中,所述的替 换代码是可执行代码,或者改变第二软件保护设备的配置数据。
4、 根据权利要求3所述的方法,其特征在于,如果所述替换代码是可 执行代码,那么替换代码不能全部替代第二软件保护设备中的已有代码,而 只能替换第二软件保护设备中可执行代码的一部分,并与未被替换的代码结 合形成新的功能。
5、 根据权利要求3所述的方法,其特征在于,如果所述替换代码是改 变第二软件保护设备的配置数据,那么在配置数据被修改后,仍然保留未被修改的配置数据。
6、 根据权利要求3所述的方法,其特征在于,改变第二软件保护设备 的配置数据是种子码或者密钥。
7、 根据权利要求1所述的方法,其特征在于,步骤C中验证第二软件 保护设备是否已经被写入了所述替换代码验证的具体步骤是验证步骤B中新的功能是否被正确实现。
8、 根据权利要求7所述的方法,其特征在于,在步骤C中,所述验证是发送一个随机数给第二软件保护设备;第二软件保护设备根据步骤B中最终得到的新功能对所述随机数进行 处理;第二软件保护设备将得到的处理结果发送给第一软件保护设备; 第一软件保护设备验证处理结果是否正确。
9、 根据权利要求8所述的方法,其特征在于,限制步骤C中重复验证 的次数,如果在限定的次数内没有成功验证,则对第一软件保护设备进行锁 定,不允许继续进行-睑证。
10、 根据权利要求9所述的方法,其特征在于,步骤C中,验证过程利 用网络进行,或者在第一软件保护设备和第二软件保护设备之间直接进行。
全文摘要
本发明公开了一种撤销软件保护设备中软件许可的方法。本发明通过向已经发行的软件保护设备中写入部分校验性代码,在破坏已有软件保护设备内容的同时,在内部形成不可探测的验证机制,使得软件的所有者能够远程验证软件保护设备中的软件许可是否已经按要求进行了撤销。由于在撤销软件许可的过程中不需要将软件保护设备进行回收,而是直接远程进行,从而节约了大量的物流成本并避免了用户的等待时间。
文档编号G06F21/00GK101271504SQ20081010587
公开日2008年9月24日 申请日期2008年5月4日 优先权日2008年5月4日
发明者孙吉平, 勇 韩 申请人:北京深思洛克数据保护中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1