tls-crypt 和 tls-auth 之间的 OpenVPN 2.4 安全差异

Jas*_*son 5 security ssl openvpn

我正在阅读和 tls-crypt 并且很好奇这会增加安全性并减少握手期间密钥被泄露的机会,并且它提供比 tls-auth 更好的安全性吗?

也许有人可以更好地解释 tls-auth 和 tls-crypt 以及它们如何提高安全性?

我当前的客户端文件:

client
tls-client
dev tun
proto udp
remote 1.2.3.4 9999
<ca>
</ca>
<cert>
</cert>
<key>
</key>
pull
auth-nocache 
cipher AES-256-CBC
keysize 256
compress lz4-v2
reneg-sec 36000
keepalive 30 120
Run Code Online (Sandbox Code Playgroud)

小智 11

TLS 握手可以或多或少地分解为以下步骤:

  1. 客户端向服务器发送“client hello”,以及客户端的随机值和支持的密码套件。
  2. 服务器向客户端响应“server hello”,以及服务器的随机值和选择的密码套件。
  3. 服务器将其证书发送给客户端进行身份验证。
  4. 客户端验证服务器身份。
  5. 客户端创建一个随机的预主密钥并使用服务器证书中的公钥对其进行加密。
  6. 客户端将加密的预主密钥发送到服务器。
  7. 如果需要,服务器可以从客户端请求证书。
  8. 服务器和客户端都基于预主密钥生成会话密钥。
  9. 服务器和客户端现在可以使用会话密钥交换加密消息。

tls-auth 和 tls-crypt 之间的区别在于,从步骤 1 开始,tls-crypt 将使用预共享密钥加密所有消息。

这提供了几个好处:

  1. 它隐藏了与 OpenVPN 服务器的 TLS 握手的初始化。这在检测和阻止 OpenVPN 协议签名的某些情况下很有帮助。
  2. 它可以防止 TLS 拒绝服务攻击。使用 tls-auth,攻击者可以同时打开数千个 TLS 连接,但无法提供有效证书,从而阻塞可用端口。使用 tls-crypt,服务器将在步骤 1 中预先拒绝连接。
  3. 数据加密两次,一次由 tls-crypt 加密,一次由 TLS 会话加密。

  • TLS 仅用于建立隧道;只有少量元数据*关于*隧道被双重加密,通过隧道发送的大量数据不会受到影响。 (4认同)