一种软件保护方法

文档序号:6463541阅读:502来源:国知局
专利名称:一种软件保护方法
技术领域
本发明涉及软件保护技术,特别涉及一种基于软件保护装置的软件保护 方法。
背景技术
使用软件保护装置是实现软件安全保护和版权保护的主要手段。软件保护装置特指一种附加在计算机接口 (比如,USB接口、串口、并口等接口) 上的硬件设备,对运行在计算机上的特定的软件进行软件安全保护和版权保 护。作为当前软件安全保护和版权保护方面最有效的技术手段之一,软件保 护装置在促进软件行业的健康发展方面起了非常大的作用,但也因此成为盗 版者重点攻击的对象。事实上,从软件保护装置诞生的那一天开始,盗版者 与软件厂商之间的战场就开始从软件转移到软件保护装置上了 。在众多的攻 击手段中,复制和伪造软件保护装置是一种危害极大的行为,这将使软件保 护体系崩溃,软件厂商因此不能识别合法的客户,购买产品的客户不能知道 自己使用的产品是否为正版,因此这是绝对不可以接受的盗版行为。软件保护装置实现保护的原理是将软件所必须的内容实现放置在装置 中,软件运行时通过计算机接口访问设备,获得继续运行所需要的信息,因 此,软件保护装置内放置的内容的安全是保护软件的关键,不断增加硬件的 安全性是软件保护装置进步的主要方向,从最早的EEPROM到固定算法 MCU,再到可变算法MCU为基础的软件保护装置时代,其硬件攻击成本是 不断增加的,特别是现在基于智能卡的软件保护装置,其硬件攻击的成本已 经远远超过盗版软件所能带来的利润,猖獗一时的直接克隆硬件的手段在智能卡产品时代已经逐渐销声匿迹了 。然而,软件保护装置与软件之间通信的部分却是一个薄弱的环节,盗版者可以通过软件保护装置的API、驱动、甚至是侦听物理总线,获得软件保护装置与软件之间通信的数据,分析出软件保护装置内部被保护的数据和功 能,从而有针对的伪造出一个功能相同的软件保护装置。虽然现在可以通过 移植软件代码等手段提高分析的难度,甚至可以达到无法分析的难度,但是 由于移植代码的技术难度高、受软件本身限制等客观原因影响,能够实施这 种手段的软件毕竟是少数,对于多数软件来说,由于通信数据的复杂度有限, 仍然存在很大的风险。发明内容有鉴于此,本发明提出一种有效防范软件保护装置被伪造的方法,在软 件中利用非对称算法对软件保护装置进行合法性认证,由于非对称算法的安 全性已经在理论和实践中得到无数次检验,因此采用这种认证方法后,伪造 软件保护装置已经是技术上不可行的了 。非对称密钥算法是指一个加密算法的加密密钥和解密密钥是不一样的,这两个密钥其中一个称为公钥,用于加密,是公开的;另一个称为私钥,用 于解密,是保密的。其中由公钥计算私钥是计算上不可行的。由于有这种特 性,非对称算法在网上银行、电子商务等高度注重安全的领域得到广泛的应 用,本发明将这种算法应用范围扩展到对软件保护装置合法性的识别上,解 决伪造软件保护装置的问题。参见图l,根据本发明的一个方面,提供一种软件保护方法,其特征在 于,该方法包括步骤A、 利用非对称算法生成一对公钥和私钥;B、 在受保护软件中保存公钥,在软件保护装置中保存私钥;C、 受保护软件使用其中保存的公钥验证软件保护装置中是否持有对应 的私钥;中持有对应的私钥,则确定软件保护装置 合法;否则,确定软件保护装置不合法。根据本发明的一个方面,其特征还在于,所述步骤C中的验证还包括 步骤(1) 受保护软件发送验证数据给软件保护装置;(2) 软件保护装置对验证数据进行计算,将响应数据返回给受保护软件;(3) 受保护软件对软件保护装置返回的响应数据进行验证。 根据本发明的一个方面,其特征还在于,所述验证方式为挑战/响应(Challenge/Response )方式。根据本发明的一个方面,其特征还在于,所述验证方式为数字签名验证 方式。根据本发明的一个方面,其特征还在于,所述软件保护装置内部可编程。 根据本发明的一个方面,其特征还在于,所述软件保护装置支持RSA非对称算法。 '根据本发明的一个方面,其特征还在于,所述I^S正数据是随机数。 根据本发明的一个方面,其特征还在于,所述软件保护装置为北京深思洛克数据保护中心的精锐IV高强度智能卡加密锁。根据本发明的一个方面,其特征还在于,所述软件保护装置为北京深思洛克数据保护中心的精锐E高强度智能卡加密锁。根据本发明的一个方面,其特征还在于,采用的非对称算法为RSA或ECC公开密钥体系算法。


图1是本发明的方法流程示意图。图2是本发明中进行验证的流程示意图。
具体实施方式
为使本发明所述方法更容易被理解,下面参考图2通过具体实施例来进 行说明。实施例一本实施例所述软件保护装置为北京深思洛克数据保护中心的精锐IV产 品,精锐IV是国内首款智能卡加密锁,其主要原理是在智能卡内为数据和 代码执行提供一个高度安全的、不可跟踪的环境,有效的对抗软件盗版行为, 其内部可提供最大64K的存储空间,以文件方式组织,用于存储需要保密 的代码和数据,并可以在内部执行文件中保存的代码,同时,精锐IV支持 1024bit RSA非对称算法的密钥存储和运算,适合应用于本发明所述方法。本实施例所用非对称算法为1024bitRSA算法。本实施例所用软件为Visual C++ 6.0开发的控制台程序。实施步骤如下1. 利用精锐IVSDK中提供的开发测试工具生成一对1024 bit RSA公 私钥对,保存为公钥文件KEY.PUB和私钥文件KEY.PRI;2. 将KEY.PUB转换为C语言格式的字节常数定义,并加入到软件的 源代码中;3. 精锐IV内部创建私钥文件0001,将KEY.PRI写入0001文件中;'4. 在精锐IV内部建立可执行文件0002,并编写相应代码,以完成数 据接收、使用0001文件中的私钥进行数字签名,和发送响应数据 的功能;5. 软件产生若干字节的随机数,并发送给精锐IV的0002可执行文件 处理;6. 精锐IV内的0002文件使用0001文件中的私钥对软件发来的数据进行RSA数字签名操作,并将结果返回;7. 软件调用RSA算法库,利用步骤2中保存的公钥数据对精锐IV返 回的签名结果进行验证。验证通过,则认为精锐IV持有对应的私 钥,为合法设备;8. 软件中可重复5-7步骤,进行多次认证。实施例二本实施例所述软件保护装置为北京深思洛克数据保护中心的精锐E产 品,精锐E产品的原理也在智能卡内为数据和代码执行提供一个高度安全 的、不可跟踪的环境,有效的对抗软件盗版行为,其内部可提供最大32K 的代码和数据存储空间,以代码和数据混合的模块方式组织,支持内部执行 代码,并支持1024bit RSA非对称算法的密钥存储和运算,适合应用于本 发明所述方法。本实施例所用非对称算法为1024 bit RSA算法。本实施例所用软件为Visual C++ 6.0开发的控制台程序。实施步骤如下1. 利用精锐E SDK中提供的开发测试工具生成一对1024 bit RSA公 私钥对,保存为/>钥文件KEY.PUB和私钥文件KEY.PRI;2. 将KEY.PUB转换为C语言格式的字节常数定义,并加入到软件的 源代码中;3. 在精锐E内部建立可执行模块M1,将KEY.PRI加入到模块的数据 区,并编写代码处理设备验证请求,以完成数据接收、使用数据区 中的私钥进行数字签名,和发送响应数据的功能;4. 软件产生若干字节的随机数,并使用步骤3中定义的公钥,调用 RSA算法库加密,将加密结果发送给精锐E的Ml模块处理;5. 精锐E内的Ml模块对软件发来的数据进行RSA解密操作,并将 结果返回;6. 软件比较步骤4产生的随机数和步骤5返回的设备响应,如果相同,则认为精4兌IV持有对应的私钥,为合法i殳备;7. 软件中可重复4-6步骤。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种软件保护方法,其特征在于,该方法包括步骤A、利用非对称算法生成一对公钥和私钥;B、在受保护软件中保存公钥,在软件保护装置中保存私钥;C、受保护软件使用其中保存的公钥验证软件保护装置中是否持有对应的私钥;D、如果验证出软件保护装置中持有对应的私钥,则确定软件保护装置合法;否则,确定软件保护装置不合法。
2、 根据权利要求1所述的方法,其特征在于,所述步骤C中的验证还 包括步骤(1) 受保护软件发送验证数据给软件保护装置;(2) 软件保护装置对验证数据进行计算,将响应数据返回给受保护软件;(3 )受保护软件对软件保护装置返回的响应数据进行验证。
3、 根据权利要求2所述的方法,其特征在于,所述验证方式为挑战/ 响应(Challenge/Response)方式。
4、 根据权利要求2所述的方法,其特征在于,所述验证方式为数字签 名-验i正方式。
5、 根据权利要求1-4所述任一方法,其特征在于,所述软件保护装置 内部可编程。
6、 根据权利要求5所述的方法,其特征在于,所述软件保护装置支持 RSA非对称算法。 '
7、 根据权利要求5所述的方法,其特征在于,所述验证数据是随机数。
8、 根据权利要求5所述的方法,其特征在于,所述软件保护装置为北京深思洛克数据保护中心的精锐IV高强度智能卡加密锁。
9、 根据权利要求5所述的方法,其特征在于,所述软件保护装置为北 京深思洛克数据保护中心的精锐E高强度智能卡加密锁。
10、 根据权利要求l-9所述的任一方法,其特征在于,釆用的非对称算 法为RSA或ECC公开密钥体系算法。
全文摘要
本发明公开了一种基于非对称算法的软件保护方法,其原理在于受保护软件使用非对称算法验证软件保护装置的合法性,鉴别伪造软件保护装置的行为。本发明将身份认证领域广泛应用的、且已经经过时间检验被证明是安全有效的认证算法用于软件对软件保护装置的验证过程,彻底解决伪造软件保护装置的问题。
文档编号G06F21/22GK101281575SQ20081010656
公开日2008年10月8日 申请日期2008年5月14日 优先权日2008年5月14日
发明者孙吉平, 勇 韩 申请人:北京深思洛克数据保护中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1