在现代密码学中,对称加密密码一般分为流密码块密码块密码根据一个固定长度的位元串来进行操作。块大小就是这个位串的长度。输入(明文)和输出(密文)的长度是相同;输出不短于输入——鸽巢原理将导致逻辑上密码一定可逆的事实——并且不希望输出长于输入。

NIST宣布进行高级加密标准评选过程(AES竞赛)之前,大多数块密码使用类似资料加密标准(DES)的64位(8字节)块大小。不过生日问题告诉我们,在累计一定数量的块之后,所有可能的块的数量变为原来的平方根,将有大约50%的概率两个块(或者更多块)相同,这会开始泄露关于明文的信息。因此,即使当使用适当的加密模式(例如CBC或OFB)时,也只有232 × 8 B = 32 GB的数据可以在同一个密钥下被安全地传送[来源请求]。在现实中,为了保证更大的安全性,一般会限制使用同一个密钥加密的过多的数据,比如只加密几百兆字节。曾经这个数据的数量被认为是相当大、足够用的。但在今天,这个上限很容易被超过。如果加密模式没有适当地随机扰乱输入,这个上限会更低。

因此,AES的候选算法要求支持128位(16个字节)的块大小。这样对于连续加密最264 × 16 B = 256 艾字节的数据都是可以接受的,并在未来的几年内是充分安全的。AES竞赛的最终获选算法Rijndael,支持128、192和256位的块大小和密钥位数,但在AES中总是使用128位的块大小。AES标准未接纳额外的块大小。

还有许多块密码,如RC5,支持可变的块大小。它的Luby-Rackoff结构和Outerbridge结构,能够增加密码的有效块大小。

相较而言,Joan Daemen3-Way算法和BaseKing算法使用不常见的块大小,分别是96位和192位。

参见

编辑

参考资料

编辑