Encryption N位密钥大小的含义是什么

Encryption N位密钥大小的含义是什么,encryption,cryptography,Encryption,Cryptography,我读过密码学中的密钥大小,但我不太明白密钥大小的具体含义是什么 例如在维基百科中说: “Triple DES的密钥大小为168位,但最多提供112位 安全性方面,因为已知复杂度为2^112的攻击“ 这是否意味着,如果我们使用蛮力2^112次,那么我们可以破解所有3DES散列 128位加密和1024位加密的区别是什么?这意味着,通过2112次尝试加密,您可以保证找到用于使用3DE加密的密钥。然而,它使用了一种“中间相遇”(MITM)攻击,这种攻击也需要大量内存 还要注意,3DES实际上只需要112

我读过密码学中的密钥大小,但我不太明白密钥大小的具体含义是什么
例如在维基百科中说:

“Triple DES的密钥大小为168位,但最多提供112位 安全性方面,因为已知复杂度为2^112的攻击“

这是否意味着,如果我们使用蛮力2^112次,那么我们可以破解所有3DES散列
128位加密和1024位加密的区别是什么?

这意味着,通过2112次尝试加密,您可以保证找到用于使用3DE加密的密钥。然而,它使用了一种“中间相遇”(MITM)攻击,这种攻击也需要大量内存

还要注意,3DES实际上只需要112位关键材料。您执行加密/解密/加密(EDE,最常见)或解密/加密/解密(DED)循环,但第一个和最后一个可以使用相同的密钥。168位表示每个周期使用一个单独的键。那很好,但不是完全必要

就密钥本身而言,它基本上只是一组已知的位的集合,但(根据强烈的偏好)其他人很难或不可能预测或猜测。在典型情况下,您不会直接使用用户输入的内容作为密钥。至少您可以通过加密散列来运行它,以获得一个恒定大小的结果。考虑到用户通常输入的内容的可预测性,您通常希望更进一步:生成一个更随机的密钥,并使用用户的密码仅允许访问该密钥。这意味着(例如)尽管在物理访问用户计算机的情况下恢复用户的密钥可能相当容易,但“通过线路”发送的数据(通常更容易截获)使用的密钥比其密码本身更难预测

就128位和1024位而言,这两者通常并不完全可比。这里的巨大数量取决于攻击的难度。最坏的情况通常是密钥耗尽攻击。这基本上意味着你只需尝试每一个可能的关键点,直到你找到一个“工作”

如果这是已知的针对算法的最佳攻击,那么128位左右的密钥大小几乎肯定足以对抗几乎任何可以想象的对“传统”技术的改进——也就是说,即使我们假设CPU将在很长一段时间内继续快得多,并且假设可以构建数十甚至数百太赫兹的处理器,执行2128次操作以耗尽关键空间仍然是完全不切实际的(比如,有数百万个100太赫兹处理器,你仍然无法在宇宙热死之前完成)

使用对称加密的较大密钥大小主要是为了防止实际的量子计算机。一台具有足够容量的量子计算机可以执行与传统计算机不同类型的攻击,并且可以比传统计算机更快地耗尽密钥空间。这就是事情的根源

当你得到的密钥远远大于这个值时,你通常会处理像RSA这样的加密,对于这种加密,我们知道实际的攻击并不涉及尝试加密,直到你找到一个“有效”的密钥。在RSA的例子中,需要公开的部分信息可以(相当容易)转换为两个素数的乘积。如果您可以将该数字乘以因子以获得这两个素数,则可以相当容易地破坏加密

因此,在这种情况下,我们需要的强度是基于产品足够大,考虑它是不切实际的。适合用作RSA密钥的最大数字是768位,众所周知,该数字已被分解

所以,如果您对安全性和装备精良的攻击者感兴趣,那么对于RSA,您显然需要一个比这更大的密钥

请注意,对2DE的“中间相遇”攻击、对2密钥3DES的攻击以及对大RSA密钥的分解都有一些共同特点:这使得攻击它们与攻击普通DES截然不同。有了DES,你可以很容易地在你花了多少钱和你得到结果的速度之间进行权衡。(几乎)什么都不花,要花很长时间才能得到结果,但最终你会的。你越愿意花钱,你就越快得到结果

但是,对于其他攻击,您需要大量内存来执行攻击。对于这些,你(大多数情况下)不能只扩展东西,所以花一半的钱就能得到一半快的结果。相反,您需要切换到(例如)使用SSD而不是DRAM进行存储,这样会立即失去很多速度。或者,您可以切换到另一种算法,该算法渐进地不太有利,但进入门槛不太高。同样,对于一个实际的攻击,你通常会以这种方式很快失去很多


一句话:对于某些攻击,您可以在时间和金钱之间获得相当“平滑”的权衡。与其他人一起,你会得到更多的阶跃函数;在许多情况下,实际的攻击只会超出大多数人的能力(在大多数情况下,现在和未来相当长一段时间内)。

维基百科在密钥大小上有一个条目:

好的。让我们一次拿一个

关键尺寸

在密码学中,有三个主要元素

明文、密文和密钥

该密钥与加密算法相结合,对明文进行加密,得到密文。这就像函数的状态,即:

 K = "This is the key".
 P = "Plaintext".
 C = Encrypt(P,K).

 // This would result in some ciphertext.
如果K不等于“这是一个键”,而等于“这是另一个键”,那么C的值就会不同

keysize是所用密钥的大小。例如,AES256使用256位密钥。这意味着密钥的长度实际上是256个二进制数

128位加密和1024位加密的区别是什么