01
对称加密算法
对称密码体制,又称为单密钥密码机制,其基本特征为加密密钥和解密密钥相同,模型如下:
这种方式,攻击者可以通过不安全的公开通信通道获取密文,但无法接触到明文或者密钥; 如果该攻击者知道加密算法和解密算法,且只对当前获取的密文感兴趣,可以产生一个明文的估计值来恢复明文;如果对未来消息感兴趣,可以来产生一个密钥来恢复密钥。
对称加密算法是基于分组密码机制产生,将一组明文划分为m长度的n组明文,分别使用密钥K=(k0,....,kx)进行加密或者解密,m长度通常为64、128、256、512。
02
AES加密算法工作模式
分组密码算法是提供数据安全的一个基本固件,典型的如DES(Data Encryption Standard)以64位为一组,AES(Advanced Encryption Standard)以128位(举例)为一个分组;但实际上保密传输的消息不一定刚好是一个分组,根据国标GB/T 17964-2008《信息安全技术 分组密码算法的工作模式》,为了各种应用能使用这些基本固件,因此有7种常用的工作模式;下面来解释一下:
2.1 ECB(Electronic Code Book Mode)
ECB,叫做电子密码本模式,例如AES128-ECB这种模式下,明文以128bit为一组,每次被处理128bit,每个明文都用同一个密钥加密;
解密过程使用同样的密钥进行解密。
这种模式操作简单,不同分组可以并行处理;但是明文中重复的内容同样也会在密文中体现出来,因此对于长报文可能不是很安全。
2.2 CBC(Cipher Block Chaining Mode)
CBC,密码分组链模式;加密函数的输入是当前明文分组和前一个密文分组的异或,对每个分组处理时也使用相同的密钥,如下
这种模式下,一个消息中的两个相同明文组会被加密成不同的密文,这样就避免了ECB出现的重复密文的问题。在最初加密时,需要使用初始向量(Initial Vector),这个IV需要发送方和接收方都知道,不用加密,但必须保证该IV的完整性。
该种模式不能并行处理,因为当前明文需要和上一组密文进行异或处理。
2.3 CTR(ConterMode)
计数器模式使用与明文分组长度相同的计数器长度,计数器从某一初值开始,按某种算法递增,计数器值经过加密算法得到的结果再和明文进行异或,这样就可以得到当前明文组的密文。
可以看到,计数器模式下的加密和解密相对独立,且已知加密函数,和计数器值,就可以通过异或的方式得到明文,不需要解密函数。实现起来简单易懂。
2.4 OFB(Output Feedback Mode)
输出反馈模式,该模式和CBC有点相像,但是区别在于OFB是将IV去进行加密后得到一个输出OBi 与明文块进行异或,同时OBi作为下一个加密对象的IV。如下图:
2.5 CFB(Chiper Feedback Mode)
密码反馈模式,与输出反馈模式结构类似。但是这种模式的密文是按bit来处理的,如下:
在该模式下,首先IV作为第一个block进行加密,生成第一个输出block;该block的s bit高位与明文的s bit高位作异或得到密文块,b(block size)-s不参与加密;b-s低位的数据 | 该密文块作为下一个block的输入。
2.6 XTS(XEX Tweakable Block Cipher with Ciphertext Stealing)
XTS引入了tweak key和AES key互相配合,每个明文块用同样的AES key但tweak key不相同。比如设置与区块的index成对应关系,这样各个块的加解密就相互独立了,如下:
相当于就在ECB上形式上增加了一层加扰系数 。
参考链接:https://www.researchgate.net/figure/Diagram-of-XTS-AES-block-Encryption-procedure_fig1_221505095
2.7 GCM(Galois/Counter Mode)
它在 CTR 加密的基础上增加 GMAC 的特性,解决了 CTR 不能对加密消息进行完整性校验的问题。
参考链接 https://blog.csdn.net/T0mato_/article/details/53160772
03
总结
上面描述了对称加密算法的工作模式,那么我们在设计时主要考虑以下几个方面:
(1)抵抗攻击的能力、密文的随机性、安全防护等级
(2)调用分组加密的次数、并行处理能力、初始化向量时间等
(3)明文分组数量可配、消息长度等要求
精品活动推荐
更多文章
会员权益: (点击可进入)谈思实验室VIP会员