0

既然公钥用来加密消息,私钥用来解密消息,那么私钥和公钥怎么可能兼容呢?绿色钥匙怎么能打开红色锁的门?

这是我的想法:

Hello被公钥加密,变成%/))=. 然后私钥解密消息。但是由于密钥不同,因此生成的消息可能与已发送的消息不同 -&#(($例如。

当然,我知道现实生活中使用的加密/解密算法是不同的,但问题是可以理解的。密钥是如何制作的,使得一个只能加密,另一个只能解密,同时两者都有足够的信息以使它们相互兼容?是处理这个问题的算法吗?

4

3 回答 3

3

公钥密码学首先由 W. Diffie 和 M. Hellman 在他们的开创性论文“密码学新方向”(1976 年)中描述,他们在其中建议这种系统将基于陷门函数。这样的假设函数很容易计算,但有效地计算它的逆函数需要额外的信息,这将是私钥。(这篇论文很短,值得一读,很少有 11 页的论文对其领域有这么大的贡献。)

如另一个答案中所述,此类函数的一个示例可以基于整数分解问题:将两个素数相乘很容易,但是没有有效的(经典)算法来找到乘积的分解。后来,Rivest、Shamir 和 Adleman 发明了第一个基于该假设的公钥算法(虽然很合理,但尚未得到证实)。

简而言之,您可以将一对作为(e, N)公钥,其中

  • e是小的素数(通常是 65537)
  • N是两个非常大的不同素数p和的乘积q,这样gcd(e, φ(N))=1, 哪里φ(N) = (p-1)*(q-1)

然后你可以找到d,这样:

cipher = plaintext ^ e mod N
plaintext = cipher ^ d mod N

d是私钥。这里的诀窍是,为了找到这样d的 ,有必要知道N, 即p和的因式分解q(正如@kelalaka 在评论和他的帖子中指出的那样,分解可能不需要在没有密钥的情况下恢复纯文本,但还没有人找到解决方法,所以这是另一个假设。)你可以阅读更多上面的 RSA 链接中的详细信息。

于 2021-08-10T11:31:58.753 回答
1

用铅笔和纸计算 RSA 很容易。它不提供任何安全性,但它可以帮助您了解公钥和私钥如何不同但如何协同工作。

让我们使用模数n = 143,公钥e = 7 和私钥d = 43。这些数字的确定方式有一些“魔力”,为了提供真正的安全性,它们需要很多, 大得多。这里的问题是 143 是公钥的一部分,它足够小,可以很容易地分解为素数 11 和 13,它们是导致私钥的神奇成分。

我们可以用这个密钥对加密数字 [0, n),因此我们将用数字 0-25 代替字母 A-Z。

RSA 加密是 c = m e mod n,其中m是“消息”,即我们的编码字母,c是该字母的密文。让我们一个字母一个字母地加密“HELO”。

  • H -> 7: 7 7 mod 143 = 6
  • E -> 4: 4 7 mod 143 = 82
  • L -> 11: 11 7 mod 143 = 132
  • O -> 14: 14 7 mod 143 = 53

RSA 解密为 m = c d mod n

  • 6 43 mod 143 = 7 -> H
  • 82 43模 143 = 4 -> E
  • 132 43模 143 = 11 -> L
  • 53 43模 143 = 14 -> O

因此,您可以看到公钥 7 与私钥 43 不同,但它们在模幂运算下与模数 143 一起工作以提供可逆变换。

这是用于提出可以协同工作的密钥对的“魔法”。

  1. 选择两个素数:p = 11, q = 13
  2. 计算模数:n = pxq = 143
  3. 计算总:λ(n) = lcm(p - 1, q - 1) = lcm(10, 12) = 60
  4. 选择与 λ(n) 互质的公钥 e:e = 7
  5. 确定私钥 d:d = e -1 mod λ(n) = 43
于 2021-08-12T17:21:45.577 回答
-1

我认为您对此略有误解;尝试用错误的密钥解密它并不会得到错误的答案,您根本无法获得有效的解决方案...

如果你乘以 2 个素数(1 是私钥,另一个是公钥),那么它唯一能被它自己整除的就是 1 和 2 个素数。

虽然您可以检查每个素数以找出它是由哪些素数组成的(通过检查它是否分成一个整数),但没有快速的方法可以做到这一点。

例如,如果我说 91,它不是由 7 和 13 组成的,并且如果您尝试将 91 除以其他任何值,您将不会得到整数答案。

当这些数字更长时,计算所需的时间呈指数级增长,因此需要一台现代计算机直到宇宙热死才能解决它们,因此它实际上是牢不可破的。

汤姆斯科特在这段视频中解释得很好:https ://www.youtube.com/watch?v=CINVwWHlzTY

于 2021-08-10T11:15:19.710 回答