扒一扒各种有趣的发展演变,你知道吗?

介绍

本文试图讨论加密算法从古到今的演变,以及整个过程中出现的中心化密钥加密算法。由于个人水平有限,如有谬误,希望大家多多指教。

加密算法

乍看之下,加密算法似乎与大多数人的日常生活相距甚远,但实际上却息息相关。从网络层到主机文件层,无论背后是哪一层的加密应用或协议,都有各种加密算法的支持。即使你不使用任何加密产品,任何使用 https 的网站都已经使用了加密协议 TLS/SSL。您也被动地享受加密算法带来的隐私保护和通讯安全。今天,我们抛开浅薄的应用,来学习各种有趣的加密算法。

在挖掘加密算法之前,我们先来科普一下。加密算法的主要功能是把明文变成密文。加密算法加密后,明文会变成密文,防止信息泄露。虽然看起来类似于乱码,但密文并没有乱码。大多数乱码是由于编码不一致造成的。编码不是加密算法。编码不能将明文转为密文,只能改变一种显示格式。所以base64只是一种编码,不是加密算法,不具备加密能力,不能保证你明文的安全。所以,以后谁想听到我们用base64来加密,赶紧封杀吧。

加密算法的使用需要满足以下三个要求:

确保即使数据被盗,窃贼也不会知道是什么;

确保即使在传输过程中数据被劫持和修改,接收方也能发现信息被截获并选择替换;

确保加密算法的开销和复杂度在可用范围内。

结合以上需求,加密算法的发展主要经历了经典密码和现代密码两个重要时期。

一、古人是如何加密的?

1. 史上最古老的加密算法

早期的加密算法主要用于军事,历史上对加密算法的最早记载来自周代军书《刘涛·龙涛》中的“印符”和“印书”。它记录:

并没有透露中外相知的艺术。。”

武王问太公,道:“……符不明白,亲人远,语言不明白,怎么办?” 太公曰:“忧虑重者,以书不符,书皆合而分,三寄一知。再分者分三书。派三知一,说三人,人一分,有牵而无知,名曰阴术,敌虽圣明,无一知。”

简而言之,阴符号是八等长的符号,表示不同的信息和指令。它们属于密码学中的替换方法。在应用中,信息被转化为敌人无法理解的符号,而知情者却知道这些符号。代表的意义。这种记法不能表达丰富的意思,只能​​表达最关键的八个意思。作为印符的补充,印书采用文字分割的方式,直接将一段文字分割成三部分,通过三个渠道发送给目标方。只有敌人同时拦截三点,才能破译印书上写的内容。

上述简单的加密算法思想主要采用代换法。巧合的是,加密算法也被大规模用于遥远西部的战争中。希罗多德的历史记载了公元前五世纪希腊城邦与波斯帝国之间的多次冲突和战争。在这些战争中,希腊城邦广泛采用位移法对战争通讯信息进行加密处理,使得波斯帝国难以获得希腊城邦的军事情报,无法进行军事提前部署。

希腊城邦用来传递军事信息和命令的每一段文字都有固定的字符数,接收者手中会有文字移位指令。解密者得到密文后,根据文本移位指令进行解密,从而破译其中的军令或消息。

经典密码主要采用移动法和代换法。经过逐步的发展和完善,最著名的是凯撒密码。凯撒密码有两种模式——移位法和代换法。其中,移位法是将明文沿固定方向移动一定位数。例如,如果我爱你向右移动 4 位,则变为 M pszi csy。但是在英语或拉丁语中,字母出现的频率是不一样的。以英文字母为例:字母 e 出现的频率高于其他字母。在获得足够的密文样本后,通过频率计算可以准确找到移位规则,从而破解密文。同时由于需要可逆操作,key的数量其实是有限的,并且只有 25 种可能性。因此,完全可以通过暴力破解密文。

因此,凯撒密码在实际应用中大多采用第二种方式——代换法。定义明密文映射表:

这种方法在一定程度上可以解决密钥穷举的问题,但是对于海量数据的频繁攻击还是束手无策。

后来这种模式发展起来,通过引入一些特定的参数来扰频,在一定程度上增加了解密的难度,但仍然属于代入法和移位法的范畴。

在经典密码的后期,发展出了弗吉尼亚密码、ROT5/13/18/47、莫尔斯密码等一系列密码类型。但都是基于替换法和移位法,安全性主要靠算法的不公开性来保证。所使用的加密算法只能作为当前加密算法的原型,或者只能作为最初的加密思想,可以参考。

二、现代人更科学的加密算法

本质上,经典加密算法主要考虑语言模式的变化。直到 20 世纪中叶,香农发表了《秘密系统的通信理论》,这标志着加密算法的重心向应用数学转移。于是,今天逐渐衍生出三种重要的加密算法:非对称加密、对称加密和散列算法。这三种算法经常在现实场景中结合使用以达到最佳效果。

1. 对称加密算法

对称加密算法是应用最广泛的加密算法之一。常用的对称加密算法有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。对称加密的特点是加解密双方使用相同的密钥进行加解密。加密算法本身的泄露不会影响安全性,关键是安全的关键。根据不同的原理,对称加密大致可以分为流加密和块加密两种。

流加密是一种对称加密算法,它对明文逐位进行相应的加密。流加密中最著名的算法是 RC4 和 GSM。流加密算法比较简单。对明文和密钥逐位进行约定的操作,就可以得到密文。

最简单的模型是 XOR 流加密,例如:

由于流加密原理简单,其算法结构存在弱点。如果密钥流被多次重复使用,只要部分明文泄露,攻击者就可以轻松计算出密钥。此外,由于按位加密,即使攻击者篡改数据,原始数据结构也不会被破坏,接收者也很难发现变化。流加密虽然是一种快速高效的加密方式,但安全性较低,不建议用户使用流加密对关键信息进行加密。

块加密的内部实现要复杂得多。每个加密块至少要经过 16 轮操作,其代表算法有 DES 和 AES。目前推荐使用 AES,而 DES 不再安全。

DES 是一种较早的对称加密标准,当时被广泛使用。随着计算机性能的不断提高,蛮力 DES 变得越来越容易。因此,DES 不再安全,近十年来逐渐被 3DES 和 AES 取代。

DES核主要分为三个步骤:初始置换、轮函数和逆置换。

初始排列:将输入的64位数据块逐位重组,将输出分成两部分L0、R0,每部分长32位,排列规则是改变输入的第58位到第 1 位,第 50 位更改为第 2 位……以此类推,最后一位是原来的第 7 位。L0、R0为转置输出后的两部分,L0为输出的左32位,R0为右32位密码学算法 大数问题,替换规则如下表所示:

58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

轮函数:DES 使用 56 位密钥和额外的 8 位奇偶校验位(每组的第 8 位作为奇偶校验位),从而产生最大 64 位的块大小。这是一种迭代分组密码,使用一种称为 Feistel 的技术,将加密的文本块分成两半。使用子密钥对其中一半应用循环函数,然后将输出与另一半进行异或;然后交换两半,这个过程继续,但不是最后一轮。

逆置换:DES使用16轮循环,使用异或、置换、替换、移位操作四种基本操作。最后经过16次迭代运算,得到L16、R16,作为逆置换的输入。逆排列正是初始排列的逆运算,从而得到密文输出,解密过程就是整个加密过程。的逆运算。

AES 的诞生是为了取代原来的 DES。经多方分析论证,在世界范围内得到广泛应用。它是目前最安全的对称加密算法之一。在过去的十年中,AES 已成为对称密钥加密中最流行的算法之一。与其前身标准 DES 不同,AES 使用替代替代网络而不是 Feistel 架构。

大多数 AES 计算都是在一个特殊的有限域中完成的,加密过程是在一个 4×4 字节的矩阵上进行的,也就是所谓的“状态”,它的初始值是一个明文块(矩阵中一个元素的大小是一个字节)在明文块中)。加密时,每一轮AES加密(最后一轮除外)由4个步骤组成:

AddRoundKey – 矩阵中的每个字节都与轮密钥进行异或;每个子密钥由密钥生成方案生成。

SubBytes – 通过非线性替换函数使用查找表将每个字节替换为其对应的字节。

ShiftRows – 旋转矩阵中的每一行。

MixColumns – 完全混合矩阵中各个行的操作。此步骤使用线性变换来混合每列的四个字节。在最后一个加密循环中省略了 MixColumns 步骤,并替换为另一个 ddRoundKey。

无论是AES还是DES,它们内部都支持不同的加密模式,每种模式的安全性和效率都大相径庭。这里只简单介绍两种最常见的模式,ECB 和 CBC。

ECB模式加密效率高,但安全性低。模式如下:

每次Key加密一个区块,很容易被对方破解。但是由于各个模块之间没有关系,可以进行并发操作,大大提高了加密效率。一般来说,ECB 的加密效率是 CBC 的 5-6 倍。

虽然CBC的加密效率没有ECB高,但安全性要高很多。模式如下:

每个加密块都引入了一个IV,每个块的IV都不一样。上一个区块需要迭代,最终完成整个加密过程。由于每个块的IV都与密文块相关,因此不能采用并发模式,整个过程必须串行化。

如果不是对性能要求极高,建议使用CBC模式进行加密,更加安全可靠。

2. 非对称加密算法

非对称加密算法和对称加密算法最大的区别在于加密密钥和解密密钥不再相同。这就像两个人互相配对密码。这种加密方式主要是处理“多个加密者,一个解密者”的模式,而对称密钥只能解决解密用户之间的一对一关系。

所以在这种多对一的关系中有一个公钥系统。一个公钥对应一个私钥。公钥是公开的,任何数据发送者都用公钥加密数据,但公钥加密的内容只能用私钥解密。著名的算法有DSA算法、RSA算法、Elgamal算法、背包算法、Rabin算法、DH算法、ECC算法。它背后的数学,从分解大数到复杂椭圆曲线上的离散对数问题,都非常复杂。在此,笔者不再展开。

尽管其背后的数学支持不同,但模型是相似的。两者都使用公钥-私钥密钥对。公钥解密私钥加密的信息,私钥解密公钥加密的信息。非对称加密算法的执行效率成为该算法实际应用的最大障碍。大多数应用程序主要使用非对称加密算法进行身份验证,而不使用它们进行通信。

3. 哈希算法

哈希算法也是非常常见的加密算法之一。他与对称算法和非对称算法最大的区别在于,它不是用于数据传输,而是验证数据是否被篡改,防止不法分子篡改数据。它的特点是无论原始文本有多长,都会变成一个定长的字符串,只能加密不能解密(只能单向操作)。对于不同的输入,理论上会产生不同的输出(在一些算法中已经发生了大规模的碰撞,碰撞是指不同明文具有相同密文的情况)。

常见的哈希算法有MD5、SHA-1和SHA 224/256/512等,其中MD5和SHA-1已经被证明不再安全,所以推荐使用安全性高的算法如作为 SHA256/512。

三、数据库加密算法

上述加密算法已广泛应用于各个领域。随着云和大数据的快速发展,数据库逐渐从安全的局域网环境迁移到私有云甚至公有云。云环境下,服务器不再受信任,数据库迁移到云端,面临更加严峻的挑战。数据云的安全问题已经成为一个无法回避的问题。关键数据存储在数据库中,而云上的主机存在很多隐患,所以云上数据库的加密就成了解决这些隐患的良药。

1. 对称加密算法

数据库加密不同于文件加密、通信加密等常见加密。数据库加密需要特别注意加密算法是否膨胀,对加密算法的性能有严格的要求。2009年,数据库安全厂商安华金河在开发数据库加密产品时,首先在对称算法中排除了流加密算法。有不安全感。为了追求加密的效率,国内一些安全厂商仍然采用这种方式提供数据库加密服务,却忽略了这种加密产品最基本的安全要求。

更安全的方法是在对称加密中使用块加密(AES)进行相关的加密处理。块加密安全性高,在安全性方面更加安全,但需要解决数据块大小限制带来的扩展问题。这就需要根据具体情况或领域,设计出足够完善的使用方案,解决不同领域或类型的膨胀问题,最终形成完善的数据库加密方案。

2. 国产密码算法

密码算法是保障信息安全的核心技术,在保护国家机密和各行业核心数据方面发挥着至关重要的作用。存在很大的安全隐患。因此,从国家安全和长远战略的角度,国家有关部门和监管机构提出了推动国密算法应用实施,加强行业安全可控的要求。目前,在面对用户的选择评价时,国内相当一部分数据库加密产品是基于支持国密算法的。这对于政府、军工、保密等相关行业的用户来说非常重要。

具体而言,国产密码算法(National Cryptographicalgorithm)是指国家密码管理局认可的国产商用密码算法。比如在金融领域,目前使用的是三种算法密码学算法 大数问题,SM2、SM3、SM4,这些算法都是公开的。,分别为非对称算法、哈希算法和对称算法。

以SM4算法为例:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据加密/解密操作,保证数据和信息的机密性。保证对称加密算法安全的基本条件是它有足够的密钥长度。SM4算法和AES算法的密钥长度相同,块长度为128位,因此安全性高于3DES算法。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论