OpenVPN 2.4 tls-crypt 和 dh 與橢圓曲線
- 如果我從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有什麼區別嗎?謝謝!
ECDH
並且DH
都是Diffie-Hellman 密鑰交換的變體,並且需要具有計算複雜除法的阿貝爾群。然而:
- 為算法生成好的有限域
DH
相對容易(雖然很耗時),因此 OpenVPN 要求您openssl dhparam
使用dh <filename>
. 這樣,您就不會使用可能受到Logjam 攻擊的預定義組,這在 NSA 預算範圍內。但是,有限域中的因式分解是一個很好理解的主題,因此DH
比ECDH
具有可比安全級別的情況要慢。- 生成好的橢圓曲線是很困難的,所以你必須使用預定義的並且沒有
ecdh <filename>
選項。至於dh
選項,您可以使用dh none
橢圓曲線。橢圓曲線上的除法不是很發達,因此要獲得與DH
現在類似的安全級別,您需要更小的曲線。
- 即使沒有
tls-auth
ortls-crypt
選項,您的數據也將始終被加密。與前一點一樣,該TLS
協議使用在密鑰交換中獲得的密鑰對數據進行加密。這些選項控制如何處理TLS 握手的 4 個數據包:通常(如在
HTTPS
協議中)它們是未加密的,因為對等方彼此之間沒有任何先驗知識。但是使用 OpenVPN,您有一個優勢:您可以在伺服器和所有授權客戶端上配置一個公共對稱密鑰,它將對這 4 個數據包進行簽名或加密。這將允許伺服器在為計算量大的協議分配資源之前
ClientHello
丟棄所有未簽名的消息。因此,它更容易在攻擊中倖存下來,攻擊者一次啟動數千個連接。TLS``DDoS
使用
tls-auth
類似於WEP
在 Wi-Fi 網路上配置公用密鑰以及每個客戶端的WPA-Enterprise
身份驗證。主要區別在於WEP
加密被嚴重破壞,而HMAC
簽名或AES
加密則沒有。因此,您將無法在 Wi-Fi 網路上重現上述配置(軟體不支持)。 3.UDP
vsTCP
選擇很簡單: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
forDH
和384
forECDH
)。