如果我理解正确的话OpenVPN 2.4 手册,如果有人使用,
ECDH TLS cipher suites
那么他们可以设置dh none
。这将具有与使用 dh 密钥相同的安全级别(或更好),这是一个正确的假设吗?关于 tls-auth,手册上说“如果您想使用密钥文件不仅进行身份验证,而且还加密 TLS 控制通道,请改用 –tls-crypt。”。
目前我不是有tls-auth
或tls-crypt
在配置中设置但在日志中我看到
Control Channel: TLSv1.2, cipher TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384, 521 bit EC, curve: secp521r1
这是否意味着tls-crypt
如果使用椭圆曲线,该选项就不是必需的?或者,tls-crypt
如果控制通道即使没有此选项也已经加密,会增加什么额外的安全性?如果使用 UDP 还是 TCP,会有什么区别?
谢谢!
答案1
ECDH
并且DH
都是Diffie-Hellman 密钥交换并要求阿贝尔群计算起来非常复杂。然而:即使没有
tls-auth
或tls-crypt
选项,您的数据将要总是加密。TLS
协议使用密钥交换中获得的密钥对数据进行加密,如上一点所述。这些选项控制如何处理TLS 握手:通常(如协议中所述
HTTPS
)它们是未加密的,因为对等体彼此之间没有任何先验知识。但使用 OpenVPN 有一个优势:您可以在服务器和所有授权客户端上配置一个通用的对称密钥,它将对这 4 个数据包进行签名或加密。这将允许服务器丢弃所有未签名的
ClientHello
消息,前甚至为计算繁重TLS
协议。因此,它将更容易DDoS
在攻击者一次发起数千个连接的攻击中幸存下来。使用
tls-auth
类似于WEP
在 Wi-Fi 网络上配置通用密钥,以及每个客户端的WPA-Enterprise
身份验证。主要区别在于WEP
加密很容易被破解,而HMAC
签名或AES
加密则不会。因此,您将无法在 Wi-Fi 网络上重现上述配置(软件不支持)。UDP
vs 的选择TCP
是毫无疑问的:UDP
尽可能使用。TCP
保证所有发出的 IP 数据包不会丢失并且会按照发送的顺序到达。这听起来不错,但你的
VPN
隧道也会传输内部TCP
连接。如果数据包丢失,OpenVPN
客户端和建立内部连接的程序TCP
都将启动重发。但是来自内部连接的重新传输的数据包将到达其目的地后重新发送的邮件OpenVPN
已被送达。这会导致不必要的网络流量。
编辑DH
:和的强度之间的比较ECDH
可在例如Keylength.com:
该组所需的大小
DH
在列中Discrete Logarithm Group
,具有等效强度的椭圆曲线的大小在列中
Elliptic Curve
,
例如椭圆曲线的配置如下:
ecdh-curve prime256v1
相当于使用 和 生成DH
参数openssl dhparam -out /etc/openvpn/dh.pem 3072
:
dh /etc/openvpn/dh.pem
NIST 建议提供的值大致对应于OpenSSL 安全级别。默认安全级别为1级2048
,这意味着群组的位数DH
和224
椭圆曲线的位数最少。您可以使用tls-cipher
选项(参见OpenSSL 文档格式)。 例如设置:
tls-cipher DEFAULT:@SECLEVEL=4
将导致 OpenVPN 连接失败,直到您将上面的两个设置调整为所需的组大小(7680
为DH
和384
为ECDH
)。