跳转到内容

密码学/密钥长度

来自维基教科书,开放世界中的开放书籍

密钥长度

[编辑 | 编辑源代码]

密钥长度与安全性成正比。在现代密码系统中,密钥长度以比特为单位(例如,AES 使用 256 位密钥),密钥的每一位都呈指数级地增加了 暴力破解 攻击的难度。需要注意的是,除了增加安全性之外,每一位也会减慢密码系统的速度。因此,密钥长度——就像所有安全事项一样——是一种权衡。在这种情况下,权衡的是实用性和安全性。

此外,不同类型的密码系统需要截然不同的密钥长度才能保持安全性。例如,基于模运算 的公钥系统,如 Diffie-HellmanRSA,需要相当长的密钥(通常约 1,024 位),而对称系统(包括分组密码和流密码)则可以使用较短的密钥(通常约 256 位)。此外,椭圆曲线公钥系统能够在与对称系统类似的密钥长度下保持安全性。虽然大多数分组密码只使用一个密钥长度,但大多数公钥系统可以使用任意数量的密钥长度。

为了说明依靠不同的密钥长度来实现相同安全级别的例子,现代公钥系统实现(参见 GPGPGP)给用户提供了密钥长度选择。通常在 768 到 4,096 位之间。这些实现使用公钥系统(通常是 RSAElGamal)来加密随机生成的块密码密钥(128 到 256 位),该密钥用于加密实际消息。

与密钥长度同等重要的是信息熵。熵,一般定义为“系统无序程度的度量”,意味着随机性。即,如果密钥的所有位都没有被安全地生成并且随机性相同(无论是真正的随机还是密码安全的 PRNG 操作的结果),那么系统就缺乏熵,并且更容易受到攻击。例如,如果一个 128 位密钥只有 64 位熵,那么密钥的有效长度就是 64 位。这可以在 DES 算法中看到。DES 实际上有 64 位密钥长度;但是,有效密钥长度是 56 位,因为 8 位用于奇偶校验。

常见错误

[编辑 | 编辑源代码]

长分组密码密钥与短分组密码密钥相比的优势在于,在短数字中筛选物理随机熵的难度更大。可能我们无法将随机性筛选机制保密,因此我们无法在没有能量的情况下获得 2^256 的熵随机性,这将与适当的熵成线性关系。例如,随机生成器实现的典型错误是简单地将个位数字以 0.5 的概率相加。这种生成器很容易被相邻位波函数的暴力破解所破解。从这个角度来看,使用具有大量数字的分组密码,例如 10^1024 或更多,是有实际意义的。 [需要引用]


另一个典型的错误是使用公钥基础设施来加密会话密钥,因为在这种情况下,使用 Diffie-Hellman 算法更可取。使用 Diffie-Hellman 算法来创建会话密钥可以提供“前向安全性”。

华夏公益教科书