我似乎无法直接回答这个问题。维基百科说“IPsec 是 IPv6 中基本协议套件不可或缺的一部分”,但这是否意味着所有通信始终都是加密的,或者是否意味着加密是可选的,但设备必须能够理解它(应该使用它吗)?
如果加密是可选的,那么是由操作系统决定是否使用加密,还是由应用程序决定?流行的操作系统和软件一般都启用加密吗?
我会自己调查这个问题,但我缺乏 IPv6 连接。
更新:好的,所以这是可选的。我的后续问题是:通常,是应用程序决定是否使用加密,还是操作系统决定?
举个具体的例子:假设我有一个最新版本的 Windows,它原生支持 ipv6,我使用 Mozilla Firefox 在 ipv6.google.com 上搜索某些内容。它会被加密吗?
答案1
不。
IPv6 内置了 IPsec 作为协议的一部分,它不像 IPv4 那样是附加的。然而,这并不意味着它默认启用,它只是意味着它在网络堆栈上的开销(理论上)较低。
通常,IPsec 的使用是在网络堆栈的 IP 级别确定的,因此由系统策略本身决定。例如,系统 A 可能有一个策略,要求 AH 和 ESP 才能与 4.0.0.0/8 子网进行通信。
更新:更明确地说,应用程序并不关心 - 它只知道必须在某处打开网络连接并向其发送/接收数据。然后系统必须确定是否为给定的请求连接协商 IPsec。IPsec 的设计目的主要是作为一种低级身份验证/加密机制,其构建目的是为了使更高级别的协议和应用程序不必担心它。
也就是说,它只是另一种网络级安全控制,不一定需要单独使用或依赖于它来保证“安全” - 如果您试图解决身份验证问题,则完全有可能您希望应用程序强制执行某种用户级身份验证,同时将机器级身份验证保留给 IPsec。
答案2
简短回答:不。
长答案:在设计 IPv6 时考虑了 IPsec,与 IPv4 不同,IPsec(使用时)是 IPv6 标头的一部分。
更多解释:在 IPv4 中,IPsec 运行在之上IP 本身。它实际上是第 4 层协议,但“伪装”为第 3 层协议(因此通常的 TCP 和 UDP 第 4 层协议仍能正常工作)。ESP(封装安全有效负载)不能跨越 IP 数据包。因此,如果防止碎片化,IPsec 数据包的有效负载容量通常会严重降低。此外,由于它位于 IP 之上,因此 IP 的标头不受保护。
在 IPv6 中,IPsec是其一部分IP 本身。它可以跨越数据包,因为 ESP 报头现在是 IP 报头的一部分。而且由于它与 IP 集成,因此可以保护 IP 报头的更多部分。
我希望我的“简而言之”的解释足够清楚。
答案3
给你的后续问题:
操作系统定义何时使用加密。这些“策略”选项位于控制面板/配置策略中。您会说“如果您想连接到子网 ab12:: 中的任何地址,您必须拥有机密 Blah1234”。有使用 PKI 的选项。
目前,应用程序无法添加此策略或要求设置此策略。Linux 套接字 ipv6 部分中提到“缺少对 EH 和 AH 标头的 IPSec 支持”。因此人们已经想到了这一点,但目前还没有已知的有效实现。
答案4
对于您后续的问题,是和否。
应用程序可以指定加密,但加密是在应用程序级别完成的。有各种各样的未加密/加密协议对使用不同的端口,例如 HTTP/HTTPS、LDAP/LDAPS、IMAP/IMAPS 和 SMTP/SSMTP。这些都使用 SSL 或 TLS 加密。某些服务将提供 startTLS 选项,允许在通常未加密的端口上启动加密连接。SSH 是一个始终使用加密连接的应用程序。对于这些情况,加密是端到端的。(可以使用 NULL 加密算法,加密内容将以未加密的形式传输。)
IPSEC 由管理员配置,应用程序不知道连接是否加密。我主要看到 IPSEC 用于通过不安全的连接(VPN 连接)在 LAN 之间桥接流量。我相信 IPSEC 可能仅适用于部分路由,因此在某些网络段上,数据以明文(未加密)传输。
如果可以选择,我将使用应用程序加密,因为网络加密并不常用。