第四代软件够在第三代软件狗基础上,加入一个单片机芯片,如PIC16C5X。此芯片中存有特定的算法程序,可将读出的密钥数据进行加密变换,以对抗逻辑分析仪。可以说,软件狗发展到第四代,已经非常成熟了。在此技术上,各软件狗研制公司又加入自己的电路设计,形成了各自的产品特色。
平时常见的狗主要有“洋狗”(国外狗)和“土狗”(国产狗)。这里“洋狗”主要指美国的彩虹和以色列的HASP,“土狗”主要有金天地(现在与美国彩虹合资,叫彩虹天地)、深思、坚石。总的来说,“洋狗”在软件接口、加壳、防跟踪等“软”方面做得没有“土狗”好,但在硬件上绝对“无法” pj(应当说pj难度非常大):而“土狗”在“软”的方面做得绝对称得上世界第一,许多技术,如噪音、自检测、算法可变、码表变换等等,可以说都很先进,而在硬件上不及国外,只要稍有单片机功力的人,都可复制。
现在狗的技术发展很快,针对不同的应用场合有不同的类型,如:
- 强劲狗:自由定义算法的高强度加密方案
- 微狗: 面向单片机环境的高强度加密方案
- USB狗: USB接口的微狗全兼容产品
- 软件狗:面向单机环境的低成本加密方案
- 网络狗:面向网络环境的加密方案
- 卡式狗:面向网络环境的加密方案
软件狗采取了各种的加密技术,目前较先进的加密技术有以下几种:
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次输入产生的输出要比一次输入产生的输出复杂度有质的飞跃。
共13页: 上一页 [1] 2 [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页
|