我正在閱讀 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
答案1
TLS 握手或多或少可以分為以下步驟:
- 客戶端向伺服器發送“客戶端問候”,以及客戶端的隨機值和支援的密碼套件。
- 伺服器向客戶端回應“伺服器問候”,以及伺服器的隨機值和選擇的密碼套件。
- 伺服器將其憑證傳送給客戶端進行身份驗證。
- 客戶端驗證伺服器身份。
- 用戶端會建立一個隨機的預主金鑰,並使用伺服器憑證中的公鑰對其進行加密。
- 客戶端將加密的預主密鑰傳送到伺服器。
- 如果需要,伺服器可以向客戶端請求憑證。
- 伺服器和用戶端都根據預主密鑰產生會話密鑰。
- 伺服器和用戶端現在可以使用會話金鑰交換加密訊息。
tls-auth 和 tls-crypt 之間的差異在於,從步驟 1 開始,tls-crypt 將使用預先共用金鑰加密所有訊息。
這提供了幾個好處:
- 它隱藏了與 OpenVPN 伺服器的 TLS 握手的初始化。在某些情況下,當偵測到並阻止 OpenVPN 協定簽署時,這會很有幫助。
- 它可以防止 TLS 拒絕服務攻擊。透過 tls-auth,攻擊者可以同時打開數千個 TLS 連接,但無法提供有效的證書,從而堵塞可用連接埠。使用 tls-crypt,伺服器將在步驟 1 中預先拒絕連線。
- 資料加密兩次,一次由 tls-crypt 加密,一次由 TLS 會話加密。