为什么SSH公钥位于服务器而不是客户端?


12

我不太了解将公用密钥保存在服务器上的理论。在类似于公用/专用密钥的密码箱中,要解锁爱丽丝的盒子,当公用密钥分发给鲍勃时,爱丽丝将保留专用密钥。服务器似乎扮演着密码箱的角色,那么为什么它拥有公钥呢?

Answers:


20

请记住,服务器确实具有私钥和公钥,该私钥和公钥与您作为用户生成的密钥对完全分开。服务器的私钥通常与服务器配置一起存储,并且当您尝试连接时,公钥由服务器传输。您的客户端将服务器的公钥与您的known_hosts文件进行比较。如果使用正确,则可以防止MITM攻击。

您拥有个人帐户的私钥。服务器需要您的公钥,以便它可以验证您尝试使用的帐户的私钥是否已授权。

因此,使用您的示例。Bob和Alice都有私钥和公钥。事先共享或作为连接一部分共享的公共密钥用于验证由私有密钥加密的数据是否合法。如果客户端没有公共密钥或具有其他公共密钥,您将收到可怕的警告。如果服务器没有客户端公共密钥,则将不允许您进入。


1
啊哈!这更有意义。我知道有一种防范MITM攻击的方法,但我不知道还有另一个密钥对:)感谢您的帮助!
康纳·格罗瑟

5

您作为用户是在登录时提供您的信息的人。因此,为了进行授权,您需要私钥,因为服务器会询问任何假装您的人(试图用您的身份登录)。名称)来证明这一点。

它的工作方式是服务器向您发送一些文本,要求您对其进行加密并使用您的公共密钥对其进行解密。只有拥有私钥的人才能执行此操作。



1

我想说一个更好的类比是服务器的公用密钥是带有锁闩的打开密码箱,您可以关闭(但不能打开),只有服务器可以打开它。真正的问题是,您是否信任公钥(真的是Alice's Box?),无论从哪里获得公钥,其定义都是公开的,这就是PKI的目的。


1

公钥是一个很大的数字,从数学上是从您的私钥派生的。

它是通过将两个数字链接在一起的方式得出的,

但这样一来,只有知道公钥的任何人都无法发现私钥。公钥是您发送给其他方,要向其验证身份或要向其发送加密消息的方。公用密钥不敏感,不需要保护。它可以公开传播。babudilli98@gmail.com


1
与五年前已经提供的其他答案相比,我认为此答案没有任何新内容。
卡巴斯德(Kasperd)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.