【发布时间】:2017-04-28 05:08:25
【问题描述】:
Diffie-Hellman 密钥交换算法使用 2^8 mod n 之类的运算,其中 n 是质数。
使用素数而不是其他数字的原因是什么?
【问题讨论】:
-
您应该在math.stackexchange.com 上提问。这里可能是错误的地方。
标签: cryptography public-key-encryption diffie-hellman
Diffie-Hellman 密钥交换算法使用 2^8 mod n 之类的运算,其中 n 是质数。
使用素数而不是其他数字的原因是什么?
【问题讨论】:
标签: cryptography public-key-encryption diffie-hellman
质数不会分解成更小的因子,这使得破解代码或散列比使用 12 更难,例如 12 分解为 /2 或 /3 或 /4 或 /6。质数 7 小于 12,但只有 7 的因数,因此攻击向量较少。这是一个极端的过度简化,但希望能有所帮助。
这是一个具体的例子:
2^x mod 12
对于任何大于 1:4 或 8 的 x,这只有 2 个可能的值。由于它用于以类似的方式生成共享密钥,因此您最终会得到相同的两种可能性。换句话说,一旦您知道 base 和 mod 是 2 和 12(任何监听对话的计算机都可以获取),您就会自动知道共享密钥只能是两种可能性中的一种。只需要两个简单的操作来确定哪个解密消息。现在让我们看看一个主要的模组:
2^x mod 13
这有 12 种不同的可能性,对于 x>1。它还可以生成 12 个不同的可能共享密钥。因此,与 mod 12 示例相比,基于此素数模数解密消息需要多 6 倍的计算能力。
2^x mod 14 有 4 种可能性。
2^x mod 15 有 4
2^x mod 16 在 x=3 后完全折叠为 1 种可能性(这就是为什么选择符合 DH 要求的碱基很重要)
2^x mod 17 有……你猜对了,16 种可能性!素数不是很酷吗? :)
因此,是的,模数的可分解性与加密消息的可破解性有关。
【讨论】:
a mod n 与 1 < a < n 和 n > 0 的结果是介于 1 和 n -1 之间的数字,但当 a 是 2 的幂时,则不是不再真实。它不依赖于 n 是一个素数,而是依赖于用于 a 的值。