本文是本站对加密锁原理的一种全面介绍,目的是让大家更加了解它,合理使用它! 字串1
盗版,对大多数软件开发者来说都是一个令人担心的问题。在采用了加密锁加密后的软件会不会被黑客破解呢?理论上说没有不能破解的软件,即使是纯数学的密码加密也有被破解的可能,只不过破解的时间可能是个天文数字。那么剩下的问题就是什么样的加密锁加密能够最大限度地阻挡黑客的进攻,让被保护的软件安然度过市场销售的黄金时代呢?
目前市场上的加密锁大致分为两种类型:带CPU加密锁,不带CPU的加密锁。前者拥有计算能力,对加密数据、过程数据、通讯接口等可以实施动态密文处理,因此带CPU的加密锁也被演化出了多种多样的加密形式:密文校验、自定义算法、程序移植等等。而不带CPU加密锁相对简单,加密强度较低,成本低廉!
加密锁的克隆
不带CPU加密锁实际上是一个外接的存储单元,用户在使用了正确的方法后可以与内部存储交换数据,以达到加密的目的。这种加密锁,不论其软件加密强度高低,从硬件的角度来说属于低端产品,一般加密公司的低端产品皆属此类。如果破解者找到办法可以把加密锁中的数据读出来(前提是这个硬件高手可以找到办法),那么这个加密狗也就被破掉了,制作出一个完全相同的加密锁,这种方法我们熟称为加密锁的“克隆”。加密锁客隆技术的产生使加密锁技术发展进入了一个新的时代,新类型的软件加密锁大多都有密码或硬ID号的保护,只要黑客买不到相同密码的加密锁,也就无法进行加密锁的“克隆”了。
字串7
→ 在很少使用的代码中调用加密锁。那么看似已破译的程序就会经常发生异常现象。
→ 根据时间调用加密锁。上午调用的数据下午(或隔日)使用。破译者为了分析这种数据就要花一天或几天的时间。这就可以拖垮破译者。
→ 加密锁校验函数不宜定义成一个单独函数,而宜定义成若干个小函数分散使用。
→ 检查程序代码的校验和,以防非法修改。
→ 以各种不同的随机访问掩护真实的加密锁访问。对随机询问的答复进行处理,但不真正使用它。
→ 可在加密锁里的多个地址预先写入不同数据,校验锁时可以随机地对其中的某个地址进行校验。(如可随机产生一个数,再根据该数来决定对锁里哪个地址的值进行校验。) 字串3
→ 在程序中不同的地方对加密锁进行检测,即多点加密。这个方法可配合方法一使用。
→ 在您程序的运行过程中,您可以定时、不定时地对加密锁进行随机检测。
→ 您从加密锁取得返回数据后,并不立即判定,而是在后来才去判定是否正确;在判定加密锁错误时,并不立即提示或退出,而是在以后提示或退出或程序照常运行但出现偏差或溢出等等错误。
→ 可以将加密锁返回值作为数组的索引、常量、计算单元和校验码;可以将加密锁返回值作为指针来控制程序执行或作为在不同表中跳转的索引;也可以使用加密锁返回值来加密或解密部分代码或数据。加密锁返回值使用后立即删除。
蓝芯金盾软件加密锁把用户定制(根据密码系数变换密码算法)密码算法写入加密锁中,并以程序的形式对调用者进行身份验证。
字串7
内嵌式
这种加密方法要求具有源程序,在被加密程序中访问加密锁。加密锁的驱动光盘中提供VC\VB\VFP\Delph\PB\CB等各种言的编程接口及详细的示例供客户参考。如果您有什么特殊要求可与我们联系。 字串3
外壳式
外壳加密是一种直接对可执行文件(.exe\.com\.dll)加密的加密方法。这种方法不需要源程序,加密过程简单方便。
在加密锁动态连接库中提供了文件加密和解密函数。函数中隐去了 HASH和RSA密码算法的实现细节,安全性极高且使用方便。用户只需输入文件名和口令即可。 字串1
用程序的完整性检测码防止文件被非法篡改
定义1:运行检测码--程序运行时的完整性检测码。
定义2:发行检测码--程序发行时的完整性检测码。
检测原理:
根据程序完整性检测程序是否被修改--在程序发行前计算程序的“发行检测码”,在程序发行后运行时自动计算程序的“运行检测码”。 如果 “运行检测码” 等于 “发行检测码” 则程序完整性检测正确,程序没有被修改。 如果 “运行检测码” 不等于“发行检测码” 则程序完整性检测错误,程序被修改。
字串8