增加 SSH 主机密钥长度以何种方式提高安全性

信息安全 验证 公钥基础设施 SSH ssh 主机密钥
2021-08-17 09:35:39

ServerKeyBits我已经阅读了一些关于“如何保护 SSH 服务器”的指南,将默认值从 768 增加到 2048是一件好事。

这些指南中的大多数似乎是为入门级/新手服务器管理员(我是)快速保护自己免受脚本暴力 root ssh 登录尝试和类似的事情,我试图理解每个安全措施的重点。

我一直在阅读基于公钥的身份验证的工作原理,特别是对于 SSH v2。我根本没有看到任何关于在客户端身份验证过程中使用 SSH 服务器的主机密钥的信息,我的意思是证明客户端是受信任的。

它似乎仅用于确保客户端连接的主机与其过去连接的主机相同 - 它不是冒名顶替者。

我想知道,实际上,为什么将主机密钥增加到 2048 如此重要。攻击者是否更难以某种方式暴力破解主机私钥?即使攻击者能够找出私有主机密钥,以便客户端/或管理员能够登录到假主机,这对攻击者有何好处?

这些指南中还包括设置

PasswordAuthentication no

所以用户甚至不应该期望输入密码。如果他们在通常不需要输入密码的情况下如此不知道要输入密码,那么他们不会只是盲目地接受不同的主机密钥吗?那么如果攻击者有密码,那又如何呢?无论如何,服务器上都禁用了密码身份验证,因此他们仍然无法登录。根据我的阅读,即使客户端信任攻击者,攻击者也无法在身份验证过程中从客户端获取任何有用信息服务器身份。

我觉得我错过了一些关于 SSH 公钥身份验证如何工作的重要内容,因为我不明白为什么拥有长主机密钥似乎如此重要。是否会使客户端凭据更难以某种方式受到损害?如果私有主机密钥被泄露,实际会发生什么?

谢谢

3个回答

您的问题中有一个关键的混淆,这里的答案没有指出:ServerKeyBits 与主机密钥无关。事实上,它在今天几乎是无关紧要的,因为它只适用于 SSH 协议版本 1,它已经过时多年,不应再使用。

如果您熟悉设置 OpenSSH 服务器,那么在操作上也应该清楚 sshd 配置设置本身不能增加主机密钥的大小——它位于磁盘上的文件中(例如 /etc/ssh/ssh_host_rsa_key{ .pub}) 并单独生成一次。

协议 1 中的“服务器密钥”是第二个 RSA 密钥——与主机密钥不同——用于实现前向保密。它是短暂的,由服务器在启动时生成,定期更换(默认每小时一次),并且从不写入磁盘。客户端用服务器密钥加密对称会话密钥并发送给服务器;此消息通过使用主机密钥对其进行签名来进行身份验证。在协议 2 中,前向保密是用 Diffie-Hellman 实现的。

因此,足够强大的服务器密钥很重要,因为如果攻击者可以恢复它,他就可以读取记录的 SSH 会话或篡改当前会话(因为他拥有会话加密和 MAC 密钥)。正如先前的回答所指出的,按照今天的标准,768 位的 RSA 密钥太短了。

简短回答:主机密钥是服务器的公钥,该密钥用于建立共享密钥(对称加密密钥),因此它必须足够强大以抵御暴力攻击。

详细说明: 首先您需要了解非对称加密或公私钥加密的工作原理。每个系统都有一个由私钥和公钥组成的密钥对。顾名思义,公钥是要公开的,或者换句话说,可以在没有任何安全隐患的情况下分发给全世界,而私钥是保密的,只有系统可以使用它。这种设置的基本数学概念是,如果使用公钥加密消息,则只能使用相应的私钥解密,反之亦然。

这种非对称加密用于 SSH 建立安全会话,该会话使用对称加密。这种对称加密 ( K_sys) 的密钥是使用公私密钥加密交换的。此外,客户端-服务器之间的所有通信都使用此 K_sys 进行加密。

由于通信的所有保密性都取决于 的保密性K_sys,因此公私密钥加密的安全性至关重要,因为它被用于共享密钥。并且为了确保足够的保密性,密钥强度是需要考虑的重要参数之一。有了

附加信息: 768 位 RSA 密钥在 2010 年成功破解,预计随着计算的进步,1024 位将在未来十年变得脆弱。因此,建议在不久的将来将关键强度增加到 2048。

这些指南中还包括设置

PasswordAuthentication no

所以用户甚至不应该期望输入密码。如果他们在通常不需要输入密码的情况下如此不知道要输入密码,那么他们不会只是盲目地接受不同的主机密钥吗?那么如果攻击者有密码,那又如何呢?无论如何,服务器上都禁用了密码身份验证,因此他们仍然无法登录。

这正是禁用密码验证的关键——因此如果攻击者拥有用户密码,他们将无法登录。特别是,您试图避免允许通过具有不安全密码的用户帐户(例如测试帐户)访问您的计算机。