配置 strongSwan 服务器时,使用 `rekey=yes` 是否更安全?

配置 strongSwan 服务器时,使用 `rekey=yes` 是否更安全?

目前,我使用以下配置。我应该切换到吗rekey=yes?如果是,为什么?我希望强制实施完美前向保密 (PFS)。欢迎提出其他安全建议。

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=never

conn ikev2
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    ike=aes256gcm16-sha384-modp3072!
    esp=aes256gcm16-sha384-modp3072!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=my-vpn.com
    leftcert=vpn-server.crt
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-tls
    rightdns=1.1.1.1,1.0.0.1
    rightsourceip=%dhcp
    rightsendcert=never
    eap_identity=%identity

答案1

完美前向保密 (PFS) 是 IKEv2 的固有组成部分,因为每个 IKE_SA 的密钥材料都来自短暂的 Diffie-Hellman (DH) 交换,并且重复使用 DH 因子希望这不是一种很常见的做法(strongSwan 不会这样做)。

因此,即使不重新密钥化,每个新的 IKE_SA 也将使用独立密钥。除非使用无子 IKE_SA 启动(RFC 6023),第一个 CHILD_SA 的密钥始终从该密钥材料派生。如果创建了其他 CHILD_SA(您的配置并非如此),它们可以选择从单独的 DH 交换中派生密钥。

重新密钥化 IKE_SA 始终需要使用 DH 交换来创建完全独立的密钥材料,重新密钥化 CHILD_SA 时则可选。同样,如果没有 DH 交换,CHILD_SA 密钥将派生自 IKE_SA 的密钥材料。这意味着,根据 IKE_SA 是否在 CHILD_SA 之前重新密钥化,新的 CHILD_SA 密钥与之前的 CHILD_SA 使用的密钥无关。

因此,重新密钥基本上控制了一组特定密钥的使用时间,或者对于 CHILD_SA 也控制了多少数据包/字节,也就是说,记录所有流量的对手在成功攻击单个 DH 交换后可以解密多少数据。因此,是否使用重新密钥以及间隔多久取决于您在这些方面的政策/偏好(还取决于您期望一次建立连接的时间)。

对于 IKE_SA,也可以使用重新认证reauth=yes在 ipsec.conf 中)而不是重新密钥化,这会从头开始创建新的 IKE_SA 及其 CHILD_SA(在拆除之前的 SA 之前或之后)。例如,这可用于确保客户端仍可访问智能卡上的私钥。但是,该过程不如内联重新密钥化那么顺畅,因此某些数据包可能会被丢弃(特别是如果使用默认的先断后合重新认证)。

相关内容