连接的身份验证部分使用哪种级别的加密?
这是一个示例/etc/ipsec.conf
配置。
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
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
[email protected]
leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightdns=1.1.1.1,1.0.0.1
rightsourceip=10.0.2.1/24
rightsendcert=never
eap_identity=%identity
IKEv2 消息的加密与认证方式无关。你到底想知道什么?
我想要了解凭证(以及后来的共享密钥)在传输到服务器时有多安全。对于 HTTPS,这有很好的记录。TLS 使用迪菲一赫尔曼(一个非对称密钥算法)来生成一个共享秘密,然后使用该秘密建立受保护的通道对称密钥从该共享秘密派生的加密技术。该通道的加密技术通常是公开披露的。例如,在 YouTube.com 上,它是TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
(128 位 AES-GCM 加密,带有 256 位 SHA2 完整性算法)。我对加密技术还不太熟悉,所以希望上述内容准确无误。现在,在使用 openSwan 的 eap-mschapv2 上下文中,我找不到与上述规范等效的规范。我预计会发生类似的事情,但我希望确保我完全理解该协议。
添加了一些链接以防其他人想了解更多有关密码学的知识。
答案1
IKEv2 的基本原理与 TLS 非常相似。在前两条消息(IKE_SA_INIT
)中,两个对等方协商一组算法(其中一个是 Diffie-Hellman 组)并交换 DH 公钥。然后,它们派生出一个共享密钥,随后的消息(IKE_AUTH
、INFORMATIONAL
、CREATE_CHILD_SA
)以加密和完整性保护的方式交换。这些IKE_AUTH
消息包含身份验证数据(身份、签名、证书、EAP 有效负载)以及有关第一个 IPsec/Child SA 的信息(例如算法和流量选择器)。
使用 EAP-MSCHAPv2 等身份验证方法时,这些方法可能基于弱用户密码,并且容易受到中间人的主动攻击,因此,对响应者使用强身份验证方法(例如公钥身份验证)并在传输任何(散列)机密之前验证响应者的身份非常重要。例如,客户端可以确保响应者的证书确认域名或 IP 地址,而响应者的证书当然必须是有效且可信的。
与 TLS 不同,IKEv2 不使用预定义的密码套件。不同转换类型(加密、完整性、PRF、DH)的算法可以相对自由地组合(有一些限制,例如,具有 AEAD 算法的提案,如 AES-GCM,不能包含完整性算法)。如上所述,IKE_SA 的这些参数在消息中公开传输IKE_SA_INIT
。但是,CHILD_SA 的参数仅以加密形式传输(请注意,对于使用 IKE_SA 创建的第一个 CHILD_SA,没有单独的 DH 交换,只有后续 CHILD_SA 的密钥可以选择基于 DH 交换,否则,它们将派生自 IKE 密钥)。
完整的 IKEv2 协议描述可以在RFC 7296。