2011-09-26 100 views
0

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

现在我的问题是这个签名是如何独特的?

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

回答

0

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

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

password authentication的情况下,在通过线路发送用户/密码之前计算会话密钥对。这可以防止简单的窃听,但当然不会阻止攻击者直接尝试连接并猜测用户/密码组合。当然,many users choose poor passwords

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

0

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

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

这似乎并不是公钥基础认证“更安全”的原因。