2.2 软件狗加密技术概述
软件狗主要有国外狗和国产狗,国外狗主要是指美国的彩虹和以色列的HASP;国产狗主要有圣天地、深思、坚石。总的来说,“国外狗”在软件接口、加壳、防跟踪等“软”方面做得相对没有“国产狗”好,但在硬件上破解难度非常大。而“国产狗”在“软”的方面做得比较好,许多技术,如噪声、自检测、算法可变、码表变换等,可以说都很先进,而在硬件上比国外稍弱,只要稍微有些单片机基础的人,都可对其进行复制。
2.2.1 软件狗加密技术的基本概念
软件开发商为了保护版权,要求用户只有在计算机的打印接口(并行口)或者USB口安装相应的硬件时,软件才会正常工作。这种安装在并行口或者USB口的防盗版硬件,就是我们所说的“加密狗”或“软件狗”。
软件狗是插在微机并行口上的一个软件保护装置,它包括主机检查程序和密钥(也称加密盒)两部分。主机检查程序就是前面说的加密代码的一部分,加密盒是用来存放密码的。一般来说,软件狗插在并行口上,不会影响打印机的正常工作。
常见的软件狗加密盒外形,如两个一公一母的D行25针连接器倒接在一起,公头(DB25/M)插在并行口上,母头(DB25/F)可接打印机,相当于原来的并行口。整个软件狗的硬件电路板就在这约5厘米的加密盒子里。
电路板上的公头(DB25/M)之间的管脚是逐一对应、直接相连接的,以保证并行口的作用不变。存储密码或起信号加密变换作用的器件及其他辅助元件就跨接在这25根线上面,应用程序以特定的方式跟它们沟通、核对。除了某些设计不良的情况之外,一般不会影响打印机的正常工作,打印机工作时也不会影响它们。
为了防止程序被非法复制,所做的加密保护措施一般都包括两部分。首先是要有保存密码数据的载体,即密钥;其次是夹杂在应用程序中的主机检查程序,即加密代码。密钥应该能保证不易被解密、复制;如通常采用磁盘进行加密时,加密部分无法用一般的工具复制。
另外,当检查程序用特殊方法去读密码时,密码应该能很容易地被读出,而不致影响应用程序的正常执行。当发现密码不对或密钥不存在时,就通过让主机挂起、重新启动或采用退出等措施。
现在软件狗的技术发展很快,针对不同的应用场合有不同的类型。
· 强劲狗:自由定义算法的高强度加密方案。
· 微狗: 面向单片机环境的高强度加密方案。
· USB狗:USB接口的微狗全兼容产品。
· 软件狗:面向单机环境的低成本加密方案。
· 网络狗:面向网络环境的加密方案。
· 卡式狗:面向网络环境的加密方案。
软件狗采取了各种加密技术,目前较先进的加密技术有以下几种。
1)口令:可由软件开发商设置32位口令,口令错误将不能对存储区进行读写。
2)存储器:提供20字节掉电保持存储器供开发商存放关键数据、配置参数等信息。
3)抗共享:可从硬件对抗并口共享器,由开发商选择是否共享狗。
4)AS技术:API函数调用与Shell外壳加密结合,即使外壳被破坏,加密程序依然不能正常运行。
5)时间闸:某些狗内部设有时间闸,各种操作必须在规定的时间内完成,狗正常操作用时很短,但跟踪时用时较长,超过规定时间狗将返回错误结果。
6)单片机:硬件内置单片机,由于固化的单片机软件保证外部不可读,从而保证了狗不可仿制。
7)反跟踪:① 数据交换随机噪声技术,能有效地对抗逻辑分析仪分析及各种调试工具的攻击;② 迷宫技术,在程序入口和出口之间包含大量判断跳转干扰,动态改变执行次序,提升狗的抗跟踪能力。
现在有许多公司都在制作和出售软件狗,各种软件狗的核心技术都一样,为了吸引用户而附加了一些功能,主要是一些工具软件,可以帮助用户方便地使用软件狗,提升用户的使用体验。
2.2.2 软件狗的功能和特点
软件狗的加密锁通常都很小巧,但包含的技术内容却十分丰富,一般可从3个方面分析加密锁的性能。
(1)加密锁的易学性、易用性
加密锁的一般特点如下。
① 不占用并行口,因为它虽然插在并行口上,但却又提供了一个跟原来一致的并行口。
② 软件狗具有防解密功能,可对抗各种调试工具的跟踪。
③ 一狗一密码或一种线路,软硬件不可互换,就像一把锁一把钥匙那样。
④ 提供各种语言的编程接口以及一套实用工具,方便用户在自己开发的程序中嵌入加密模块。
⑤ 提供对可执行文件的加密工具,以便用户对已有的产品进行加密。
(2)加密锁的可靠性、稳定性、兼容性、透明性等
这些是对锁的基本要求,但是做完整并不容易,尤其是兼容性、透明性问题,加密厂家在这方面有着丰富的经验。
透明性是锁的一个比较特殊的指标,由于锁是工作在并口(打印口),并口还会有其他设备,例如,打印机、绘图仪、硬盘、光驱等,锁如果影响到原来设备的正常工作,就是透明性不够好,完全透明是难以做到的,一般的加密厂家不保证锁对并口硬盘、光驱等设备的透明性。
(3)加密原理,或者说加密锁都有些什么功能
这往往是针对一些解密方法而发展起来的,最需要创造性的地方就是这里。国内的产品在这个方面一直与国外产品具备足够的竞争能力。
2.2.3 软件狗加密的缺点
对软件加密保护产品而言,使用者最关心的是加密的有效性、产品的兼容性和稳定性。目前市场上主要的软件加密锁在硬件内部均含有单片机,即所谓内置CPU,软件厂商主要是利用算法功能进行加密。加密锁通常还增加了一些辅助功能,如倒计数器、远程升级等。这种类型的加密锁主要产品有彩虹天地的“微狗”“SuperPro”、深思洛克的“深思Ⅰ、Ⅲ型”、ALADDIN的HASP3、HASP4等。
通过对这些软件锁进行分析,发现从安全性上讲它们至少有3方面薄弱点。
(1)设计原理有很大缺陷
目前主流的加密锁硬件提供了读、写和算法变换功能,且算法变换关系难以破解和穷举。但这类加密锁最大的缺陷是算法不向软件厂商公开,锁内的变换算法在出厂时已经固定,软件加密者只能设置算法的参数。这样就限制了厂商对算法的使用,要么预先记录算法结果。然后在软件运行时核对(使用码表),要么在软件中至少变换2次,然后比较结果是否一致;如果解密者截获这些数据,通过统计、分析就有可能达到解密目的。
(2)加密锁受处理能力的限制,无法为软件提供强有力的保护
市场上曾先后推出了几款“可编程”加密锁。这类型加密锁最大的特点就是可以让用户自行设计专用算法。“可编程”加密锁的出现的确是软件加密技术的一次进步。深思洛克的“深思Ⅲ”、飞天诚信的“Rockey4”均属此类产品。
但由于成本限制,此类型加密锁往往只能采用10~20元人民币的通用8位单片机或同档次的ASIC芯片作为核心微处理器。这种低档单片机的处理运算能力是相当弱的,这就给 “可编程”加密锁造成了很大的局限性,主要表现在以下几个方面。
① 算法变换的复杂度不够高。
② 指令编码空间较小。
③ 程序区的空间较小。
这些局限性使得用户根本不可能利用“可编程”加密锁实现理想的高强度加密方案。
(3)硬件本身抵抗恶意攻击的能力较弱
随着集成电路设计、生产技术的发展,安全产品的核心芯片硬件本身受到攻击的可能性越来越大。典型的硬件攻击手段有电子探测攻击(如SPA和DPA)和物理攻击(探测,如采用SiShell技术)。
下面我们就这方面来进行一些简要的分析。
电子探测(SPA和DPA)攻击技术的原理是:单片机芯片是一个活动的电子元器件,当它执行不同的指令时,对应的电功率消耗也产生相应的变化。通过使用特殊的电子测量仪和数学统计技术,来检测和分析这些变化,从中得到单片机中的特定关键信息。
物理攻击的方法有:通过扫描电子显微镜对芯片内部存储器或其他逻辑直接进行分析读取;通过测试探头读取存储器内容;通过从外部无法获取的接口(例如,厂家测试点)对存储器或处理器进行直接数据存取;再激活单片机的测试功能等。
由于通用低档单片机并非定位于制作安全类产品,没有提供有针对性的防范物理攻击手段,因此比较容易通过电子探测(SPA和DPA)攻击直接读出存储器内的数据。虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但此类芯片应用场合广、发行批量大,随着厂商间委托加工与频繁技术转让,使得利用该类芯片出现下载程序的设计漏洞,利用厂商的芯片测试接口,通过特殊的烧写时序和数据读出信息成为比较容易的事情。
ASIC芯片是完全根据用户需求而特别定做的,属于小批量生产。由于其采用特殊的逻辑电路且不会轻易公开测试功能接口,因此,只要以其为基础开发的系统不是保存重要的信息或者不用于高级别的安全场合,还是可以防范一般情况下的物理攻击。
综上所述,解密一个软件狗主要从两方面入手。
① 软件,只要把检查软件狗的那部分代码解除,那么软件狗就成了摆设。
② 从硬件入手的解密方法,其含义是要仿制一个加密盒,不管机密做得如何好,如果加密盒被仿制了,那么软件狗的加密作用也就不存在了。因此,从硬件入手的解密跟从软件入手的解密其效果是一样的,只不过后者需要付出一定的额外代价——硬件成本而已。
那么,既然从软件、硬件着手都能解密,用它来保护软件还有什么作用?不用着急,下面就来谈谈如何更好地保护自己的软件。
首先可以把要保护软件关键部分的程序加以编码,运行时再译码出来,这样就增加了解密的难度,因为解密者必须懂得编码、译码规则才能修改可执行文件,而这些规则加密者一般是不会泄露的。
还可以采取多种软件加密方法的综合,以及几种加密技术交叉使用,足以让许多解密者知难而退(例如,有人就把软件狗加密技术和磁盘加密技术结合起来做)。因为必须了解所有的加密技术原理才有可能解密,这就增加了难度,毕竟能够精通各种加密方法的人不多。