RFC 4253“安全外壳(SSH)传输层协议”在第18页上声明:
server_host_key_algorithms服务器主机密钥支持的算法的名称列表.服务器列出了它拥有主机密钥的算法;客户机列出了它愿意接受的算法。一个主机可能有多个主机密钥,可能有不同的算法。
我的问题是,
在RFC 4253中,"encryption_algorithms“用于对称加密,"mac_algorithms”用于完整性保护,但"server_host_key_algorithms“用于什么?
我读过RFC 4253,但仍然找不到算法的可能用途。
发布于 2016-09-06 15:02:08
在SSH中,服务器还必须对客户端进行身份验证。否则,中间人(或能够操纵连接的任何其他方,例如通过DNS欺骗)可能模拟服务器并欺骗客户端泄露其密码,或者,在公钥身份验证的情况下,对密码挑战的有效响应(攻击者随后可以使用该响应在实际服务器上登录)。
此身份验证步骤是通过服务器的主机密钥完成的。RFC 4253第8节规定:
密钥交换与带有主机密钥的签名相结合,以提供主机身份验证。
通常,由于互操作性的原因,服务器支持多个签名算法,因此它们需要告诉客户端它们有哪些可用的密钥类型:server_host_key_algorithms字段包含这个列表。
这种机制是您在第一次连接到某个服务器时看到以下警告(可能是熟悉的)的原因:
寄主'example.org (192.0.2.121)‘的真实性是无法确定的。ECDSA密钥指纹为SHA256:Lj0PQQnA9K2NupAxdjJSnxQhVWoVvjTLcUQQWDFS+9A.您确定要继续连接(是/否)吗?
在这里,客户机本质上要求您确认已经验证了服务器的主机密钥。在第一个连接之后,客户端将服务器的主机密钥存储在其known_hosts文件中,并且只有在主机键发生更改时才再次警告用户(例如,如果服务器已经重新安装或确实发生了攻击)。
https://crypto.stackexchange.com/questions/39804
复制相似问题