0

在我读到的所有地方,他们都说 ssh 密钥对身份验证比简单密码身份验证更安全,因为发送到服务器的签名总是不同的。所以如果有人得到我的签名,他下次不能用它来代表我登录。

现在我的问题是这个签名是如何独一无二的?

服务器是否首先发送一些随机字符串,我的计算机使用我的私钥对其进行签名并将其发回。因为这是我看到签名每次都是唯一的唯一方式。但是在网络上到处都说客户端首先发送签名(因为这是第一步),但我认为服务器应该首先发送随机字符串!

4

2 回答 2

0

我不是安全专家,但这是我对基于密钥的身份验证如何工作的理解:服务器发送使用您的私钥加密的随机数。客户端解密挑战并将其发送回服务器,验证它是否拥有私钥。

但是,我认为基于密码的身份验证使用了类似的技术:服务器发送一个随机数。客户端将随机数附加到密码,计算哈希,并将其发送到服务器,服务器以相同的方式计算它来验证它。

因此,这似乎不是基于公钥的身份验证“更安全”的原因。

于 2011-09-26T18:04:34.647 回答
0

对于密钥身份验证,您的私钥永远不会泄露给服务器(因此不会泄露给攻击者),只有您的公钥。同样,服务器的私钥永远不会透露给您(或攻击者),只有公钥。

Diffie-Hellman用于派生两个密钥对(每一方一个),然后用于来回发送应用程序数据,无论身份验证是使用简单密码还是使用公钥身份验证完成。

密码验证的情况下,会话密钥对是在用户/密码通过网络发送之前计算的。这可以防止简单的窃听,但当然不会阻止攻击者尝试连接并直接猜测用户/密码组合。当然,许多用户选择了糟糕的密码

公钥认证的情况下,计算会话密钥对,然后使用RSA或类似算法完成简单的对话(通常是数学问题/答案),以验证声明的用户与公钥匹配。如果不猜测其中一个私钥,就无法伪造此对话。如果正确完成,这比即使是最强大的密码也更难做到。即使公钥认证存在弱点,例如随机数生成器,由此产生的弱公钥认证仍然可以比密码认证强得多。

于 2011-09-26T18:21:01.640 回答