web-dev-qa-db-ja.com

tls-cryptとtls-authのOpenVPN 2.4セキュリティの違い

私は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
2
Jason

TLSハンドシェイクは、多かれ少なかれ次の手順に分類できます。

  1. クライアントは、クライアントのランダム値とサポートされている暗号スイートとともに、「クライアントハロー」をサーバーに送信します。
  2. サーバーは、サーバーのランダムな値と選択された暗号スイートとともに、「サーバーhello」をクライアントに応答します。
  3. サーバーは認証のためにクライアントに証明書を送信します。
  4. クライアントはサーバーのIDを確認します。
  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. データは2回暗号化されます。1回はtls-cryptで、もう1回はTLSセッションで暗号化されます。
6
Victor Wong