为什么在 Diffie-Hellman 密钥交换中使用素数?
Why are prime numbers used in Diffie-Hellman key exchange?
Diffie-Hellman 密钥交换算法使用类似 2^8 mod n
的操作,其中 n
是质数。
使用素数而不是其他数字的原因是什么?
素数不会分解成更小的因子,这使得破解代码或散列比使用 12 更难,后者分解为 /2 或 /3 或 /4 或 /6。质数 7,小于 12,但只有 7 个因数,因此攻击向量较少。这是一个极端的过度简化,但希望能有所帮助。
这是一个具体的例子:
2^x mod 12
对于任何大于 1 的 x,这只有 2 个可能的值:4 或 8。由于这用于以类似的方式生成共享密钥,因此您最终会得到相同的两种可能性。换句话说,一旦您知道基数和 mod 是 2 和 12(任何监听对话的计算机都可以获取),您就会自动知道共享秘密加密密钥只能是一个两种可能性。只需要两个简单的操作就可以确定哪个解密消息。现在让我们看一个素数 mod:
2^x mod 13
对于 x>1,这有 12 种不同的可能性。它还可以生成 12 个不同的可能共享密钥。因此,与 mod 12 示例相比,基于此素数 modulus 解密消息需要多 6 倍的计算能力。
2^x mod 14 有 4 种可能。
2^x mod 15 有 4
2^x mod 16 在 x=3 后完全坍缩成 1 种可能性(这就是为什么选择符合 DH 要求的基数很重要的原因)
2^x mod 17 有...你猜对了,有 16 种可能性!质数不是很酷吗? :)
因此,是的,modulus 数的可分解性与加密消息的可破解性密切相关。
Diffie-Hellman 密钥交换算法使用类似 2^8 mod n
的操作,其中 n
是质数。
使用素数而不是其他数字的原因是什么?
素数不会分解成更小的因子,这使得破解代码或散列比使用 12 更难,后者分解为 /2 或 /3 或 /4 或 /6。质数 7,小于 12,但只有 7 个因数,因此攻击向量较少。这是一个极端的过度简化,但希望能有所帮助。
这是一个具体的例子:
2^x mod 12
对于任何大于 1 的 x,这只有 2 个可能的值:4 或 8。由于这用于以类似的方式生成共享密钥,因此您最终会得到相同的两种可能性。换句话说,一旦您知道基数和 mod 是 2 和 12(任何监听对话的计算机都可以获取),您就会自动知道共享秘密加密密钥只能是一个两种可能性。只需要两个简单的操作就可以确定哪个解密消息。现在让我们看一个素数 mod:
2^x mod 13
对于 x>1,这有 12 种不同的可能性。它还可以生成 12 个不同的可能共享密钥。因此,与 mod 12 示例相比,基于此素数 modulus 解密消息需要多 6 倍的计算能力。
2^x mod 14 有 4 种可能。
2^x mod 15 有 4
2^x mod 16 在 x=3 后完全坍缩成 1 种可能性(这就是为什么选择符合 DH 要求的基数很重要的原因)
2^x mod 17 有...你猜对了,有 16 种可能性!质数不是很酷吗? :)
因此,是的,modulus 数的可分解性与加密消息的可破解性密切相关。