首页 热点资讯 游戏攻略 本文技术的基础性和一些加密产品,适用于国内软件开发商或者个人共享软件开发者

本文技术的基础性和一些加密产品,适用于国内软件开发商或者个人共享软件开发者

更新时间:2022-09-09 13:05:46 分类:游戏攻略 浏览:269

本文是软件加密技术的基础文章。简要介绍了软件加密的一些基础知识和一些加密产品。适合国外软件开发者或个人共享软件开发者阅读参考。

1、加密技术概述

密码系统的安全性仅在于密钥的保密性,而不在于算法的保密性。

这适用于纯数据的加密。对于你不想让他看到数据的人(数据的明文),使用可靠的加密算法,只要破解者不知道加密数据的密码,他就无法解析数据。

但是,软件加密不同于数据加密,它只能是“隐藏”的。无论您是否喜欢让他(合法用户或)看到该数据(软件的明文),软件最终都会在机器上运行,而对于机器来说,它必须是明文。既然机器可以“看到”这些明文,那么通过一些技术,它们也可以看到这些明文。

所以,理论上,任何软件加密技术都可以被破解。只是破解难度不同而已。有些人会让最聪明的人忙上几个月,而另一些人可能不费吹灰之力就破解了。

所以,反盗版(技术反盗版,而不是行政反盗版)的任务是降低破解难度。让他们花在破解软件上的成本,比他破解软件的利润还高。这样的破解毫无意义——盗版软件谁会比正版软件付出更多?

2、密码学简介

2.1 概念

(1)发送者和接收者

假设发送者想要向接收者发送消息,并且想要安全地发送消息:她想要确保窃听者无法读取发送的消息。

(2)消息和加密

消息称为明文。以某种方式伪装消息以隐藏其内容的过程称为加密,加密的消息称为密文,将密文变为明文的过程称为揭示。

明文用M(消息)或P(明文)表示,可以是比特流(文本文件、位图、数字化语音流或数字化视频图像)。就计算机而言,P 只是二进制补码数据。明文可以传输或存储,在这种情况下,M指的是要加密的消息。

密文用C表示,也是二进制补码数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C可能会小于P。但是单独加密一般不能做到这一点一点)。加密函数E作用于M得到密文C,可以表示为:

E(M)=C.

相反起名软件 破解版,秘密函数D作用于C,形成M

D(C)=M.

先加密消息再泄露秘密,会恢复原来的明文,必须形成如下等式:

D(E(M))=M

(3)身份验证、完整性和反闪避

除了提供绝密性之外,密码学一般还有其他功能:。

(a) 识别

消息的接收者应该能够识别消息的来源;入侵者不能伪装成其他人。

(b) 完整性检查

消息的收件人应该能够验证消息在传输过程中没有被更改;入侵者不可能用假消息替换合法消息。

(c) 反抵赖

发件人不可能在事后对他发送的消息进行虚假验证。

(4)算法和密钥

加密算法,也称为密码,是用于加密和揭示秘密的物理函数。 (一般来说,有两个相关的函数:一个是加密的,一个是解密的)

如果算法的机密性是基于对算法保密的,则算法称为受限算法。受限算法在历史上具有重要意义,但按照今天的标准,它们远没有那么安全。大型或频繁变化的用户组无法使用它们,因为每次用户离开组时,其他用户都必须切换到不同的算法。如果有人不小心泄露了这个秘密,每个人都必须改变他们的算法。

更糟糕的是,受限密码算法的质量控制或标准化是不可能的。每个用户组织都必须有自己独特的算法。这样的组织不太可能采用流行的硬件或软件产品。但是听众可以购买这个流行的产品并学习算法,因此用户必须自己编写算法并实现它,如果组织中没有好的密码学家,他们很难知道他们是否有一个安全的算法。

尽管存在这一重大缺陷,但受限算法在用户不知道或不知道其系统固有问题的低级应用程序中仍然非常流行。

现代密码学使用密钥解决了这个问题,用 K 表示。K 可以是多个值中的任何一个。键K可能取值的范围称为键空间。加解密操作都使用这个秘钥(即操作依赖秘钥,用K表示下标),所以现在add/函数为:

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 位——大到足以避免解析,但又小到易于使用(在计算机之前,算法通常一次只对明文的一个字符进行操作,这可能看起来像a 是序列密码对字符序列的操作)。

2.3 种公共密码算法

公钥算法(也称为非对称算法)的设计使得用于加密的密钥与用于解密的密钥不同,但无法从加密密钥中估计出解密密钥(至少在合理的假设下)。需很长时间)。之所以称为公钥算法,是因为加密密钥只能公开,即陌生人可以使用加密密钥对信息进行加密,但只有对应的泄露密钥才能泄露信息。在这个系统中,加密密钥称为公钥(简称 key),泄露密钥称为 key(简称 key)。私钥有时也称为秘密密钥。为防止与对称算法混淆,此处未使用名称密钥。

用公钥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')。

在很多应用中,单靠双向性是不够的,还需要一个叫做“抗碰撞性”的条件:

手机版破解wifi的软件_起名软件 破解版_起名软件 破解

很难找到两个随机消息 M 和 M' 使得 H(M)=H(M')。

由于散列函数的特点,又因为公用密码算法的估计速度往往很慢,在一些密码合约中,可以将其作为消息M的摘要来代替原来的消息M,并让发件人是H(M)符号而不是M。

数字签名合约DSA中使用了SHA等哈希算法。

2.5 个数字签名

说到数字签名,就离不开公共密码学和散列技术。

有几种私钥算法可用于数字签名。在某些算法中,例如 RSA,可以使用私钥或公钥进行加密。使用您的公钥加密文件,您就有了安全的数字签名。在其他情况下,例如 DSA,算法是有区别的吗? 数字签名算法不能用于加密。这些想法最初是由 and 提出的。

基本合约很简单:

(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种软件保护技术

3.1 序列号保护

物理算法是密码加密的核心,但在一般的软件加密中,人们并不是很关心,因为大多数时候软件加密本身就实现了一种编程方式。但随着近年来序列号加密程序的普及,物理算法在软件加密中所占的比重越来越大。

看看在网络上风靡一时的序列号加密是如何工作的。当用户从 下载共享软件时,通常有使用时间限制。共享软件试用期结束后,您必须在软件公司注册后才能继续使用。注册过程通常是用户告诉软件公司他的私人信息(通常主要是姓名)以及信用卡号。软件公司会根据用户的信息估计出一个序列号。用户获取序列号后,按照注册所需步骤在软件中输入注册信息和注册码。注册信息的合法性经软件验证后,软件将取消自身的各种限制。这些加密实现起来比较简单,不需要额外的费用,用户订购也很方便。 , 互联网上 80% 的软件都受到这些方法的保护。

软件验证序列号合法性的过程,虽然是验证用户名和序列号的转换关系是否正确的过程。有两种最基本的验证方法。一种是根据用户输入的姓名生成注册码,然后与用户输入的注册码进行比较。公式如下:

序列号=F(用户名)

但是这些技术相当于在用户软件中重现了软件公司生成注册码的过程,实际上是非常不安全的。无论转换过程多么复杂,揭秘者只需从程序中提取您的转换过程。可以编译一个通用的注册程序。

另一种是通过注册码验证用户名的正确性,公式如下:

用户名=F 逆(序列号)(例如)

这显然是软件公司的注册码估计过程的逆算法。如果正向算法和反向算法不是对称算法,对举报人来说确实很难,但是这些算法设计起来相当困难。

所以有人考虑了以下算法:

F1(用户名)=F2(序列号)

F1、F2是两种完全不同的算法,但是F1算法对用户名估计的特征词与F2算法对序列号估计的特征词是相等的。这些算法在设计上相对简单。保密性远优于上述两种算法。如果F1、F2算法可以设计成不可逆算法,保密性相当好;但是一旦发现者找到其中一个的逆算法,这个算法就会不安全。一元算法的设计似乎再怎么努力也很难有大的突破,那么二元呢?

具体值=F(用户名,序列号)

这个算法看起来不错。用户名和序列号的关系不再那么清晰,但同时也丢失了用户名和序列号的一一对应关系。软件开发人员必须维护用户名和序列号。序列号之间的唯一性,不过这显然不是不可能的,建个数据库就好了。其实用户名和序列号也可以分成几个部分来构造多种算法。

具体值=F(, , ...#1, #2...)

现有的序列号加密算法大多是由软件开发者设计的,而且大部分都相当简单。而一些算法作者似乎花了很多时间,但疗效往往得不到想要的结果。

3.2个时间限制

某些程序的试用版每次运行都有时间限制,例如10分钟或20分钟后停止运行,必须重新运行程序才能正常运行。这种程序上面自然有一个定时器,用来统计程序的运行时间。

这些技术的使用频率较低。

3. 保护

(注册文件)是一种使用文件注册软件的保护方法。 通常是一个小文件,可以是纯文本文件,也可以是包含不可显示字符的二进制补码文件。其内容是一些加密或未加密的数据,可能包含用户名、注册码等信息。文件格式由软件作者自己定义。试用版软件没有注册文件。用户向作者付费注册后,会收到作者发送的注册文件,其中可能包含用户的个人信息。只要用户将文件加载到指定目录,软件就可以成为即将发布的版本。该文件通常放在软件安装目录或系统目录下。软件每次启动都会从这个文件中读取数据,然后借助一定的算法对其进行处理,根据处理结果判断是否是正确的注册文件,如果正确则运行在注册版本模式。

这些保护方法用的不多。

3.4CD-检查

也就是磁盘保护技术。当程序启动时,它会判断硬盘中是否有 CD 上的特定文件。如果不存在,则感觉用户没有正版光盘,拒绝运行。在程序运行期间,通常不再检测到光盘的存在与否。具体实现通常如下:先使用gs()或()获取系统中安装的所有驱动器的列表,然后使用()检测每个驱动器,如果是硬盘则使用()或( )等功能来检测特定文件是否存在,并可能进一步检测文件属性、大小、内容等。

3.5 个加密狗

加密狗是一种智能加密工具。它是安装在串口、串口等插座上的硬件电路,也有一套各种语言的插座软件和工具软件。当受狗保护的软件运行时,程序向插入计算机的软件狗发送查询命令,软件狗迅速估计查询并给出响应,正确的响应保证软件继续运行。如果没有软件狗,程序将无法运行,复杂的软硬件技术相结合,避免软件盗版。具有真正商业价值的软件通常由加密狗保护。

常见的狗主要有“洋狗”(美国狗)和“本地狗”(家犬)。这里的“洋狗”主要是指日本的彩虹和以色列的HASP。 “土狗”主要包括金天地(现与日本合资,称“彩虹天地”)、深思、锋利的石头。总的来说,“洋狗”在软件套接字、打包、反跟踪等方面不如“本地狗”,但在硬件上破解难度很大;不错,但在硬件方面还不如“洋狗”。对单片机稍有了解的人都可以复制。

3.6 软驱加密

通过降低软驱上的一些非标准扇区,在该扇区写入一些数据,如软件的密钥等。这些软盘驱动器成为“密钥盘”。软件运行时,用户插入软驱,软件读取该扇区的数据,判断是否为合法的“密钥盘”。

软驱加密还有其他技术,如弱位加密等。

随着近年来软驱的没落,这些方法基本上已经从历史舞台上消失了。

3.7 结合软件与机器硬件信息

用户获取(从网上购买或下载)软件后,软件在安装时从用户的机器上获取一些硬件信息(如硬盘序列号、BOIS序列号等),然后将这些信息存储起来信息估计与用户的序列号、用户名等有关,因此软件和硬件在一定程度上是部分绑定的。用户需通过Email、电话或发送等方式将序列号发送给软件提供者或开发者,软件开发者可使用注册机(软件)形成软件注册号并发送给用户。软件加密实际上比硬件加密弱,但它的优点是成本特别便宜,使用方便。特别适合作为以CD-ROM(CDROM)方式分发软件的加密方案。

这种加密算法的优点

·不同的机器有不同的注册码。用户获得密码并且只能在一台机器上注册使用该软件。与目前大部分软件使用的注册方式不同,即只要知道注册码,就可以在任何机器上安装注册。

·无需硬件或软驱

·您可以选择控制软件在哪台机器上运行,运行时长或运行次数等。

·注册前的软件功能可制作为演示软件,只能运行一段时间或部分功能。注册后立即成为即将推出的软件

·使用非常技术性,泄露者很难找到形成注册号的规律

·使用注册号形成软件(注册机)时,可以使用密码、密钥盘、总次数限制等。

·使用方便,价格低廉。

这些加密还具有以下特点

1、注册加密软件只能在一台机器上安装使用。将软件复制到其他机器上不起作用。

2、如果用户想在另一台机器上安装和运行软件,必须将运行在这台机器上的软件的序列号发送给软件发布者,以换取注册密码。事实上,应该另外支付软件费用。

3、这种加密方式非常适合在互联网上发布的软件和光学编辑发布的软件。

评论:

1、《加密技术概述》部分内容参考大学教材《密码学基础》。

2、《一些流行的软件保护技术》部分内容参考文章《加密与揭秘——软件保护技术及完整解决方案》。

(本文来自月光博客)

版权声明: 本站内容部分来源网络,版权归作者所有,如有侵权,请联系我们删除!