售前咨询
技术支持
渠道合作

纵观加密算法的技术发展路线

加密算法

加密算法乍一听貌似和大部分人的日常生活十分遥远,但实际却密切相关。从网络层到主机文件层,无论那层加密应用或协议背后都是由各种加密算法所支撑。即便你不用任何加密产品,凡是使用https的网站都已经使用了加密协议TLS/SSL。你也被动享受了加密算法带来的隐私保护,及通讯安全。今天我们抛开浅层的应用来扒一扒各种有趣的加密算法。

在扒加密算法前先稍微科普一下,加密算法主要作用是把明文变成密文。加密算法加密后,明文会变成密文,防止信息泄露。虽然看起来和乱码很像,但密文不是乱码。大部分乱码是由于编码不一致导致。编码不属于加密算法,编码无法把明文变成密文,只是改变了一种显示格式而已。所以base64只是一种编码而已,它不是加密算法,不具备加密能力,不能保障您的明文安全。所以,以后要听哪家说我们使用了base64进行加密,赶紧屏蔽。

加密算法的加密需要符合以下三点诉求:

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

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

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

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

现代加密算法

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

对称加密算法

对称加密算法是使用最广泛的加密算法之一。常用的对称性加密算法有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。对称加密的特点是,加密和解密两方使用同一密钥进行加、解密。加密算法本身泄露不会对安全性造成影响,密钥才是安全性的关键。按照原理不同,对称加密可以大体分成流加密和分组加密两种类型。

流加密

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

最简单的模型是异或流加密例如:

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

分组加密

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

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

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

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

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

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

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

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

模式

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

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

每次都是Key对单独块进行加密,容易被对方破解。但由于每个模块之间毫无关联,所以可以并发运算,极大地提高了加密效率。通常,ECB的加密效率比CBC高5-6倍。

CBC加密效率虽然没有ECB高,但安全性则高得多。模式如下图:

每块加密引入一个IV,每块的IV都不同,需要上一块进行迭代,最终完成整个加密过程。由于每块的IV和密文块有关,所以无法采用并发的模式,必须串行整个过程。

如果不是出于极高的性能要求,建议还是采用CBC模式进行加密,该模式更为安全、可靠。

非对称加密算法

非对称加密算法和对称加密算法的最大区别在于,加密的密钥和解密的密钥不再是一个。这就像两个人互对暗号一样。这种加密方式主要为了应对“多个加密者,一个解密者”的模式,对称密钥只能解决解密用户为一对一的关系。

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

虽然背后的数学支撑不同,但模式类似,均采用公私钥密钥对的方式,公钥解密私钥加密的信息,私钥解密公钥加密的信息。非对称加密算法的执行效率成为这种算法实际应用的最大阻碍。大部分应用主要把非对称加密算法用在身份验证中,并不会在通讯中使用。

哈希算法

哈希算法也是非常常见的加密算法之一。他和对称算法以及非对称算法最大的区别是,它不是用来做数据传输,而是对数据是否被篡改加以验证,防止不法分子篡改数据。它的特点是无论原文多长都会变成固定长度的字符串,只能加密不能解密(只能单向运算)。对于不同的输入,理论上会生成不同的输出(部分算法已出现大规模碰撞,碰撞就是指不同明文相同密文的情况)。

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

国内数安时代GDCA则是优质受信任的CA机构,通过了WebTrust国际认证,并已上市。数安时代GDCA的SSL证书使用SHA256签名算法,密钥长度2048-4096位,非常安全,几乎不会被破解,有效保障网站和用户信息安全。保护网站安全、提升性能体验,让您的网站安全与速度兼顾,特别适用于移动端互联网应用。

除了拥有自主品牌GDCA,数安时代还是Symantec、GlobalSign、GeoTrust等国际品牌的金牌合作伙伴,提供DV/OV/EV 全线SSL证书,价格从400元到10000元不等,全球受信任,安全值得信赖。

产品可靠有保障,服务也非常出色。数安时代GDCA有专业技术人员1对1远程提供免费安装部署服务,本地化7×24小时服务,为各类网站提供独一无二的服务和支持。 如果需要SSL证书,请登录数安时代GDCA官网咨询产品,总有一款适合你,快去申请吧!

上一篇:

下一篇:

相关新闻