非对称加密算法如何保持单向解密和加密功能?

3
我不明白算法如何使用公钥加密明文,但不能使用相同的密钥解密。有人可以用最简单的方式解释一下这个过程吗?请在数学术语中定义。

RSA的维基百科文章包含你所需的信息。 - momo
你的直觉很好,确实令人惊讶。如果你真的想理解,你就必须自己尝试一些例子。 - President James K. Polk
请查看我们的姊妹网站有关密码学的非对称加密是如何工作的? - Paŭlo Ebermann
3个回答

4
在不对称密钥的核心中,总是有一些数学身份,这些身份在计算上是难以处理的。经典示例就是RSA算法。其数学基础是存在数字b,m,n,使得(b^m)^n = b(在模算术下)。也就是说,如果b是我的消息,并且m和n是非对称密钥的两个部分,则一个密钥可以解密另一个密钥加密的内容。也就是说,b^m和b^n都作为密文,可以通过将它们分别提高到另一个幂次方来解密它们。这些都是安全密码短语的原因在于,即使您知道值m * n(这也需要公开),从b^m获得b也是计算上的不可能性。因此,对偶键对(m, mn)和(n, mn)构成非对称密钥对。
作为不知道私密但仍然在两个当事方之间共享另一个秘密的另一个例子,考虑Diffie-Hellman密钥交换:这里,Alice和Bob各自保留一个秘密数字x和y,没有其他人知道。然后,Alice告诉Bob c^x,Bob告诉Alice c^y,其中c是某个公共值。现在,双方都可以计算出c^xy的值,但是双方都不知道对方的秘密,也没有任何窃听者知道c^xy的值。这里的数学基础是从c^x获得x也是计算上不可能的,即使您现在知道c。

4
把它想象成这样。有些数学运算是可逆的。例如,考虑“乘以一个非零实数”的操作。固定一个非真实数字s并考虑由x -> x * s定义的操作f(x)。那么这个操作是可逆的。实际上,如果你取t = 1 / s,那么由g(x) = x * t定义的操作g(x)具有g(f(x)) = x的性质,使得f是可逆的。将x视为消息,将s视为公钥,将f视为加密算法,将t视为私钥,将g视为解密算法。当然,这是一种糟糕的算法,但这就是非对称加密的全部内容:找到一个参数化可逆的数学运算。参数提供公钥,“反向参数”提供私钥。
当然,使用加密技术时我们希望找到逆运算更加困难。事实上,最知名的非对称密钥算法RSA的数学原理相当复杂。它依赖于一个特定的数学问题被认为极其困难。

2
你可以在这里找到一个相当好的公钥加密的解释。这里。它没有详细介绍所涉及的数学,因为它非常复杂,无法用简单的术语来解释。你可能还想看一下这个相关问题的答案:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接