当前位置:文档之家› 软件狗[Dongles]的加密与解密技术

软件狗[Dongles]的加密与解密技术

软件狗[Dongles]的加密与解密技术
软件狗[Dongles]的加密与解密技术

软件狗[Dongles]的加密与解密技术

此文章为本人搜集资料的部分摘录,帖出的目的在于方便大家交流,有些东西可能已经过时或不适应当前应用,希望您在阅读时取其所长,补己所短。。。

此篇文章将从基础开始,从了解软件狗的工作原理到手工制作软件狗,到介绍软件狗以前和现行的保护措施,其次是在现行基础上如何改进使其保护功能更加完善,而后将从软件和硬件方面详细讲解软派和硬派高手是如何解密软件狗的,全文中我将引用大量的实例,以便您能够很好的理解。

因为本人不是做计算机专业,所学知识非常浅薄,只能边学习边请教,并且只能利用业余时间完善此文章,所以我会对其不断修改[我不想每一篇文章都单独发帖,这样影响版面的美观,相关的东西总结一下就好了],力求全面、详细、完整。

软件狗[Dongles]

1、认识软件狗。[首先我对软件狗作一简单介绍,在后面我们将对各种软件狗的加密和解密做详细的讲解。]

软件狗是插在微机并行口上的一个软件保护装置,它包括主机检查程序和密钥(也称加密盒)两部分。主机检查程序就是前面说的加密代码的一部分,加密盒是用来存放密码的。一般来说,软件狗插在并行口上,不会影响打印机的正常工作。常见的软件狗加密盒外形,如两个一公一母的D行25针连接器倒接在一起,公头(DB25/M)插在并行口上,母头(DB25/F)可接打印机,相当于原来的并行口。整个软件狗的硬件电路板就在这约5厘米见方的加密盒子里。

电路板上的公头(DB25/F)之间的管脚是一一对应、直接相联结的,以保证并行口的作用不变。存储密码或起信号加密变换作用的器件及其它辅助元件就跨接在这25根线上面,应用程序以特定的方式跟他们沟通、核对。除了某些设计不良的情况之外,一般不会影响打印机的正常工作,打印机工作时也不会影响它们。

为了防止程序被非法复制,所做的加密保护措施一般都包括两部分。首先是要有保存密码数据的载体,即密钥;其次是夹杂在应用程序中的主机检查程序,即加密代码。密钥应该能保证不易被解密、复制;如一般用磁盘做加密时,加密部分无法用一般的工具复制。另外,当检查程序用特殊方法去读密码时,密码应该能很容易地被读出,而不致影响应用程序的正常执行。当发现密码不对或密钥不存在时,就让主机挂起、重新起动或采用被的措施。

软件狗经历的“时代”

软件狗的发展经历了好几代,至2001年初就已发展到了第四代。

第一代是存储器型的加密锁。这是最有历史的加密锁,内部只有存储体,厂商只能对锁进行读、写。软件狗起信号加密变换作用的器件,最多只简单采用一些电阻、二极管等,检查方法也比较简单,很容易被人解密.常见的有原金天地的“软件狗”、深思洛克的Keypro 型、Rainbow的Cplus等。这种锁的主要特点是厂商可以预先把自己的保密数据设置到锁内,然后在软件运行时随机读取,这样防止了解密者通过简单重复并口数据来解密,但解密者进一步分析一下数据规律就可以解决了,这就是常说的“端口”层的数据分析。这种加密锁原理非常简单,是种正在被逐步淘汰的产品,但是其原料成本极低,即使在很低的价位也有很好的利润,加密厂商一般都不愿放弃这种锁;而很多厂商由于成本原因又不得不采用,因此

这种锁仍有一定的市场份额;

第二代是算法不公开的加密锁。硬件内部增加了单片机,即所谓内置CPU,厂商主要是利用算法功能进行加密。加密锁通常还增加了一些辅助功能,比如倒计数器、远程升级等。软件狗采用了低功耗TTL,COMS等逻辑元件,在电路上做了一些加密工作,检查时也要比第一代软件狗多一道手续,解密的难度自然也增加了。常见的有深思洛克的“深思Ⅰ”型,彩虹天地的SuperPro、微狗,ALADDIN的MemoHASP等。利用单片机,软件与锁之间的数据通讯建立了一个保密协议,数据都是经过加密的,解密者就难以分析出数据内容和规律了,因此对于这种锁的数据分析就不是停留在“端口”层了,解密者转向了“功能”层,就是对软件中的函数调用进行分析。为了抵挡功能层的数据分析,这种锁来了个“软硬”兼施的策略。

“软”的是指驱动程序内反跟踪、外壳加密等等软件工作,让解密者难以在功能层上仿真,谁都靠的是对操作系统、微机系统的精确理解。谁都无法决胜,结果是加密驱动程序在不断更新、膨胀。

“硬”的就是加密锁内的算法功能,这大大增加了解密难度,这是掌握在加密者手中的武器。但是,加密者只能设置算法的参数,即所谓内含多少种算法可选,而算法内容并不知道。这样就限制了厂商对算法的使用,要么预先记录算法结果然后在软件运行时核对(使用码表);要么在软件中至少变换两次然后比较结果是否一致。如果解密者截获这些数据,通过统计、分析就有可达到解密目的;

第三代加密锁,即所谓“可编程”的加密锁。1999年初,以北京深思洛克为代表推出了第三代加密锁,“可编程”加密锁概念的推出是软件加密技术的一次进步。“可编程”加密锁设计初衷是希望用户能够将软件中重要的代码或模块“移植”到加密保护设备中运行,使软件与加密锁实现真正无缝链接。但由于成本限制,早期推出的几款“可编程”加密锁采用的低档单片机给“可编程”性造成了很大的局限,主要表现在:1、算法变换的复杂度不够高,2、指令编码空间较小,3、程序区的空间较小。这些局限性使得用户根本不可能利用“可编程”加密锁实现理想的高强度加密方案。软件狗采用了PAL(Programmable Array Logic)、PEEL(Programmable Electrically Erasable Logic Device)、GAL(Generic Array Logic)等可编程器件,但目前流行的期间大概要算串行读写的EEPROM(Serial Electrically Erasable PROM)了。这些器件由于密码编制的灵活性和制成密钥后在程序中插入检查的方便性,极大地增加了解密的难度。从使用的角度来看PAL、PEEL、GAL等逻辑器件只能读取数据,不能随时写入数据,密码的重新设置比较麻烦;而EEPROM芯片可随意读写,用在软件狗上灵活性相当大,譬如可以为每一个软件狗单独设一个密码,以增加解密的难度;另外,从EEPROM 器件的电器性能上来说也非常适合做软件狗;因此这种器件在软件狗的设计中获得了广泛的应用,是当时软件狗制作者的首选芯片。它象一般RAM存储器一样可读写(只不过读写是串行的),即使断电后也能保存数据不变。常用的EEPROM型号是93C46,它是64×16bit 的结构,也就是说一个93C46具有64个16位bit单元的容量,每次处理数据也都是16位。有的93C46,如Microchip、A TMEL、CSi等品牌的93C46可以通过切换,变为128×8bit 或64×16bit两种模式,这对软件狗制作来说就更灵活了,其加密效果也更好。当然也有人采用更大容量的93C56、93C66或容量小一点的93C06、93C26等EEPROM芯片。因为软件狗是插在微机的并行口上,所以检查程序是通过并行口的I/O地址去读写EEPROM。具体的读写方式跟硬件线路以及EEPROM的时序有关,因此,一般的检查程序针对某一种硬件线路;但是这些程序大同小异,大体上是差不多的。

第四代软件够在第三代软件狗基础上,加入一个单片机芯片,如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次输入产生的输出要比一次输入产生的输出复杂度有质的飞跃。

深思Ⅲ具有完备的指令系统,可以通过编程实现n阶或任意阶黑箱模型,每次调用互相关联,并且可以绝对隐藏中间结果,只要使用得当,理论上是不可解的(我的理论是没有不可解的:)

飞天诚信:是新崛起的一家,主要产品是ROCKEY-IV和相兼容的USB狗,技术支持比较好,功能比较多,它的外壳加密程序很不错,用在加密上主要是8号功能(种子码)和14、15、16号功能(都是自定义算法),它的自定义算法比深思的产品好,“没有”漏洞(目前理论上说)。如果很好地使用它加密,是极难pj的。但大多数开发商都很偷懒,比如就只用8号功能(种子码)来加密。

制作和出售软件狗的公司很多,你只要注意一下计算机杂志上的广告就能得知。各公司生产的软件狗除了上述特点外,一般都有一些为吸引用户而附加的功能,主要是一些工具软件,其核心技术却是大同小异。

加密狗的一般特点

1、不占用并行口,因为它虽然插在并行口上,但是它又提供了一个跟原来一致的并行口。

2、软件具有防解密功能,可对抗各种调试工具的跟踪。

3、一狗一密码或一种线路,软硬件不可互换,就像一把锁一把钥匙那样。

4、提供各种语言的编程接口以及一套实用工具,方便用户在自己开发的程序中嵌入加密模块。

5、提供对可执行文件的加密工具,以便用户对已有的产品进行加密。

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

对软件加密保护产品而言,使用者最关心的是加密的有效性,产品的兼容性和稳定性。目前市场上主要的软件加密锁硬件内部均含有单片机,即所谓内置CPU,软件厂商主要是

利用算法功能进行加密。加密锁通常还增加了一些辅助功能,比如倒计数器、远程升级等。这类型加密锁主要产品有彩虹天地的“微狗”“SuperPro”、深思洛克的“深思Ⅰ、III型”、ALADDIN的HASP3、4等。通过对这些软件锁进行分析,认为从安全性上讲他们至少有三方面致命的薄弱点:

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

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

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

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

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

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

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

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

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

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

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

加密锁性能判定

加密锁很小巧,包含的技术内容却很丰富。一般我们从三个方面分析加密锁的性能:第一个是加密原理,或者说加密锁有些什么功能,这往往是针对一些解密方法发展起来的,最需要创造性的地方就是这里。国内产品在这个方面一直与国外产品具备足够的竞争能力。

第二个是加密锁的可靠性、稳定性、兼容性、透明性等。这些是对锁的基本要求,但是做完整并不容易,尤其是兼容性、透明性问题,加密厂家在这方面有着丰富的经验,但是没

有谁可以100%保证。透明性是锁的一个比较特殊的指标,由于锁是工作在并口(打印口),并口还会有其他设备,比如打印机、绘图仪、硬盘、光驱等,锁如果影响到原来设备的正常工作就是透明性不够好,完全的透明是难以做到的,一般的加密厂家不保证锁对并口硬盘、光驱等设备的透明性。

最后一个是锁的易学性、易用性。

软件狗加解密技术的简单介绍(我将在以后陆续加入并详细介绍)

涉及到加、解密的技术可以说是包罗万象,基本的有汇编语言、调试工具、操作系统等,还需要一些密码学的基本常识,如果对数据结构、编译原理等有一定的了解会更有帮助。当然,这并不是说没有这些基础就做不好加密,在使用加密锁时,很多工作已经由加密厂家完成了,其实加密者只要对“随机性”有一些基本的认识,就可以完成很出色的加密。这个随机与一般意义上的随机有所不同,这里强调的是“不可预测性”。如果解密者可以预知加密锁返回的数据,就可以用程序代替锁来返回,软件就无法知道锁是否真正存在,就是被解密了。这就是我们常说的“仿真”,在密码学中就是假冒攻击。所以,加密的一个重要思路就是让解密者看来:锁输入输出数据有很强的随机性。目前,加密设计中最迫切解决的就是构造随机性的问题。

常有人这样加密:在软件中反复检查锁内的数据,而且运用了很复杂的检查方法,比如中间插入一些运算或者垃圾程序等,加密的工作量很大,以为“我查了那么多次锁还不够吗?”。但这在解密者眼里不值一提,只要发现锁返回数据的规律性就足够解密了,根本不必理会软件是怎么使用的。这种加密失败在于,只是用了些读操作,没有构成返回数据的随机性。那么,如果扩大加密锁存储容量,或者进行些写操作就行吗?显然还是随机性太差。因为这点,第一代加密锁很难胜任真正的加密工作了。也因为这点,过去比较繁荣软加密技术难以深入发展。这提醒我们,如果加密原理不合理,再大的加密工作量也是徒劳无益的。

使用算法变换就可以增强随机性,但是有人这样加密:在软件中大量调用算法变换,变换的数据量也很大(即算法码表很大),可还是被轻易解密了。为什么呢?是不是算法被破了?不是。这种加密方法在解密者看来和上个没有什么不同,只要把每次变换的数据内容都记录下来,如果软件再用同样的数据调用算法,解密者自然知道应该返回什么数据了。失败原因是,码表内容是固定的,被解密者穷举了,没有构成随机性,这说明可以穷举的东西是不具备随机性的。那么怎么才能防止被穷举呢?由于加密者也不知道算法方程,实际上是做不到的。但是,我们可以给解密者增加很多穷举困难。我们知道,只要让解密者抓到一次,这个数据就再也没有加密作用了,因此不能让软件运行一次就用完所有码表,另外还可以用些随机数来做变换,这就考验解密者的分辨能力了。这是个技巧性比较高的问题,需要不小的工作量,但这的确对加密强度有贡献。

如果加密者知道算法内容,而解密者不知道,这样就可以用任何数据来访问加密锁的算法功能,解密者就无法穷举了,第三代“可编程”加密锁就能实现这种思想。

由于第三代锁的出现,需要补充另外一个话题,就是加密锁的功能。如果解密者可以通过数学方法解析出锁的内部功能,就可以“仿真”了。如何设计锁的功能才不易被破呢?这涉及到一点密码学,一般的加密者只要能够将不同类型的运算混合使用就够。对于第一、二代加密锁,解密者没有必要去分析程序是如何使用锁返回数据的(仿真的思路),而对于第三代锁,这种方法常成了解密者唯一希望,寄希望于通过跟踪锁返回数据的使用过程而推测出锁的内部功能。这时候几乎任何能够降低程序可读性的手段都会提高加密效果,比如程序垃圾、反复的数据搬动、嵌入汇编、插入浮点运算等等。这点很吸引人,即使你刚明白加密,也能让解密专家围着你团团转。

加密者往往远不如解密者专业,随着互联网的发展,解密技术正以更快的速度传播,这

给加密带来了更大的挑战。

软件狗的加密技术介绍

解密一个软件狗可以从两方面入手,其一是软件,只要把检查软件狗的那部分代码解除,那么软件狗就成了一只“死狗”。其二是从硬件入手的解密方法,其含义是要仿制一个加密盒,不管机密做的如何好,如果加密盒被仿制了,那么软件狗的加密作用也就不存在了。因此,从硬件入手的解密跟从软件入手的解密其效果是一样的,只不过后者需要付出一定的额外代价—硬件成本而已。

那么既然从软件、硬件着手都能解密,用它来保护软件还有什么作用?不用着急,让我们来谈谈如何更地保护您的软件。

针对解密的两种方法,我们也从这两方面来加强软件的加密功能。

增强软件狗加密功能的方法

一、软件加密

全面我们说,从软件入手的解密方法很多,针对这种情况,人们也研制出了很多行之有效的防解密措施,在次,我们把一些常用的防止软件跟踪解密的措施列于下面:

1、计算程序执行时间,并判断程序的执行时间是否过长;

2、关键程序部分禁止键盘中断,并检查键盘中断是否被开放;

3、关键程序部分禁止显示输出和打印输出;

4、在软件中多做几次软件狗检查;

5、把程序的重要部分加以编码加密,在运行时才解密;

6、修改断点中断功能;

7、利用除零中断或溢出中断是否有程序跟踪;

8、利用时钟中断检查是否有程序跟踪;

9、在程序中调用INT 7;

10、程序不要写得很结构化,要多一些“废话”;

11、若干种加密方法综合使用;

12、用黄玫瑰软件制作组出品的BITSHELL作外层防护;

............

==================================================

[附:外壳反跟踪反破译程序BITSHELL简介

一、系统简介

BITSHELL是一套可反跟踪反破译的软件加密系统,主要用语保护软件开发者的合法权益,防止未经授权的复制、算法解读及目标码反汇编。它是我们应高级开发者的要求从BITLOK中提炼出来的,专为应用软件提供pj保护的系统。应用软件开发者可以充分发挥自己的才智编写或精巧或复杂的程序,有BITSHELL的保护不用担心竞争者对商品软件进行逆向分析。应用软件开发者更可以设计自己的反拷贝介质(加密卡、加密狗等),然后用BITSHELL进行外层保护,从而不必担心访问反拷贝介质的代码被截获。应用软件开发者也可以购买商品化的加密卡,加密狗等,在应用系统内部秘密地存取加密卡、加密狗,用BITSHELL作外层保护,防止访问反拷贝介质的代码被截获。

主要功能和性能如下:

千变万化的加密方案

内含随机可选的二十套加密算法,构造出千变万化的反跟踪反破译方案,特别适合加密有多个单独执行程序的软件。

先进超强的反跟踪技术

采用加密虚拟机、多层间址多链解等独创的世界领先技术,结合传统的加密方法,具备超强的动态反跟踪能力。防范各种软硬件调试器对其破译。不仅防止了国际上通用的调试器,如:Soft-ICE,Turbo Debugger,Symdeb等,还重点防范了国内开发的各种专用调试器。

可靠性高、兼容性好、使用面最广泛

经BITSHELL1.0加密过的软件日夜运行在超过60万台机器上,经过了最广泛、最严格的测试。BITSHELL2.0具备同样可靠的性能,加密过的软件可以在各种厂牌各种机型上正常运行,兼容各种流行的DOS系统。

功能全面、使用方便

可加密各种带覆盖模块的执行文件,特别适合加密有Clipper,FoxPro等编译的各种数据库应用系统。

提供OBJ嵌入式加密模块。这样,用户还可以在源程序里加入加密模块,与外壳部分相互关联,有效地提高破译难度。

可以为用户定制专用BITSHELL反跟踪反破译系统,可以满足用户的独特需求。

二、快速入门

BITSHELL经过了用户严格的检验,作者对其精雕细琢反复修正,现在的版本使用极容易。确保BITSHELL硬盘或网络安装已经成功,或BITSHELL源盘在软驱中,加密方法如下:BITSHELL<源文件><目标文件>

例如:

把TEST.EXE加密成TESTOK.EXE。输入以下命令:

BITSHELL TEST.EXE TESTOK.EXE

把TEXE.EXE加密不保留未加密的程序。输入以下命令。

三、操作指南

1、BITSHELL参数的详细说明

BITSHELL可以用KEY环境变量来设定一些参数,这样可以简化使用过程。设置方法如下:

SET KEY=[SCHEMExx,][STAY,][CHECKOVL]

BITSHELL各项参数的意义如下:

(1)参数SCHEMExx,若给出则依用户的要求使用指定的变形算法,否则将随机抽取一种加密算法。BITSHELL2.0共有20种算法可选。

每一种算法都有自己的特点,有的加密难度大但解码时间长,这种算法适合加密重要的代码不是特别大的软件,如算法三和十二;还有的加密难度适中但解码速度快,如算法一,适合加密大型软件。

每个用户可以根据自己的特点选择,如加密不同的版本用不同的算法,加密不同的程序用不同的算法。如选算法十五可给出SCHEME15,选算法十九可给出SCHMEM19等,依次类推。

(2)参数STA Y用来选择在加密程序执行完毕后,是否驻留监控程序。默认值为不驻留监控。

如果加密FoxPro编译的程序,必须加参数SET KEY=STAY,以监控覆盖模块。

(3)参数CHECKVOL如果被加密的程序中有覆盖模块,此参数是用来选择是否检查覆盖模块。对于用CLIPPER编译出来的软件,加密时设置该参数非常有必要。默认值不检查覆盖模块。

BITSHELL参数都是可选的,如果不设置,都有相应的默认值。默认的设置为:

(1)SCHEME为随机挑选算法

(2)不驻留检测程序(加密FoxPro编译的软件,设定为驻留检测)

(3)不检查覆盖模块

2、使用BITSHELL

BITSHELL的商品盘是加密的,用户可以将其安装在NOVELL网络服务器上使用,源盘不能复制。如果只是临时使用一次也可不用安装,将BITSHELL源盘放入软驱中直接使用。方法:

BITSHELL<源程序>[<目标程序>]

如果不设置目标程序,加密的结果直接覆盖在源程序上。加密所用算法可用环境变量KEY来设置。

例如:①BITSHELL C:TEST.EXE

②BITSHELL TEST.EXE SAMPLE.EXE

③A:BITSHELL D:TEST.EXE C:TEST.EXE

其中<源程序>是需要加密的程序路径名。源文件必须是可执行文件以COM或EXE为后缀。如果缺省<目标程序>则直接在<源程序>上加密。如果还想保留未加密的程序,就不要缺省<目标程序>,并且保证源程序名与目标程序名不同。

[说明]

(1)BITSHELL系统本身是加密的,不能复制。

(2)经BITSHELL加密的软件,可以拷贝,散发,任意运行,除非被加密的程序有自己的反拷贝介质。

(3)经BITSHELL加密的软件不能还原为未加密状态。

(4)经BITSHELL加密的软件无法跟踪,无法反汇编。

四、BITSHELL高级技巧

1、源程序嵌入式保护措施

软件开发者在其软件开发完成以后,再在关键地方链入以下函数。当链接成功后,用BITSHELL.EXE将用户软件加密。这套被加密的软件运行时,就可以检测该程序是否被解密修改,以采取响应的反击措施,如拒绝执行等等。

用户可参考以下流程加密:

(1)将自己的软件(SAMPLE.C)编好,调试?通过。

SAMPLE.C

#include

main()

{

printf("This is my sample program! \n");

}

(2)在SAMPLE.C重要的地方调用加密函数。

SAMPLE.C

#include

main()

{

/* Insert BITSHELL function call */

id (BL_ComeIn()==0)

{

printf("Error! \n")

return(255);

printf("Thin is my sample program! \n");}

(3)编译SAMPLE.C成为SAMPLE.OBJ后,再将SAMPLE.OBJ和BLOBJ.OBJ链接成SAMPLE.EXE。

QCL /AL SAMPLE.C BLOBJ.OBJ

(4)用BITSHELL加密,键入命令执行:

BITSHELL SAMPLE.EXE SALE.EXE

软件加密过程完成了!

如果被加密的程序SALE.EXE被解密或修改,就会提示错误,然后退出。

2、使用BITSHELL须知

请不要使用PKLITE,LZEXE或EXEPACK进行压缩商品程序。

建议高级语言程序设计者,如有可能将所用程序设计语言的启动代码作修改,改变程序的入口点,避免被截获。在程序内部识别BITSHELL的嵌入式模块最好采用随机调用。

加密时用环境变量指定参数。生产一批软件,用同一种变形算法,万一软件有漏洞,新版本的软件可换一种变形算法。加密后的文件放在硬盘上,可提高加密速度。超大文件加密后,再用PKZIP等压缩后,放入商品软件盘上。

3、注意事项

(1)运行BITSHELL系统,或运行经BITSHELL加密的程序系统,如果安装了驻留型的调试跟踪器(如:Soft-ICE,GameBuster等),请先拆除之,否则程序将拒绝运行,因为这样有跟踪解密的嫌疑。

(2)使用BITSHELL加密商品软件的开发者,不要将BITSHELL系统盘上的任何文件和信息,以任何方式提供给最终用户。不要将自己所用的BITSHELL的版本,序列号和变形算法透漏出去。

五、系统提供的可链接函数

函数BL-ComeIn(BLOBJ.OBJ) (1)

C语言说明:

extern unsigned long BL_ComeIn(void);

说明:

利用这个函数可判断是否运行过反跟踪程序,同时还返回程序的PSP段地址和机器的ROM检查和,供用户程序进一步检查。这是一个与加密外壳相关的函数,这样可使用户程序与加密软件融为一体。对PSP段地址和ROM检查和的判断不要隔的太近。

入口参数:无

出口参数:如果出错,返回0FFFFFFFFH ;

(DX:AX=0FFFFFFFFH)

如果成功,返回一个无符号的长字。

其中:

低字节是ROM检查和,高字是PSP段地址。

(AL=ROM检查和,DX=PSP段地址)

注意:ROM检查和计算方法:

累加ROM(0xF000:0xE000)处开始字节,长度为0x100。

获取PSP段地址方法:

MOV AH,62H

INT 21H

BX就是该程序的PSP段地址。

调用建议:

不要每次运行都去检查该函数,用适当频率、在关键的地方调用这个函数。

C Usage Example:

/*

* function:BL_ComeIn

*/

extern unsigend long far BL_ComeIn(void);

/* Error return 0xFFFFFFFF,Success Return

* Lo Byte is checksum,Hi Word is PSP segment

*/

void My_BL_ComeIn()

{

unsigned long ComeIn;

unsigned short int ROM_CheckSum;

unsigned int PSPsegment;

ComeIn=BL_ComeIn();

if (ComeIn==0xffffffff)

{

printf("\nERROR:not loaded from BITSHELL shell ! \n");

{

else

{

ROM_CheckSum=ComeIn&0xff;

PSPsegment=ComeIn>>16;

printf("nBITSHELL On Entry:\N");

printf("ROM checksum is %x\nh",ROM_CheckSum);

printf("PSP segment is %xh\n",PSPsegment);

inregs.h.ah=0x62;

intdos(&inregs,$outregs);

printf("n This program PSP segment is %xh\n",outregs.x.bx);

{

{

五、一个简单的例子

这里我们一起看一下经BITSHELL加密后的程序的情况。

采用一个极简单的例子,用DEBUG生成一个https://www.doczj.com/doc/5215494508.html,文件:

C:\>DEBUG

-A

876B:0100 MOV AL,0

876B:1012 MOV DX,260

876B:0105 OUT DX,AL

876B:0106 INT 20

8760:0108

-RCX

CX 0000

:8

-N https://www.doczj.com/doc/5215494508.html,

-W

Writing 00008 bytes

-Q

用BITSHELL对https://www.doczj.com/doc/5215494508.html,进行加密:

C:\>BITSHELL https://www.doczj.com/doc/5215494508.html,

BITSHELL(tm)V ersion 2.01

Copyrighe(c) 1989-1995 by Y ellow Rose SoftWare Workgroup

Scheme 6 (CodeKey shift repeated)

9K

Total encryption size is 9K

Encryption completed successfully.

再用DEBUG来看一下加密后的https://www.doczj.com/doc/5215494508.html,:

C:\DEBUT https://www.doczj.com/doc/5215494508.html,

-R

AX=0000 BX=0000 CX=4CBC DX=0000 SP=00C0 BP=0000 SI=0000 DI=0000 DS=877C ES=877C SS=878C CS=878C IP=021C NV UP EI PL NZ NA PO NC 878C:021C FA CLI

-U

878C:021C FA CLI

878C:021D 8CCC MOV SP,CS

878C:021F 8ED4MOV SS,SP

878C:0221 BC4D25MOV SP,254D

878C:0224 9C PUSHF

878C:0225 51PUSH CX

878C:0226 52PUSH DX

878C:0227 56PUSH SI

878C:0228 57PUSH DI

878C:0229 55PUSH BP

878C:022A 0E PUSH CS

878C:022B 1F POP DS

878C:022C 2E CS:

878C:022D 8C061000 MOV[0010],ES

878C:0231 2E CS:

878C:0232 C606480080 MOV BYTE PTR [0048],80

878C:0237 0E PUSH CS

878C:0238 07POP ES

878C:0239 BEAD24MOV SI,24AD

-U

............

-Q

可以看到经加密后https://www.doczj.com/doc/5215494508.html,文件变长了很多,这是因为在程序外面加了一层外壳。同时,您也发现了加密后的程序没法反编译;如果您再跟踪一下,您又会发现加密后的程序已经无法跟踪了。如果您手头有Turbo Debugger或Soft-ICE等等,它们也是无效的。

看起来,这是一个比较好的加密工具,尤其是它提供的函数可以嵌入源代码中,跟软件狗配合起来,达到内外结合的加密效果,大家不妨一试。|||||

==================================================

虽然加密方法那么多,但是道高一尺,魔高一丈,随着加密技术的发展,解密技术也进一步蓬勃发展起来,目前可用于解密的工具有SOURCE、DEBUG、SYMDEB、TURBO DEBUG、SOFT-ICE、TRW2000等等。这些工具的功能一个比一个强,更何况还有那么多“专业”解密高手,似乎任何加密技术到了他们手里都会迎刃而解。说来说去,您可能会想,你仍然没有最终解决软件的加密问题吗。是的,本来吗,加密和解密就是一对矛盾的统一体,某一阶段的优只能看是哪一方先亮出了新招,谁都不敢说他的加密方法别人破译不了,或者说他能破译任何加密方法。如此看来,我们所做的工作只在于尽量减少被解密的可能性,以赢得时间进行下一步的开发。

软件解密就是要想办法把加密代码攻破,具体到软件狗上,即是找到检查程序,然后干掉它。因此,如果我们在应用程序的不同地方多做几次检查,就可以让解密者浪费更多的时间。这对I/O速率很快的软件狗来说是很方便的,不像软盘加密那样检查起来既费时又不方便。一个好的程序员会把程序设计得简单易懂,具有结构化,但这也给解密者带来了方便,所以程序不要写得太规则,另外还要加上一些“废话”,以干扰解密者。

另外一种不破坏程序结构化,也不需要写“废话”就可以有效干扰解密者,提高解密难度和复杂性的方法是,把子程序全部用宏改写。这样汇编出的程序是一串串很难看出结构的指令,进出堆栈的数据和各种传递的参数以及积存器暂存数的存取相距很远,嵌套很深,分析起来很伤脑筋。第三代软件狗的存取程序就是全部用这种方法写的。

很多软件加密技术的研制者对Soft-ICE很头疼,因为它的解密功能太强了,但是您只要在程序中调用一下INT 7,就能防止它的跟踪,您不妨试试看。

在用解密工具跟踪程序时,执行时间显然要比平常的长,另外一般都用键盘来操作,用显示器或打印机作输出,所以采用执行时间检查或者在关键程序部分禁止键盘中断,以及禁止显示器或打印机输出(修改INT 10H 或INT 17H 中断)等都是较好的方法。例如在第三代软件狗编程中用到的方法:

............

............

;................MACRO.....................

;.计时反跟踪. ;..........................................

;-----------------------------------------[+]

;保存时间

;-----------------------------------------[+]

TimeSave macro

ifndef debug-Time

push ds

push cs:[_const_word_0_]

pop ds;ds=0000H

push ds:[046ch];把时钟记数值

pop cs:start_time;保存到start_time

pop ds

endif

endm

;-----------------------------------------[+]

;检查程序执行时间,超过5秒则主机被挂起

;-----------------------------------------[+]

TimeTest macro

ifndef debug_Time

push es

push ax

push cs:{_const_word_0_]

pop es;es=0000H

mov ax,es:[46ch];得到新的时间记数值

sub ax,cs:start_time;

cmp ax,18*5;执行时间超过5秒吗?

ja$+4;是,则主机被挂起

pop ax

pop es

endif

endm

;..................MACRO...................

;.键盘反跟踪. ;..........................................

;-----------------------------------------[+]

;禁止键盘中断

;-----------------------------------------[+]

KbdOff macro

ifndef debug-Kbd

mov cs:_tmpB_,al;保存al

mov al,02h;禁止键盘中断

out 21h,al

mov al,cs:_tmpB_;恢复al

endif

endm

;-----------------------------------------[+]

;检查键盘中断,若被开放则主机被挂起

KbdTest_jmp macro

ifndef debug_Kbd

push ax

in al,21h

test al,02h;键盘中断被开放?

jz$+3;是是,则挂起

pop ax

endif

endm

............

............

另外,如果我们把关键部分的程序加以编码,运行时再译码出来,这也增加了解密的难度,因为解密者必须懂得编码、译码规则才能修改可执行文件,而这些规则加密者一般是不会泄露的。

多种软件加密方法的综合,以及几种加密技术交叉使用,足以让许多解密者知难而退。因为必须了解所有的加密技术原理才有可能解密,这就增加了难度,毕竟能够精通各种加密方法的人不多。例如有就把软件狗加密技术和磁盘加密技术结合起来做。

二、硬件加密

软件狗的电路不要做的太直接,否则不利于加密。这里我们就来讲讲如何增进软件狗的复杂性,加强硬件电路的机密功能。

在讲第二代软件狗时,我们说它其实就是几个简单的与或逻辑门,目前已经被淘汰。现在我们将要把它跟EEPROM结合起来,经过变化,组成比较复杂的第三代软件狗,从而增加解密难度。

CAL芯片由于本身就有加密功能,所以也常被用来与EEPROM结合做成复杂的软件狗,更由于其内部逻辑配置的灵活性,使得解密的难度上涨了很多倍。

解密者要仿制加密盒,首先必须搞到同型号的EEPROM,所以,我们尽量采用市场上一般购买不到的EEPROM型号,这样也能起到保密的作用。另外,如果采用特殊的93CX6系列,就可以利用不同厂商出品的特殊93CX6,其特性不同这一点来加强硬件的加密功能。下面我们给出两个具体例子来说明(以93C46型为例)

例1在电路中加入一个非们,以改变93C46某一管脚的极性,电路中要尽量采用低功耗的芯片,所以这里用了CMOS型的74HC04非门来实现。

这是在前面例子的基础上把CS信号反了相,读者还可以适当加入一些无用的电阻,电容等器件,以迷惑解密者。同时,我们还需要把相应的程序修改一下,把原来对CS信号的控制也反相才行。

............

............

;---------------------------------------------[+]

;设置EEPROM的片选CS为高电平,即选中EEPROM(-AUTO FEED线反相

;后接CS)

;硬件电路变化时,本部分程序应作相应改动

SetCS macro

push ax

CtrlPort;选择控制口

in al,dx

;and al,not,02h;令-AUTO FEED线输出

;为高电平

or al,02h;令-AUTO FEED线输出

;为低电平

KbdTest_Add_AL;检查键盘中断,若被开

;放,则改变al值

out dx,al

_CtrlPort;选择数据口

pop ax

endm

;--------------------------------------------[+]

;设置EEPROM的片选CS为低电平,即不选中EEPROM(-AUTO FEED线反相

;后接CS)

;硬件电路改变时,本部分程序应作相应改动

;--------------------------------------------[+]

ClearCS macro

push ax

CtrlPort;选择控制器

in al,dx

or al,02h;令-AUTO FEED线输出

;为低电平

and al,not 02h;为高电平

KbdTest_Add_0w;检查键盘中断,若被开放

;则改变_const_word_0_值

out dx,al

_CtrlPort;选择数据口

pop ax

endm

............

............

例2在电路中加入一个或非门,使得必须用两根并行口的信号线来得到一根93CX的控制线,这里采用了COMS型的74HC02或非门。

这是在前面例子的基础上把CS信号用两根口线(D2和D3)来控制,还可以适当假如一些无用的电阻、电容等器件,以迷惑解密者。同时,我们还需要把相应的程序修改成只有当D2和D3都为低电平时CS才为高电平。

............

............

;--------------------------------------------[+]

;设置EEPROM的片选CS为高电平,即选中EEPROM(D2D3线或非后接CS)

;硬件电路改变时,本部分程序应作相应改动

;--------------------------------------------[+]

SetCS macro

push ax

in al,dx;取数据口数据

and al,not,0ch ;令D2D3线都输出低电平

KbdTest_Add_AL;检查键盘中断,若被开

;放,则改变al值

out dx,al

pop ax

endm

;--------------------------------------------[+]

ClearCS macro

push ax

in al,dx;取数据口数据

or al,08h;令D2=0,D3=1

KbdTest_Add_0W;检查键盘中断,若被开放

;则改变_const_word_0_值

out dx,al

pop ax

endm

............

............

第四代软件狗加密技术

前面我们介绍了从第一代软件狗到第三代软件狗的使用和制作,但是,这些软件狗都是着眼于别人想不到这样的做法这个基础上的,一旦被人解密,散发出来,那么它的保护效果就要大打折扣了。任何人只要搞得到相同的芯片,便能仿制出一模一样的软件狗。即使你在加上一些TTL和CMOS等逻辑器件,甚至加上PAL、PEEL、GAL,或者在加上一些无用的电阻、电容,但毕竟都是局限于一些简单的逻辑变化和干扰手段,对于那些“专业解密高手”来说,仍然可以轻易地把它当作一个黑盒子,找一台储备示波器或者逻辑分析仪、逻辑分析卡,然后把电脑和软件狗之间的所有操作信号都记录下来,再用单片机将所有操作信号一五一十加以模拟就成了。甚至还可以设计出学习式的软件狗,像市场上那种学习式万用遥控器一样,去学习原版软件狗的操作信号,真正是道高一尺,魔高一丈。

这种情况是否以为这软件狗已经没有什么用了呢?那倒也不是,只不过还需要再往上提高一个层次—采用单片机来设计软件狗。目前已经有不少软件公司在他们的一系列软件上都采用了这种新的软件狗作加密保护用。

采用单片机制作软件狗有什么优点呢?主要在于主机存放程序与加密盒之间的沟通方式可以任意设计,不像第三代软件狗那样比较固定。这样,解密、破译的难度就成倍增加了。譬如,对于想用模拟方式仿制软件狗的做法,我们可以采用用特定的算法来沟通的方法予以解决,让示波器或逻辑分析仪每次记录的信号都不一样,别人就难以模拟您的软件狗了。再

如,为对付学习式软件狗,我们可以设定若干种沟通方式,平时只用一种方式沟通,在某种条件下、才出现特别的沟通方式,过一阵子也会失效,很难把所有的沟通方式都记录下来。说了那么多,那么好,这种软件狗到底该如何制作呢?是不是采用任何一种单片机都行呢?不是。前面说过,软件狗是靠“偷电”来获得电源的,所以,在选择单片机时,首先要保证它的功耗比较低,适合在并口上工作。其次单片机的指令要简单,功能要较强,适合做软件狗,最后一点,单片机本身带内置ROM,并有加密功能,以简化电路和防止被非法复制。符合这些条家的单片机是很多的,如NEC的MPD7554,Microchip的PIC16C5X系列等等。

第四代软件狗硬件设计思想

现在,我们给出第四代软件狗的一个实例,供大家参考。我们采用PIC16C54结合93C46来设计。

以并行口(DP25)的第9脚DA TA7作为主电源,而以16脚—INIT为辅助电源。这样做,可以避免PIC16C54的电源因DA TA7的变化而时有时无。-INIT脚的输出是很弱的,所以为了降低功耗,当DA TA7为LOW时,就令PIC16C54的振荡频率降低到100kHz以下。这是通过对电阻R2的控制实现的。DA TA 7为HIGH时,R1与R2并联,总的电阻小于100K欧,振荡频率大于100kHz;当DA TA7变为LOW时,R1就与R2断开,总的电阻等于100K欧,振荡频率就小于100kHz,使得PIC16C54处于低功耗状态。PIC16C54的RTCC脚是用来监视并行口的-STROBE脚。因为当-STROBE出现负脉冲时,表示并行口有数据要送入打印机,所以此时软件狗不能工作。而RA0是用来监视并行口的-SLCTIN脚的,当-SLCTIN为HIGH 时,打印机不会工作,这时候与软件狗通讯比较合适。

在我们的电路中采用了93C46,但它并不是必须的。因为它的用途是来记录一些密码,序号等数据,如果采用OTP型,每一个芯片本身就可以存储不同的密码,是用不着外接存储器的;但在大批量生产MASK时,它是必须的,要不然,所有的软件狗就一个样了,这不符合加密原则。

第四代软件狗在硬件电路方面没有什么好变化的,最多也就仿照第三代软件狗的做法,但是在软件方面,由于采用了单片机,尽可以根据各人的巧心思,进行自由的发挥。

2、第四代软件狗的一个软件设计

(1)在DA TA7及-SLCTIN为HIGH时才能工作。

(2)工作期间如-STROBE有负脉冲则软件狗停止工作。

(3)建立128BYTES循环式的密码表,以数据口送出去的第一个BYTE为密码的起点,并以BIT2决定所要核对的密码是七次或八次。

(4)送出数据的方式采用从数据口出,前后两个数据XOR后所得的值为所要传送的数据。

(5)所有密码核对正确后,有-SLCTIN脚以约100ms的负脉冲,以串行方式从-ACK脚在上升沿时读回密码表的下一个密码供PC机核对。

根据这个原则,我们可以卸出一个比较好的软件狗程序,足以另解密者头疼很长时间了。有兴趣的朋友不妨自己编一编,解一解看。

这是当前软件狗加密技术中比较好的一个解决解密问题的方案。别人想要仿制您的软件狗,一般是不可能的,除非找到读出单片机中程序代码的工具。

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

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

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

利用智能卡技术的新一代加密锁最多可提供总计高达32~64K字节的程序和数据空间,可容纳近万行的C语言代码。

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

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

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

智能卡芯片具有很高的集成度,与普通低档的单片机不同,只有已通过国际安全机构检测和认证(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厂商,由此也增大了用户的安全风险。

因此,利用智能卡技术开发软件加密保护类产品,从安全性、效率、稳定性、可靠性等各方面来说,核心的COS系统必须具有自主版权而且完全符合国际标准ISO7816。

(加密技术未完待续)

软件狗解密技术(待续)

软件加密技术和解密技术是矛与盾的关系,总是形影不离,当有了一项新的加密技术的时候,过不了多久,相应的解密技术也就诞生了。有时候,一项绝妙的解密技术也能使加密技术的研制这痛苦半天,反之怡然。如此纠缠,何时方休:回答是,永远完不了。唯一的出路,就是普遍提高人们的素质,寻求版权保护。切实做好产品的服务和质量,以此增强人们对您产品的吸引力,而不想去使用盗版产品。。。

文件加密与解密算法

文件加密与解密算法的分析与应用 摘要:随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。解决信息安全的方法是加密,所以加密解密就显得日益重要。本课题重点研究常用文件加密解密算法的基本思想及实现过程中所用到的方法、技术。同时对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表aes算法和des算法进行了研究和比较,最后结合常用算法设计实现了简易加密解密应用软件。 关键词:解密文件加密密码体制 des aes 中图分类号:tp314 文献标识码:a 文章编 号:1672-3791(2012)06(b)-0019-01 1 引言 1.1 文件加密与解密算法应用的意义 随着因特网、全球贸易和其它活动的增长,密码技术越来越多地用于个人的标识和认证等,它是取得信息安全性最有效的一种方法,是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。

对称密码算法主要用于保证数据的机密性,通信双方在加密解密过程中使用它们共享的单一密钥。最常用的是数据加密标准(des)算法,但由于des的密钥长度较短,不适合于数据加密安全性的要求。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 本文在研究分析了aes加密原理的基础上着重说明了aes算法实现的具体步骤:扩展密钥的异或运算、列变换、行变换、s盒变换等,以及各步骤的轮换顺序、密钥扩展程序keyexpansion、优化等。 2 加密/解密算法的原理分析[1] 2.1 原理 对于aes算法,输入分组、输出分组、状态长度均为128比特。nb=4,该值反应了状态中32位字的列数。对于aes算法,密钥k的长度是128、192或256 bits。密钥长度表示为nk=4、6或8,反应了密钥中32位字的个数。对于aes算法,算法的轮数依赖于密钥长度。将轮数表示为nr,当nk=4时nr=10;当nk=6时nr=12;当nk=8时nr =14。对于加密和解密变换,aes算法使用的轮函数由4个不同的以字节为基本单位的变换复合而成。 (1)字节替代,利用一个替代表。(2)将状态矩阵的每一行循环移位不同的位移量。(3)将状态矩阵中每一列的数据进行混合。(4)将轮密钥加到状态上。 2.1.1 s盒变换:对输入矩阵的任一个元素a做如下变换s[a]

密码学:解密与加密

这串字在你看来毫无意义,而且它本该如此,因为这是一段加密密码,是信息加密后的结果。但如果我告诉你我所做的,只是把句子里面的每一个字母按照字母表顺序向后移动了一位的话,你就会知道这串字可以翻译成这样。 为了加密短信息,你需要两个关键部分:密码和密钥。密码是一系列规则,告诉你如何加/解密信息,比如前面的密码就是把字母按着照字母表顺序移动特征的位数。密钥告诉你具体如何使用这些规则,否则每次加密的结果都会是一样的,这会使得信息很容易被解码。前面的密码中,密钥为一,因为我们将字母按照字母表向右移动了一位。为了解密信息,你需要知道使用的是何种密码,并且要知道使用的密钥是多少,或者你想破解密文,将可以将所有可能的密钥都尝试一遍,也可以分析密文,尝试倒推结果,这被称作破译。但是有没有可能提出一种密码和密钥的组合,使得加密结果与信息永远没法对应吗?也就是说,是否存在不可破解的密码呢? 人们不断在提出新的,更好的密码,但是很难让密码变得完全不可破解,因为无论你使用何种规则加密信息,只要拥有充足的时间和充足的数据,总能发现加密的规律。我最开始给大

家看到密码,是最古老简单的信息加密方式,这种加密方式常被称为凯撒密码。在凯撒密码中,密钥只是一个数,代表我们将字母向右移动的位数,但是这个密码很容易被破解,即使在你不知道密钥的前提下。因为你可以将25种可能全部尝试一遍,来解码信息。整个字母表可能移动的位数是有限的,字母表中只有26个字母,因此只有25中移位的可能。 凯撒密码属于最简单的一类密码,称为单表代换密码。在这类密码中,信息中的每一个字母都被唯一映射为密文中的一个字母,并且在整个加密过程中,这种映射关系是不变的,简单的说,这种加密方式就是扰乱字母表顺序,在这种情况下,密钥还是一个列表,表示每个字母的映射结果。这种方法中,加密信息的可能映射一共有4*10*26种,所以你估计觉得这密码很难破解。不过我们有很多种方法来破解信息,将所有可能的密钥都尝试一遍,是最显然,也是最没创意的方法,这种方法也有一个很没创意的名字,穷举法。 你也可以尝试一些比较巧妙的方法来破解密码,比如有种方法叫频率分析。这种方法的核心点在于,每一种语言都有其特定的语言特性,举个例子,在英语中字母E出现的频率最高。在我上面说的这句话里,一共出现了7次字母E。还有一些单词,如THE,用的频率非常高,如果不用THE,甚至很难构造完整的句子,密码学家称这些单词为明密对照文。频率

信息加密与解密实验1-1 经典密码——凯撒密码

上机实验报告 一、实验目的: 本次上机实践所涉及并要求掌握的知识点。 1、理解凯撒密码的加密、解密过程 二、实验环境 PC机一台 三、实验内容 实验一移动3位的凯撒密码: 1.(1)用移动3位的凯撒密码加密“keep this secret” (2)用移动3位的凯撒密码加密你的某位老师的名字 2.破译下列谜语的答案。这些答案是用移动3位的凯撒密码来加密的。 (1)谜语:What do you call a sleeping bull?(你怎么称呼一只 睡着的公牛?) 答案: D EXOOGRCHU (2)谜语:What is the different between a teacher and a train? (老师与火车的区别是什么?) 答案:WKH WHDFKHU VDBV “QR JXP DOORZHG” WKH WUDLQ VDBV “FKHZ FKHZ” 实验二移动4位的凯撒密码: 1.请解密下面伊薇写给艾比的便条,她使用的是移动4位的凯撒密码 WSVVC PIX’W YWI GMTLIVW JVSQ RSA SR

2.谜语:What do you call a dog at the beach ?(你怎么称呼一只在海滩 上的狗?) 答案(移动4位密码):E LSX HSK 实验三凯撒密码破解: 1.凯撒密码破解 密文:NGBKGMUUJZOSK 实验四用数传递信息的方法破译以下的谜语: 1.谜语:What kind of cookies do birds like?(鸟儿喜欢什么种类的饼干?) 答案:2,7,14,2,14,11,0,19,4 2,7,8,17,15 2.谜语:What always ends everything?(什么总是能终结所有事情?) 答案:19,7,4 11,4,19,19,4,17 四、实验总结 通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得,甚至是改进意见。 也可以写对界面设计、算法设计、代码编写、程序调试、程序改进等相关的收获、感悟。 五、附录(源程序清单,包含适当的注释)

加密技术及密码破解实验报告

第九章、实验报告 实验一、设置Windows启动密码 一、实验目的:利用Windows启动密码保存重要文件。 二、实验步骤: 1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。 2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】

实验二、为word文档加密解密 一、实验目的:保护数据的安全 二、实验步骤: 1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码 2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。

3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。 4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】 破解word密码 (1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示: 实验三、使用WinRAR加密解密文件

一.实验目的:加密文件,保证文件的安全性。 二.实验步骤: 1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】 2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。 3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】 破解WinRAR加密的文件 (1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。结果如图:

亿赛通加密软件操作说明

亿赛通加密软件操作说明 1 客户端登录 【登录】 用鼠标右键单击客户端图标,选择【登录用户】,弹出【登录用户】窗口,在【用户ID】输入框中填写正确的用户ID,在【密码】输入框中填写正确的密码,用户ID、密级填写完毕后,点击【确定】按钮,完成登录。如下图1所示。 图1 图2 如果用户ID或者密码填写不正确,提示用户密码不正确。如上图2所示。【注销】 用鼠标右键单击客户端图标,选择【注销用户】,如下图3所示,弹出提示窗口,如下图4所示,点击【确定】,完成用户注销。 图3 图4 【修改密码】 用鼠标右键单击客户端图标,选择【修改密码】,弹出修改密码的窗口,在旧密码输入框中,填写原密码,在新密码、确认密码中填写新密码,点击【确定】后,提示密码修改成功。如下图5所示。 图5 图6

用户在没有登录时,直接修改密码,修改完成后,用户可以直接登录成功。【策略更新】当服务端下发新的策略或者策略发生变化时,客户端需要更新策略。 操作步骤:用鼠标右键单击客户端图标,选择【更新策略】,更新的策略即可生效。如上图6所示。 2 Web页面登录 启动浏览器,在地址栏中输入服务器的IP地址。就可以进入服务器欢迎界面。如图所示:(我们公司地址为:http://192.168.1.251) 点击“进入”,页面跳转到登录界面。如图所示: 输入用户ID和密码后点击登录按钮就可以登录服务器了,第一次登录使用默认密码登录。

3 业务申请与审批 输入正确的用户名和密码后就可以在web方式进行业务申请,一般用户主要有离线申请、解密申请和邮件外发解密申请。如图所示: 3.1离线申请 【功能描述】 当客户端离线、脱离服务器,想要正常操作CDG文档,可以申请离线。 申请离线的用户有时长和次数限制,在限定的时间和次数内,用户可以 正常操作。 时间、次数超出后,用户的文档就没有权限打开了。如果想继续操作文档,需要再次申请离线时长和次数。 【操作步骤】 1)用鼠标右键单击客户端图标,选择【业务申请】栏下的【离线申请】, 如下图所示,弹出离线申请的窗口,如下图所示,用户在离线申请窗口中输入申请时长,在备注中输入申请理由,点及确定,离线申请提交成功。 2)管理员审批通过后,用户的客户端会收到一个冒泡提示信息:“恭喜!管 理员已同意你的离线申请!”,如下图左所示,客户端就可以离线操作了。 图左图右

加密软件破解方法

现在大多数加密软件号称能快速加密几G的文件夹(如果:E钻文件夹加密大师,E神文件夹加密,高强度文件夹加密大师,文件加锁王,文件夹加锁王,超级特工秘密文件夹等)其实用的是一种在磁盘上建立个特殊文件夹,然后把文件或文件夹转移到这个文件夹里。这种方法,如果设计不好,极易破解。 现在告诉大家两个软件,可以轻易破解E钻文件夹加密大师,E神文件夹加密,高强度文件夹加密大师,文件加锁王,文件夹加锁王这些加密软件加密的文件夹。 软件一:冰刃( IceSword ,可以用来破解文件夹加锁王加密的文件夹) 软件二:Total Commander(是强大的windows资源管理器终结者,可以用来破解E钻文件夹加密大师,E神文件夹加密,高强度文件夹加密大师,文件加锁王,超级特工秘密文件夹加密的文件和文件夹。) 其实如果你有DOS基础,可以用DOS命令来破解,如:E钻文件夹加密大师是在磁盘建立了个recyle的文件夹,看这象回收站,你可以加密个文件夹,然后把这个recyle的文件夹改个名字,你的加密文件夹就打不开了。 你用DOS命令,一层层进入这个文件夹,就可以看到你加密的文件夹或文件了。 当然,有的朋友问文件夹加密超级大师这个软件加密的文件夹怎么破。 这个软件我用上面的两个软件试了一下,发现不行。 因为,文件夹加密超级大师对文件夹有五个加密方法,闪电和隐藏加密用的方法和其余的加密软件原理一样但设计好像不一样。 这两个软件,无法找到文件夹加密超级大师加密的文件夹,另外,其余加密方法全面,金钻,移动用的是数据加密,估计不知道加密算法和加密密码无法破解。 另:这个软件还用了文件系统驱动,所以破解起来无从下手。 反正,如果你用的是E钻文件夹加密大师,E神文件夹加密,高强度文件夹加密大师,文件加锁王,文件夹加锁王,超级特工秘密文件夹这几个软件,加密的文件夹找不到了,忘记密码,用我推荐的软件一定可以找到你加密的数据,其实这几个软件加密的数据在这两个软件面前想没有加密一样,有意思吧! 文件夹加密超级大师,垃圾软件!!!!!!败类!!!不用任何工具即可破解其加密数据!!!!!!!!!!!!! 文件夹加密超级大师,垃圾软件!!!!!!败类!!!不用任何工具即可破解其加密数据!!!!!!!!!!!!! ***破解方法***: 1点击开始菜单-运行 2如在D盘使用了闪电或隐藏加密,则输入 "D:\...\??????????????..\W-S-FSE-750715-771104-3000..\nul\Local"

信息加密技术

信息加密技术研究 摘要:随着网络技术的发展,网络在提供给人们巨大方便的同时也带来了很多的安全隐患,病毒、黑客攻击以及计算机威胁事件已经司空见惯,为了使得互联网的信息能够正确有效地被人们所使用,互联网的安全就变得迫在眉睫。 关键词:网络;加密技术;安全隐患 随着网络技术的高速发展,互联网已经成为人们利用信息和资源共享的主要手段,面对这个互连的开放式的系统,人们在感叹现代网络技术的高超与便利的同时,又会面临着一系列的安全问题的困扰。如何保护计算机信息的安全,也即信息内容的保密问题显得尤为重要。 数据加密技术是解决网络安全问要采取的主要保密安全措施。是最常用的保密安全手段,通过数据加密技术,可以在一定程度上提高数据传输的安全性,保证传输数据的完整性。 1加密技术 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理。使其成为不可读的一段代码,通常称为“密文”传送,到达目的地后使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径达到保护数据不被人非法窃取、修改的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。数据加密技术主要分为数据传输加密和数据存储加密。数据传输加密技术主要是对传输中的数据流进行加密,常用的有链路加密、节点加密和端到端加密三种方式。 2加密算法 信息加密是由各种加密算法实现的,传统的加密系统是以密钥为基础的,是一种对称加密,即用户使用同一个密钥加密和解密。而公钥则是一种非对称加密方法。加密者和解密者各自拥有不同的密钥,对称加密算法包括DES和IDEA;非对称加密算法包括RSA、背包密码等。目前在数据通信中使用最普遍的算法有DES算法、RSA算法和PGP算法等。 2.1对称加密算法 对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系统中,加密和解密采用相同的密钥。因为加解密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄漏出去,这样就可以实现数据的机密性和完整性。对于具有n个用户的网络,需要n(n-1)/2个密钥,在用户群不是很大的情况下,对称加密系统是有效的。DES算法是目前最为典型的对称密钥密码系统算法。 DES是一种分组密码,用专门的变换函数来加密明文。方法是先把明文按组长64bit分成若干组,然后用变换函数依次加密这些组,每次输出64bit的密文,最后将所有密文串接起来即得整个密文。密钥长度56bit,由任意56位数组成,因此数量高达256个,而且可以随时更换。使破解变得不可能,因此,DES的安全性完全依赖于对密钥的保护(故称为秘密密钥算法)。DES运算速度快,适合对大量数据的加密,但缺点是密钥的安全分发困难。 2.2非对称密钥密码体制 非对称密钥密码体制也叫公共密钥技术,该技术就是针对私钥密码体制的缺陷被提出来的。公共密钥技术利用两个密码取代常规的一个密码:其中一个公共密钥被用来加密数据,而另一个私人密钥被用来解密数据。这两个密钥在数字上相关,但即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的私人密钥也是不可能的。这是因为两个密钥生成的基本原理根据一个数学计算的特性,即两个对位质数相乘可以轻易得到一个巨大的数字,但要是反过来将这个巨大的乘积数分解为组成它的两个质数,即使是超级计算机也要花很长的时间。此外,密钥对中任何一个都可用于加密,其另外一个用于解密,且密钥对中称为私人密钥的那一个只有密钥对的所有者才知道,从而人们可以把私人密钥作为其所有者的身份特征。根据公共密钥算法,已知公共密钥是不能推导出私人密钥的。最后使用公钥时,要安装此类加密程序,设定私人密钥,并由程序生成庞大的公共密钥。使用者与其向联系的人发送

亿赛通加密软件操作说明精编

亿赛通加密软件操作说明 精编 Lele was written in 2021

亿赛通加密软件操作说明 1 客户端登录 【登录】 用鼠标右键单击客户端图标,选择【登录用户】,弹出【登录用户】窗口,在【用户ID】输入框中填写正确的用户ID,在【密码】输入框中填写正确的密码,用户ID、密级填写完毕后,点击【确定】按钮,完成登录。如下图1所示。 图1 图2 如果用户ID或者密码填写不正确,提示用户密码不正确。如上图2所示。 【注销】 用鼠标右键单击客户端图标,选择【注销用户】,如下图3所示,弹出提示窗口,如下图4所示,点击【确定】,完成用户注销。 图3 图4 【修改密码】 用鼠标右键单击客户端图标,选择【修改密码】,弹出修改密码的窗口,在旧密码输入框中,填写原密码,在新密码、确认密码中填写新密码,点击【确定】后,提示密码修改成功。如下图5所示。

图5 图6 用户在没有登录时,直接修改密码,修改完成后,用户可以直接登录成功。 【策略更新】当服务端下发新的策略或者策略发生变化时,客户端需要更新策略。 操作步骤:用鼠标右键单击客户端图标,选择【更新策略】,更新的策略即可生效。如上图6所示。 2 Web页面登录 启动浏览器,在地址栏中输入服务器的IP地址。就可以进入服务器欢迎界面。如图所示:(我们公司地址为: ,页面跳转到登录界面。如图所示:

输入用户ID和密码后点击登录按钮就可以登录服务器了,第一次登录使用默认密码登录。 3 业务申请与审批 输入正确的用户名和密码后就可以在web方式进行业务申请,一般用户主要有离线申请、解密申请和邮件外发解密申请。如图所示: 离线申请 【功能描述】 当客户端离线、脱离服务器,想要正常操作CDG 文档,可以申请离线。 申请离线的用户有时长和次数限制,在限定的时 间和次数内,用户可以正常操作。 时间、次数超出后,用户的文档就没有权限打开了。如果想继续操作文档,需要再次申请离线时长和次数。 【操作步骤】 1)用鼠标右键单击客户端图标,选择【业务申请】栏下 的【离线申请】,如下图所示,弹出离线申请的窗口,如下图所示,用户在离线申请窗口中输入申请时长,在备注中输入申请理由,点及确定,离线申请提交成功。

常见格式文件的加密和解密

常用格式文件的加密解密方法 庆云县水务局项目办 二〇一二年五月二十三日

目录 0、引子 1 1、新建word文件的加密方法1 1.1任务1 1.2基本步骤1 1.3示范1 2、原有word文件的加密方法4 3、Excel文件的加密方法 4 3.1任务4 3.2基本步骤4 3.3示范4 4、CAD文件的加密方法 5 4.1任务5 4.2基本步骤6 4.3示范6 5、文件的解密方法8 5.1任务8 5.2基本步骤8 5.3示范8

0、引子 我们的日常工作,往往是处理一些文字、表格和图纸。最常用的文件格式有word、excel和CAD。怎样加密、解密这些格式的文件,是我们常遇到的问题。由于文件的加密、解密方法大致一样,所以,这里只介绍这三种文件的加密解密方法。其它格式的文件加密解密,可以参照进行。 加密解密文件需要知道文件格式的后缀名,后缀名又称文件扩展名,是操作系统用来标志文件格式的一种机制。通常来说,一个扩展名是跟在主文件名后面的,由一个分隔符分隔。如文件名“readme.txt”中,readme是主文件名,.txt为扩展名,表示这个文件被认为是一个纯文本文件。常见文档类型及其后缀名和打开方式详见下表。 常见文档类型及其后缀名和打开方式: 1、新建word文件的加密方法 1.1任务 对新建word文档1(未曾保存)进行加密 1.2基本步骤 ①打开菜单“文件”→②点击“另存为”选项→③点击“工具”按钮→④选定“安全措施选项(C)”→⑤输入密码→⑥确定→⑦再次输入密码→⑧确定→⑨保存。 1.3示范 ①打开菜单“文件”:点击菜单栏最左侧的“文件”按钮,弹出“文件”下拉列表; ②点击“另存为”选项:点击“文件”下拉列表的“另存为”选项,弹出“另存为”对话框,如图1所示。

文件的加密解密压缩和压缩文件密码的管理

日常生活中我们通常会分享一些个人视频,但处于隐私考虑,我们会想到给文件加密,嗯,不错,但是我们常用的的视频格式是不支持文件加密的,怎么办?看到网上一些网站有时分享软件时会将软件打包成RAR或ZIP压缩格式并加密,只有访问网站源地址才能获得密码,即提高了网站访问量又将一些不太好找的软件分享给大家。那么我们就依照这个思路用压缩软件压缩视频并加密后上传到各大网盘分享给朋友,这样不仅间接的将视频进行了加密,保护了我们的个人隐私,更是将较大的视频文件批量的进行了分享。但很多人只进行过文件的解压/压缩,并不知道如何加密或者是并不会进行灵活的加密密码管理,这里笔者就像大家介绍一下如何给文件加密压缩并管理密码。 一般的常规方法是选定要压缩的文件并右击,在弹出的菜单中选择“添加到压缩文件” 弹出压缩选项,1.选定压缩格式 2.点击“设置密码”在这里笔者要说一下,如果选定RAR格式,在解压或打开时不会显示包内文件名,而选定ZIP格式,在解压或打开时会显示包内文件名,所以笔者建议大家如果对文件的保密程度要求较高那么就选RAR格式,因为ZIP格式不支持文件名加

密。 设置好密码点击“确定” 等待文件压缩好,这样就完成了文件的压缩加密

当然,我们有时要对没有加密的压缩文件设定密码,需要注意的是下列方法需要使用好压软件,并且文件格式为ZIP(RAR文件不支持),笔者上述使用的WINRAR无法进行下列操作,大家需要用好压进行操作。 先打开这个压缩文件,点击“文件”-“密码” 弹出窗口后选择“密码”选项卡,点击“设置新的密码”设置好密码然后点击“确定”即可

如果你想把压缩包中的密码清除掉,则选“清除已有密码”,然后点“确定”,会弹出提示让你输入之前设置的密码,输入后确定即可清除掉密码 下面笔者再介绍一下在WINRAR中的文件压缩密码管理 首先打开WINRAR,然后选择“选项”-“设置”

Oracle 实现 加密与解密

一、加密 CREATE OR REPLACE PROCEDURE LF.p_encrypt (decrypted_string1 in varchar2,encrypted_string1 out raw) IS key_string VARCHAR2(8):='shuanciy'; encrypted_string VARCHAR2(1000); encrypted_raw raw(1000); rawkey raw(240); decrypted_key VARCHAR2(24); iMode integer; BEGIN iMode:=1; decrypted_key:=Lpad(to_char(decrypted_string1),24,'0'); for i in1..length(key_string) loop rawkey := rawkey||hextoraw(to_char(ascii(substr(key_string, i,1)))); end loop; encrypted_string:=dbms_obfuscation_toolkit.DES3Encrypt( decrypted_key, key_string => rawkey, which => iMode); encrypted_raw := UTL_RAW.CAST_TO_RAW(encrypted_string); encrypted_string1:=encrypted_raw; END; / CREATE OR REPLACE FUNCTION LF.SF_P_ENCRYPT(abc IN RAW) RETURN VARCHAR2 IS bcd VARCHAR2(500); ----------------------------------------------- ---加密function add by Near 2015-02-03 ----------------------------------------------- BEGIN p_encrypt (decrypted_string1 => abc, encrypted_string1 => bcd); RETURN(bcd); END; / 二、解密 CREATE OR REPLACE PROCEDURE LF.p_decrypt (encrypted_string1 in raw,decrypted_string1 out varchar2) IS key_string VARCHAR2(8):='shuanciy'; rawkey raw(240);

凯撒密码的加密和解密

关于凯撒密码的实现原理 班级:姓名:学号:指导老师: 一、设计要求说明 1、设计一个凯撒密码的加密和解密的程序,要求输入一段字符和密码,输出相应的密文,完成加密过程; 若输入被加密的密文及解密密钥,能还原出原文,完成解密。 2、语言不限,工具不限,独立完成,参加答辩。 3、严格按照格式的要求完成文档,在第六部分的运行结果分析中,要求抓图说明。 二、基础知识介绍 凯撒密码的历史 凯撒密码(caeser)是罗马扩张时期朱利斯?凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。 古罗马随笔作家修托尼厄斯在他的作品中披露,凯撒常用一种“密表”给他的朋友写信。这里所说的密表,在密码学上称为“凯撒密表”。用现代的眼光看,凯撒密表是一种相当简单的加密变换,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。古罗马文字就是现在所称的拉丁文,其字母就是我们从英语中熟知的那26个拉丁字母。因此,凯撒密表就是用d代a,用e代b,……,用z代w。这些代替规则也可用一张表格来表示,所以叫“密表”。 基本原理 在密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法)。凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于它易于实施却难于破解. 发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。 凯撒密码的加密算法极其简单。其加密过程如下: 在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数) 同样,解密过程可表示为: m≡c+k mod n (其中n为基本字符个数) 对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。 加密解密算法 恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3): 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC 使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如: 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ 恺撒密码的加密、解密方法还能够通过同余数的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为:

(完整版)教科版高一信息技术必修1第三单元3.4加密和解密教学设计

3.4 加密与解密 本节内容按2课时设计。 第一课时 教学重难点 【教学重点】会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。 【教学难点】用穷举法破解密码。 【教学过程】 一、引入 1.学生预习,阅读第77页“任务一解开网站账号被盗之谜”之“活动1 防范‘盗窃’行为”,填写第78页的表3.4.1。 2.教师检查,并评讲填写情况,引出数据安全、密码的话题。 表3.4.1 密码盗窃与防盗分析表 二、密码 密码是指用来核对用户ID以验证用户就是本人的一组字符。 活动2设置安全密码 打开教科书配套资源中的“数据安全性测试.py”,运行并测试穷举搜索一个5位、7位和9位的数字密码,分别需要多长时间,填写表3.4.2。(详见配套资源“数据安全性测试(有界面).fld”和“数据安全性测试(有界面).py”) 表3.4.2 穷举搜索密码需要的时间

实现穷举搜索的自定义函数jiemi()的程序代码如下: def jiemi(): d1=datetime.datetime.now() #获取当前系统时间d1 p=int(varin.get()) #获取输入文本框的数字密码 for i in range(0,p+1): #从0循环到正确密码数值 if i==p: #如果密码相同 d2=datetime.datetime.now() #获取当前系统时间d2 d=d2-d1 #取得时间差 #在输出文本框中显示解密用时 varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒") 程序运行效果如下: 【比一比】当然,我们也可以编写无可视化界面的程序,程序更简单。(详见配套资源“数据安全性测试(无界面).py”) 程序运行效果如下: 请比较有可视化界面与无可视化界面两个程序运算的快慢,将最快的结果填入表3.4.2。 【算一算】 你的电脑1秒最多能试探大约多少个整数密码? 【做一做】 1.有可视化界面程序中的jiemi()函数中的for循环改为while条件循环:

加密狗加密与解密方法技术白皮书

加密狗加密与解密方法 加密狗加密方法 1 打开EZCAD软件包,找到“JczShareLock3.exe”执行程序。 2 双击执行该程序,弹出“Select parameter”对话框,如图1所示。在图中可以看出我 们可以设置两级密码,这两个密码是完全独立的,其中任何一次使用达到设定要求以后,加密狗就会限定板卡的使用权限。如同时设置两级密码,权限应不同,即这两个密码设置的时间等权限长短不一。如图,软件默认的是一级密码选中状态,如果想选择二级密码直接点选即可。 图1 Select Parameter 3 当我们选择好设定密码的级数后,点击确定按钮,弹出“JczShareLock”对话框,如图 2是软件默认的发布版界面,点击下拉菜单,我们可以选择共享版模式,如图3。 图2 发布版界面

图3 共享版界面 下面我们分别说明发布版模式和共享版模式的加密方法。 4 首先是发布版模式如图2。发布版模式下没有次数,天数,时间等的设置,只有密码设 置,主要应用于保护自己模式的设置,防止别人更改。点击“写入/Write In”按钮,进入密码写入界面。如图4。如果我们是第一次写入密码,那么就直接勾选修改密码选项,在新密码下面的前一个输入栏里输入4位数字,在后面的输入栏里输入4数字,这样完成了密码的初步设定,然后在确认密码下的输入栏内重复输入上面设定的密码,然后点击确认,完成密码的设定。如果我们是修改密码的话,那么我们首先要在密码写入界面上方的输入密码下的正确输入栏内输入以前设定的密码,然后在勾选修改密码,输入新的密码。否则修改密码就会失败,并出现“密码错误”提示信息。 图4 密码写入界面 5 共享版的密码设定,如图3是共享版的界面。在这里我们首先要设定好限制使用的次数, 天数,时间,直接在后面的输入栏内直接输入即可。这里注意:我们所设定的时间,天数是以软件运行所在电脑的内部时钟为准的,我们编写之前一定要注意,我们所使用的电脑的时间是否准确。设定好这些后点击“写入/Write In”按钮,进入密码写入界面。 共享版的密码写入界面与发布版是一样的,操作也相同,可参考步骤4进行操作。

(完整版)教科版高一信息技术必修1第三单元3.4加密和解密教学设计

3.4 加密与解密 本节内容按2 课时设计。 第一课时 教学重难点 【教学重点】会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。 【教学难点】用穷举法破解密码。 【教学过程】 一、引入 1. 学生预习,阅读第77 页“任务一解开网站账号被盗之谜”之“活动1 防范‘盗窃'行为”,填写第78 页的表3.4.1 。 2. 教师检查,并评讲填写情况,引出数据安全、密码的话题。 3.4.1 二、密码 密码是指用来核对用户ID以验证用户就是本人的一组字符。 活动2设置安全密码 打开教科书配套资源中的“数据安全性测试.py ”,运行并测试穷举搜索一个5 位、7位和9位的数字密码,分别需要多长时间,填写表3.4.2 。(详见配套资源“数据安全性测试(有界面).fld ”和“数据安全性测试(有界面).py ”) 表3.4.2 穷举搜索密码需要的时间

# 在输出文本框中显示解密用时 varout.set(str(d.seconds)+" 秒"+str(d.microseconds/1000)+" 毫秒") 程序运行效果如下: 【比一比】当然,我们也可以编写无可视化界面的程序,程序更简单 配套资源“数据安全性测试(无界面).py ”) 程序运行效果如下: 请比较有可视化界面与无可视化界面两个程序运算的快慢,将最快的结果填入表3.4.2 。 你的电脑1秒最多能试探大约多少个整数密码? 【做一做】 1. 有可视化界面程序中的jiemi() 函数中的for 循环改为while 条件循环: 实现穷举搜索的自定义函数 jiemi() def jiemi(): d1=datetime.datetime.now() # p=int(varin.get()) # for i in range(0,p+1): # if i==p: # d2=datetime.datetime.no w() d=d2-d1 # 的程序代码如下: 获取当前系统时间d1 获取输 入文本框的数字密码从0循环 到正确密码数值如果密码相同 # 获取当前系统时间d2 取得时间差 详见

软件加密技术和注册机制

本文是一篇软件加密技术的基础性文章,简要介绍了软件加密的一些基本常识和一些加密产品,适用于国内软件开发商或者个人共享软件开发者阅读参考。 1、加密技术概述 一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。 对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。 但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管你愿意不愿意让他(合法用户,或Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文。既然机器可以“看见”这些明文,那么Cracker,通过一些技术,也可以看到这些明文。 于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不同而已。有的要让最高明的 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。 所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版)就是增加Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的获利还要高。这样Cracker 的破解变得毫无意义——谁会花比正版软件更多的钱去买盗版软件? 2、密码学简介 2.1 概念 (1)发送者和接收者 假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。 (2)消息和加密 消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。 明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。

ASE加密与解密

ASE加密与解密 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Authentication; using System.Security.Cryptography; namespace XMLRead_Encoder { class RebectASE { ///

/// AES加密 /// /// 要加密的字符串 /// 密钥 /// 向量 /// 返回加密完字符串,加密失败返回false public static string AESEncrypt(string plainStr,string IV,string Key) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; Rijndael aes = Rijndael.Create(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } } catch { return "false";

实验9 加密与解密实验

新疆师范大学 计算机网络安全(本科) 实验报告 实验名称:实验9 加密与解密实验 院系:计算机科学技术学院 班级: 2011-01班 学生姓名:木拉提·巴力 学号: 20111601141025 合作者姓名:米热古丽·塔力浦 指导教师:赵新元老师 教师评阅结果: 教师评语: 实验日期 2014 年 12 月 28 日

一、实验目的 1、掌握Caeser密码原理,理解Caeser密码加密、解密过程。 2、了解使用程序实现DES和RSA加解密。 3、学会使用PGP加密软件加密文件与邮件。 二、实验内容 1、编写实现Caeser密码加密、解密 2、了解程序实现DES和RSA加密、解密 3、使用PGP加密文件 4、使用PGP加密邮件 三、实验原理 请简介一下PGP加密的基本原理。 四、实验步骤 1、编写一个程序能够实现Caeser加密与解密。假定Caeser密码的偏移量为3,本程序只对小写字符进行加密,要求用户从键盘输入你的姓名拼音(假设长度小于100),将其进行加密后显示出来,然后再显示出原文。请截图显示你的程序运行结果,并附上源代码。 1.加密程序运行结果: 源代码: #include "stdafx.h" #include #include #define MAXSIZE 100

int main() { char str[MAXSIZE]; int i; int offset; int n; printf("请输入要加密的字符串:"); gets(str); printf("请输入要偏移量:"); //若将a变为b,则偏移量为1,以此类推,偏移量在1-25之间 scanf("%d%*c", &offset); n = strlen(str); for (i = 0; i < n; i++) { if ('a' <= str[i] && str[i] <= 'z' - offset || 'A' <= str[i] && str[i] <= 'Z' - offset) str[i] += offset; else str[i] += offset - 26; } printf("加密后的字符串是:"); puts(str); return 0; } 2.解密程序运行结果: 源代码:

相关主题
文本预览
相关文档 最新文档