加密技术原理_加密的原理

专业目录 2024-11-18 10:06:03

数据加密原理是什么 数据解密原理介绍【详解】

数据加密和解密,数据加密和解密原理是什么?

加密技术原理_加密的原理加密技术原理_加密的原理


加密技术原理_加密的原理


加密技术原理_加密的原理


随着Internet 的普及,大量的数据、文件在Internet 传送,因此在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了) 。的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip ,它既压缩数据又加密数据。又如,dbms 的一些软件包总是包含一些加密方法以使文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节) 对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu 系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了。对这种“置换表”方式的一个改进就是使用2 个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a 表,对所有的奇数位置使用b 表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。与使用“置换表”相类似“, 变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer 中,再在buffer 中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient 可以变为listen ,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。但是,还有一种更好的加密算法,只有计算机可以做,就是字/ 字节循环移位和xor 作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移) ,就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难! 而且,更进一步的是,如果再使用xor作,按位做异或作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci 数列。对数列所产生的数做模运算(例如模3) ,得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能! 但是,使用fibbonaci 数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。在一些情况下,我们想能够知道数据是否已经被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load 到内存要开始执行时,都要检查一下本身是否被感染,对与需要加、解密的文件都要做这种检查! 很自然,这样一种方法体制应该保密的,因为程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反或杀软件中一定要使用加密技术。

循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor 作来产生一个16 位或32 位的校验和,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如xmodem - crc。这是方法已经成为标准,而且有详细的文档。但是,基于标准crc 算法的一种修改算法对于发现加密数据块中的错误和文件是否被感染是很有效的。

一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常的pgp公钥加密以及rsa 加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。例如,对于一个输入‘a’执行一个作得到结果‘b’,那么我们可以基于‘b’,做一个相对应的作,导出输入‘a’。在一些情况下,对于每一种作,我们可以得到一个确定的值,或者该作没有定义(比如,除数为0) 。对于一个没有定义的作来讲,基于加密算法,可以成功地防止把一个公钥变换成为私钥。因此,要想破译非对称加密算法,找到那个的密钥,的方法只能是反复的试验,而这需要大量的处理时间。

rsa 加密算法使用了两个非常大的素数来产生公钥和私钥。即使从一个公钥中通过因数分解可以得到私钥,但这个运算所包含的计算量是非常巨大的,以至于在现实上是不可行的。加密算法本身也是很慢的,这使得使用rsa 算法加密大量的数据变的有些不可行。这就使得一些现实中加密算法都基于rsa 加密算法。pgp 算法(以及大多数基于rsa 算法的加密方法) 使用公钥来加密一个对称加密算法的密钥,然后再利用一个快速的对称加密算法来加密数据。这个对称算法的密钥是随机产生的,是保密的,因此,得到这个密钥的方法就是使用私钥来解密。

我们举一个例子: 定现在要加密一些数据使用密钥‘12345’。利用rsa 公钥,使用rsa 算法加密这个密钥‘12345’,并把它放在要加密的数据的前面(可能后面跟着一个分割符或文件长度,以区分数据和密钥) ,然后,使用对称加密算法加密正文,使用的密钥就是‘12345’。当对方收到时,解密程序找到加密过的密钥,并利用rsa 私钥解密出来,然后再确定出数据的开始位置,利用密钥‘12345’来解密数据。这样就使得一个可靠的经过高效加密的数据安全地传输和解密。但并不是经过加密的数据就是安全的,数据加密是肯定可以被的,但我们所想要的是一个特定时期的安全,也就是说,密文的应该是足够的困难,在现实上是不可能的,尤其是短时间内。

加密技术02-对称加密-AES原理

AES 全称 Aanced Encryption Standard(高级加密标准)。它的出现主要是为了取代 DES 加密算法的,因为 DES 算法的密钥长度是 56 位,因此算法的理论安全强度是 2^56。但二十世纪中后期正是计算机飞速发展的阶段,元器件制造工艺的进步使得计算机的处理能力越来越强,所以还是不能满足人们对安全性的要求。于是 1997 年 1 月 2 号,美国标准技术研究所宣布希望征集高级加密标准,用以取代 DES。AES 也得到了全世界很多密码工作者的响应,先后有很多人提交了自己设计的算法。最终有5个候选算法进入一轮:Rijndael,Serpent,Twofish,RC6 和 MARS。最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael 算法获胜。

AES 密码与分组密码 Rijndael 基本上完全一致,Rijndael 分组大小和密钥大小都可以为 128 位、192 位和 256 位。然而 AES 只要求分组大小为 128 位,因此只有分组长度为 128 位的 Rijndael 才称为 AES 算法。本文只对分组大小 128 位,密钥长度也为 128 位的 Rijndael 算法进行分析。密钥长度为 192 位和 256 位的处理方式和 128 位的处理方式类似,只不过密钥长度每增加 64 位,算法的循环次数就增加 2 轮,128 位循环 10 轮、192 位循环 12 轮、256 位循环 14 轮。

给定一个 128 位的明文和一个 128 位的密钥,输出一个 128 位的密文。这个密文可以用相同的密钥解密。虽然 AES 一次只能加密 16 个字节,但我们只需要把明文划分成每 16 个字节一组的块,就可以实现任意长度明文的加密。如果明文长度不是 16 个字节的倍数,则需要填充,目前填充方式主要是 PKCS7 / PKCS5。

下来主要分析 16 个字节的加解密过程,下图是 AES 算法框架。

密钥生成流程

G 函数

关于轮常量的生成下文会介绍。

主要作用:一是增加密钥编排中的非线性;二是消除AES中的对称性。这两种属性都是抵抗某些分组密码攻击必要的。

接下来详细解释一下几个关键步骤。

明文矩阵和当前回次的子密钥矩阵进行异或运算。

字节代换层的主要功能是通过 S 盒完成一个字节到另外一个字节的映射。

依次遍历 4 4 的明文矩阵 P 中元素,元素高四位值为行号,低四位值为列号,然后在 S 盒中取出对应的值。

行位移作最为简单,它是用来将输入数据作为一个 4 4 的字节矩阵进行处理的,然后将这个矩阵的字节进行位置上的置换。ShiftRows 子层属于 AES 手动的扩散层,目的是将单个位上的变换扩散到影响整个状态当,从而达到雪崩效应。它之所以称作行位移,是因为它只在 4 4 矩阵的行间进行作,每行 4 字节的数据。在加密时,保持矩阵的行不变,第二行向左移动 1 个字节、第三行向左移动 2 个字节、第四行向左移动 3 个字节。

列混淆层是 AES 算法中最为复杂的部分,属于扩散层,列混淆作是 AES 算法中主要的扩散元素,它混淆了输入矩阵的每一列,使输入的每个字节都会影响到 4 个输出字节。行位移层和列混淆层的组合使得经过三轮处理以后,矩阵的每个字节都依赖于 16 个明文字节成可能。其实质是在有限域 GF(2^8) 上的多项式乘法运算,也称伽罗瓦域上的乘法。

伽罗瓦域

伽罗瓦域上的乘法在包括加/解密编码和存储编码中经常使用,AES 算法就使用了伽罗瓦域 GF(2^8) 中的运算。以 2^n 形式的伽罗瓦域来说,加减法都是异或运算,乘法相对较复杂一些,下面介绍 GF(2^n) 上有限域的乘法运算。

本原多项式: 域中不可约多项式,是不能够进行因子分解的多项式,本原多项式是一种特殊的不可约多项式。当一个域上的本原多项式确定了,这个域上的运算也就确定了,本原多项式一般通过查表可得,同一个域往往有多个本原多项式。通过将域中的元素化为多项式的形式,可以将域上的乘法运算转化为普通的多项式乘法模以本原多项式的计算。比如 g(x) = x^3+x+1 是 GF(2^3) 上的本原多项式,那么 GF(2^3) 域上的元素 37 可以转化为多项式乘法:

乘二运算: 无论是普通计算还是伽罗瓦域上运算,乘二计算是一种非常特殊的运算。普通计算在计算机上通过向高位的移位计算即可实现,伽罗瓦域上乘二也不复杂,一次移位和一次异或即可。从多项式的角度来看,伽罗瓦域上乘二对应的是一个多项式乘以 x,如果这个多项式指数没有超过本原多项式指数,那么相当于一次普通计算的乘二计算,如果结果指数等于本原多项式指数,那么需要将除去本原多项式项的其他项和结果进行异或。

比如:GF(2^8)(g(x) = x^8 + x^4 + x^3 + x^2 + 1)上 1515 = 85 计算过程。

15 写成生成元指数和异或的形式 2^3 + 2^2 + 2^1 + 1,那么:

乘二运算计算过程:

列混淆 :就是把两个矩阵的相乘,里面的运算,加法对应异或运算,乘法对应伽罗瓦域 GF(2^8) 上的乘法(本原多项式为:x^8 + x^4 + x^3 + x^1 + 1)。

Galois 函数为伽罗瓦域上的乘法。

解码过程和 DES 解码类似,也是一个逆过程。基本的数学原理也是:一个数进行两次异或运算就能恢复,S ^ e ^ e = S。

密钥加法层

通过异或的特性,再次异或就能恢复原数。

逆Shift Rows层

恢复 Shift Rows层 的移动。

逆Mix Column层

通过乘上正矩阵的逆矩阵进行矩阵恢复。

一个矩阵先乘上一个正矩阵,然后再乘上他的逆矩阵,相当于没有作。

逆字节代换层

通过再次代换恢复字节代换层的代换作。

比如:0x00 字节的置换过程

轮常量生成规则如下:

算法原理和 AES128 一样,只是每次加解密的数据和密钥大小为 192 位和 256 位。加解密过程几乎是一样的,只是循环轮数增加,所以子密钥个数也要增加,轮常量 RC 长度增加。

后置加密技术原理是什么?

为了避免数据加密给数据访问和处理带来性能上的损失,部分数据库厂商在数据库引擎层提供了一些扩展接口和扩展机制。通过这些扩展的接口和机制,数据库系统用户可以通过外部接口调用的方式实现对数据的加解密处理,同时也能够在一定程度上降低对数据库系统性能的影响。它的技术原理是后置加密技术是基于数据库自身能力的一种加密技术,可充分利用数据库自身提供的定制扩展能力实现数据的存储加密、加密后数据检索和应用透明等目标。其中,能够完美实现后置加密的典型代表是Oracle数据库——通过“视图+触发器+扩展索引+外部方法调用”的方式实现数据加密,同时保证应用的完全透明。也可以去百度上面查一下。

计算机网络安全管理数据加密技术

计算机技术的应用,给人们带来便捷的同时,也给人们的数据信息带来了一定的安全隐患,例如计算机的攻击、计算机系统安全漏洞的隐患以及数据仓库系统的漏洞都阻碍了计算机安全性的提升。为了保障人们的信息安全,数据加密技术在计算机网络安全中的应用发挥了至关重要的作用。企业用户或个人用户需要重视数据加密技术的正确运用,保障数据传输过程中数据的安全性和完整性,减少数据泄露带来的财产损失。

1数据加密技术的具体特征

1.1数据加密技术的原理

为了保证数据的安全性,通过指定的函数或密匙对数据信息进行转换形成没有实际意义的密文,密文被传送且需要采用一定的方式翻译密文才能了解其中含义,还原数据信息,这种技术便被称为数据加密技术。数据加密技术更好地保障了网络的安全。一般而言,数据加密技术的应用需要在特定的环境下利用指定的密匙,通过密匙实现数据的灵活转换,可以说密匙是数据加密技术的核心。数据加密技术实现了数据信息的有效隐藏和编码,原始数据安全性较高,只有在拥有掌握密匙并在特定环境中时才能解读原始数据,为人们的隐私安全提供了切实的保障,数据信息在重新编码后难以被他人识别,避免了信息窃取的发生。由于数据传输是网络技术应用过程中的重点,数据传输的安全性可以通过数据加密技术来保障,提升网络运行的安全性和稳定性。

1.2数据加密技术的种类以及特征

目前,数据加密的具体方法可以分成四类,即非对称式加密、对称式加密、混合加密和传输加密。对称式加密方式中,密匙是计算机数据安全性与密匙的安全性密切相关。因为对称式加密的应用用户主要是掌握同一密匙的人,密匙的难度极大,数据信息的内容难以被其他用户发现,且用户可以利用同一密匙完成数据信息的加密和解密任务。在对称式加密技术应用时,需要用户做好密匙的保密工作,如果出现密匙管理失误的问题,则数据信息的安全性将会受到威胁,数据传输的保密性也难以实现。非对称加密技术与对加密技术的区别在于前者具备两个密匙,即公开密匙和私有密匙。如果用户使用公开密匙对数据进行加密,那么解密时必须用到私有密匙,反之亦然

。此外,混合加密技术是指以素数为基础生成算法后得到素数p、q,再利用RSA算法中的密钥生成算法,便得到私有密钥和公开密钥,私有密钥被保存起来,而公开密钥被公布出去。DES算法的密钥是依赖于线性模数法生成64位随机数,同时利用DES算法实现对数据信息的解密和加密任务。,传输加密是指在数据传输过程中对数据信息的加密技术,该技术的应用有效提升了数据信息传输的安全性和可靠性。传输加密主要采用IPSec、SSL、SSH等技术,其中SHH技术能够有效减少远程登录的过程中数据信息丢失的情况,且IPSec技术拥有开放性的特征,结构较为准确,这些技术的联合应用为数据信息传输的安全性奠定了坚实的基础。

U盘加密的原理你了解多少

U盘中采取的数据保护技术一般分为两种:一种是软件加密,一种是硬件加密,关于两种加密措施,他们之间有什么区别呢?下面我们要来说说U盘加密的原理。

简单的来说,硬件加密技术一般所指的.是采用AES 128位或256位硬件数据加密技术对产品硬件进行加密,具备防止、密码猜测、数据恢复等功能。而软件加密则是通过产品内置的加密软件实现对存储设备的加密功能。同时实现硬件加密的方式主要有键盘式加密、刷卡式加密,指纹式加密等。而软件加密主要有密码加密、证书加密、光盘加密等。

当然两者加密方式都有各自的优缺点,硬件加密比软件加密在数据安全方面具有更高的可靠性,而且即插即用,无需安装加密口令软件,使用起来更方便。而软件加密在技术以及成本上要低于硬件加密,容易实现,性价比高。而从安全性的角度来看,软件加密是更容易被,如今有许多软件都可以轻易的软件加密,而硬件加密由于加密技术是固化在硬件控制芯片中,整个加密过程没有在电脑里留下任何痕迹,密码传输过程中也是以密文形式传递,所以很难被木马截获,即使截获得到的也是乱码,所以的可能性非常低。

知道了U盘的加密原理,相信大家也对比出了两种加密方式的优劣势,对于自己U盘适合用哪一种加密,这就是因人而异了。如果选择软件加密,我建议选一些专业的U盘加密软件,当然如果是非常重要的文件还是建议选择硬件加密为宜。

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。