第一节 软件加密狗破解思路和方法
本文介绍的是软件加密狗破解的一般思路和方法,大家可能奇怪,昨天刚刚介绍完“软件加密锁产品评测”,怎么今天就介绍加密狗破解知识?其实做为软件开发者,研究好软件加密的确很重要,不过也很有必要多了解一些关于加密狗解密和破解的知识,加密和破解就像矛和盾一样,对于解密知识了解的越多,那么编写的加密代码就越好,要知道加密永远都比解密要容易的多,只有知己知彼,方能百战百胜。
硬件加密锁,俗程“加密狗”,对于加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。
硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。
对于Debug调试破解,由于软件的复杂度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的复杂度已经变得越来越高,破解成本也越来越高,目前已经很少有人愿意花费大量精力进行如此复杂的破解,除非被破解的软件具有极高的价值。
目前加密锁(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这种方法成本较低,也易于实现,对待以单片机等芯片为核心的加密锁(加密狗)具有不错的解密效果。
由于加密锁(加密狗)的应用程序接口(API)基本上都是公开的,因此从网上可以很容易下载到加密狗的编程接口API、用户手册、和其它相关资料,还可以了解加密狗技术的最新进展。
1
例如,某个国内知名的美国加密狗提供商的一款很有名的加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密锁(加密狗)有个内存单元,其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。
数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可以使用Read函数读出存储单元里面的数据,也可以使用Write函数保存自己的信息到存储单元。
计数器是这样一种单元,软件开发商在其软件中使用Decrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive)这个算法。
算法单元较难理解一些,算法(algorithm)是这样一种技术,你用Query(queryData)函数访问它,其中queryData是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。 此加密锁(加密狗)的所有API函数调用都会有返回值,返回值为0的时候表示成功。 因此,破解思路就出来了,就是使用我们自己的工具(如VB、VC等)重新编写构造一个和加密狗API一样的DLL动态库文件,里面也包含Read、Write等全部API中包含的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对Query、Read函数进行处理,返回应用软件需要的数值即可。
这个新的DLL文件编写成功后,直接替换掉原来的DLL文件,这时候再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永远会返回正确的数据给软件,从而实现了模拟加密狗的运行。
2
以上是目前破解软件加密狗(加密锁)的一些常见思路,对于这种破解,软件开发者还是有相应的一些对策的,下一回我将在《软件加密锁编程技巧》一文中具体介绍一下软件开发者将如何编写安全可靠的代码,使得这种类似的破解方法失效。
第二节 国内软件加密锁产品评测
昨天讲述的“软件加密技术和注册机制”是一些软件加密的基本概念,在中国,开发和销售软件离不开加密,因为我国的软件保制还不太健全,人们的法制观念也比较淡薄,盗版软件有着丰富的土壤,并且因为软件是一种非常特殊的商品,很容易复制,就其功能来讲,正版和盗版的区别很小,如果开发出来的软件不进行加密的话,那么在中国就无法销售出去,人们乐意使用盗版软件而没有一些道德罪孽感,因此软件开发商有必要使用一些加密产品来保护软件开发者的利益,防止软件被盗版。
前文介绍的加密解决方案中,软件加密锁(俗称加密狗)是一种加密安全强度最好的加密产品,所谓加密锁,就是一个安装在计算机并口或USB口上的一种特殊硬件,应用软件通过和这个硬件的通讯来确保软件不被盗版。目前市场上流行的加密锁产品很多,有美国SafeNet的圣天诺加密锁系列、HASP、深思洛克等,下面,我就将对目前常见的硬件加密锁(加密狗)进行一些技术上的评测,供软件开发商们参考。
名称 圣天狗 Hasp HL Sentinel SuperPro 外观 供应商 存储空间 加密算法 芯片 支持接口 美国SafeNet 8K 128位AES/ECC MCU芯片 USB,不支持并口 以色列Aladdin 4K 128位AES/RSA 独家芯片 USB,不支持并口 美国SafeNet 112字节 DES ASIC USB和并口 数据保全:最小10稳定性 可以保存数据10年 年 万次 远程升级 产地 参考价格 支持 美国 100-200元 支持 以色列 100-200元 支持 美国 50-100元 可以保存数据10年 存储读写: 最小1百写操作:100,000次 3
SafeNet 在 2004 年推出全新硬件的 SuperPro USB ,支持 SuperPro 7.0 的所有新增功能,更
圣天诺加密锁保持行业内最高的可靠性,硬件故障率低于万分之一。
拥有 512 字节( 256 存储单元)的大容量以配合高级许可机制和高级
圣天诺加密锁承诺采用128位密匙的全应用, 具有超SuperPro USB 锁比 非人为、非机械的硬共AES算法,件损坏, 2 年内免强的防盗版性能。 SuperPro 并口锁费更换。
( 128 字节)多
创新性融入了多层384 字节,也就是多
安全技术,抗调试和了 192 个存储单并口产品独有 ASIC
芯片由 Rainbow 公抗反向工程能力突元。 提供更大存储司自主设计,保证硬出。 件不可复制,拥有最 高安全级。别
自己宣称的特点和优势
空间的同时, SuperPro USB 的安
许可证采用数字更全性也大大增强。它
新,签名采用1024应用抗黑客技术,全新推出应用于 有位的私有密钥RSA效阻止对写锁密码USB 加密锁上的 算法。 MCU 芯片技术,支持
的恶意攻击。
3-DES 和 128 位
首创的应用程序封
AES 加密算法,加密内置新一代 MCU 芯
装技术,提供了:
强度极高。 片,支持 USB2.0 标
防逆工程保护,代码
准 / 支持带电插
混淆,防范动态调试
一只加密锁可以同拔,即插即用,通过
和防调试器。
时保护 28 个软件,微软 WHQL 认证,提
对软件实行分模块供 128-512 字节掉
符合ISO 9001:2000
的分发与控制。 电保持存储空间,提
认证的生产设备。
以易用性为使命,圣供 28-124 个天诺开发工具具有性的意义,使复杂的加密过程轻松完成
的算法单元,提供上亿种算法选择 / 支持 3DES, AES 算法,支持分软件分模块销售模式 / 支持 AS 加密技术,内置计数器 / 内置唯一序列号,提供远程升级功能。
4
HASP HL通过仅允许当加密锁连入计算机才可以对被保护的软件进行访问读取和执行,来防止盗圣天狗与应用程序版和非法使用的。的通讯,采用公钥加HASP HL集合了一个密及128-bit AES加高度安全,无法渗透密机制。中间层的入破解的编码引擎。运侵方式,如监听与仿行时,被保护的软件真,驱动程序的替换发送一个经过编码加密强度 超强锁把复杂的软硬件技术结合在一起以防止非法发布和使用开发商软件。 当被圣天诺超强锁保护的软件运行时,等都被有效的遏止。的字符串给HASP 程序向插在计算机每次应用程序和硬HL, HASP HL对该上的超强锁发出查件锁间的通讯,都会字符串解码并产生询命令。超强锁迅速使用一个的加一个无法仿造复制计算查询并给出响密密钥,让黑客无法的返回值。如果从应。正确的响应保证暴力破解。圣天狗包HASP HL返回的值正软件继续运行。如果括了内部验证,可以确, 则该应用程序超强锁被拔掉,程序有效地预防圣天狗可以运行。如果没有将不能运行。 被复制。 连入HASP HL或者返 回值不正确,则该应用程序不能运行。 HASP HL使用国家标准技术局(NIST)制订的高级加密标准。 名称 深思洛克精锐IV 飞天诚信ROCKEY6 外观 供应商 存储空间 加密算法 芯片 支持接口 稳定性 远程升级 北京深思洛克 8K和32K RSA/3DES 菲利浦16位智能卡芯片 USB,不支持并口 10万次擦写寿命 支持 北京飞天诚信 70K RSA/3DES 中兴通讯32位智能卡芯片 USB,不支持并口 10万次擦写寿命 支持 5
产地 参考价格 北京 50-100元 芯片自锁功能——软件对芯片的访问首先由PIN码保护,PIN码的尝试次数可由软件开发商设定。当非法用户利用字典攻击的情况出现时,如果次数超过设定值以后,芯片会自我锁定,外界一切对芯片的操作均被停止。 硬件随机数发生器(白噪声技术)——用于产生高强度随机数。除对称算法生成密钥需要外,随机数在安全加密领域具有非常重要和广泛的应用,因此,硬件本身带有高强度随机数发生器对安全而言意义重大。 北京 50-100元 采用中兴通讯的32位智能卡加密锁、内置C51虚拟机;自主知识产权的COS系统—FEITIAN COS;提供Keil 试用开发环境;全球唯一硬件ID与管理编码;丰富的虚拟机系统调用和开发接口,支持双精度浮点的多种数算;强大的文件系统管理,用户可定义多种数据类型和安全级别;方便、安全的远程升级和模块管理功能;内置计数器。 Rockey6Smart采用的是32位的智能卡芯片,浮点运算能力自己宣称的特点和优势 硬件时钟定时器——是软件计是目前最快的。能满足多数运时使用、反跟踪等常用软件保算要求。 护手段中必备的功能,精锐TMIV硬件中提供计时周期长达10小时的定时器,可以轻松实现上述要求。 ROCKEY6 SMART采用的中兴通讯的32位智能卡芯片,该款芯精锐IV采用的是PHILIPS最先片已经通过国家密码局资质认并为其编号SSX20,2005进的16位智能卡芯片,其达到证的,了目前全球科技产品领域最高年7月,SSX20安全芯片获“中安全级别——EAL5+。深思洛克国电子信息产业集团公司科学向用户承诺精锐系列采用的核技术进步二等奖”。 心智能卡芯片完全能够对抗主飞天的另一款产品ROCKEY4 S要的芯片攻击手段,确保产品MART使用的是ST的进口芯片,安全性。 该款芯片是通过了国际安全机构检测和认证(EAL 4+和IT SEC认证)。 加密强度 6
以上测评数据大多来源各个产品的相关介绍,我对这些数据做一些解读,以供大家参考。
1、Sentinel SuperPro为比较老的产品,其存储空间最小,加密强度也小,其他产品为较新的产品。
2、AES为目前公认的最强的单钥加密算法,以目前电脑运算速度,在地球灭亡之日也是无法解开128位的AES密钥。而DES为70年代的算法,超级计算机可以在数天内解开其密钥。
3、ECC(椭圆曲线)是最新的双钥加密算法,通常认为其比70年代的RSA算法速度快,安全性高。
4、硬件加密锁的安全性在于其芯片的安全,芯片是不可复制并且具有保密、自毁等功能,目前评测产品中除了飞天锁外所有核心芯片全部来自国外。其中深思洛克精锐IV和飞天ROCKEY 6 Smart使用的是智能卡芯片,其他为单片机芯片。
5、美国基于的考虑,对中国出口的加密产品在密钥长度上进行了严格,例如早期出口至我国的软件产品(如IE等)采用的密钥长度为40位(40位的密钥业余玩家都可以在几天内破解),而通常认为128位的密钥才能满足军用安全的需要。中用企业被美国法律禁止购买美国的128位加密产品。
6、飞天诚信的ROCKEY 6 Smart加密锁使用的是国产的深圳中兴通讯的智能卡芯片,这种加密锁的核心芯片没有进口,因此较适合或者军方使用。
7、32位智能卡芯片的浮点运算速度快于16位的智能卡芯片,对于经常调用RSA等函数有很大好处。
7
第三节 加密狗复制的定义和方法
硬件加密锁,俗程“加密狗”,对于加密狗的破解大致可以分为三种方法, 一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。
硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。
工具/原料加密狗的密码及ID修改工具加密狗数据读取工具步骤/方法常用解密方法
1、反汇编后静态分析: W32Dasm、IDA Pro
2、 用调试工具跟踪动态分析:SoftICE、TRW2000
3、 针对各种语言的反汇编工具:VB、Delphi、Java等
4、 其他监视工具:FileMon、RegMon 等反“监听仿真”软件保护锁的编程方法
(1)、随机查询法: 开发商使用SuperPro开发工具生成大量查询、响应对,如:1000 对,并在程序中使用这些校验数据。在程序运行过程中,从1000 对查询、响应对之中,随机的抽出其中一对验证SuperPro加密算法。因为,校验数据很多,每次验证加密算法使用的“查询响应对”可能不同,“监听仿真”软件即使纪录了一部分“查询响应对”,但无法纪录全部“查询响应对”。软件每次运行时,都可能使用新的查询响应校验数据,“监听仿真”软件无法响应这些新的查询。因此,“监听仿真”也就失去了模拟、仿真SuperPro软件保护锁的作用。
(2)、延时法: 开发商可以事先使用开发工具生成大量的校验数据,即:“查询、响应”对,比如:200000 组“查询、响应”对,开发程序过程中,开发商设计定时查询、校验加密锁的机制。在程序运行过程中,每10分钟查询并校验加密锁一次,使用过的校验数据,4年内不再重复使用。即使监听软件24小时记录数据,也需要4年才能纪录完毕。4年后,软件早已过了“热卖期”了,使用监听软件的解密者也就失去了行动意义。
(3)、分组、分时法: 开发商可以在程序中把查询响应对分组,比如:1200 对校验数据可分为12组,每100对一组。程序在一年中的第一月使用第一
8
组校验数据,第二月使用第二组校验数据,以此类推。监听软件就算记录了第一月的校验数据,第二个三个月以后校验数据没有纪录,在以后的时间段软件仍然无法正常使用,从而“监听仿真”失去意义。
(4)、随机噪声数据法: 开发商可以在程序中随机产生查询数据,随机数据和真实数据混合在一起,监听软件即使记录了查询数据,也会被其随机性所迷惑,同时也无法仿真另一个次软件运行产生的随机数,加密软件也就无法破解。 注意事项一、破解加密狗的必须提供程序和对应的加密狗二、复制加密狗的必须提供程序对应的原狗三、破解后的程序功能一般不会受影响,但不能升级。
如何复制U盘接口的加密狗
U盘可读可写,而加密狗内的数据是无法复制和更改的.
加密狗也不是绝对不能复制,有些人是专门从事加密狗破解的.但肯定不能用U盘复制.因为U盘和加密狗的构造是完全不同的.
因为加密狗复制不像好多人想象的那样把加密狗中的数据读出来再复制到一个新的加密狗中,实际情况可不是这样简单,加密狗不像U盘,加密狗内部其实是一部完整的计算机,也有自己的cpu、内存等,只是计算速度相对较慢而已,因此可以完成一些简单的任务,但是即使是一些简单的任务对于我们来说也是非常复杂的,如果想从中获取全部的数据困难程度可想而知。一般只能分析加密狗和软件之间的通讯数据。其实这一步就是破解加密狗,把有用的数据提取出来,然后写回空的加密狗既是复制,如果用软件模拟即为破解。这样两者的工作其实是一样的,唯一不同的就是空的加密狗也要钱来买的。
对于加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。
硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。
对于Debug调试破解,由于软件的复杂度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的复杂度已经变得越来越高,破解成本也越来越高,目前已经很少有人愿意花费大量精力进行如此复杂的破解,除非被破解的软件具有极高的价值。
9
目前加密锁(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这种方法成本较低,也易于实现,对待以单片机等芯片为核心的加密锁(加密狗)具有不错的解密效果。
由于加密锁(加密狗)的应用程序接口(API)基本上都是公开的,因此从网上可以很容易下载到加密狗的编程接口API、用户手册、和其它相关资料,还可以了解加密狗技术的最新进展。
例如,某个国内知名的美国加密狗提供商的一款很有名的加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密锁(加密狗)有个内存单元,其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。
数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可以使用Read函数读出存储单元里面的数据,也可以使用Write函数保存自己的信息到存储单元。
计数器是这样一种单元,软件开发商在其软件中使用Decrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive)这个算法。
算法单元较难理解一些,算法(algorithm)是这样一种技术,你用Query(queryData)函数访问它,其中queryData是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。
此加密锁(加密狗)的所有API函数调用都会有返回值,返回值为0的时候表示成功。
因此,破解思路就出来了,就是使用我们自己的工具(如VB、VC等)重新编写构造一个和加密狗API一样的DLL动态库文件,里面也包含Read、Write等全部API中包含的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对Query、Read函数进行处理,返回应用软件需要的数值即可。
这个新的DLL文件编写成功后,直接替换掉原来的DLL文件,这时候再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永远会返回正确的数据给软件,从而实现了模拟加密狗的运行。
以上是目前破解软件加密狗(加密锁)的一些常见思路,对于这种破解,软件开发者还是有相应的一些对策的。
10
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务