软件加密技术和注册机制原理攻略

方法

  (4) 算法和密钥
  密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)
  如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。
  更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。
  尽管有这些主要缺陷,受限制的算法对低密级的应用来说还是很流行的,用户或者没有认识到或者不在乎他们系统中内在的问题。
  现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:
  EK(M)=C
  DK(C)=M.
  DK(EK(M))=M.
  有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:
  EK1(M)=C
  DK2(C)=M
  DK2 (EK1(M))=M
  所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
  密码系统由算法、以及所有可能的明文、密文和密钥组成的。
  基于密钥的算法通常有两类:对称算法和公开密钥算法。下面将分别介绍:

  2.2 对称密码算法
  对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。
  对称算法的加密和解密表示为:
  EK(M)=C
  DK(C)=M
  对称算法可分为两类。一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。

  2.3 公开密码算法
  公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。
  用公开密钥K加密表示为
  EK(M)=C.
  虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为:
  DK(C)=M
  有时消息用私人密钥加密而用公开密钥解密,这用于数字签名(后面将详细介绍),尽管可能产生混淆,但这些运算可分别表示为:
  EK(M)=C
  DK(C)=M
  当前的公开密码算法的速度,比起对称密码算法,要慢的多,这使得公开密码算法在大数据量的加密中应用有限。

  2.4 单向散列函数
  单向散列函数 H(M) 作用于一个任意长度的消息 M,它返回一个固定长度的散列值 h,其中 h 的长度为 m .
  输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数还有使其单向的其它特性:
  (1) 给定 M ,很容易计算 h ;
  (2) 给定 h ,根据 H(M) = h 计算 M 很难 ;
  (3) 给定 M ,要找到另一个消息 M‘ 并满足 H(M) = H(M’) 很难。
  在许多应用中,仅有单向性是不够的,还需要称之为“抗碰撞”的条件:
  要找出两个随机的消息 M 和 M‘,使 H(M) = H(M’) 满足很难。
  由于散列函数的这些特性,由于公开密码算法的计算速度往往很慢,所以,在一些密码协议中,它可以作为一个消息 M 的摘要,代替原始消息 M,让发送者为 H(M) 签名而不是对 M 签名 .
  如 SHA 散列算法用于数字签名协议 DSA中。

  2.5 数字签名
  提到数字签名就离不开公开密码系统和散列技术。
  有几种公钥算法能用作数字签名。在一些算法中,例如RSA,公钥或者私钥都可用作加密。用你的私钥加密文件,你就拥有安全的数字签名。在其它情况下,如DSA,算法便区分开来了数字签名算法不能用于加密。这种思想首先由Diffie和Hellman提出 .
  基本协议是简单的 :
  (1) A 用她的私钥对文件加密,从而对文件签名。
  (2) A 将签名的文件传给B.
  (3) B用A的公钥解密文件,从而验证签名。
  这个协议中,只需要证明A的公钥的确是她的。如果B不能完成第(3)步,那么他知道签名是无效的。
  这个协议也满足以下特征:
  (1) 签名是可信的。当B用A的公钥验证信息时,他知道是由A签名的。
  (2) 签名是不可伪造的。只有A知道她的私钥。
  (3) 签名是不可重用的。签名是文件的函数,并且不可能转换成另外的文件。
  (4) 被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用A的公钥验证。
  (5) 签名是不可抵赖的。B不用A的帮助就能验证A的签名。
  在实际应用中,因为公共密码算法的速度太慢,签名者往往是对消息的散列签名而不是对消息本身签名。这样做并不会降低签名的可信性。

  3.2 时间限制
  有些程序的试用版每次运行都有时间限制,例如运行10分钟或20分钟就停止工作,必须重新运行该程序才能正常工作。这些程序里面自然有个定时器来统计程序运行的时间。
  这种方法使用的较少。

  3.4 CD-check
  即光盘保护技术。程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。Windows下的具体实现一般是这样的:先用GetLogicalDriveStrings( )或GetLogicalDrives( )得到系统中安装的所有驱动器的列表,然后再用GetDriveType( )检查每一个驱动器,如果是光驱则用CreateFileA( )或FindFirstFileA( )等函数检查特定的文件存在与否,并可能进一步地检查文件的属性、大小、内容等。

  3.5 软件狗
  软件狗是一种智能型加密工具。它是一个安装在并口、串口等接口上的硬件电路,同时有一套使用于各种语言的接口软件和工具软件。当被狗保护的软件运行时,程序向插在计算机上的软件狗发出查询命令,软件狗迅速计算查询并给出响应,正确的响应保证软件继续运行。如果没有软件狗,程序将不能运行,复杂的软硬件技术结合在一起防止软件盗版。真正有商业价值得软件一般都用软件狗来保护。
  平时常见的狗主要有“洋狗”(国外狗)和“土狗”(国产狗)。这里“洋狗”主要指美国的彩虹和以色列的HASP,“土狗”主要有金天地(现在与美国彩虹合资,叫“彩虹天地”)、深思、尖石。总的说来,“洋狗”在软件接口、加壳、反跟踪等“软”方面没有“土狗”好,但在硬件上破解难度非常大;而“土狗”在软的方面做的很好,但在硬件上不如“洋狗”,稍有单片机功力的人,都可以复制。

  3.6 软盘加密
  通过在软盘上格式化一些非标准磁道,在这些磁道上写入一些数据,如软件的解密密钥等等。这种软盘成为“钥匙盘”。软件运行时用户将软盘插入,软件读取这些磁道中的数据,判断是否合法的“钥匙盘”。
  软盘加密还有其它一些技术,如弱位加密等等。
  随着近年来软盘的没落,这种方法基本上退出了历史舞台。

  3.7 将软件与机器硬件信息结合
  用户得到(买到或从 上下载)软件后,安装时软件从用户的机器上取得该机器的一些硬件信息(如硬盘序列 、BOIS序列 等等),然后把这些信息和用户的序列 、用户名等进行计算,从而在一定程度上将软件和硬件部分绑定。用户需要把这一序列 用Email、电话或邮寄等方法寄给软件提供商或开发商,软件开发商利用注册机(软件)产生该软件的注册 寄给用户即可。软件加密虽然加密强度比硬件方法较弱,但它具有非常廉价的成本、方便的使用方法等优点。非常适合做为采用光盘(CDROM)等方式发授软件的加密方案。
  此种加密算法的优点
  · 不同机器注册码不同。用户获得一个密码只能在一台机器上注册使用软件。不同于目前大多软件采用的注册方法,即只要知道注册码,可在任何机器上安装注册。
  · 不需要任何硬件或软盘
  · 可以选择控制软件运行在什么机器、运行多长时间或次数等
  · 可让软件在不注册前的功能为演示软件,只能运行一段时间或部分功能。注册后就立即变为正式软件
  · 采用特别技术,解密者很难找到产生注册 码的规律
  · 在使用注册 产生软件(注册机)时可采用使用密码、密钥盘、总次数限制等方法
  · 方便易用,价格低廉。
  这种加密还有以下特点
  1、 注册加密的软件,只能在一台机器上安装使用。把软件拷贝到其它机器上不能运行。
  2、 若用户想在另一机器上安装运行,必须把软件在这一机器上运行时的序列 ,寄给软件出版商换取注册密码。当然应再交一份软件费用。
  3、 此加密方法特别适应在因特 上发布的软件及用光盘发布的软件。

原贴地址:http://jingyan.baidu.com/article/63f23628fca2460208ab3d24.html

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年3月14日
下一篇 2014年3月15日

相关推荐