SSH 和 IPsec 有什么区别?

信息安全 加密 网络 SSH ipsec
2021-09-02 20:33:48

两者似乎都有类似的加密。他们都使用非对称(RSA、椭圆曲线等)进行初始密钥交换,然后使用一些对称(AES、Blowfish 等)协议。我想知道这里是否有人可能有时间解释两者之间的区别以及它们对用户的不同表现(速度、它们所在的应用程序等)。

3个回答

@graham-hill 的回答总体上是正确的,但简短且迂腐不正确,因此我将对其进行扩展。

SSH 处于应用程序级别 - 您可以将其视为 SSH/TCP/IP 或 SSH-over-TCP-over-IP。TCP 是这种组合中的传输层,IP 是 Internet 层。其他“应用”协议包括 SMTP、Telnet、FTP、HTTP/HTTPS...

IPSec 是使用两个独立的传输实现的——ESP(用于加密的封装安全有效负载)和 AH(用于身份验证和完整性的身份验证标头)因此,假设通过 IPSec 建立 Telnet 连接。您通常可以将其设想为 Telnet/TCP/ESP/AH/IP。

(只是为了让事情变得有趣,IPSec 有两种模式 - 传输(上面概述)和隧道。在隧道模式下,IP 层封装在 IPSec 中,然后通过(通常)另一个 IP 层传输。所以你最终会使用 Telnet /TCP/IP/ESP/AH/IP!)

所以 - 你问“解释两者之间的区别” -

SSH 是应用程序,IPSec 是传输。所以 SSH 承载“一种”类型的流量,而 IPSec 可以承载“任何”类型的 TCP 或 UDP 流量。* 这具有以下描述的含义:

你问,“他们对用户的表现会有什么不同” -

因为 IPSec 是传输层,所以它对用户应该是不可见的——就像 TCP/IP 层对于 Web 浏览器的用户是不可见的一样。事实上,如果正在使用 IPSec,那么它对 Web 浏览器和 Web 服务器的编写者是不可见的——他们不必担心设置或不设置 IPSec;这是系统管理员的工作。与 HTTPS 相比,服务器需要正确启用私钥和证书、编译 SSL 库和编写代码;客户端浏览器编译了 SSL 库并编写了代码,并且如果没有相应的 CA 公钥,或者会大声尖叫(侵入应用程序)。

设置IPSec时,由于它作用于传输层,可以支持多种应用,没有任何麻烦。一旦您在两个系统之间配置了 IPSec,为 1 个应用程序或 50 个应用程序工作之间的差别非常小。同样,IPSec 为使用多个连接的协议提供了一个简单的包装,例如 FTP(控制和数据可能是单独的连接)或 H.323(不仅是多个连接,还有多个传输(TCP 和 UDP)!)。

但是,从管理员的角度来看,IPSec 比 SSH 或 SSL 更重。它需要更多设置,因为它在系统级别而不是应用程序级别发挥其魔力。每个关系(主机到主机、主机到网络或网络到网络)都需要单独设置。另一方面,SSH 和 SSL 通常是机会主义的——使用 PKI (CA) 或信任网络模型,它们可以相当容易地信任连接的另一端,而无需提前进行太多设置。IPSec可以投机取巧,但通常不以这种方式使用,部分原因是配置 IPSec 连接通常需要反复试验。不同供应商(Linux、Checkpoint、Cisco、Juniper 等)之间的互操作性不是无缝的;用于制作 Cisco<->Checkpoint 的配置可能与用于制作 Cisco<->Juniper 的配置不同。与 SSH 相比——OpenSSH 服务器并不真正关心您运行的是 Putty、OpenSSH(*nix 或 Cygwin)SSH 还是 Tectia SSH。

就速度而言 - 我没有任何好的数字可以给你,部分答案是“这取决于” - 如果涉及 IPSec,那么实际的 IPSec 处理可能会被卸载到防火墙或 VPN 集中器使用专用的快速硬件,使其比 SSH 更快,后者几乎总是使用运行服务器操作系统和应用程序的相同通用 CPU 进行加密。所以这不是真正的苹果对苹果。我敢打赌,您会发现这两个选项中的任何一个都更快的用例。


* 这并不完全正确。SSH 支持终端应用程序、文件复制/ftp 应用程序和 TCP 隧道应用程序。但实际上它只是一个非常丰富的应用程序,而不是传输 - 它的隧道不是 IP 传输的替代品。

SSH 处于 TCP/IP 的应用程序级别,而 IPSEC 处于传输级别。

在像 SSH 这样的基于 TCP 的隧道上运行 TCP 连接与像 IPsec 这样的无保证的数据包传输系统上运行 TCP 连接时可能会有很大的不同,其中存在大量数据包丢失。有关更多详细信息和真实示例,请参见http://sites.inka.de/bigred/devel/tcp-tcp.html

旁注 - 我已经通过 SSH 运行 TCP 几十年了,因为它很方便而且我没有遇到过这个问题,我将换成一个更好地处理数据包丢失的解决方案,但只有在我需要时才更难设置解决方案。