圣天狗优秀的加密方案-软件加密技巧-加密工程师必读

概要

◎设计优秀的加密方案

◎简单而有效的加密技巧

◎进一步提高加密强度

◎通过“软硬兼施”,降低加密成本

◎通过软件授权,实现多种销售模式
 


我们需要防御什么

驱动程序替换
这种攻击手段会替换/仿真应用程序用于与保护锁通信的驱动程序(基于软件)
通讯层模拟/仿真
在重放类攻击中,黑客会监视并复制硬件保护锁与应用程序之间的通信数据,通过重现通信过程来访问应用程序。
暴力攻击
暴力攻击是一种查找密码的手段,其特点就是不断尝试每种可能的字母、数字和符号组合,直到找出正确的组合。
逆向工程
逆向工程是使用调试器和/或反汇编器来解除软件保护机制的方法。攻击者们使用这些工具来了解应用程序的工作方式。然后,攻击者们会使用调试器和反汇编器转储代码除去对硬件设备的调用
时间篡改
时间篡改就是改回系统时钟时间,收集整理,使经过一段时间后本应无法使用的试用版应用程序等继续工作。

攻击硬件
通常这种方法非常困难,要耗费大量的时间,并且需要非常昂贵的设备才能完成。而且圣天狗使用片上系统(COB)技术,具有很高的可靠性,可以很好地防止逆向工程攻击。圣天狗存储区使用多个具有唯一性的随机密钥进行加密,能够防止内在克隆。

采用绑定技术前后硬件结构的对比图


采用绑定技术前后硬件结构的对比图

攻击赛孚耐公司供应的组件
通常,黑客会以赛孚耐公司供应的组件为目标(例如,驱动程序替换或仿真与重播攻击),这样它们在不插入圣天狗的情况下就可以向驱动程序返回正确的回应。赛孚耐公司提供的组件之间的所有通讯都通过使用行业标准算法的安全通讯通道进行保护,可以有效的抵御这种攻击.

安全通道技术

基于公钥加密原理
建立应用程序与加密锁之间的安全通道
随机生成 AES 加密的密钥, 采用ECC (椭圆曲线加密法)加密
整个密钥绝无泄漏
阻止中间层攻击
防止驱动程序仿真
暴力攻击事实上不可能实现

攻击各方之间的通讯
各方-开发商、最终用户和代理商-之间有关许可证的通信也易引起攻击。例如,一个最终用户可能会多次应用升级串。但是,由于硬件狗的“一次性升级”性能,升级串只能使用一次。
此外,代理商也可能超过允许的范围为最终用户编程更多数量的许可证。收集整理为了防止这一点,您可以设定计数字来限制所编写的许可证。





时间篡改攻击
可以使用带有实时时钟的圣天狗。它包含的防时间篡改的内部实时时钟可以表示准确的日期与时间,能够跟踪/ 试用程序的使用。实时时钟提供独立于系统时钟的时间-为抵御时间篡改攻击提供了最佳解决方案。

时间闸计数器行为
通过 配置有圣天狗 V-Clock 时钟的非RTC 硬件狗能够可靠、安全地分发有时间限制的应用程序。收集整理它们不需要主板电池就可以探测时间篡改,并且您可以设置时间闸计数器来指定时间篡改的次数。时间闸计数器是一个倒计数值,可以容忍1 秒到30 天(不包括夏令时拨快的时间)时间范围的时间篡改攻击,直到它计数到零。


优秀的加密方案
作为软件设计的一部分以文字形式体现
说明使用什么软件保护产品说明加密点如何设置
说明使用哪些加密技巧
能够有效控制硬件狗的初始化过程
能够有效控制硬件狗的分发过程

与加密方案有关的因素
软件的销售方式、升级方式
软件的开发环境、运行环境
软件保护产品的选择
要在软件的设计阶段进行,收集整理要结合软件自身的特点,在加密强度、成本、易用性之间进行折衷考虑,选择一个合适的平衡点。


加密方案-软件加密技巧

攻击应用程序由于大多数软件开发商不是每天都在编写安全代码,应用程序经常成为最容易受到攻击的目标。对保护不善的应用程序,只需要执行数个快速更改就可以使它在不附加圣天狗的情况下运行,例如:黑客可能会使用代码补丁或伪造应用程序组件。下面提供的很多技巧可以使这种攻击变得极难成功。


加密方案-软件加密技巧(一)

使用外壳加密您的可执行文件
将您基于API 元素的自定义保护与外壳保护结合起来,增加额外的保护层。外壳加密您的最终可执行文件,使通过拆解或调试方法对您的应用程序实施的攻击难以实现。即使攻击者成功地删除了外壳,应用程序内部依然是受到保护的-因为这两种保护方式都是独立运行的。

加密方案-软件加密技巧(二)

执行查询-响应保护
查询-响应保护是一种由设定在圣天狗中的AES 算法驱动的,询问-响应式的技术。应用程序向圣天狗发送查询请求,圣天狗则发送使用AES算法计算出的响应,进行评估。如果获得的响应与预期的响应相匹配,则认为存在圣天狗,允许应用程序运行。利用编程到圣天狗中的AES 特征项,您可以通过调用SFNTQueryFeature 函数发送几乎无限数量的查询请求,这种机制是您保护策略的中心,因为它使复制正确的响应变得极难。
但是,仅在应用程序中使用一次API 是不够的;还应该尽量使用以下很多技巧。

加密方案-软件加密技巧(三)

创建大的查询/ 响应表
如果应用程序仅向圣天狗发布少量的查询,它们会很容易被预测到。而使用大的查询/ 响应表需要较长的时间才能使用到每种可能性;从而可以增加模拟每种可能的查询所需要的时间。

分割大表
必须将大表分割为数个小表。这样可以将表置于应用程序中的多个位置,使它们很难被全部找到。

加密方案-软件加密技巧(四)

频繁查询
如果仅依靠代码开始位置的一次调用,很容易使技术高超的黑客分离该调用,破解保护。仅查询一次另外的一个潜在问题是用户可以在启动程序后移除圣天狗。然后该狗可以被用于运行应用程序的其它副复本。

随机查询
必须精心设计保护策略,使应用程序可以从查询/ 响应表中随机抽取询问。这可以使得询问内容很难预料。如果应用程序每次都使用不同的询问,那么破解者将很难去对每一次运行进行侦听和模拟。

加密方案-软件加密技巧(五)

向您的查询检查添加噪音
生成随机查询,然后摒弃结果。这会在有用数据中生成大量未使用的 数据。试图记录程序与硬件狗之间的通讯的人需要记录大量的数据,而且很难破解哪些是有用的数据。

频繁地生成新表
每次为应用程序创建升级程序时,重新生成查询/ 响应表。如果攻击者能够记录加密程序使用的所有询问,升级会突然使他必需重复这项工作。如果已经使用上述技巧,这项工作将变得非常费时,非法用户就只能使用过期软件了。

加密方案-软件加密技巧(六)

使用AES 算法加密数据
使用圣天狗中的AES 算法加密16 字节的数据。它可以提供无法突破的安全屏障,因为嵌入在圣天狗中的AES 算法及其使用的128 位随机生成的密钥是任何调试或存储区转载程序都无法使用的。您需要:

■ 调用SFNTEncrypt API 函数发送明码数据,收集整理硬件狗在内部进行加密,并将结果返回。
■ 调用SFNTDecrypt API 函数获取解密后的数据。如果解密后的数据与明码数据相匹配,则认为存在正确的圣天狗。跳过圣天狗复制这些结果是不可能的,因为所有操作都在硬件中执行。

.
加密方案-软件加密技巧(七)

加密查询/ 响应表
加密查询/ 响应表,使攻击者无法通过查看代码寻找和使用该表。如果只在使用的时候解密表数据,那么攻击者永远都无法看到完整的解密表。

加密应用程序使用的关键数据
所有的应用程序在某些点都需要数据才能运行。加密重要的数据文件或程序所使用的常量,使它只有在插入正确的圣天狗时才能解密运行。

加密方案-软件加密技巧(八)

使用ECC 签名与验证验证数据的完整性
ECC 是一种基于离散对数的公钥算法(使用公钥和私钥对),收集整理和其它算法相比,在使用相同的密钥长度时,更难以破译。可以在应用程序中使用ECC 算法按照以下步骤执行安全检查:

1. 生成随机信息。
2. 调用SFNTSign API 函数,使用保存于圣天狗的私钥对该信息进行签名。
3. 调用SFNTVerify API 函数,使用已知的对应的公钥验证签名。如果该函数返回成功信息,则认为存在正确的圣天狗。.

加密方案-软件加密技巧(九)

分散您的安全检查
在整个代码中分散安全检查是一种很好的做法。这样,如果要使应用程序在没有硬件狗的情况下运行,就需要对代码的每一个位置都进行修改。将安全检查局限于少数位置会使它们很容易被发现和删除。以下给出了更多技巧:

加密方案-软件加密技巧(十)

使用分散函数代替集中的封装函数
创建检查硬件狗的单一功能调用,然后在整个代码中执行该功能调用将无法实现安全检查的分散性。可以使用分散的封装函数替代单一的封装函数,提高程序的安全性。
将安全检查置于难以跟踪的操作中
例如,如果您将检查分散于一系列的数据库操作中,要想追踪到调用动作将耗费大量的时间。

加密方案-软件加密技巧(十一)

分散安全检查步骤
安全检查通常由多个步骤组成:调用硬件狗、评估返回值和对评估结果做出反应。您不应将整个策略都放置在您代码中的一个位置上,而是应当四处分散安全检查,模糊它们之间的关系。如果安全检查的代码组件实体分散于应用程序的各个不同部分,而不是集中在一起,那么它的安全保护策略将更难被攻破。

使用多线程增强您的保护
如果单项安全检查在多线程上进行,那么对其运行的跟踪将会非常复杂。这会使代码调试跟踪变得极为困难。

加密方案-软件加密技巧(十二)

使用返回值作为变量
在高级语言中隐藏安全检查的一种有效方法是使用返回值控制应用程序的流程。使用这种方法,硬件狗返回的值将变成应用程序下一执行步骤或子程序的逻辑指针或选择密钥。这会使攻击者更难分析您的代码。使用返回值的另一种方法是将它加到变量值中,这样它们的和就是需要的变量值。如果该变量在代码的其他部分使用,那么该代码依靠调用硬件狗才能运行。

例如,假设在您应用程序的某一点,您需要一个变量来包含浮点值12345。收集整理假设您发送到硬件狗的一个查询字符串返回的十进制数字为 2345,那么:
■ 设置浮点变量为 10000。
■ 发送该查询。
■ 将响应增加到该变量。
注意: 使用浮点值进行比较
您可以向API 返回值增加浮点值(如1.5),而不是仅使用 SP_SUCCESS 十进制值与API 返回值进行比较。这可以更好的防御 汇编代码的逆向工程攻击。
如果插入了正确的狗,变量将包含正确的值。在实际操作中,收集整理如果正确值背后的数字运算比简单的加法更为复杂,这种技术是非常有用的。


加密方案-软件加密技巧(十三)

校验您的代码
您应采用对您的关键数据进行检验和校验的作法。您还应该校验应用程序本身和任何DLL 文件或它使用的共享库的合法性。

更改您的策略
最后,当您升级您的应用程序时,请尽量多投入时间修改和增强您的安全保护机制。您原有安全保护机制存在的时间越长,该机制受到攻击的次数就越多。最终,即使是最强大的保护机制都可能被突破。但是,如果您不断地升级您的保护机制,就可以领先一步。请把此措施当作您维护计划的一部分,使您的安全水平保持在顶峰水平

天狗是一个强大的软件保护设备,它实现了 163 位椭圆曲线非对称算法和 AES 对称 算法,提供了很多具有创新性的功能 , 并且首次把安全通道的概念引入到基于硬件的软件保护中,彻底解决了被保护软件和安全硬件的安全通信的问题,同时基于许可证的设计,具有更大的灵活性和易用性,给软件开发商提供了一个崭新和强大的软件保护平台。 天狗的产品优势: 安全的通讯方式 天狗是高安全性的世界级天狗天狗与应用程序之间的通讯,采用公钥加密及 128-bit AES 加密机制。每次应用程序和硬件锁间的通讯,都会使用一个独立的加密密钥,让黑客无法暴力破解。此外,天狗也包括了内部验证的功能,可以有效地预防天狗被复制。 快速设置 —商用级API 通过天狗商用级 API,您可以达到超高级别安全,并且不需花额外的编写程序时间,即可有效的控制授权。简单的编程程序可以加强设置的质量及安全性。 简单化的软件升级及启用 天狗API也提供逻辑地址,让开发商可以随意增加或更改内存设置而无须担心地址冲突。天狗特有的技术可以让开发商在安全控制状态下发送更新数据到远程天狗。采用高级的安全传输方式,更新数据的传输更加安全。 快速增加保护 —快速外壳 快速外壳提供快速的方式为您的应用程序增加额外保护,不需更改源代码。与API相互整合,通过增加多层保护,快速外壳可以加强整体的安全性。 设置具有时效功能的授权 —天狗 V-Clock 天狗的V-Clock可以让您提供具有时效功能的授权模块,例如试用、软件演示等。天狗 V-Clock是天狗内的基础设置,所以不需额外的电池支持,可以有效的预防时间篡改。 保护您的销售渠道 —天狗经销商锁 天狗让您可以安全的控制及规范您的经销渠道,通过使用经销商锁的方式可以限制授权的最多使用数量或限制只能产生试用授权。天狗提供您的经销网络安全的连接。 保护多个应用程序 天狗可以让你用单一天狗保护多个应用程序。通过天狗multi-tasking技术,您还可以在开发后,针对额外的应用程序增加保护,不需要更改现存的安全架构,降低开发时间及成本。 先进的内存管理 天狗的 V-Cell技术可以优化内存的存储,开发商可以简单且弹性的存储每个天狗上可存取的内存,储存数据及保护应用程序。 支持多种开发环境和平台 天狗提供您在不同开发环境保护应用程序的能力。我们提供您基于市场上经常使用的开发语言。天狗可以让您的应用程序在不同的操作系统运作,只需一次的开发,大大的降低开发时间及成本。 在网络环境发布授权 天狗硬件锁的网络版本可以保护 client-server型式的应用程序,提供服务器监测功能来追踪网络上的授权使用状况。天狗可以让网络管理员将网络上未处于使用状态的授权取消或将转移给其它使用者。管理员可以有效的控制企业内授权的使用。 美 国 天 诺 软 件 保 护 锁 关于天诺加密天诺系列产品是一种智能型的软件加密系统,它包含一个安装在计算机并行口或 USB 口上的硬件,及有一套相应的接口软件和加密工具。 天诺加密锁是全球销量第一的软件加密锁。截止到 2002 年底,天诺加密锁的总销量到三千万只,占同类市场的 55% ,超过所有竞争者销量的总和。 天诺品牌下拥有以下产品,能够提供您最适合的加密方案 奥强锁( UltraPro ) —— 新一代的高强度软件加密锁 超强锁( SuperPro )系列 —— 带有 28 个独立算法单元的超强度加密方案 富饶锁( Pro ) —— 简便易用的经济型加密方案 网络锁系列( SuperproNet ) —— 适用于网络环境的高强度加密方案 美国天诺加密锁的 5 个世界之最 最强的研发实力 SafeNet 公司拥有软件保护领域 16 项核心专利技术,使天诺加密锁遥遥领先于竞争对手, SafeNet 公司每年将收入的 20% 投入研发,确保产品不断改良,始终领先 最好的质量保证 天诺加密锁保持行业内最高的可靠性,硬件故障率低于万分之一 天诺加密锁承诺非人为、非机械的硬件损坏, 2 年内免费更换 最高的安全性 并口产品独有 ASIC 芯片由 Rainbow 公司自主设计,保证硬件不可复制,拥有最高安全级别 全新推出应用于 USB 加密锁上的 MCU 芯片技术,支持 3-DES 和 128 位 AES 加密算法加密强度极高 最大的灵活度和易用性 一只加密锁可以同时保护 28 个软件,对软件实行分模块的分发与控制 以易用性为使命,天诺开发工具具有革命性的意义,使复杂的加密过程轻松完成 最多的支持平台和语言 支持操作系统 Dos , Windows3x , Windows9x , Windows NT , Windows2000 , WindowXP , Windows2003 , Mac , SCO UNIX , LINUX , AIX UNIX , SOLARIS UNIX 等 支持 190 多种开发语言 天诺产品的优势 绝对的行业领导地位 拥有 18 项独特的核心专利技术,使天诺产品领先于竞争对手,成为市场的领跑者。 值得信赖的可靠性 天诺软件保护锁保持同行业产品中最高的可靠性,故障率低于万分之一。 方便快速的实现 天诺开发工具包是具有革新意义的工具,使复杂的加密过程轻松上手,简单易用。 最高的质量保证 SafeNet 公司是行业内第一家通过 ISO9001 质量认证的软件保护产品供应商。 对研发大量投入 每年将收入的 20% 投入研究开发,以确保产品不断改良,始终处于领先地位。 真正透明的保护 优良的设计使得加密锁对最终用户完全透明,加密锁的存在不会对软件的运行效率带来任何影响。 高度的安全性和灵活性 特有的专用芯片由芯片厂商专为 SafeNet 设计,其他厂商无法使用,保证加密锁硬件不可复制。 一个软件保护锁中多个算法以及其它优越性能,使天诺成为最灵活、最安全的产品。 管理网络授权 天诺加密锁是经过严格测试并得到 Novell 认证的加密产品 与各种操作平台兼容 SafeNet 的商业伙伴包括: Apple 、 Microsoft 、 IBM 等,保证你无论今天还是未来,在任何平台上皆可安全地运行软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值