1、对称加密
对称加密只有一个密钥,直接使用这一个密钥对信息进行加密或解密。这样子就使得对称加密解密十分高效,计算量也相较于非对称加密小很多,适合有大量数据的场合。
密钥只有一个且他一定不能泄漏。由此分发密钥,讲这个密钥传递给客户端是一件很有挑战性的事情。所以相较于非对称加密,对称加密的安全性低一些,因为再传递过程中密钥可能被他人获取。
常见对称加密算法:
-
DES(Data Encryption Standard):
- DES 是一种经典的对称加密算法,最早于 1976 年由美国联邦政府确定为数据加密标准。
- 它将明文按 64 位进行分组加密,每组生成 64 位的密文。
- DES 的密钥长度为 56 位,但实际上只有 48 位用于加密,其余用于错误检查。
- 由于计算机的进步,DES 已经能够被暴力破解,因此已不再安全。
-
3DES(Triple Data Encryption Algorithm):
- 3DES 是对 DES 的增强版,相当于对每组数据应用了三次 DES 算法。
- 它使用三把独立的密钥,总长度为 168 比特。
- 加密过程是以密钥 1、密钥 2、密钥 3 的顺序进行的。
-
AES(Advanced Encryption Standard):
- AES 是取代 DES 的一种新的对称加密算法。
- 它的分组长度为 128 比特,密钥长度可以是 128、192 或 256 比特。
- AES 是目前安全性较高、应用范围较广的对称加密算法。
2、非对称加密
非对称加密再服务端时会生成一对密钥,分别为公钥和私钥,这个公钥可以明文发送给客户端,之后所有客户端给服务端发送消息前,都先用公钥对消息进行加密,那么请求再网络中被非法获取,没有私钥的话也无法获取信息。之后客户端就可以放心的发送请求给服务端了。等请求打到服务端,服务端再用私钥将信息解密。
两个密钥中,公钥可以公开,而私钥不在网络中传输,则没有被截取的危险。则安全性得到了很大的提升。当然计算效率相较于对称加密会慢。为什么公钥和私钥可以互相解密呢,这是数学上问题。
RSA加密算法:
-
密钥生成:
- 首先,选择两个大素数,通常记为
p
和q
。 - 计算
n = p * q
。 - 根据欧拉函数,计算
r = (p - 1) * (q - 1)
。 - 选择一个与
r
互质的整数e
,使得e
与r
满足e * d ≡ 1 (mod r)
,其中d
是e
的模反元素。 - 公开密钥为
(e, n)
,私有密钥为(d, n)
。
- 首先,选择两个大素数,通常记为
-
加密方法:
- 将明文看作比特串,将明文划分成
k
位的块P
。 - 对每个数据块
P
,计算C = P^e (mod n)
,其中C
即为P
的密文。
- 将明文看作比特串,将明文划分成
-
解密方法:
- 对每个密文块
C
,计算P = C^d (mod n)
,其中P
即为明文。
- 对每个密文块
总之,RSA算法使用平方运算,明文以分组为单位进行加密,每个分组的二进制值小于 n。密钥的长度决定了加密的安全性,通常 n 的大小为1024位或309位十进制数。
3、混合加密
混合加密就是为了利用对称加密的高效性和非对称加密的安全性。
- 小明这边创建出公钥和私钥。
- 小明将公钥发送给小红。
- 小红随机生成一个密钥。并使用公钥对这个密钥进行加密。
- 此时小红再将这个密钥发送给小明,此时密钥再传递过程中处于加密状态,不怕配截取。
- 小明、小红再通过这个密钥进行高效的对称加密通话了。
4、数字签名和哈希函数
数字签名并不是对想要传递的信息进行加密,主要用途是用来身份验证的,判断这个信息是否由特定发送方发送。
哈希函数是对一段信息产生内容摘要,待客户端接收信息后,再对信息原文进行哈希函数计算,对比两个内容摘要是否一样,防止信息再传输过程中被篡改。
而数字签名和哈希函数结合起来。此时和非对称加密反过来,是使用公钥进行加密的。
- 先使用哈希函数对原文进行内容摘要。
- 使用私钥对内容摘要和原文一起进行加密,发送给客户端。
- 此时使用公钥对内容摘要进行解密,再对原文进行哈希函数生成内容摘要。
- 两个内容摘要进行对比,如果相同则正确。
作用:
- 身份认证:数字签名实现了用户的身份认证,确保消息是由特定发送方发送的。
- 完整性保护:数字签名保证了数据在传输过程中的完整性,防止数据被篡改。
- 不可否认性:数字签名使发送方无法否认发送过的消息,因为只有发送方的私钥能够生成有效的签名。