图解对称与非对称加密算法,轻松学会HTTPS原理

1,268 阅读3分钟

对称加密

先说一下对称加密,顾名思义,对称加密就是加解密双方的加解密过程是对称的。也就是说加密方用一个秘钥进行加密,解密方也通同一个实现商定好的key取进行解密,加解密过程中,使用同一个秘钥称为对称加密,常见的对称加密算法有:DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish

Image.png 这么做看上去没什么问题,只要秘钥不会泄露似乎就不会有安全问题,但是怎么保证秘钥不会被泄露出去?这是一个问题,还有秘钥又要怎么传输给对方?这也是一个问题,线面看三张图,由于通信双反个都需要保存秘钥,当通信网络很大的时候,梅朵一个用户就需要保存很多额外的秘钥。 Image [10].png

Image [11].png

Image [12].png 最致命的是,这些秘钥也只能通过网络进行传输,不可能用过面对面的方式交换秘钥。秘钥的保存也会带来额外的负担

Image [13].png 而且秘钥的传输过程需要进行加密,那么这样便进入了一个死循环。传输信息需要秘钥进行加密,传输秘钥也需要秘钥加密……因此就引出了非对称加密算法,只用对称加密看样子是无法解决这个问题了。

非对称加密

上面对称加密说的是加解密通信双方使用同一个秘钥加解密叫做对称,那么加解密方双使用不同的秘钥进行加解密则为非对称加密。如图,非对称加密过程中,存在一对公钥 (publickey) 和私钥 (privatekey)

Image [2].png

其中,对数据进行加密的秘钥是对所有人公开的,而对数据解密的秘钥却仅为数据的接收者持有,如图:

Image [3].png 非对称加密算法的保密性好,它消除了最终用户交换密钥的需要。但是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。有得必有舍。常用的非对称加密算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

数学原理——模运算

大家可能想不到,这个精密的加密算法,其背后的数学原理竟然是模运算,不过和我们日常开发中的模运算还是不太相同哦。这里要理解他的数学原理可能需要一定的数学基础,看不懂的话知道过程和相应的原理就行了,下面举个例子:

33mod73^3 mod 7

计算3的3次方对7取模运算很容易,但是反过来,要计算

3xmod=63^x mod= 6 在已经知道结果是6的情况下,要反过来求x的值,就很困难了

Image [17].png

如果数字非常大,再代进去计算就非常困难。因此模运算被称为单向函数(One-Way Function) 公钥加密正是运用了这一特性:

Image [18].png 正向计算密文C很简单

Image [19].png 反向计算出原始数据m却很难

Image [20].png 对这个公式进行变换得到: Image [21].png 因此,如何选择e和d方便成了加密中关键的问题 著名的欧拉定理:

Image [22].png

Image [23].png 这个算法也正是数学与计算机的一次美妙结合。

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。