目前,我使用以下配置。我应该切换到吗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 之前或之后)。例如,这可用于确保客户端仍可访问智能卡上的私钥。但是,该过程不如内联重新密钥化那么顺畅,因此某些数据包可能会被丢弃(特别是如果使用默认的先断后合重新认证)。