9.8 输出反馈模式

    “输出反馈(OFB)”模式是运行分组密码作为同步序列密码算法的一种方法。它与密码反馈模式相似,而OFB是将前一个n-比特输出分组送入队列最右边位置(见图9.11)。解密是一个逆过程。称它为n-比特OFB,在加解密两边,分组算法都以加密模式使用。这种方法有时也叫“内部反馈”,因为反馈机制独立于明文和密文而存在的[291]。          

9.118-比特输出反馈方式

    如果n是该算法分组的大小,那么n-比特OFB看上去象(参见图9.12):

        Ci =Pi ⊕S ; Si =Ek(Si -1

        Pi =Ci⊕Si  ;Si=Ek(Si -1

    Si是状态,它独立于明文和密文。

    OFB模式有一个很好的特性就是大部分工作可以离线进行,甚至在明文存在之前。当消息最终到达时,它可以与算法的输出相异或产生密文。

图9.12  8-比特OFB

初始化向量

    OFB移位寄存器也必须装入IV初始化矢量, IV应当唯一但不须保密。

错误扩散

    OFB模式没有错误扩散。密文中单个比特的错误只引起恢复明文的单个错误,这点对一些数字化模拟传输非常有用,象数字化声音或视频,这些场合可以容忍单比特错误,但不能容忍扩散错误。

    另一方面,失步是致命的。如果加密端和解密端移位寄存器不同,那么恢复的明文将是一些无用的杂乱数据,任何使用OFB的系统必须有检测失步的机制,和用新的(或同一个)IV填充双方移位寄存器重新获得同步的机制。

关于OFB的安全性

    OFB模式的安全分析[588,430,431,789]表明,OFB模式仅当反馈量大小跟分组大小相同时才有用。例如,在64-比特OFB模式中你只能用64-比特分组算法。即使美国政府授权在DES[1143]中使用其他大小的反馈,但应尽量避免。

    OFB模式将密钥流与明文异或。密钥流最终会重复。对同一个密钥使密钥流不重复是很重要的,否则,就毫无安全可言。当反馈大小与分组大小相同时,分组密码算法起到m-比特数值置换(m是分组长度)的作用,并且平均周期长度为2m-1,对64-比特的分组长度,这是一个很大的数。当反馈大小n小于分组大小时,平均周期长度将降到约2m/2。对64-比特分组算法,就是232——不够长。

OFB模式下的序列密码

    用OFB模式也能产生序列密码。在这种情况下,密钥影响下一状态函数(见图9.13)。输出函数并不依赖密钥;它经常简单地使用内部状态的某个单独位或多位的异或值。密码复杂性在于下一状态函数,该函数依赖于密钥。这种方法被称为内部反馈[291],因为对密钥产生算法来说,反馈机制存在于内部。

    在该模式的一个变体中,密钥只决定密钥流产生器的初始状态。在密钥设置好产生器的内部状态后,产生器就不再受到干扰。