9.5 自同步序列密码
自同步序列密码就是密钥流的每一位是前面固定数量密文位的函数[1378]。军方称为密文自动密钥(CTAK)。其基本思想是在1946年成形的[667]。
图9.8描述了其工作原理。其中,内部状态是前面n比特密文的函数。该算法的密码复杂性在于输出函数,它收到内部状态后生成密钥序列位。
因为内部状态完全依赖前面n个密文位,所以解密密钥流发生器在收到n个密文位后自动跟加密密钥流发生器同步。
在该模式的智能化应用中,每个消息都以随机的n位报头开始。这个报头被加密、传输、解密,在n位密文之前整个解密是不正确的,直到之后两个密钥流发生器同步。
自同步密码的缺点是错误扩散。对传输中每一个密文位被窜改,解密密钥流发生器就有n位密钥流位不能正确生成。因此,一位密文错误就会导致n位相应的明文错误,直到内部状态里面不再有该错误位。
安全问题
自同步序列密码算法同样对回放攻击很敏感。Mallory先记录下一些密文位。接着,一段时间后他就用这些记录代替当前数据流。在一些初始位过后,当收端重新同步时,一些旧的密文仍正常的解密。接收端没有办法知道它是不是当前数据,但旧的数据则可以被回放。如果不用时间邮戳,Mallory就可以回放相同的信息(当然假定密钥还没被更换)使银行相信并将大笔的钱一遍又一遍的存入自己帐户。在频繁再同步情况下,该方案的还有其它可利用的弱点[408]。
图 9.8 自同步密钥流发生器