加密算法的发展演变及关键算法解析

日期: 2024-08-10 15:02:36|浏览: 366|编号: 60276

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

介绍

本文试图探讨加密算法从古至今的发展演变,以及整个过程中出现过的集中式密钥加密算法。由于我个人水平有限,如有错误,还望大家见谅。

加密算法

加密算法乍一看离大多数人的日常生活似乎很遥远,但其实它们息息相关。从网络层到主机文件层,无论哪一层加密应用程序或协议都由各种加密算法支持。没有任何加密产品,所有使用https的网站都已经使用了加密协议TLS/SSL。你也被动地享受着加密算法带来的隐私保护和通信安全。一个有趣的加密算法。

在深入加密算法之前我们先来简单了解一下加密算法,加密算法主要作用就是将明文变成密文,经过加密之后明文就会变成密文,防止信息泄露,虽然看上去是乱码,但是密文并不是乱码,大部分乱码都是因为编码不一致导致的,编码不是加密算法,编码不能将明文变成密文,只是改变了显示格式而已,所以它只是一种编码,不是加密算法,不具备加密功能。因此,如果听到我们使用加密,立刻封杀。

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

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

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

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

与上述诉求相一致,加密算法的发展主要经历了两个重要时期:古典密码学和现代密码学。

1、古人是如何加密的?

1. 历史上最早的加密算法

早期的加密算法主要用于军事。历史上最早关于加密算法的记载,来自于周代兵书《六韬.龙韬》中的《阴符》和《阴书》。其中记载:

太公说:“君主和将军都有阴符,有八种。有大胜、克敌的符,长一尺。有败军、擒将的符,长九寸。有攻城、夺镇的符,长八寸。有击退敌人、报告距离的符,长七寸。有警告百姓坚守的符,长六寸。有请求粮食、增兵的符,长五寸。有败军、死将的符,长四寸。有败兵、死将的符,长三寸。凡带符而迟延的使者,若符被人知晓,谁泄露,就杀谁。八符是统帅的秘密,以便秘密通报,不泄露内情。即使将军的秘密泄露,也无妨。”敌人是聪明的,没有人能够理解。”

武王问太公:“……符不能明事理,相距遥远,不能相通,怎么办呢?”太公说:“有密事,有大事,就用书信代替符。君主把书信交给将军,将军在书信中问君主。……一切书,一合二分,三分一知。二分就是把书分成三份。三分一知,就是三个人各执一份,彼此不知对方的心意,却能心领神会,这就叫密书。即使敌人有智慧,谁也不能了解。”

简单来说,《隐符》用八个等长的符号来表达不同的信息和指令,是密码学中的一种代换方法。在应用中,它将信息转化为敌人无法理解的符号,而知情者却知道这些符号。这种符号方法无法表达丰富的含义,只能表达最重要的八个含义。《隐书》作为《隐符》的补充,采用分字法,直接将一个字拆成三部分,敌人只有同时截获三部分密书,才能破译密书内容。

上述简单的加密算法主要采用的是移位法,无独有偶,加密算法在遥远的西方战争中也被广泛应用,在希罗多德的《历史》中记载,公元前五世纪时,希腊城邦与波斯帝国发生过多次冲突和战争,在这些战争中,希腊城邦广泛使用移位法加密战争通讯信息,使得波斯帝国很难从希腊城邦那里获取军事情报,无法提前进行军事部署。

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

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

因此实际应用中,凯撒密码大多采用第二种方式,即替换方式。定义一个明文-密文映射表:

该方法虽然能在一定程度上解决密钥耗尽的问题,但是面对大量数据的频率攻击依然无能为力。

后来该模型发展为引入一些特定的参数来扰乱频率,在一定程度上增加了解密的难度,但仍然属于替代、移位方法的范畴。

古典密码后来发展成为一系列密码,包括维吉尼亚密码、ROT5/13/18/47、摩尔斯密码等,但它们都是基于代换和移位的方法,其安全性主要取决于算法,所采​​用的加密算法只能算是现在加密算法的雏形,或者只能作为可以借鉴的初始加密思想。

2.现代人更科学的加密算法

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

1.对称加密算法

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

流密码是一种对称加密算法,它逐位加密明文。流密码中最著名的算法是RC4和GSM。流密码比较简单。明文和密钥都是逐位加密的。通过运算可以得到密文。

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

由于流加密原理简单,但其算法结构存在弱点,如果多次重用密钥流,只要泄露本地明文,攻击者就可以轻松计算出密钥,另外由于是逐位加密,攻击者可以轻松篡改数据,但不会破坏原有的数据结构,接收方很难察觉到这些改动。流加密虽然是一种快速高效的加密方法,但其安全性相对较低,不建议用户使用流加密来加密密钥信息。

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

DES 是早期的对称加密标准,当时被广泛使用。随着计算机性能的不断提高,通过暴力破解 DES 变得越来越容易。因此,DES 不再安全,并在近十几年内逐渐被 3DES 和 AES 所取代。

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

初始置换:将输入的64位数据块逐位重新组合,输出分为L0和R0两部分,每部分32位长。置换规则是将输入的第58位替换为第1位,第50位替换为第1位,最后一位为原来的第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 位的块大小。这是一种迭代分组密码。使用一种称为加密的技术,其中加密的文本块被分成两半。使用子密钥对其中一半应用轮函数,然后将输出与另一半进行异或;然后交换这两半,这个过程继续,但不要在最后一个循环中交换。

逆置换:DES采用16次循环,使用了异或、置换、替换、移位四种基本运算,经过16次迭代得到L16和R16,作为输入进行逆置换,是初始置换的逆运算,由此得到密文输出,解密过程是整个加密过程的逆运算。

AES 是为了取代原来的 DES 而创建的,它已经过多方分析和验证,在全世界范围内被广泛使用,是最安全的对称加密算法之一,在过去的十年中,AES 已经成为最流行的对称密钥加密算法之一。与它的前身 DES 标准不同,AES 采用的是置换-排列网络,而不是结构。

AES 的大部分计算都是在一个特殊的有限域中完成的,加密过程在一个 4×4 字节矩阵上进行操作,这个矩阵也被称为“状态”,它的初始值是一个明文块(矩阵中一个元素的大小就是明文块中的一个字节)。加密时,每轮 AES 加密循环(最后一轮除外)都包含 4 个步骤:

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

——通过非线性替换函数,使用查找表将每个字节替换为相应的字节。

——循环移位矩阵中的每一行。

- 对矩阵中每个垂直行的操作进行充分混合。此步骤使用线性变换来混合每列的四个字节。在最后一个加密循环中省略此步骤,并用另一个步骤代替。

AES和DES都支持不同的加密模式,并且每种模式的安全性和效率都有很大的差别,这里我们只简单介绍最常见的两种模式ECB和CBC。

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

每次密钥加密单个块,容易被对方破解,但由于各模块互不关联,可以并发操作,大大提高了加密效率,一般ECB比CBC加密效率高5-10倍,ECB比CBC高6倍。

CBC加密效率虽然没有ECB高,但是安全性却高很多,其模式如下:

每个加密块都会引入一个IV,每个块的IV都不一样,这就需要迭代前一个块才能完成整个加密过程。由于每个块的IV都和密文块相关,所以无法使用并发模式,整个过程必须串行化。

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

2.非对称加密算法

非对称加密与对称加密最大的区别就是加密密钥与解密密钥不再相同,就像两个人在交换暗号一样,这种加密方式主要用于处理“多个加密者,一个解密者”的模型,而对称密钥只能解决解密者之间的一对一关系。

因此在这种多对一的关系中就出现了公钥系统,一个公钥对应一个私钥,公钥是公开的,任何数据发送者都使用公钥对数据进行加密,但公钥加密的内容只有私钥才能解密。著名的算法有DSA算法、RSA算法、算法、背包算法、Rabin算法、DH算法、ECC算法等,其背后的数学原理从大数分解到复杂椭圆曲线上的离散对数问题,非常复杂,这里就不细说了。

虽然它们背后的数学支撑不同,但模型类似,都使用一对公私钥对,公钥解密私钥加密的信息,私钥解密公钥加密的信息。非对称加密算法的执行效率成为该算法能否实际应用的最大障碍:大多数应用主要将非对称加密算法用于身份认证,而非用于通讯。

3.哈希算法

哈希算法也是最常见的加密算法之一,它和对称、非对称算法最大的区别就是它不是用来传输数据的,而是用来验证数据是否被篡改,防止不法分子篡改数据。特点是不管原文有多长,都会变成固定长度的字符串,只能加密不能解密(只能单向操作),对于不同的输入,理论上会产生不同的输出(有些算法已经经历过大规模碰撞,碰撞就是不同的明文有相同的密文)。

常见的哈希算法有MD5、SHA-1、SHA 224/256/512等,其中MD5和SHA-1已经被证明不再安全,建议使用/512等安全性更高的算法。

3.数据库加密算法

上述加密算法在各个领域都得到了广泛的应用。随着云和大数据的快速发展,数据库也逐渐从安全的局域网环境迁移到私有云甚至公有云中。云环境中的服务器不再值得信任,数据库迁移也变得越来越复杂。迁移到云带来的挑战更加严峻,云上的数据安全问题已经成为一个无法回避的问题。数据库存储着关键数据,而云主机存在诸多不安全风险,因此云数据库加密就成为了解决这些安全风险的一剂良药。

1.对称加密算法

数据库加密不同于文件加密、通信加密等常见的加密,数据库加密需要特别关注加密算法是否具有可扩展性,对加密算法的性能有严格的要求。我们在开发产品时,首先会将流加密算法从对称算法中排除,因为这种算法虽然在运行效率、解决数据膨胀问题等方面有着天然的优势,但是在某些情况下是不安全的。目前仍有一些安全厂商采用这种方式提供数据库加密服务,却忽略了这种加密产品最基本的安全要求。

比较靠谱的做法是采用对称加密中的分组加密(AES)进行相关加密处理,分组加密安全性高,比较安全,但需要解决数据块大小限制带来的扩展问题,这需要根据具体情况或字段设计足够精细的使用方案,针对不同字段或类型解决扩展问题,最终形成完善的数据库加密解决方案。

2.国产密码算法

密码算法是保障信息安全的核心技术,在保护国家机密和各行业核心数据方面发挥着至关重要的作用。采用3DES、SHA-1、RSA等国际上通用的密码算法体系和相关标准,对信息安全有着很大的影响,因此国家相关部门和监管机构从国家安全和长远战略高度,提出了推动国产密码算法应用实施、加强行业安全可控的要求。在评估加密算法类型时,有相当一部分是以国产加密算法的支持为首要条件,这对于政府、军工、保密等相关行业用户来说非常重要。保护国家信息安全必须摆脱对国外技术和产品的过度依赖,加密算法作为关键安全技术,应实现国产化。

具体来说,国产密码算法(国密算法)是指经国家密码局认定的国产商用密码算法,例如在金融领域,目前使用的三类算法分别是SM2、SM3、SM4,分别是非对称算法、哈希算法、密码算法和对称算法。

以SM4算法为例:SM4分组密码算法是我国自主设计的一种分组对称密码算法,用于实现数据加密/解密运算,保证数据和信息的保密性,保证对称密码算法的安全性,基本条件是具有足够的密钥长度,SM4算法与AES算法一样具有128位的密钥长度和分组长度,因此比3DES算法更安全。

提醒:请联系我时一定说明是从101箱包皮具网上看到的!