软件狗[Dongles]的加密与解密技术(2)
软件狗采取了各种的加密技术,目前较先进的加密技术有以下几种:
AS技术:API函数调用与SHELL外壳加密结合,即使外壳被破坏,加密程序依然不能正常运行。
反跟踪:
a.数据交换随机噪音技术:有效地对抗逻辑分析仪分析及各种调试工具的攻击。
b.迷宫技术:在程序入口和出口之间包含大量判断跳转干扰,动态改变执行次序,提升狗的抗跟踪能力。
抗共享:可从硬件对抗并口共享器,由开发商选择是否共享狗。
口令: 可由软件开发商设置32位口令,口令错误将不能对存储区进行读写。
时间闸:某些狗内部设有时间闸,各种操作必须在规定的时间内完成。狗正常操作用时很短,但跟踪时用时较长,超过规定时间狗将返回错误结果。
单片机:硬件内置单片机,固化的单片机软件保证外部不可读,从而保证狗不可仿制。
存储器:提供20字节掉电保持存储器供开发商存放关键数据、配置参数等信息。
市场上常见几种软件狗的简单介绍
彩虹天地:在中国应该算是老大了,从第一代到第四代的产品都有,但它的主要产品还是第三代的微狗(TD-MH),该代产品中有干扰芯片,能随时产生无用的干扰信号,更加有效的对抗逻辑分析仪;虽然有第四代的强劲狗(CS-QA),但好象有不少问题,所以推出的USB接口的加密锁还是兼容微狗的。彩虹天地的加密强度不高,最简单的pj方法就是随便买一个狗,然后复制成要解的狗。
深思洛克:也是一个比较有名的,至2001年初最主要的产品就是第四代的深思Ⅲ型加密狗,特点就是用户可在狗中定义自己的算法,这大大加强了其保护能力,但它的CPU功能还不够强,算法上有漏洞,而且只提供一种加密方式,所以也是可以击破的,并且也能硬件复制原狗。此类狗加密的产品有Pkpm结构计算软件、分析家股票软件、圆方cad软件等等。
深思 Ⅲ 的n阶黑箱模型法:
深思 Ⅲ 的n阶黑箱模型法并不是简单的记忆,而是通过深思 Ⅲ 独特的完全可编程使得深思 Ⅲ 锁对于输入和输出呈现高阶黑箱控制模型的特征。每次调用代码运行时使用锁内存储作为运算变量和参数,改变锁的状态影响后续的调用。用户自定义的代码没有任何的说明书和特征,甚至两次相同的调用会返回不同的有用的结果。这是深思 Ⅲ 独特之处。
以上加密范例并不要求加密者寻找复杂并难以预料的函数关系加以移植。
如果是采用0阶黑箱模型那么输入与输出具有直接的对应关系 y=f(x1,x2),其中x1,x2为本次输入,y为本次输出。这时如果函数关系简单就很容易被解密者破译,比如用迭代法、插值法和列表法等方法逼近;这就迫使加密者寻求复杂函数来防止解密者的破译和仿真。但由于锁内资源的限制使得软件移植几乎不可能。现在采用n阶黑箱模型,就使得输入与输出的对应关系复杂化: yn=f(yn-1,yn-2,yn-3,...,y1,xn1,xn2),其中,y1,y2,...,yn-1为以前n-1次调用输出或隐藏的结果,xn1,xn2为本次(第n次)调用的输入参数。
面对这样的复杂关系,解密者简单地取消中间的任何一次调用都可能使后边的结果发生错误,既使是简单的函数关系也可以被这高阶黑箱过程隐藏得难以推测。这样,借助于高阶黑箱模型法很容易找到应用软件中可以利用的公式或函数作为加密的对象。
n阶黑箱模型法使用过程中一样可以使用码表法,例如,范例中的第一次调用。
但是,这样的码表法不同的加密点互相关联,必须进行整体解密,这就大大地提高了加密强度。使用传统的0阶黑箱模型时,不同的加密点之间互不关联只需各个击破分别解密即可,其复杂度无法与n阶黑箱模型相比。对于比较复杂的函数,尽管锁内没有足够的资源,还是可以通过n阶模型法进行加密处理我们可以将复杂函数化为简单函数的运算组合,例如:y=(a-b)*(a+b)+c可以先计算(a-b)和(a+b)然后将结果相乘再加c。
n阶模型严格说是不可解的(只是目前理论上,也请深思公司记住这一点),因为第n次输出依赖于前n-1次输入和输出,而前n-1次输出可能已部分或全部被隐藏,所以第n次输出无法推测,至少推测n-1次输入产生的输出要比一次输入产生的输出复杂度有质的飞跃。
深思 Ⅲ 具有完备的指令系统,可以通过编程实现n阶或任意阶黑箱模型,每次调用互相关联,并且可以绝对隐藏中间结果,只要使用得当,理论上是不可解的( 我的理论是没有不可解的:)
飞天诚信:是新崛起的一家,主要产品是ROCKEY-IV和相兼容的USB狗,技术支持比较好,功能比较多,它的外壳加密程序很不错,用在加密上主要是8号功能(种子码)和14、15、16号功能(都是自定义算法),它的自定义算法比深思的产品好,“没有”漏洞(目前理论上说)。如果很好地使用它加密,是极难pj的。但大多数开发商都很偷懒,比如就只用8号功能(种子码)来加密。
制作和出售软件狗的公司很多,你只要注意一下计算机杂志上的广告就能得知。各公司生产的软件狗除了上述特点外,一般都有一些为吸引用户而附加的功能,主要是一些工具软件,其核心技术却是大同小异。
加密狗的一般特点
1、不占用并行口,因为它虽然插在并行口上,但是它又提供了一个跟原来一致的并行口。
2、软件具有防解密功能,可对抗各种调试工具的跟踪。
3、一狗一密码或一种线路,软硬件不可互换,就像一把锁一把钥匙那样。
4、提供各种语言的编程接口以及一套实用工具,方便用户在自己开发的程序中嵌入加密模块。
5、提供对可执行文件的加密工具,以便用户对已有的产品进行加密。
目前主流软件加密锁的不足
对软件加密保护产品而言,使用者最关心的是加密的有效性,产品的兼容性和稳定性。目前市场上主要的软件加密锁硬件内部均含有单片机,即所谓内置CPU,软件厂商主要是利用算法功能进行加密。加密锁通常还增加了一些辅助功能,比如倒计数器、远程升级等。这类型加密锁主要产品有彩虹天地的“微狗”“SuperPro”、深思洛克的“深思Ⅰ、III型”、 ALADDIN的HASP3、4等。通过对这些软件锁进行分析,认为从安全性上讲他们至少有三方面致命的薄弱点:
薄弱点1:设计原理有很大缺陷
目前主流的加密锁硬件提供了读、写和算法变换功能,且算法变换关系难以pj和穷举。但这类加密锁最大的缺陷是算法不向软件厂商公开,锁内的变换算法在出厂时已经固定,软件加密者只能设置算法的参数。这样就限制了厂商对算法的使用,要么预先记录算法结果然后在软件运行时核对(使用码表),要么在软件中至少变换两次然后比较结果是否一致;如果解密者截获这些数据,通过统计、分析就有可达到解密目的。
薄弱点2:加密锁受处理能力的限制,无法为软件提供强有力的保护
市场上曾先后推出了几款“可编程”加密锁。这类型加密锁最大的特点就是可以让用户自行设计专用算法。“可编程”加密锁的出现的确是软件加密技术的一次进步。深思洛克的“深思III”、飞天诚信的“Rockey4”均属此类产品。
但由于成本限制,这类型加密锁往往只能采用10~20元人民币的通用8位单片机或同档次的ASIC芯片作为核心微处理器。这种低档单片机的处理运算能力是相当弱的,这就给 “可编程”加密锁造成了很大的局限性,主要表现在:1、算法变换的复杂度不够高,2、指令编码空间较小,3、程序区的空间较小。这些局限性使得用户根本不可能利用“可编程”加密锁实现理想的高强度加密方案。
薄弱点3:硬件本身抵抗恶意攻击的能力较弱
随着集成电路设计、生产技术的发展,安全产品的核心芯片硬件本身受到攻击的可能性越来越大。典型的硬件攻击手段有电子探测攻击(如SPA和DPA)和物理攻击(探测,如采用SiShell技术),下面我们就这方面进行简要的分析。
电子探测(SPA和DPA)攻击技术的原理是:单片机芯片是一个活动的电子元器件,当它执行不同的指令时,对应的电功率消耗也相应的变化。通过使用特殊的电子测量仪和数学统计技术,来检测和分析这些变化,从中得到单片机中的特定关键信息。
物理攻击的方法有:通过扫描电子显微镜对芯片内部存储器或其它逻辑直接进行分析读取;通过测试探头读取存储器内容;通过从外部无法获取的接口(例如厂家测试点)对存储器或处理器进行直接数据存取;再激活单片机的测试功能等。
由于通用低档单片机并非定位于制作安全类产品,没有提供有针对性的防范物理攻击手段,因此比较容易通过电子探测(SPA和DPA)攻击直接读出存储器内的数据。虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但此类芯片应用场合广、发行批量大,随着厂商间委托加工与频繁技术转让,使得利用该类芯片下载程序的设计漏洞,利用厂商的芯片测试接口,通过特殊的烧写时序和数据读出信息成为比较容易的事情。
ASIC芯片是完全根据用户需求而特别定做,属于小批量生产。由于其采用特殊的逻辑电路且不会轻易公开测试功能接口,因此只要以其为基础开发的系统不是保存重要的信息或者不用于高级别的安全场合还是可以防范一般情况下的物理攻击。
加密锁性能判定
加密锁很小巧,包含的技术内容却很丰富。一般我们从三个方面分析加密锁的性能:
第一个是加密原理,或者说加密锁有些什么功能,这往往是针对一些解密方法发展起来的,最需要创造性的地方就是这里。国内产品在这个方面一直与国外产品具备足够的竞争能力。
第二个是加密锁的可靠性、稳定性、兼容性、透明性等。这些是对锁的基本要求,但是做完整并不容易,尤其是兼容性、透明性问题,加密厂家在这方面有着丰富的经验,但是没有谁可以100%保证。透明性是锁的一个比较特殊的指标,由于锁是工作在并口(打印口),并口还会有其他设备,比如打印机、绘图仪、硬盘、光驱等,锁如果影响到原来设备的正常工作就是透明性不够好,完全的透明是难以做到的,一般的加密厂家不保证锁对并口硬盘、光驱等设备的透明性。
最后一个是锁的易学性、易用性。