9.13 分组密码算法与序列密码算法
尽管分组和序列密码算法非常不同,但分组密码也可作为序列密码使用,反之亦然。我所见到的对两者最好的区别定义是在文献[1362]中:
分组密码算法是对一个大的明文数据块(分组)进行固定变换的操作;
序列密码算法是对单个明文比特的随时间变换的操作。
在现实中,分组密码似乎更加通用(如,它们能够用四种模式中的任意一种),而序列密码好象更容易用于数学分析。有大量序列密码分析和设计方面的理论著作——由于某些原因,大多数在欧洲完成。自从电子技术发明以来,它们被各国军方所使用。不过,情况好象在改变,近年来,有大量的论文是关于分组密码设计的。或许不久以后,分组密码设计方面的理论就能象现在序列密码设计的理论一样丰富。
然而,两者之间的区别主要体现在实现上。每次只能对一个数据比特进行加解密的序列密码算法并不适用于软件实现。分组密码算法就可以很容易的用软件实现,因为它可以避免耗时的位操作,并且它易于处理计算机界定大小的数据分组。当然另一方面,序列密码更适合用硬件实现,因为使用硅材料可以非常有效的实现它。
这些是值得考虑的事情。对数字通信信道上的硬件加密设备来说,每经过一位就加密一位是非常有意义的。这是这些设备的长处。反之,用软件加密设备加密每一个分离的单个位将没有意义。也有一些特殊的场合:在一个计算机系统中逐位、逐字节加密是必须的——例如,对键盘和CPU之间的连接进行加密——但是通常地讲加密分组至少是数据总线的宽度。