【问题标题】:Why are prime numbers used in Diffie-Hellman key exchange?为什么在 Diffie-Hellman 密钥交换中使用素数?
【发布时间】:2017-04-28 05:08:25
【问题描述】:

Diffie-Hellman 密钥交换算法使用 2^8 mod n 之类的运算,其中 n 是质数。

使用素数而不是其他数字的原因是什么?

【问题讨论】:

标签: cryptography public-key-encryption diffie-hellman


【解决方案1】:

质数不会分解成更小的因子,这使得破解代码或散列比使用 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 种可能性!素数不是很酷吗? :)

因此,是的,模数的可分解性与加密消息的可破解性有关。

【讨论】:

  • 你能用 2^4 mod 7 和 2^4 mod 10 这两个场景来澄清一下吗?请在此处扩展风险因素如果我使用 2^4 mod 10 而不是 2^4 mod 7
  • 当一个公式需要模素数时,通常意味着他们需要输出空间是一个组(封闭、关联、身份、逆),所有模素数空间都有。我从来没有见过 mod-prime 中的任何东西与可破解性有关。
  • @JeremyGurr 我已经尝试了 2^x mod 17,但这并没有产生 16 种可能性。输出为 2、4、8、16、15、13、9、1,之后序列重复。类似的情况发生在 2^x mod 23 上。为什么一些素数(p 说)产生 p-1 种可能性,而另一些却没有?是否有必须考虑的素数的特殊性质? .
  • @ShashankShet 通常,a mod n1 < a < nn > 0 的结果是介于 1 和 n -1 之间的数字,但当 a 是 2 的幂时,则不是不再真实。它不依赖于 n 是一个素数,而是依赖于用于 a 的值。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 2018-06-10
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多