0

我在 Cryptography 中读到了 Key_size,但我不完全理解 Key size 的具体含义是什么?
例如在维基百科中说:

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

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

4

3 回答 3

1

Okay. Let's take this one at a time.

Key size

In cryptography, you have three major elements.

The plaintext, the ciphertext and the key.

The key is combined with the encryption algorithm to encrypt the plaintext, and get the ciphertext. It's like the state of a function, that is:

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

 // This would result in some ciphertext.

If K was not equal to "This is the key", and was equal to "This is another key", then the value of C would be different.

The keysize is the size of the key used. For example, AES256 uses a 256 bit key. That means that the key is literally 256 binary numbers long.

What is the difference between 128 bit encryption and 1024 bit encryption?

The difference is in the title. 128 bit encryption encrypts data with a 128 bit key. 1024 bit encryption encrypts with 1024 bits of data. The important thing to note here is that with 128 bits, you're usually looking at a Symmetric Key Cipher, and with 1024 bits, you're usually looking at an Asymmetric Encryption Algorithm.

Brute Force Attack

Yes. Following the AES256 example, if you perform 2^256 possible combinations of a key, you will eventually crack any and all AES256 ciphers. However, 2^256 is a massive number, and it's considered computationally unfeasible to attempt that value.

于 2013-03-09T17:33:11.227 回答
0

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

另请注意,3DES 只需要 112 位的密钥材料。您执行加密/解密/加密(EDE,最常见)或解密/加密/解密 (DED) 循环,但第一个和最后一个可以使用相同的密钥。168 位意味着您为每个周期使用单独的密钥。这很好,但并非完全必要。

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

就 128 位与 1024 位而言,两者通常不完全可比。这里很大一部分取决于攻击的难度。最坏的情况通常是密钥耗尽攻击。这基本上意味着您只需尝试所有可能的键,直到找到一个“有效”的键。

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

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

当您获得比这大得多的密钥时,您通常会处理像 RSA 这样的加密,已知实际攻击涉及进行试用加密,直到您找到“有效”的密钥。在 RSA 的情况下,需要公开的部分信息可以(相当容易地)转换为两个素数乘积的大数。如果您可以分解该数字以获得这两个素数,则可以相当容易地破解加密。

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

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

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

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

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

于 2013-03-09T17:31:30.247 回答
-1

The wikipedia has an entry on the key size: http://en.wikipedia.org/wiki/Key_size

于 2013-03-09T17:32:38.950 回答