密文反馈模式CFB
密文反馈模式CFB
密文反馈模式(CFB)是一种将分组密码变换为流密码的加密方式,支持逐比特或逐字节处理,它适用于需要加密任意长度数据的场合。
核心思想
流密码化:利用分组密码算法生成密钥流(而非直接用来处理明文数据),与明文逐位/逐字节异或得到密文。
反馈机制:每一轮的加密输出不仅用于生成密文,还会反馈到移位寄存器中,参与下一轮密钥流的生成。
自同步性:即使传输过程中丢失部分数据,系统可通过后续正确密文自动恢复同步(但需错误移出寄存器)。
经典模式加解密工作流程:
17964标准中,每个明文分块加密后的密文结果长度≠反馈变量长度k,所以需要在密文结果左侧填充全1比特,使得反馈变量 为k比特,而后更新到反馈缓存器右侧,并将反馈缓存器左移k位,进行下一轮加密处理。
一般推荐采用反馈变量长度=明文数据分块长度(17964标准中j=k)的CFB模式,以下是这种经典模式情况
CFB模式允许以小于加密算法分组长度的粒度处理数据,例如在AES(128位分组)中可实现8位、64位等不同粒度的CFB模式。
8位CFB模式:明文数据的分块大小为8 ,每次加密或解密8bit;
反馈变量:每次对8bit数据块进行加密或解密后得到的密文结果,反馈更新到缓存器中,即称做反馈变量。
反馈缓存器:反馈缓存器的长度与加密算法的分组大小一致。,如AES为128位,每次仅更新8位密文到缓存器中
参数说明:
对称算法分组长度d位;
选取d位长随机IV;
明文数据分块,每块大小为s比特(s小于d,并且s为8的倍数),而不是基本分组密码的分组长度d的单元。
移位寄存器d位长,用来存储反馈缓存。
加密:IV或前一个密文分组被加密,并且其输出的一部分用来与明文分组进行异或操作,产生密文分组。
首先在d位移位寄存器中填充初始向量IV,接着对寄存器内IV进行加密得到d位密文结果,从加密结果中左侧截取s位数据同明文第一块P1异或,得到第一个s位密文C1,然后将C1 发送出去。接着将移位寄存器左移s位,把C1填入移位寄存器的最后s位,进行下一轮加密,直到所有明文都被加密完。
解密:相同的IV或密文分组被加密,并且其输出的一部分用来与密文分组进行异或操作,恢复出明文。
IV加载到反馈寄存器中,加密寄存器中IV得到d位密文结果,从密文结果中左侧截取s位数据同密文块C1进行异或得到P1;
然后更新寄存器状态,寄存器左移s位,将密文块C1放入寄存器右侧s位,进行下一轮解密,直到所有密文都被解密。
注意:解密流程与加密流程只有一点不同,将收到的密文块与加密函数的输出异或得到明文块。
解密过程中使用的是加密函数而不是解密函数。
从明文分组到密文分组只需要一次XOR,使用的是前一次密文分组经过加密算法生成的密钥流。


特点:
1)随机且唯一的IV,IV需要保证完整性
2)不需要填充,明文长度=密文长度。
处理:最后一个明文分块可以动态调整。在加密时,如果最后一组明文分块的位数(假设为c位)不够b位(c<s),那也无需填充。只需要将加密算法输出密钥流的低d-c位舍去,保留c位,再与s位明文分组进行异或,得到c位密文分组。
3)并行计算:仅并行解密,在已知全部密文分组的情况下,可以对每一部分分组开启多线程进行解密;加密不支持并行,需要等待前一组的密文结果
4)明文特性隐藏:可以隐蔽明文数据结构规律和统计特性,密文分组的重新排序不会导致对相应的明文分组的重新排序。
5)错误传播:有密文错误传播,密文分组错误敏感
某一组密文中单独1 bit的错误,首先会引起解密后当前密文分组解密后明文的相应位错误,其次,这个错误的密文分组进入移位寄存器中,被用作下一轮加密的输入,导致下一轮加密的输出也受到影响。这个过程持续进行,直到错误从移位寄存器的另一端中移出,之后的密文才会被正确解密。
明文的1bit错误,会影响后面所有分组的密文,但解密的明文只有一个分组错误,所以无明文错误扩散。
影响范围:在n位CFB模式中,一个密文位的错误通常会影响当前块和接下来的m/n块密文的正确解密,其中m是算法分组长度的位数。
6)自同步优点:CFB是一种自同步流密码,这意味即使传输过程中出现错误,当错误从移位寄存器移出后,后续加密/解密不再依赖错误数据,系统自动恢复同步
7)不可抵御重放攻击。
8)类似于CBC,也可以进行字节反转攻击,不过,“收拾烂摊子的人”是这组密文后面的所有密文组。
9)加密和解密过程都使用分组密码的加密操作
应用:
实时性流数据加密(如视频音频),对特定部分数据进行随机访问的场景。
以AES算法8位CFB模式示例:
分组长度:AES的分组大小为128bit,反馈缓存器(即移位寄存器)初始存储IV(128bit)。
反馈机制:每次加密后,生成的8bit密文会被移入缓存器数据的最右侧,缓存器左移8bit。
加密流程:加密算法的输入始终是完整的128bit缓存器内容,输出结果截取前8bit与明文异或,生成8位密文。
错误扩散范围:由于缓存器长度远大于反馈位数(如8位AES-CFB模式的128位缓存器),单个8位密文错误需经过16轮(缓存器总长度/反馈位数=128/8=16)才会完全移出,导致错误影响后续16个8位明文块。
自同步能力:当错误完全移出缓存器后,系统恢复同步,后续解密正常。
本文中使用的部分图片来自于网络,如有侵权,请联系博主进行删除

浙公网安备 33010602011771号