《图解密码技术》第四章
- 值:nonce.
OFB模式
什么是OFB模式
OFB模式:输出反馈模式,Output-Feedback模式。密码算法的输出会反馈到密码算法的输入中。
OFB模式是将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”,与CFB模式相似
初始化向量
CBC/CFB/OFB模式都需要初始化向量,一般来说,在每次加密时生成一个不同的随机比特序列作为初始化向量。
OFB模式与CFB模式的对比
两者的区别仅仅在于密码算法的输入。
- CFB模式中,密码算法的输入是前一个密码分组,也就是将密文分组反馈到密码算法中
- OFB模式中,密码算法的输入是密码算法的前一个输出,也就是将输出反馈给密码算法
- CFB模式中,只能按顺序加密分组
- OFB模式中,加密生成密钥流的操作和进行XOR运算的操作是可以并行的。
CTR模式
CTR模式:计数器模式,CounTeR模式。是一种通过将逐次累加的计时器进行加密来生成密钥流的流密码。
每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。
计数器的生成方法
每次加密时都会生成一个不同的值作为计数器的初始值,分组为16字节时,前八个字节是nonce,后八个字节为分组序号。加密过程中会发生如下变化:
因此,每个分组中得到计数器的值都不同,加密所得到的密钥流也不同。
OFB模式与CTR模式的对比
- 两者都属于流密码。
- OFB模式将加密的输出反馈到输入,而CTR模式则是将计数器的值用作输入。
CTR的特点
- 与OFB模式一样,在程序实现上比较容易
- 可以以任意顺序对分组进行加密和解密,OFB模式不具备。计数器的值由nonce和分组序号可以计算出来
- 任意顺序处理分组意味着能够实现并行计算,速度非常快。
错误与机密性
CTR模式具备与OFB模式差不多的性质。若有一个密文分组被反转,则只有与之对应的比特会被反转,不会放大错误。
在OFB中,如果一个分组进行加密后碰巧和加密前是相同的,那么这个分组之后的密钥流就会变成同一值的不断反复,而CTR模式不存在这个问题。