怎么样能把我的软件通过加密锁和授权号来授权别人使用

怎么样能把我的软件通过加密锁和授权号来授权别人使用,第1张

加密狗就可以呀,不过好象是要付钱的

进入新世纪,中国的软件保护行业正面临着巨大的震荡,软件盗版风潮有愈演愈烈之势!这种局面逐步导致目前大量的软件开发商面对盗版几乎到了束手无策的地步!

造成这种局面的主要原因是由于多年来软件加密保护行业的无序价格竞争使技术发展停滞不前,参与竞争的技术厂商越来越少;在IT信息产业领域,像这样靠一个产品就能卖5年以上,技术水平3年才升级一次的低层次竞争行业已不多见。而随着计算机工业的进步,计算机处理速度的加快和芯片物理攻击技术水平的提高,加密技术产品在与盗版解密技术的比拼中已经完全处于下风。

进入2002年,软件保护行业终于迎来了一次较高层次的技术升级。这次技术升级浪潮的突出特点,就是突破性地将在金融、军队、网络身份认证等对安全性、稳定性要求极高的领域广泛使用的智能卡(Smart Card)技术运用于了商业软件的保护。以智能卡技术为核心构建的新一代的软件加密系统,真正对用户的软件代码和重要数据提供了全方位、高安全度的保护。

这次技术升级的标志性产品是我们深思洛克新近推出的精锐IV型加密锁和美国彩虹天地公司的智能狗。

下面,我们从技术层面对精锐IV型加密锁这种以智能卡技术为核心构建的新一代软件加密系统和目前的主流软件加密产品作一番比较。

(一)目前主流软件加密锁的不足

对软件加密保护产品而言,使用者最关心的是加密的有效性,产品的兼容性和稳定性目前市场上主要的软件加密锁硬件内部均含有单片机,即所谓内置CPU,软件厂商主要是利用算法功能进行加密。加密锁通常还增加了一些辅助功能,比如倒计数器、远程升级等通过对这些软件锁进行分析,我们认为从安全性上讲他们至少有三方面致命的薄弱点:

薄弱点1:设计原理有很大缺陷

目前主流的加密锁硬件提供了读、写和算法变换功能,且算法变换关系难以破解和穷举。但这类加密锁最大的缺陷是算法不向软件厂商公开,锁内的变换算法在出厂时已经固定,软件加密者只能设置算法的参数。这样就限制了厂商对算法的使用,要么预先记录算法结果然后在软件运行时核对(使用码表),要么在软件中至少变换两次然后比较结果是否一致;如果解密者截获这些数据,通过统计、分析就有可达到解密目的

薄弱点2:加密锁受处理能力的限制,无法为软件提供强有力的保护

市场上曾先后推出了几款"可编程"加密锁这类型加密锁最大的特点就是可以让用户自行设计专用算法。"可编程"加密锁的出现的确是软件加密技术的一次进步。深思洛克的"深思Ⅲ"、飞天诚信的"Rockey4"均属此类产品。

但由于成本限制,这类型加密锁往往只能采用10~20元人民币的通用8位单片机或同档次的ASIC芯片作为核心微处理器。这种低档单片机的处理运算能力是相当弱的,这就给 "可编程"加密锁造成了很大的局限性,主要表现在:1、算法变换的复杂度不够高,2、指令编码空间较小,3、程序区的空间较小。这些局限性使得用户根本不可能利用"可编程"加密锁实现理想的高强度加密方案。

薄弱点3:硬件本身抵抗恶意攻击的能力较弱

随着集成电路设计、生产技术的发展,安全产品的核心芯片硬件本身受到攻击的可能性越来越大。典型的硬件攻击手段有电子探测攻击(如SPA和DPA)和物理攻击(探测,如采用SiShell技术),下面我们就这方面进行简要的分析。

电子探测(SPA和DPA)攻击技术的原理是:单片机芯片是一个活动的电子元器件,当它执行不同的指令时,对应的电功率消耗也相应的变化。通过使用特殊的电子测量仪和数学统计技术,来检测和分析这些变化,从中得到单片机中的特定关键信息。

物理攻击的方法有:通过扫描电子显微镜对芯片内部存储器或其它逻辑直接进行分析读取;通过测试探头读取存储器内容;通过从外部无法获取的接口(例如厂家测试点)对存储器或处理器进行直接数据存取;再激活单片机的测试功能等。

由于通用低档单片机并非定位于制作安全类产品,没有提供有针对性的防范物理攻击手段,因此比较容易通过电子探测(SPA和DPA)攻击直接读出存储器内的数据。虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但此类芯片应用场合广、发行批量大,随着厂商间委托加工与频繁技术转让,使得利用该类芯片下载程序的设计漏洞,利用厂商的芯片测试接口,通过特殊的烧写时序和数据读出信息成为比较容易的事情。

ASIC芯片是完全根据用户需求而特别定做,属于小批量生产。由于其采用特殊的逻辑电路且不会轻易公开测试功能接口,因此只要以其为基础开发的系统不是保存重要的信息或者不用于高级别的安全场合还是可以防范一般情况下的物理攻击。

(二)以智能卡技术为核心构建的新一代加密锁的安全特征

IC智能卡以其可靠的安全保障性能广泛应用于军事、金融、保险等国民生计的重要领域以智能卡技术为核心构建的新一代高强度加密产品,也因此具备了极为优越的安全性能。

改进之一:重要软件代码完全移植到硬件中运行

精锐IV加密锁的工作原理请参考图1、图2。

由图1、2中可以看出,在精锐IV型锁软件保护的方案中,PC端应用软件的关键代码和数据"消失"了,被安全地移植到精锐IV型锁的硬件中保护起来。在需要使用时,应用软件可以通过功能调用引擎来指令精锐IV运行硬件中的关键代码和数据并返回结果,从而依然可以完成整个软件全部的功能。

由于这些代码和数据在PC端没有副本存在,因此解密者无从猜测算法或窃取数据,从而极大程度上保证了整个软件系统的安全性

精锐IV最多可提供总计高达32~64K字节的程序和数据空间,可容纳近万行的C语言代码

从而依然可以完成整个软件全部的功能

改进二:强大的运算处理能力

采用智能卡技术构建的精锐IV加密锁具有强大的运算和数据处理能力,能够支持浮点运算库、数学函数库、安全服务库、标准输入和输出库等;这些对提高加密强度起着至关重要的作用。

改进三:智能卡芯片具有极高的安全性

智能卡芯片具有很高的集成度,与普通低档的单片机不同,只有已通过国际安全机构检测和认证(EAL 4+和IT SEC认证)的专业安全芯片制造商才能提供智能卡芯片。

智能卡芯片能够有效抵御电子探测攻击(SPA和DPA)和物理攻击(SiShell),其在硬件设计阶段就提供了完善的安全保护措施。它通过芯片厂商开发,通过产生额外的噪声和干扰信号,或通过增加滤波电路来消除噪声,再加上若干保护层,采用特殊的材料(对电子束敏感的材料)等,使监测芯片内执行的指令序列不可能实现。同时智能卡芯片提供了硬件随机数发生器,在CPU 的控制下,每次芯片与外界数据传输中,产生的随机数可以保证数据不会重复。

为了保证智能卡芯片的可靠性和可用性,国际权威技术标准管理机构ISO为此专门制定测试标准--ISO/IEC 10373,其中就明确了智能卡在紫外线、X射线、电磁场下的测试要求。1999年,ISO推出了安全芯片技术的新标准ISO/IEC 15408,新标准对智能卡芯片的防物理攻击能力提出明确要求。

符合以上标准的智能卡芯片具有以下防物理攻击的功能:

◆ 通过烧断熔丝,使测试功能不可再激活(测试功能是智能卡芯片制造商提供的对智能卡芯片进行全面检测的功能,这一功能对智能卡芯片具有较大的 *** 作性,不能激活测试功能将大大提高智能卡芯片的安全性);

◆ 高/低电压的检测;低时钟工作频率的检测;

◆ 防止地址和数据总线的截取;

◆ 逻辑实施对物理存储器的保护(存取密码等);

◆ 总线和存储器的物理保护层等。

此外,智能卡芯片还具有一些对软件保护来说极为有用的安全功能:

芯片自锁功能--软件对芯片的访问首先由PIN码保护,PIN码的尝试次数可由软件开发商设定当非法用户利用字典攻击的情况出现时,如果次数超过设定值以后,芯片会自我锁定,外界一切对芯片的 *** 作均被停止。

全球唯一序列号--智能卡芯片具有全球唯一序列号,不可更改这可以杜绝冒用的情况发生,同时也可以对已发行的产品进行有效管理。如果软件开发商与加密技术供应商合作,可以获得提供特殊序列码区段控制服务,这几乎可以从根本上解决硬件的复制仿冒问题。

硬件随机数发生器(白噪声技术)--用于产生高强度随机数。除对称算法生成密钥需要外,随机数在安全加密领域具有非常重要和广泛的应用,因此,硬件本身带有高强度随机数发生器对安全而言意义重大。

硬件时钟定时器 --是软件计时使用、反跟踪等常用软件保护手段中必备的功能。

改进四:智能卡技术的核心-- *** 作系统COS

COS(卡片 *** 作系统Card Operating System)存放在智能卡芯片上,是一个比较小但非常完整、严密的系统。COS管理着智能卡的一举一动,智能卡整套系统的安全性除一部分由芯片设计生产厂商保证外,大都由COS开发商实现。

COS 主要分为四部分:通讯管理、文件管理、安全管理和应用管理国际标准化组织 ISO 已经对智能卡的物理和电器指标以及应用标准做出较详尽的规定--ISO7816,有关智能卡与外界交换信息的电气指标以及指令格式在ISO7816--3&4中有详细的规定。

开发COS系统是有相当大的难度和工作量的,需要投入很大的人力、物力;任何不按标准快速开发出的芯片控制系统很可能存在导致巨大安全隐患的设计缺陷。而采用第三方厂商的COS系统组合而成的产品由于其核心技术不太可能由加密锁厂商完全掌握控制,系统的安全性依赖于第三方COS厂商,由此也增大了用户的安全风险

加密狗 加密狗是由彩虹天地公司首创,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。

加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。

加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或 USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。

加密狗的工作原理:

加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。下面,我们举个例子说明单片机算法的使用。 比如一段程序中有这样一句:A=Fx(3)。程序要根据常量3来得到变量A的值。于是,我们就可以把原程序这样改写:A=Fx(DogConvert(1)-12342)。那么原程序中就不会出现常量3,而取之以DogConvert(1)-12342。这样,只有软件编写者才知道实际调用的常量是3。而如果没有加密狗,DogConvert函数就不能返回正确结果,结果算式A=Fx(DogConvert(1)-12342)结果也肯定不会正确。这种使盗版用户得不到软件使用价值的加密方式,要比一发现非法使用就警告、中止的加密方式更温和、更隐蔽、更令解密者难以琢磨。此外,加密狗还有读写函数可以用作对加密狗内部的存储器的读写。于是我们可以把上算式中的12342也写到狗的存储器中去,令A的值完全取决于DogConvert()和DogRead()函数的结果,令解密难上加难。不过,一般说来,加密狗单片机的算法难度要低于一些公开的加密算法,如DES等,因为解密者在触及加密狗的算法之前要面对许多难关

[编辑本段]目前最新的硬件加密原理

随着解密技术的发展,单片机加密狗由于其算法简单,存储空间小,容易被硬复制等原因,正逐渐被市场所淘汰。以北京彩虹天地信息技术股份有限公司为首的国内加密狗厂商研发出稳定性更好、存储空间更大(最大为64K)、有效防止硬克隆的第四代加密狗——“智能卡”加密狗以其独创的“代码移植”原理,已经被国内大型商业软件开发商如金蝶、用友、CAXA、广联达、神机妙算、鲁班……所采用。

以世界上第一款智能卡加密锁——宏狗为例,简单介绍一下“代码移植”原理。

“代码移植”加密原理为一种全新的、可信的软件保护模型,工作原理为:软件中部分代码经过编译,“移植”到加密锁硬件内部,软件中没有该段代码的副本。

在这套软件保护方案中,PC端应用软件的关键的代码和数据“消失”了,被安全地移植到精锐IV型加密锁的硬件中保护起来。在需要使用时,应用软件可以通过功能调用引擎来指令精锐IV运行硬件中的关键代码和数据并返回结果,从而依然可以完成整个软件全部的功能。由于这些代码和数据在PC端没有副本存在,因此解密者无从猜测算法或窃取数据,从而极大程度上保证了整个软件系统的安全性。简言之,精锐IV提供了一套可信的解决方案,从理论上保证软件加密的安全。

加密狗技术的运用案例

1、广联达造价软件

2、清华斯维尔造价软件

3、神机妙算造价软件

4、鲁班造价软件

使用加密狗进行加密的一些策略

现在的解密技术排除法律和道德因素,就从学术角度来说是门科学。它与加密技术一样是相辅相成不断提高。

以下就针对使用加密狗(加密锁)进行硬件保护谈谈几点心得:

针对于使用加密狗的解密有什么方法?

1、硬件复制

复制硬件,即解密者复制Sentinel Superpro相同的加密锁。由于加密锁采用了彩虹公司专用的ASIC芯片技术,因此复制该加密锁非常困难,且代价太大。

2、监听

解密者利用并口监听程序,进行解密,其工作机制是:

监听程序,记录应用程序对并口发的查询串和加密锁发回的响应串。当移去加密锁时,如果程序再对并口发查询串确认身份时,监听程序返回所记录的响应串。程序认为加密锁仍然在并口上,是合法用户继续运行,应用程序也就被解密了。

3、 打印机共享器

将加密锁插在打印机共享器上,多台计算机共同使用打印机共享器上的一把加密锁。(后面简述对抗策略)

4、 DEBUG

解密者DEBUG等反编译程序,修改程序源代码或跳过查询比较。应用程序也就被解密了。

对于以上的几种解密方法加密者可以考虑使用以下几种加密策略:

1、针对上述监听和DEBUG问题解密方法,本人推荐充分利用加密狗开发商的API函数调用的加密策略:

a、 针对并口监听程序

1)对加密锁进行算法查询

Ø 正确的查询响应验证

用户生成大量查询响应对,如200对。在程序运行过程中对激活的加密算法单元随机的发送在200对之中的一对“345AB56E”―――“63749128”。查询串“345AB56E”,哪么算法单元返回的下确的响应串应该是“63749128”,若是,则程序认为加密锁在并口上,是合法用户,继续运行,反之终止程序。

Ø 随机非激活算法验证

我们对非激活的加密锁算法单元发随机生成的查询串,如:“7AB2341”,非激活算法单元只要是有查询就会有响应串。因此返回响应串“7AB2341”,在程序中判断响应串与查询串是否相同,如果相同,则证明我们的加密锁仍然在口上。继续运行程序。

Ø 随机激活算法验证

假设监听程序了解了上面的机制。即对非激活的加密算法我们发什么查询串则返回相同的响应串。哪么我也有对策。对激活的加密算法单元发随机生成的查询串,如:“345AB56E”由于是激活算法响应串肯定与查询串肯定不等。所以假如返回响应串“7253ABCD”,在程序中判断响应串与查询串是否不同,如果不同,则证明我们的加密锁仍然在并口上,继续运行程序。

上面三种加密策略在程序同时使用,相符相承,相互补充。即使监听程序记录下来我们的部分查询响应。

2) 分时查询

用户把查询响应对分组,如120对分为4组。每30对一组。头三个月使用第一组,第二个月三个月使用第二组以此类推,监听程序就算记录了头三个月。第二个月三个月以后程序仍然无法使用。

也可以再生成100对“临时委员”,每次运行随意抽出1对与以上分组结合使用。使记录程序在三个月内也无法记录完全。程序也无法使用。

3) 随机读写存储单元

为了防监听程序。我们的策略是:程序在启动时,我们利用随机函数随机生成的一个数,假设是“98768964”。我们在指定的18#单元写入这个数。哪么我们在程序运行中,每调用一个功能程序前读取18#单元,数判定是否是我们写入的数“98768964”。因为每次写入的数是随机生成的,所以监听程序记录不到当次启动时写入的随机数,它返回的数肯定是一个不匹配的数。我们就可以就此判定是否是合法用户。Sentinel Superpro加密锁可以重复写10万次以上。也就是说每天写三次也可以使用一百年。

2、 针对打印共享器的加密策略

为了防打印共享器。我们的策略是:程序在启动时,我们利用随机函数随要生成的一个数,假设是“7762523A”。我们在指定的34#单元写入这个数。哪么在程序运行中,每调用一个功能程序前读取34#单元,以判定是否是我们写入的数“7762523A”。以此判定是否是合法用户。因为每次写入的数随机生成的,同时使用打印共享器的其他非法用户的程序一进入也会写入一个不同的随机数。那么第一个用户的程序在校验是否是第一个用户写入的数时,就会被认为是非法的用户。所以在一个阶段也只是一个程序使用。(例如RAINBOW公司开的Sentinel Superpro加密锁可以重复10万次以上。也就是说每天写三次也就可以使用一百年。)

3、 针对DEBUG跟踪的加密锁的安全策略

1)分散法

针对DEBUG跟踪。在调用每个重要功能模块前,我们建议要对加密锁进行查询,校验身份。如果只在程序开始部分校验身份,DEBUG跟踪程序部分可以轻易的跳过校验部分,而一些不良用户可以在验证后可以将加密锁拔下用在其它计算机。

2)延时法

针对某一具体查询校验,都有三步骤:

Ø 查询得到响应串

Ø 比较响应串和查询串是否匹配

Ø 执行相应的步骤

我们建议以上三个步骤要延时执行。最好鼗三步骤相互远离些,甚至放到不同的子程序或函数中。例如:我们执行“查询得到响应串” 后,相隔50执行“比较响应串和查询串是否匹配”。假如程序需要调用一个函数。哪么我们就在这个函数里执行“执行相应的步骤”。这样程序更难于被破解。

3)整体法

将响应串作为程序中数据使用。

例如:我们有返回值“87611123”,而我们程序需要“123”这个数。我们可以让“87611123”减去“8761000”得到“123”。这样以来任何对加密程序的修改都会使程序紊乱。

4)迷惑法

一般情况下我们的程序执行相应的验证步骤。验证是非法用户就会退出。这样很容易被发现代码特征。我们知道是非法用户后继续执行一些无用的 *** 作使程序紊乱。以迷惑解密者。

以上为现如今软件开发商使用硬件加密狗(加密锁)进行软件保护时可以使用的几种切实可行的几种加密策略。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8164958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存