“密钥长度”和“位强度”有什么区别?

信息安全 密码学
2021-08-25 14:19:15

有时,我听到可以互换使用的术语“密钥长度”和“位强度”。这些是一样的吗?还是他们不同?

3个回答

我会使用位长度来表示某些东西的大小,例如密钥。

我会使用位强度作为攻击成本的以 2 为底的对数。即,破坏某些东西需要大约 2^n 次基本操作。

对n位密钥的暴力攻击只是试图猜测密钥,平均会花费2^(n-1)次加密函数调用,这导致了这种以比特表示算法强度的惯例。

因此,您可以将“n 位强度”理解为“破解它的成本大约与破解具有n位密钥的对称加密算法一样多”。

但它们在其他情况下有所不同。几个例子:

  • 长度为 2048 位的 RSA 密钥只有大约 112 位的强度。
  • 长度为 128 位的哈希只能具有 64 位的抗碰撞性。
  • 由于中间相遇攻击,3DES 采用 168 位密钥,但仅提供 112 位安全性。

它们非常相似,但略有不同。密钥长度只是用于加密操作的密钥的长度(以位为单位)。如果密钥是随机选择的并且算法没有任何漏洞,那么比特强度与密钥长度完全相同。

位强度是衡量事物对猜测的抵抗力(熵的数量)的量度。它也可以应用于密码之类的东西(从技术上讲,它是一种用于解锁信息的密钥,但与用于流加密的格式正确的加密密钥非常不同。)

许多事情会降低密钥的实际位强度。随机数生成器中的问题或对加密系统的密码分析攻击可以减少您必须进行的攻击系统的猜测次数,从而将位强度或密钥强度降低到低于密钥中实际使用的位数。

例如,假设我有一个 64 位长的密钥。密钥长度为 64 位,因为这是在流上用于对其进行编码的密钥长度。然而,假设我们发现字符串的第一个字节始终与密钥的第一个字节相同,这意味着我们可以消除许多猜测密钥的猜测。即使加密使用 64 位密钥,我们只需要猜测 56 位密钥,因为我们知道其中的 8 个,因此位强度只有 56 位。

同样,如果我们以密码为例,一个密码可能有 8 个字符长,因此需要 8 个字节(64 位)来存储,但如果密码只能是数字和大小写字母,那么很多值可以' t 被使用,因此位强度比密码完全是随机位而不是有限的字符集要低得多。

位强度k 时,这意味着:“该算法对无法计算至少 2 k-1 个基本操作的攻击者站稳了脚跟”。

位长k时,这意味着:“密钥,或者至少是密钥的主要组成部分,可以表示为k位的序列”。

穷举搜索是尝试所有可能的密钥,直到一个有效。这是所有攻击中最不微妙的。平均而言,如果位长为k,则需要 2 k-1次尝试才能找到实际密钥。因此,当算法是穷举搜索时,比特长度和比特强度是相等的,虽然是最愚蠢的攻击,但也是最好的(或至少是最知名的)。

穷举搜索是最好的攻击是强“对称”算法(如 AES 等对称加密、HMAC 等 MAC 算法......)的正常情况。AES-128 使用 128 位密钥,预计将提供 128 位的强度。另一方面,对于 RSA 或 ECDSA 等非对称算法,密钥不是简单的比特序列;它们有很多数学结构,可以利用这种结构更快地破解它们。例如,RSA 公钥的主要组成部分是一个称为数的大数,将模数分解为其素数足以恢复私钥。整数分解可以比简单地枚举可能的私钥更有效!

RSA 就是一个很好的例子。“RSA-2048”密钥是一个 RSA 密钥,其模数是介于 2 2047和 2 2048之间的数字当以二进制编码时,模数需要 2048 位——这是密钥位长度用最知名的算法分解模数将占用大约 2 100 次左右的简单操作,因此位强度约为 100 位。完整的公钥编码为位不仅需要存储模数,还需要存储公共指数,因此它需要多于 2048 位(不多,因为公共指数是一个短整数)。

将比特长度转换为非对称算法的比特强度需要处理许多微妙的细节并对未来的技术进行预测,有时还需要彻头彻尾的预测。有关此主题的大量数据,请参阅此站点。形式上,从 NIST 的角度来看,2048 位 RSA 密钥与具有 112 位强度的对称算法“一样好”(顺便提一下,这就是 3DES 所提供的)。