块大小
此条目没有列出任何参考或来源。 (2018年9月29日) |
在现代密码学中,对称加密密码一般分为流密码和块密码。块密码根据一个固定长度的位元串来进行操作。块大小就是这个位串的长度。输入(明文)和输出(密文)的长度是相同;输出不短于输入——鸽巢原理将导致逻辑上密码一定可逆的事实——并且不希望输出长于输入。
在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 Daemen的3-Way算法和BaseKing算法使用不常见的块大小,分别是96位和192位。