我理解RSA是如何工作的(生成私钥/公钥对,将公钥发送给您想要交谈的任何人,用公共密钥加密,用私有密钥解密),但是这里面没有漏洞吗?
假设A想向B发送消息,A生成他的公钥/私钥对,然后通过网络将公钥发送给B,对吗?是什么阻止C来拦截这个公钥,生成他自己的公钥,然后把他自己的公钥发送给B?然后,当B将他的公钥发回给A时,C可以拦截它,存储它,并将他自己的公钥发送给A。
现在,当A用他认为是B的公钥(但实际上是C的)发送加密的消息时,C会截取这条消息,解密它,然后使用B的实际公钥再次加密它。
这个能行吗?若否,原因为何?这仅仅是一个使用安全网络发送公钥的问题吗?
发布于 2018-07-12 20:47:05
发布于 2018-07-12 20:46:48
您描述的问题确实可能发生-- RSA (或任何其他加密方案)中没有任何东西可以阻止它。这就是所谓的。“密钥分配问题”。
是的,通过安全通道交换密钥,而不是不安全的消息,是解决问题的方法之一。根据用例的不同,可能有其他有用的方法(或不)。
在TLS中,这是通过已经在另一边设置了一些东西来防止的--各种CA的公共版本,预先安装在操作系统或浏览器中。它可以用来检查发送的公钥的签名,这是CA首先做的。
(与此问题并不真正相关,但没有人直接用RSA加密消息。例如:因为它很慢。用AES加密消息,然后只使用RSA加密AES密钥就更常见了,但这并没有改变这里的问题)。
发布于 2018-07-12 20:46:11
从狭义上讲,你没有错。非对称加密提供的保密性和真实性保证的前提是,所有各方都拥有对应方公钥的真实副本。如果一个对手冒充你的对手,愚弄你接受他们自己不真实的钥匙作为真正的交易,一切都会分崩离析。
非对称加密的优点是,这种身份验证可以在整个公众都能看到的某个通道上进行。可以这样想:所有的密码学都要求参与者在某个时候使用某种间歇性的安全通道来设置密码系统。纯对称密码学要求参与者建立共享密钥的秘密和真实的通道。非对称密码术改进了这一点,因为它只需要一个真实的通道--您可以在偷听者的视线中验证对应方的公钥。
https://security.stackexchange.com/questions/189468
复制相似问题