您当前的位置:   首页 > 新闻中心
超级狗2.2 开发商指南——第5章 超级狗软件保护策略
发布时间:2018-09-28 22:59:56   阅读次数:

超级狗2.2 开发商指南——第5章 超级狗软件保护策略(图1)

前面的几个章节已详述超级狗可提供的软件保护,然而实施最优化的软件保护将取决于强大而完善的保护策略。本章将描述超级狗的软件保护策略、介绍软件破解者识别和破坏软件保护使用的方法、并推荐增强软件安全性的措施。本章包含如下内容:

·软件保护策略概述

·总的保护策略

·常见攻击类型及应对措施

·通用的保护策略

 

软件保护策略概述

随着越来越先进的软件安全措施不断地被开发出来,软件破解者也在开发更为复杂的破解方法,对软件代码执行逆向工程,复制分发非法软件、窃取知识产权。

为了限制非法访问软件的行为,阻止软件破解并维护开发商权益,开发商需要对破解策略保持高度警觉并机智地实施最先进和最强大的软件保护技术。虽然不存在无法破解的软件保护,但是,如果能够持之以恒地使用最强大的软件保护方法、实施最新的保护策略,就能显著减少易被攻击的安全漏洞。

对软件保护的投资程度取决于以下几种因素:

·软件的价值

·软件被破解的历史记录

·分发软件的地理区域

·软件的目标市场( 例如,销售目标是个人消费用户、小型( 或家庭) 办公用户、还是企业用户。)

SafeNet 多年以来坚持不懈地调查在软件安全领域中存在的潜在和实际的威胁,并在威胁构成危害之前,就不断对自身产品进行升级以应对此类威胁。除了本书介绍的信息以外,SafeNet 顾问团队还提供加强软件安全与保护方面的个性化帮助。如需有关的咨询服务信息,请联系【揽阁信息】。

 

总的保护策略

无论实施任何的软件保护,您都应遵循以下总的保护策略。

使用最新的软件保护工具: 软件的升级通常包含对于最新威胁的改进措施。请选择并使用市面上最新版本的超级狗软件工具。您可以拨打我们的技术支持电话(13524448503)以便得到最新版本。

不断重新评估保护策略: 经常考虑可以升级或增强的保护策略,以便为软件提供更强的安全性。

防止可预测性,使用不断发展的策略: 在软件发行期间,不断变化所实施的策略。如果软件破解者能够检测到保护策略的模式,就可以解决或避开这些保护策略。

在查出有破解尝试时,变化行为: 在破解尝试被查出后(例如本章稍后介绍的通过使用“ 校验和” 查出破解尝试),您可以延迟软件的反应行为,从而可以破坏“ 原因” 与“ 结果” 之间的逻辑。延迟的反应可以使破解尝试和软件产生的负面反应之间的关系模糊化,借此可以迷惑软件破解者。处理破解尝试时,采取削弱程序功能之类的行为极其有效,这类行为包括使程序崩溃、覆盖数据文件,故意使程序出错,以及使程序变得不可靠等。

 

常见攻击类型及应对措施

“ 了解敌人” 对于应对软件攻击非常重要。当开发商熟知破解者可能采取的攻击类型时,就可以轻松设计并实施防止攻击的最佳策略。以下是软件破解者经常使用的一些攻击类型以及超级狗的防御策略。

·修补可执行文件与动态链接库

通过分解并调试EXE 或DLL 文件,软件破解者找到被保护代码,修补这些文件,改变运行流程或除掉代码中的调用,最后发布一个小的可执行文件补丁。

如果保护的文件越多,软件破解者解除保护所用的时间也就越长。使用超级狗的外壳加密工具可以安全、快捷地保护多个EXE 文件和DLL文件。

·修改保护狗的存储区

软件使用许可通常存储在保护狗的存储区中。软件破解者往往得以访问该存储区并修改条款,例如,基于执行次数的使用许可被更改为永久使用许可,或者无需付款就可能激活某项功能。

超级狗中的许可文件存储于安全存储区。检查许可是否有效在超级狗内部进行。要改写许可文件,只能通过超级狗的远程升级。超级狗远程升级有安全可靠的措施,所以软件破解者没有可乘之机。

·模拟保护狗

软件破解者可以记录软件的保护狗调用,然后创建一个应用程序来重播被记录的保护狗调用,如同真正的保护狗在返回调用一样。功能有限的模拟器只能记录和重播调用。功能齐全的模拟器可以模拟保护狗的加密和解密操作,但软件破解者需要加密密钥才能创建功能齐全的模拟器。

超级狗保护的软件在运行时,被保护的应用程序和超级狗之间的数据通讯在安全通道中进行。安全通道是基于ASE 的加密技术。每次通讯均使用随机密钥,即使相同的调用也将产生不同的通讯数据。因此破解者即使记录了软件的超级狗调用也很难利用它进行重播。

超级狗的安全通道在建立时,使用了白盒密钥交换技术在软件和超级狗之间传递安全通道使用的基础密钥。白盒密钥交换技术是一种安全性很高的技术。使用白盒密钥交换技术,首先,基础密钥不直接传递给超级狗,而是传递密钥生成所需要的参数,超级狗根据这些参数使用特定的算法在超级狗内部生成安全密钥;其次,基础密钥参数使用了ECC 密钥交换技术进行加密,只有拥有对应的ECC 私钥才能解密获得这些参数,而该私钥是在超级狗生产时写入超级狗并永远不会暴露到超级狗外。因此,破解者没有办法通过记录的超级狗调用来获得安全通道使用的基础密钥。

另外,超级狗的加密和解密操作均是在超级狗内部进行,破解者也没有办法获得加密密钥。因此,模拟超级狗是极其困难的。

·使用终端服务器与终端服务解决方案

使用一些操作系统的终端服务器并将保护狗连接至终端服务器时,可能在多个同时运行的终端上使用同一软件。

超级狗软件保护对上述行为进行了控制。开发商使用超级狗许可设计工具时,当设置“ 允许远程桌面访问” 时,允许上述行为,反之,不允许上述行为。

·克隆保护狗

软件破解者先对保护狗实施逆向工程,然后“ 克隆” 制造保护狗的副本。 这样的做法,对于软件破解者而言,代价非常高昂,因为这既需要有逆向工程工具,也需要有专业技术。克隆保护狗的代价是巨大的。

超级狗采用了最新的专为SafeNet 定制的高性能、高安全性芯片,其他厂商不能采购该专用芯片,可以更好地防御硬件攻击及硬件克隆。

·时钟篡改

系统时钟篡改或回滚系统时钟是软件侵权的最常使用的方法之一。软件破解者通过回调计算机的系统时钟以达到延期使用的目的。

超级狗具有虚拟时钟(V-Clock),无需实时时钟就可以检测时钟篡改。一旦计算机的系统时钟被回滚到24 小时以前,被保护软件访问基于时间许可的特征将会出错( 有关API 函数调用将返回错误),只有当计算机的系统时钟被纠正后,相关软件功能才能恢复正常的功能。

您无需担心由于夏令时引起的系统时钟调整造成程序不正常运行,超级狗已考虑到这种情况。如果发生夏令时时钟调整,程序仍然可以正常运行。

 

下表列出几种常见情景和行为供参考:

情景行为
正常使用超级狗出厂时对虚拟时钟进行过初始化,时间被设置为超级狗的生产或编程时间。
被保护软件运行时,Licensing API 会以系统时间为参考,不断更新超级狗虚拟时钟的时间。
超级狗虚拟时钟的时间只能增加。或者通过对超级狗升级进行修改。如果您想改变超级狗虚拟时钟的时间,请生成许可升级文件,包含设置时间的升级项,对超级狗进行升级。
您还可以在编程超级狗的时候根据当前系统时间重新设置超级狗虚拟时钟的时间。
如果计算机的系统时钟被回滚的范围在24 小时以内(例如:超级狗虚拟时钟的时间为2013 年3 月10 日15 点30 分,系统时钟被回滚到2013 年3 月10 日5 点30 分)正在运行的被保护软件可以继续正常运行;
重新启动被保护软件时,该软件也可以正常运行。
但是,超级狗虚拟时钟的时间不会被回滚到2013 年3 月10 日5 点30分,而是在2013 年3 月10 日15点30 分的基础上继续增加。
如果计算机的系统时钟被回滚到24 小时以前(例如:超级狗虚拟时钟的时间为2013 年3 月10 日15 点30 分,系统时钟被回滚到2013 年3 月9 日5 点30 分)

正在运行的被保护软件可以继续正常运行。但是,超级狗虚拟时钟的时间不会被回滚到2013 年3 月9日5 点30 分,而是在2013 年3 月10 日15 点30 分的基础上继续增加。

重新启动被保护软件时,最多5 分钟后,该软件访问基于时间许可的特征将会返回错误 45(DOG_TIME_ERR),包括如下API:
·dog_login
·dog_login_scope
·dog_get_time

这时,该软件还可以访问不是基于时间许可的特征,但是dog_get_time 会返回错误 45(DOG_TIME_ERR)。在下一个版本中,dog_get_time 将支持在这种情况下返回超级狗虚拟时钟的时间。

此时如果将系统时间纠正到与超级狗虚拟时钟的时间的差距在24 小时以内,则可以正常使用被保护的软件。

如果您想改变超级狗虚拟时钟的时间,请生成许可升级文件,包含设置时间的升级项,对超级狗进行升级。

例如:超级狗虚拟时钟的时间和当前系统时间为2013 年3月10 日,系统时间被调整为2013 年4 月10 日,被保护软件调用dog_login 或dog_login_scope 登录了基于时间许可的特征,或者调用dog_get_time 读取了超级狗虚拟时钟的时间,超级狗虚拟时钟的时间将被更新为2013 年4月10 日,这时将系统时间调整到2013 年3 月10 日。钟后,该软件访问基于时间许可的特征将会返回错误45(DOG_TIME_ERR),包括如下API:
·dog_login
·dog_login_scope
·dog_get_time

 

在这种情况下,如果您想改变超级狗虚拟时钟的时间,请生成许可升级文件,包含设置时间的升级项,对超级狗进行升级。

例如:超级狗虚拟时钟的时间为2013 年3 月10 日,超级狗中某个特征的过期日期为2014年3 月10 日,最终用户收到超级狗硬件的时间是2013 年9月10 日,如果最终用户在首次使用之前将系统时间调整为2013 年3 月11 日,最终用户则可以一直使用到2014 年3月10 日。对于这种情况,建议您使用基于执行天数的许可类型。
如果您一定要使用基于过期日期的许可类型,建议您在编程超级狗的时候根据当前系统时间重新设置超级狗虚拟时钟的时间。
如果计算机主板电池没电了,可能导致系统时间不正确,与超级狗虚拟时钟的时间的差距在24 小时以上。

重新启动被保护软件时,最多5 分钟后,该软件访问基于时间许可的特征将会返回错误45(DOG_TIME_ERR),包括如下API:
·dog_login
·dog_login_scope
·dog_get_time

在更换主板电池以后,被保护软件可以正常运行。

注意:如果被保护软件使用的是超级狗1.0 Licensing API,如果计算机的系统时钟被回滚到24 小时以前,只有在系统重新启动或者超级狗运行环境重新启动后才能检测到时钟篡改。检测到时钟篡改后,超级狗虚拟时钟的时间不会被回滚,而是在原有时间的基础上继续增加。被保护软件调用dog_login 或dog_login_scope 登录基于时间许可的特征,或者调用dog_get_time 读取超级狗虚拟时钟的时间,将会返回错误45 (DOG_TIME_ERR)。

 

通用的保护策略

以下是超级狗的四项通用的保护策略:

实施超级狗Licensing API 保护后再进行外壳保护: 实施超级狗Licensing API 保护并进行外壳保护可以实现最佳的安全性。

在代码中多处插入调用: 在代码中多处插入Licensing API 函数,检查超级狗是否存在。这样可以将超级狗中的数据与软件功能进行绑定,从而阻止被破解,也将增加跟踪软件保护的难度。

通过加密一些与被保护程序无关的数据可以阻碍可能发生的软件破解。利用诸如随机数生成器、时间值、计算中间结果和其他不会导致有意义的结果及操作的机制产生“ 噪音”,可以转移软件破解者的注意力。

加密解密数据: 软件破解者破解软件必须解密数据。超级狗的加密和解密过程都在超级狗中进行,使用任何的调试工具都无法触及。超级狗基于AES 的加密引擎对数据的加密和解密能够在相当大的程度上增强软件的安全性。

您可以通过在源代码中调用Licensing API 的加密函数和解密函数,使被保护程序使用的数据被加密。是否能解密取决于超级狗以及特定的特征是否同时存在。被保护程序和超级狗之间的链接无法被轻易除掉。

使用“ 校验和” 确认可执行文件的完整性: 将被保护软件可执行文件的校验和与存储于超级狗存储区中的校验和进行比较,如果发现两个值不相等,有可能已有修改这些文件的尝试。



揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609