密码学中的密钥大小和块大小是什么意思?

信息安全 加密
2021-09-08 20:18:19

有人可以简单地解释对称密钥和块大小之间的含义和区别吗?

为什么 64 块大小不再安全并将其增加到 128(AES,...,Serpent)?那么密钥大小呢?

4个回答

对称密钥算法是一种使用相同密钥进行加密和解密的算法。对称密钥算法的示例有 AES、3DES、Blowfish。

另一方面,非对称密钥算法使用 2 个密钥,一个用于加密,一个用于解密。非对称密钥算法的设计方式使得从公钥中导出私钥是不可行的。一种常见的非对称密钥算法是 RSA。

术语块大小是指块密码。基本上,有两种类型的密码。

流密码- 该算法一次加密/解密消息 1 位。

块密码- 该算法逐块加密/解密消息,一个块指的是一组比特。常见的分组密码包括 AES - 适用于 128 位块和 Blowfish - 适用于 64 位块。

所有这些信息都可以在他们各自的维基百科条目中找到:

http://en.wikipedia.org/wiki/Symmetric-key_algorithm

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/Block_cipher

http://en.wikipedia.org/wiki/Stream_cipher

你问了 2 个不同但相关的问题。

为什么 64 位块大小不再安全,为什么他们将其增加到 128 位?

块密码中,固定大小(块大小)的纯文本数据被加密成大小完全相同的密文。但是,可能的密文块的总数只有 2 个块大小,并且当您仅使用该块数的平方根时,您有 50% 的机会出现重复块,这会泄漏信息。2 64的平方根是 2 32和 2 32个 2 3字节的块 = 2 35字节 = 32 GiB。因此,在具有全盘加密的 1 TiB 驱动器上,您预计会发现大约 1,000 个重复的密文块。(从这里的公式:(2 40 /2 32 /2 64 ) 公平地说,重复的密文块不是灾难,因为使用技术来确保相同的明文不会每次都加密为相同的密文,因此反过来也是如此:重复的密文不一定代表重复明文。更大的一点是计算能力和存储空间已经超过了 64 位密文块。

因此,当前的分组密码使用 128 位块,这使得不太可能在 Exbibytes(数百万 Tebibytes)中看到重复的数据,这在一段时间内应该足够了。由于块大小的增加,大多数其他形式的攻击同样变得更加困难。

密钥大小的含义是什么,为什么大小很重要?

密钥大小是用于加密数据的“秘密”的大小。在一个完美的密码中,你必须测试每一个可能的密钥,以保证你可以解密一些加密数据,平均而言,你必须尝试一半可能的密钥才能成功。当 DES 发布时,56 位是一个足够大的密钥空间,足以“足够硬”,以至于暴力破解在民用计算中是不合理的。然后在 1998 年,电子前沿基金会以 250,000 美元建造了一台机器来暴力破解 DES 。现在随着民用计算能力的爆炸式增长,特别是利用 GPU 中强大的并行计算,即使是 128 位也仅被认为对于最低级别的机密信息 SECRET 足够安全。

此外,没有完美的密码,许多攻击可以恢复部分密钥,因此较长的密钥提供了额外的安全性,即使部分密钥被恢复,仍有巨大的密钥空间等待暴力攻击。

AES、3DES、Blowfish... 是分组密码块密码是一种函数,它以给定大小(固定位数)的数据块和密钥(也是位序列,不一定与块大小相同)作为输入;并且输出是另一个与输入块大小相同的块。此外,对于一个固定的 key,函数必须是一个排列:两个不同的输入块将产生两个不同的输出块。

例如,Triple-DES(也称为 3DES)使用 64 位块和 192 位密钥(恰好Triple-DES 算法完全忽略了 192 个密钥位中的 24 个,所以我们常说 Triple-DES 使用 168 -bit 密钥;但是,符合标准的实现需要 192 位密钥,即 24 字节)。

加密和解密块很好,但通常我们想要加密“消息”,即长数据字节流,长度不一定是块大小的倍数,并且可能相当高(例如,您可以加密几个千兆字节的数据)。要将分组密码变成可以加密和解密消息的引擎,您需要使用一种操作模式制作好的模式是一门艺术;如果模式设计不当,有许多细微的缺陷会削弱安全性。块大小似乎是一个重要因素:在大多数模式下,当输入消息长度超过取决于块大小的阈值时,安全性会降低,有时甚至会急剧下降;即,如果您的分组密码使用n-bit 块并且您加密了超过2 n/2个数据块,那么您就有麻烦了。对于使用 64 位块的块密码,阈值约为 32 GB(2 32个 8 字节的块)。设计 DES 时,32 GB 是科幻小说;如今,32 GB 是 20 美元的 USB 闪存驱动器。

所以我们现在更喜欢具有 128 位块的块密码。这是AES的设计标准。

密钥大小是一个正交问题。分组密码的密钥是给定长度的位序列,这取决于分组密码的内部结构。不要求密钥长度以任何方式匹配块大小;但是,密码学家喜欢二进制,因此密钥长度通常是 2 的幂,例如 128 或 256,块大小也是如此。AES 已被定义为使用 128、192 或 256 位的密钥。

安全所需要的是攻击者有两个可能的密钥来尝试所有这些(尝试所有可能的密钥直到找到匹配项称为穷举搜索)。每个额外的密钥位都会使可能的密钥大小的数量加倍。128 位密钥足够大,余量充足;更大的密钥大小适用于官僚合规、偏执的经理和在成年时感到受到威胁的开发人员。

关于您关于 64 位现在不如 128 位安全的问题:随着处理能力的每次增加,使用蛮力破解它所需的时间就会减少。本文为暴力破解密钥所需的时间提供了很好的参考:

http://tjscott.net/crypto/64bitcrack.htm

本文假设使用 2 个 Pentium 3.2 GHz 处理器来完成这项工作。处理器容量一直在增加,我们距离 64 核甚至 256 核商用处理器可能不会太远。