软件加密基本思路

安全没有绝对的,只有难度或强度,软件加密也是一样,不必迷信绝对破不了的加密锁,也不要指望用上最好的加密锁就能马上解决所有问题,就是说加密产品本身的安全性是一方面,但是怎么用或更方便使用它的安全特性同样重要,一个好的加密产品,除了自身安全可靠,指导思路清晰,更要紧的是让软件开发商容易使用并达到一定的安全强度才是出路。加密是无止境的,只有合理评估自身可能被解密的压力有多大,才能做到适度加密,不然,加密强度不够则容易破解并造成损害,反之,加密过度也会浪费自己的时间并影响效率,譬如希望自己的软件在五至八年不被破解,那相应的加密强度达到十年左右即可,加密难度适当,让破解者得不偿失,知难而退。

市场上主流加密产品大体分两类:一种是以API和外壳加密相结合的(以HASP为代表),一种是以锁内编程的方式(象智能锁)。它们各有特点,锁内编程从原理上讲,硬件可靠并使用得当,则安全性较高,但它使用起来不易,需要加密技术人员具备较高的经验和编程技巧,还要选择合适的算法,这要考虑锁的支持情况和速度,对于硬件而言,关键是芯片,一般来说都是在市场上采购,这会有通用性或存在后门的问题,可能不具形式釜底抽薪地获取锁内代码,所以需要留意了解清楚;而API与外壳加密,API的灵活性很大,加密强度可大可小,主要看有多少个加密点并实现了多少种安全策略,这种方式的外壳加密特别重要,它能解决API加密做不到的事情,如反跟踪、反调试、反编译及百盒技术等,因外壳是针对编译出来的程序自动进行加密,无需软件开发商费劲,就能使安全达到一定的程度,问题是外壳加密工具本身的技术性强,这需要厂商有实力能够提供较强的外壳工具,在行业中,HASP的外壳是全球公认的,值得参考。

API加密技巧,上述提到API弹性较大的特点,要做好API,重要一环先要评估好,然后根据多少个加密点来实现基本安全策略,具体小的技巧而言:第一个API调用,从人性化的角度出发,合理提示加密锁是否存在,后续所有的API函数调用建议无需提示,根据返回值做出合适的反应,譬如有锁正常运行,无锁进入试用版;API加密从简单到复杂要实现多种安全策略,迷惑黑客思维,如有的API调用,不用返回值,让其纳闷,一般调用API后,在合适的位置再利用返回值;将程序中重要的数据、参数、表头、用户信息等与加密锁紧密相连,没锁存在则会出现异常,例如桥梁测算软件,有锁则精度高,没锁则会有误差,让人感觉有点问题而不清楚出在哪里;利用加密锁内的算法,预先加密重要的数据信息,甚至还可通过产生随机数变异后加密,使用时一定要解密,存储时又加密,让重要的数据离不开加密锁;个性化加密策略,譬如让某个API每隔三月或半年才调用一次,让人感觉此函数无用处而难以破解。总之,API加密的安全策略形式上要多样化,让人无从下手。

选择一家经验多、服务支持到位的合作伙伴很有必要,尤其无加密产品使用经验者更加注意,使用加密初期,需要得到产品使用技巧和相关经验指导,以利于更好地发挥产品的作用,也切实符合自身的安全需求,以后要求更高时也能得到较好的支持和帮助,总的来说,一个好的加密产品,需要好的指导才行,选择一家经得起考验的合作伙伴长期受益。

以上是一个基本的思路,希望读者从中得到启示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值