由古论今,三千年加密算法发展史

简介: 作为一种安全手段,加密算法和我们大多数人的生活发生着紧密联系。只要你上网,都会从中受益,因为凡是使用https的网站都已经使用了加密协议TLS/SSL。因此,我们都在被动享受加密算法带来的隐私保护及通讯安全。

作为一种安全手段,加密算法和我们大多数人的生活发生着紧密联系。只要你上网,都会从中受益,因为凡是使用https的网站都已经使用了加密协议TLS/SSL。因此,我们都在被动享受加密算法带来的隐私保护及通讯安全。此外,从安全技术层面,网络层到主机文件层,无论哪层加密应用或协议背后都是由各种加密算法所支撑。


本文就尝试由古及今,对这种与我们网络生活息息相关的加密算法的发展演变,以及在整个过程中先后出现的集中关键加密算法一一论述,带领大家了解背后这种有趣的。


加密算法主要作用是把明文变成密文,防止信息泄露。加密后的密文看起来和乱码很像,但却不是乱码。大部分乱码是由于编码不一致导致的,编码不属于加密算法,只是改变了显示格式而已。比如,base64只是一种编码而已,不能保障明文安全。以后听到base64加密的说法,说明他们不专业。



加密算法需要保证以下三点

1.机密性:保证数据即使被盗取,小偷也不知道是啥。

2.完整性:保证数据在传输过程中即使被劫持修改,接收方能够发现信息已被截取,而选择换掉。

3.可用性:保证加密算法的开销、复杂度都在可用范围。

谈恋爱的过程就像剥洋葱,到时候了就会让你泪流满面。


满足上述要求的加密算法经历了从古典密码过渡到现代密码的漫长历史发展时期。


古代人如何加密?


1

历史上最早的加密算法


替代法

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

640.png?tp=webp&wxfrom=5&wx_lazy=1

太公曰:“主与将,有阴符,凡八等。有大胜克敌之符,长一尺。破军擒将之符,长九寸。降城得邑之符,长八寸。却敌报远之符,长七寸。警众坚守之符,长六寸。请粮益兵之符,长五寸。败军亡将之符,长四寸。失利亡士之符,长三寸。诸奉使行符,稽留,若符事闻,泄告者,皆诛之。八符者,主将秘闻,所以阴通言语,不泄中外相知之术。敌虽圣智,莫之能识。”


武王问太公曰:“… 符不能明;相去辽远,言语不通。为之奈何?” 太公曰:“诸有阴事大虑,当用书,不用符。主以书遗将,将以书问主。书皆一合而再离,三发而一知。再离者,分书为三部。三发而一知者,言三人,人操一分,相参而不相知情也。此谓阴书。敌虽圣智,莫之能识。”

640.png?tp=webp&wxfrom=5&wx_lazy=1

简单来说,阴符是以八等长度的符来表达不同的消息和指令,属于密码学中的替代法,在应用中是把信息转变成敌人看不懂的符号,这种符号法只能表述最关键的八种含义。阴书作为阴符的补充,运用了文字拆分法直接把一份文字拆成三分,由三种渠道发送到目标方手中,敌人只有同时截获三分内容才可能破解。


移位法

无独有偶,在遥远的西方加密算法也大规模使用于战争之中。在希罗多德的《历史》中记载了公元前五世纪,希腊城邦和波斯帝国频频交战,希腊城邦中广泛使用移位法对战争通讯信息进行加密处理,波斯帝国因此难以获得对方军事情报,无法提前做军事部署。希腊城邦用来传输军事信息、命令的每段文字都有固定的字数,接密者手中会有一份文字移位说明。解密者拿到密文后,根据移位说明解密,破解军事命令或消息。


2

古代密码演变的凯撒密码


古典密码主要采用移动法和替换法。其中,移位法就是让明文都向固定方向移动特定位数,例如I love you右移动4位就变成了M pszi csy。经过逐渐发展和完善,最有名的莫过于凯撒密码。但英文或拉丁文字母出现的频率并不一致。以英文字母为例:字母e出现频率明显高过其他字母。获得足够密文样本后,通过频率计算准确找到移位规则,从而破解密文。于是大部分凯撒密码采用替换法,定义一张明文密文映射表:

a76df6e0d789a23f9d4efe3b8ad51a1609be7d1a


这种方式可在一定程度上解决密钥可穷举的问题,但仍对大数据量的频率攻击束手无策。后来该模式发展为靠引入一些特定参数来扰乱频率,提高解密难度。


古典密码后期发展出维吉尼亚密码、ROT5/13/18/47、摩尔斯密码等一系列密码种类。但都是以替换法和移位法为核心基础,安全性也主要是靠算法不公开来保证。



现代人更科学的加密算法

古典加密算法本质上是语言学上模式的改变。直到20世纪中叶香农发表了《秘密体制的通信理论》一文,标志着加密算法的重心转移往应用数学上的转移。于是,逐渐衍生出了当今重要的三类加密算法:非对称加密、对称加密以及哈希算法。这三类算法往往组合使用,以发挥最佳效果。


1

对称加密算法


对称加密算法是使用最广泛的加密算法之一。常用的有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。其特点是,加密和解密两方使用同一密钥进行加、解密。按照原理不同,对称加密可以大体分成流加密和分组加密两种类型。


流加密

流加密是将明文按字符逐位地,对应地进行加密的一类对称密码算法。明文和密钥按位对其做约定的运算,即可获得密文。流加密中以RC4和GSM两种算法最有名,最简单的模型是异或流加密例,如:

c181f88c9a6d79ad998169b0da1b042be1245ada

流加密原理简单,其算法结构存在弱点,只要泄露局部明文,攻击者很容易算出密钥。另外,由于是按位进行加密,攻击者即使对数据进行篡改,也不会破坏原有数据结构,接收者很难发现其中变化。流加密虽然快捷高效,但其安全性较低,加密关键信息不建议采用此方式。


分组加密

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

DES

DES是较早时期的对称加密标准,核心主要分成初始置换、轮函数、逆置换三步,在当时得到了广泛的应用。随着计算机性能地不断提高,暴力破解DES变得越来越容易。所以DES已经不再安全,近十几年逐渐地被3DES和AES代替。

AES 

AES已经被多方分析论证,在全世界范围广泛使用,是目前最为安全的对称加密算法之一。近十年,AES已然成为对称密钥加密中最流行的算法之一。不同于DES,AES使用的是代换-置换网络,而非Feistel架构。


大多数AES计算是在一个特别的有限域内完成的,加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:


  • AddRoundKey——矩阵中的每一个字节都与该次轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

  • SubBytes——通过一个非线性替换函数,用查找表方式把每个字节替换成对应字节。

  • ShiftRows——将矩阵每个横列进行循环式移位。

  • MixColumns——充分混合矩阵中各个直行的操作,使用线性转换来混合每列的四个字节。最后一个加密循环中省略MixColumns步骤,以另一个ddRoundKey取代。

加密模式 

AES、DES内部都支持不同加密模式,每种模式的安全性和效率大不相同。两种最常见模式ECB和CBC中,ECB模式加密效率高,但安全性低,模式如下图:

428f4dacc7a68502f72c6d3ea4865bd579d83dc6

每次都是Key对单独块进行加密,容易被对方破解。但由于每个模块之间毫无关联,可以并发运算,极大提高加密效率。通常,ECB的加密效率比CBC高5-6倍。但CBC较之ECB高,安全性则高得多。模式如下图:

d9ffb4f6ee8dd6ae7e8644a2cabecbc284cab83c

每块加密引入一个不同的IV,需要上一块进行迭代,最终完成整个加密过程。由于每块的IV和密文块有关,所以无法采用并发模式,必须串行整个过程。若不是出于极高的性能要求,建议采用更安全、可靠的CBC模式。


2

非对称加密算法

非对称加密算法和对称加密算法的最大区别在于,加密密钥和解密密钥不再是一个。这种方式主要为了应对“多个加密者,一个解密者”的模式。于是在这种多对一的关系中就出现了一个公钥体系。一个公钥对应一个私钥。公钥公开,任何数据发送者都用公钥对数据进行加密,但公钥加密的内容只有私钥才能解开。背后的数学原理从大数分解到复杂的椭圆曲线上的离散对数问题,非常复杂。常见非对称加密算法包括DSA算法、RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法、ECC算法等。非对称加密算法的执行效率制约着该算法的实际应用,因此大部分应用在身份验证中,并不会在通讯中使用。


3

哈希算法

哈希算法也是非常常见的加密算法之一。它不是用来做数据传输,而是对数据是否被篡改加以验证,防止不法分子篡改数据。特点是无论原文多长都会变成固定长度的字符串,只能加密不能解密(只能单向运算)。常见哈希算法包含MD5、SHA-1和SHA 224/256/512等。前两者已被证明不再安全,建议使用SHA256/512等安全性高的算法。


上述加密算法已经广泛应用在各个领域。



数据库加密算法

随着云和大数据的高速发展,数据库也逐渐从安全的局域网环境,向私有云甚至公有云迁移。数据库迁移到云上,面临更加严峻的安全挑战。数据库中保存着关键数据,云上主机存在众多不安全隐患,所以云上数据库加密成为解决安全隐患的一剂良药。


对称加密算法

不同于文件加密和通讯加密,数据库加密需要特别关注加密算法是否存在膨胀性,并对加密算法的性能有苛刻的要求。2009年,安华金和在进行数据库加密产品研发时,首先排除对称算法中的流加密算法,原因是这种算法虽然在运行效率和解决数据膨胀上有天然优势,但在一定情况下存在不安全性。


为了追求加密效率,目前国内依然有部分安全厂商采用这种方式,最基本的安全性要求却被忽略。更稳妥的做法是采用对称加密中的分组加密(AES)进行相关加密处理。分组加密安全性高,在安全方面比较有保障,但需要解决由于数据块大小限制带来的膨胀问题。这需要根据具体情况或字段设计足够精妙的使用方案,来针对不同字段或类型解决膨胀问题,最终形成完美的数据库加密方案。


国产密码算法

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


具体而言,国产密码算法指国家密码局认定的国产商用密码算法,比如,在金融领域目前主要使用公开的SM2、SM3、SM4三类算法。以SM4算法为例:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。


数据库加密是安华云产品中重要的一环,也是数据库保护最后一条战线。就算数据外泄,加密后的文档也是不可复原的铭文。

欢迎阿里云市场官方店铺:https://shop14d60793.market.aliyun.com/ 

你想了解更多的云安全资讯,欢迎关注“安华云安全微信”公众号

4a85bfba3a1ce8fb4c7e99dd5c090ed0e392ae92


相关文章
|
1月前
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
1月前
|
算法 安全 关系型数据库
密码学系列之七:数字签名
密码学系列之七:数字签名
|
1月前
|
安全 算法 量子技术
密码学系列之十:量子密码
密码学系列之十:量子密码
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1010 0
【密码学】一文读懂XTEA加密
|
3月前
|
供应链 安全 算法
区块链密码学:基础知识、应用与未来发展
区块链密码学:基础知识、应用与未来发展
110 0
|
5月前
|
存储 算法 安全
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
87 0
|
10月前
|
存储 算法 安全
一文带你学习主流的“加密算法”
一文带你学习主流的“加密算法”
145 0
一文带你学习主流的“加密算法”
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
396 0
【密码学】 一篇文章讲透数字签名
|
算法 数据安全/隐私保护
【密码学】密码学概述
每个人都有自己的秘密,如果不加密,在网上传输很容易被监听。如果涉及到金钱相关,密码泄露以后很容易造成损失。所以都会利用加密 cryptography 技术,保证信息的机密性 confidentiality。信息被加密以后变成了密文在网上传播,接收者拿到密文进行解密 cryptanalysis,解密以后就可以看到明文。对称密码 (symmetric cryptography)是指在加密和解密时使用同一密钥的方式。对应的加密方式是对称加密。目前广泛使用 AES。对称密码有多种别名,公共密钥密码(common-k
142 0
【密码学】密码学概述
|
Rust 算法 JavaScript
【密码学】密码学相关资料整理
感觉我也写了不少的文章了,这里整理一下,之后这个整理会佛系更新,手动狗头,具体的链接查看原文获取吧,因为这个链接好像加不进去。
【密码学】密码学相关资料整理