我一直在阅读关于tls-crypt
2.4的新OpenVPN选项,但我不确定我是否正确地理解了它。
我已经阅读了OpenVPN的手册页和安全性概述(它似乎缺少了tls-crypt
选项),这就是我理解它的方式。
在使用tls-crypt
的TLS模式中,两个对等点之间的连接是通过使用tls-crypt
选项定义的密钥文件来建立、加密和验证的。然后使用证书对对等点进行身份验证,如果成功,则生成HMAC和加密/解密密钥,并在已建立的TLS连接上进行交换。所有这些仍然发生在用tls-crypt
密钥文件加密/验证的连接上。
由于控制通道的OpenVPN连接是由静态tls-crypt
密钥加密的,从而实现了额外的隐私保护。
我对tls-crypt
选项的理解正确吗?
发布于 2018-08-27 16:09:02
博士的回答是:是的,你的理解是正确的。
在TLS模式下,OpenVPN建立一个TLS会话来在该TLS会话上执行密钥交换,以获取用于加密/验证隧道有效负载数据的密钥。这是一个正常的TLS会话,就像在浏览器中打开HTTPS网站一样,只不过它不仅会执行服务器身份验证,而且还会执行客户端身份验证,因此客户端也需要一个带有私钥的证书。
TLS会话交换本身应该是安全的,毕竟,当您访问网上银行站点时,这就是您拥有的全部内容,但这只是理论。实际上,每个协议都有弱点,即使协议没有弱点,协议的实现也有弱点。为了使攻击者更难利用这些弱点,您可以使用tls-crypt,它将使用静态密钥文件中的密钥对TLS数据包进行加密和验证。现在,攻击者还需要得到该密钥文件的副本,否则即使知道可用的攻击并有可能成功(例如能够监视流量或执行中间人附加)也无助于他。
使用tls-crypt,所有在"TLS通道“上运行的数据都被加密和验证,使用与隧道有效载荷数据相同的算法和来自静态密钥文件的密钥。对于TLS有效负载数据(用户身份验证、密钥交换、配置推送等)这意味着,对这些数据进行了两次加密和验证。一次由TLS加密,一次由TLS会话本身,因为tls会话本身用于加密和验证数据,当然,即使不使用tls-crypt,用户身份验证、密钥交换和配置推送必须进行加密和身份验证;否则,如果不是这样,整个协议将如何安全?
尽管为偏执型VPN管理增加了额外的安全性(尽管考虑到过去几年发现的可怕的SSL/TLS错误,这些人似乎没有以前那么偏执了),但它还有另一个积极的影响:它可以防止某些类型的拒绝服务攻击。即使攻击者无法侵入您的VPN,他仍可能试图同时打开数千个TLS会话。由于无法提供有效的证书,所有这些会话最终都将失败,但在此之前(默认情况下需要60秒),TLS会话对象可以为一个小型嵌入式设备使用大量的内存资源,打开数千个这样的会话可以快速地将这样的设备关闭。使用tls-crypt,已经发送的第一个数据包将不能正确地进行身份验证/解密,因此将被立即丢弃。在这种情况下,甚至不需要创建TLS会话对象。
https://security.stackexchange.com/questions/151194
复制相似问题