【密码学】 对称加密算法

简介: 在密码学中,加密算法按照实现方式可分为对称加密算法和非对称加密算法。对称加密算法指的是加密方和解密方使用相同的密钥进行加密和解密,即双方使用共同的密钥。在对称加密算法使用的过程中,数据发送方将明文数据通过密钥进行加密生成密文数据,将密文数据发送给接收方,接收方收到密文数据后,通过密钥进行解密,将其恢复成明文数据。这就要求接收方要首先知道密钥,这需要发送方先将密钥通过安全方式发给接收方,通常会使用非对称加密例如ECDH算法来传输密钥(非对称密钥会在下章讲解)。

对称加密算法概念

   在密码学中,加密算法按照实现方式可分为对称加密算法和非对称加密算法。

  对称加密算法指的是加密方和解密方使用相同的密钥进行加密和解密,即双方使用共同的密钥。在对称加密算法使用的过程中,数据发送方将明文数据通过密钥进行加密生成密文数据,将密文数据发送给接收方,接收方收到密文数据后,通过密钥进行解密,将其恢复成明文数据。这就要求接收方要首先知道密钥,这需要发送方先将密钥通过安全方式发给接收方,通常会使用非对称加密例如ECDH算法来传输密钥(非对称密钥会在下章讲解)。

对称加密算法

  目前最常用的对称加密算法就是AES算法,当然还有RC算法等,但物联网方面不太常用,其他的例如des算法已经被攻破,渐渐退出历史舞台。

对称加密算法优缺点

  对称加密算法的优点是算法计算量小,加解密速度快,效率高。缺点是数据传送前,发送方和接收方必须先协商好密钥,发送方将密钥发送给接收方,并保存好,一旦密钥泄露,数据就不再安全了。因此对称加密算法的密钥传输和密钥管理才是关键。
  一个系统的安全性不在于它的算法对于对手来说是保密的,而是应在于它所选择的密钥对于对手来说是保密的。系统的安全性不依赖于算法的保密性,而依赖于密钥的安全性。

  对称加密算法单次只能处理固定长度的分组数据,例如AES-128算法单次只能加密或解密128位数据,即16个字节,而实际应用场景中需要加密或解密的消息长度并不一定是16字节,为了解决这种问题,需要引入分组密钥模式和消息填充方法。

分组密码模式

   如果要加密的消息超过了对称加密算法规定的固定长度,需要对明文消息进行分组处理,不同的分组密码模式有着不同的计算过程,安全性也存在差异。本节将介绍几种常用的模式,分别为ECB模式、CBC模式、CTR模式。

ECB模式

  ECB模式称为密码本模式,是最简单的分组密码模式,其思想就是将明文数据进行分组加密,以aes-128为例,每组为16个字节,不足则通过填充方法进行补齐(填充方法下面会讲到),加密结果为密文分组,每个分组之间项目独立,每组的明文与密文之间存在着一一对应关系。ECB模式虽然非常简单,但是由于存在明显的缺点,所以在实际项目中往往不会使用。

ECB加密
ECB解密

CBC模式

   CBC模式称为密码分组链接模式,每一组的明文在加密前与之前的分组进行异或操作,由于第一个分组明文前面没有密文分组,所以需要准备一个与密文分组长度相等的比特序列来代替密文分组,这个比特序列被称为初始化向量,通常简写为IV。 CBC模式在实际项目中是非常常用的。CBC模式如果消息长度不是分组的整数倍,也是需要进行消息填充的。

CBC加密
CBC解密

CTR模式

  CTR模式称为计数器模式,CTR模式使用与分组长度相同的技术支持参与运算,典型的实现方法是通过对逐次累加的计数器进行加密来生成密钥流,通过加密计数器得到的密钥流与明文分组进行异或运算,得到密文分组。

  CTR模式是不需要对明文进行填充的,并且CTR模式只需要加密算法,而不需要解密算法,这点与上面的ECB和CBC模式相比有很大的优势,因为CTR模式的本质是对计数器加密,而不是对数据加密。

CTR加密
CTR解密

消息填充方案

  分组密码模式中ECB、CBC模式都要求输入明文长度为分组密码长度的整数倍。当加密明文长度不是分组密码长度的整数倍时,需要对明文进行填充。在实际应用中,常用的填充方案是PKCS7。
   PKCS7填充方法非常简单,以AES-CBC算法为例,分组长度为16字节,若待加密明文长度为28个字节,则需要在明文末尾填充4个字节的0x04,使其达到分组长度的整数倍;若待加密数据恰好为16字节,需要在明文后面额外填充16字节,并将其全部填充为16。

模式 优点 缺点 备注
ECB模式(密码本模式) 简单快速、支持并行加解密 密文分组相互独立,通过删除、替换密文分组可以修改明文。
不能抵御重放攻击。
不应使用
CBC模式(分组链接模式) 安全性高,即使获取到秘钥也不能单独解密某一组数据 加密不支持并行计算 推荐使用
CTR模式 (计数器模式) 不需要填充
不需要解密算法
可随机访问任意分组
支持并行计算,效率较高
主动攻击者反转密文分组中的某些比特时,明文分组中对应的比特也会被反转 推荐使用
目录
相关文章
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
2730 0
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1034 0
【密码学】一文读懂XTEA加密
|
3天前
|
存储 算法 安全
密码学系列之九:密钥管理
密码学系列之九:密钥管理
288 45
|
3天前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
38 0
|
3天前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
40 0
|
3天前
|
安全 搜索推荐 API
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
123 0
|
3天前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
70 0
|
3天前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
118 0
|
3天前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
73 0
|
9月前
|
存储 算法 Java
java密码学-非对称加密算法
非对称加密算法与对称加密算法的主要区别在于非对称加密算法用于加密和解密的密钥不同,一个公开,称为公钥;一个保密,称为私钥。因此,非对称密码算法也称为双钥和公钥加密算法。 非对称加密算法解决了对称加密算法密钥分配问题,并极大的提高了算法的安全性。多种B2C或B2B应用均使用非对称加密算法作为数据加密的核心算法。解决了对称加密算法的密钥存储问题。
62 0