我不明白算法如何能够使用公钥加密明文但却无法使用相同的密钥对其进行解密。有人可以用最简单的形式解释这个过程,并定义数学术语吗?
答案 0 :(得分:4)
在非对称密钥的核心,总有一些数学身份在计算上难以处理。典型的例子是RSA算法。它的数学基础是有b
,m
,n
等数字(b^m)^n = b
(在模运算中)。也就是说,如果b
是我的消息,并且m
和n
是非对称密钥的两个部分,则一个密钥可以破译另一个密钥加密的内容。也就是说,b^m
以及b^n
用作密文,可以通过将它们提升到相应的其他功率来解密。这些是安全密码的原因是从b
获取b^m
在计算上是不可行的(即使您知道值m*n
,也需要公开)。因此,(m, mn)
和(n, mn)
对构成了非对称密钥对。
作为另一个不知道私密但仍然在双方之间共享另一个秘密的例子,考虑Diffie-Hellman密钥交换:这里Alice和Bob分别保留一个秘密号码x
和y
, nobody 其他人都知道。然后Alice告诉Bob c^x
,Bob告诉Alice c^y
,获取一些公共值c
。现在双方都可以计算出值c^xy
,但双方都不知道对方的秘密,也没有任何窃听者知道c^xy
的价值。这里的数学基础是,即使您现在x
,从c^x
获取c
在计算上也是不可行的。
答案 1 :(得分:4)
这样想。一些数学运算是可逆的。例如,考虑操作“乘以非零实数”。修复非实数s
并考虑f(x)
定义的操作x -> x * s
。然后这个操作是可逆的。实际上,如果您使用t = 1 / s
,则g(x)
定义的操作g(x) = x * t
具有g(f(x)) = x
的属性,以便f
可翻转。将x
视为消息,s
作为公钥,f
作为加密算法,t
作为私钥,g
作为解密算法。当然,这是一个可怕的算法,但这是非对称加密的全部:找到一个参数化的可逆数学运算。该参数提供公钥,“反向参数”提供私钥。
当然,通过加密,我们希望找到反向更难。实际上,the mathematics of RSA是最着名的非对称密钥算法,它非常复杂。它依赖于certain mathematical problem被认为非常困难的事实。
答案 2 :(得分:2)
您可以找到公钥加密here的相当好的解释。这并没有详细介绍所涉及的数学,因为它很复杂,不可能用简单的术语来解释。您可能还想看看这个相关问题的答案: