私は 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 ハンドシェイクは、おおよそ次の手順に分けられます。
- クライアントは、クライアントのランダム値とサポートされている暗号スイートとともに、「client hello」をサーバーに送信します。
- サーバーは、サーバーのランダム値と選択された暗号スイートとともに、クライアントに「server hello」と応答します。
- サーバーは認証のために証明書をクライアントに送信します。
- クライアントはサーバーの ID を確認します。
- クライアントはランダムなプレマスターシークレットを作成し、それをサーバーの証明書の公開キーで暗号化します。
- クライアントは暗号化されたプレマスターシークレットをサーバーに送信します。
- 必要に応じて、サーバーはクライアントに証明書を要求する場合があります。
- サーバーとクライアントの両方が、プレマスターシークレットに基づいてセッションキーを生成します。
- これで、サーバーとクライアントはセッション キーを使用して暗号化されたメッセージを交換できるようになります。
tls-auth と tls-crypt の違いは、ステップ 1 から、tls-crypt はすべてのメッセージを事前共有キーで暗号化することです。
これにはいくつかの利点があります:
- OpenVPN サーバーとの TLS ハンドシェイクの初期化を隠します。これは、OpenVPN プロトコル署名が検出されブロックされる状況で役立ちます。
- TLS サービス拒否攻撃を防止します。tls-auth を使用すると、攻撃者は有効な証明書を提供せずに同時に何千もの TLS 接続を開き、使用可能なポートを妨害することができます。tls-crypt を使用すると、サーバーはステップ 1 で事前に接続を拒否します。
- データは tls-crypt によって 1 回、TLS セッションによって 1 回、合わせて 2 回暗号化されます。