- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件保护中两种常用战术
软件保护中两种常用“战术” 摘 要:软件安全是信息安全领域的重要内容,其中软件保护是关乎知识产权的一项重要工作,市场上虽然有大量现成的方案可选用,如基于软件的加密壳保护和基于硬件的加密锁保护,但这些优秀的保护方案由于太流行,造成大家对其研究太透彻,反而容易被破解。所以有必要实现相关的保护方法。 关键词:软件保护;注册码生成器;破解;算法 软件保护的目的是向正式注册用户提供完整的功能,所以软件保护必然要包括验证用户合法性的环节,而这一环节通常采用注册码验证的方式实现。 (1)使用者向软件开发方发送用户码U,要求注册。 (2)由软件开发方发出经过运算得到注册码R=f(U)。 (3)用户在软件注册界面输入U和R。 (4)软件通过检验函数F(U,R)来检测用户的合法性。 其中一些常用术语说明如下: 用户码U:用户身份ID。 注册码R:用于验证用户是否合法。 注册码生成器:把R=f(u)中的f称为注册码生成器算法,注册生成器算法可以针对任何用户码计算出一一对应的注册码。 检验函数:把F(U,R)称为检验函数,软件使用检验函数检验注册码是否合法,也就是只有R=f(u)成立时,F(U,R)才是合法的。 算法求逆:把破解者通过检验函数F推导注册码生成器算法的过程称为算法求逆。 1 堡垒战术 人们早就在各个领域开始研究身份检验的问题了,并研究开发出了散列加密和非对称加密等早已被人们认可的密码学算法,但真正适用于软件注册这一场合的算法恐怕只有MD5和RSA算法了。 MD5算法通常不能直接用来对消息进行加密,因为这种算法没有逆向算法,所以加密之后不能解密,这种加密是没有实用意义的,MD5算法的用途在于数字签名。例如张和李进行通信,张只将明文A加密为B传送给李是不够安全的,因为即使密文B的加密强度再高也只能防止在传输过程中被解密而泄露内容,却不能防止破坏者直接篡改密文B。李收到B后解密得到A,也无法判断A中内容的可靠性与安全性。所以张在发送B的同时通常会在A之后签名,然后计算一个校验码C=MD5(A),将B、C一起发送给李,李收到B、C后,首先解密B得到A,然后同样计算校验码C=MD5(A),若计算出的校验码与收到的校验码相同,则可判定A真实可靠。 同样的原因导致不能把MD5算法直接用做注册码生成器,假如使用R=MD5(U)做注册码生成器,因为MD5本身没有反函数,检验函数就必须包含注册码生成器。但是用以下办法间接使用MD5算法就可以: (1)设注册码生成器为R=f(U)。 (2)设MD5(a)=b。 (3)令检验函数F为:F(U,R)=MD5[f-1(R)-U+a] 显然F的合法值应为b,只要U,R满足R=f(U),F一定等于b。因为MD5没有逆操作,破解者不能经由b知道f-1(R)-U+a应该等于a,也就不可能得到f-1的明确定义,更不会得到注册码生成器f。至于f-1(R)-U+a表达式中虽然含有a,但解密者无法判断a和f-1的关系。 实际上利用MD5算法构造F可以有很多方法,让企图破解者根本看不出F和f、f-1的关系,就更不用说去找逆运算了。但MD5算法的弱点是,由于MD5没有逆操作,所以a必须为常数,一旦破解者知道了一对可用的U、R,它们就可能追踪到可用的a、b值,从而知道f-1,并由此推测出注册码生成器f。 相比于MD5,RSA算法在软件保护中应用就要简单的多了: (1)软件作者使用:R=Ud mod n作为注册码生成器。 (2)软件使用:U=Re mod n作为检验函数。 由于算法的复杂性,破解者是不可能知道d,也就无法破解注册码生成器。可以说利用RSA算法保护软件就是建造了一座坚固的堡垒,但是由于RSA算法是一种公开算法,所以利用RSA算法来进行软件保护也存在着一些问题。 (1)大多数的使用者对RSA算法的细节并不了解,这就为因为错误使用RSA埋下了隐患。例如,在不同的软件作品中,使用同样的参数导致莫名的异常攻击。 (2)有些函数本身的不完善性也会导致防线的崩溃,例如,在产生随机数时,会有当初始条件相同时,产生完全相同的随机数结果。破解者如果了解到这一点,就可以依据n值推断原始数据产生过程,RSA的防线也就岌岌可危了。 (3)函数库在产生随机素数时,应当淘汰那些容易被猜到的素数,否则会导致RSA算法中存在若干由各种特殊素数构造成的“弱密钥”,这样带来的后果就是当破解者稍有数论基础,就很容易攻破RSA。 2 游击战术 软件保护中的游击战术就是将检验函数F拆分成多个相异的Fi,然后将这些Fi的不规则的随机分布到程序的各个位置上。 经过这样的处理之后,通过任何一个Fi的验证都只是合法注册的必要非充分条件,而只有真正
原创力文档


文档评论(0)