web-dev-qa-db-ja.com

OpenVPN 2.4 tls-cryptおよびdh vs楕円曲線

  1. OpenVPN 2.4マニュアル から正しく理解できれば、ECDH TLS cipher suitesを使用している場合は、dh noneを設定できます。これは、dhキーを使用する場合と同じ(またはそれ以上の)セキュリティレベルになりますが、これは正しい仮定ですか?

  2. 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を使用している場合、違いはありますか?

ありがとう!

1
yurtesen
  1. ECDHDHはどちらも Diffie-Hellman鍵交換 のバリアントであり、計算的に複雑な除算を行う アーベル群 が必要です。しかしながら:

    • DHアルゴリズムの適切な有限フィールドの生成は比較的時間がかかりますが(時間がかかります)、OpenVPNはopenssl dhparamでそれを実行し、dh <filename>で結果を提供するように求めます。このように、NSAの予算内にある Logjam攻撃 の影響を受ける可能性がある事前定義されたグループを使用しません。ただし、有限体での因数分解はよく理解されている主題であるため、DHECDHよりも低速であり、同等のセキュリティレベルを備えています。

    • 良い楕円曲線を生成するのは難しいので、mustpredefined ones を使用し、ecdh <filename>オプションはありません。 dhオプションについては、楕円曲線でdh noneを使用できます。楕円曲線での除算はあまり開発されていないため、DHと同じレベルのセキュリティを確保するには、現在はより小さな曲線が必要です。

  2. tls-authまたはtls-cryptオプションがなくても、dataalwaysを暗号化します。 TLSプロトコルは、前のポイントと同様に、鍵交換で取得した鍵を使用してデータを暗号化します。これらのオプションは、 TLSハンドシェイク の4つのパケットの処理方法を制御します。

    通常、(HTTPSプロトコルのように)ピアはお互いの事前の知識を持っていないため、暗号化されません。しかし、OpenVPNには利点があります。サーバーとすべての承認済みクライアントで共通の 対称キー を構成できます。これにより、これらの4つのパケットに署名または暗号化されます。

    これにより、サーバーは署名されていないすべてのClientHelloメッセージをドロップできます。before計算的に重いTLSプロトコルにリソースを割り当てます。そのため、攻撃者が一度に数千の接続を開始するDDoS攻撃からより簡単に生き残ることができます。

    tls-authの使用は、クライアントごとのWPA-Enterprise認証とともに、Wi-Fiネットワークで共通のWEPキーを構成することに似ています。主な違いは、WEP暗号化は大きく破られているのに対し、HMAC署名またはAES暗号化はそうではないということです。したがって、Wi-Fiネットワーク上で前述の構成を再現することはできません(ソフトウェアではサポートされていません)。

  3. UDPTCPの選択は簡単です。可能な限りUDPを使用してください。 TCPは、送信されたすべてのIPパケットが失われることなく、送信された順序で到着することを保証します。

    これはいい感じですが、VPNトンネルは内部TCP接続も転送します。パケットが失われた場合、OpenVPNクライアントと内部TCP接続を確立したプログラムの両方が起動しますretransmitting。ただし、内部接続から再送信されたパケットは宛先に到着しますafterOpenVPNによって再送信されたパケットは配信されました。これにより、不要なネットワークトラフィックが発生します。

編集DHECDHの強さの比較が利用可能です。 Keylength.com

  • DHグループの必要なサイズは、列Discrete Logarithm Groupにあります。

  • 同等の強度を持つ楕円曲線のサイズはElliptic Curve列にあり、

たとえば、楕円曲線の次の構成:

ecdh-curve prime256v1

openssl dhparam -out /etc/openvpn/dh.pem 3072を使用してDHパラメータを生成し、以下を使用することと同等です。

dh /etc/openvpn/dh.pem

NIST勧告によって提供される値は、おおよそ OpenSSLセキュリティレベル に対応します。デフォルトのセキュリティレベルはレベル1です。これは、DHグループの場合は最低2048ビット、楕円曲線の場合は224ビットです。 tls-cipherオプションを使用して増やすことができます(形式については OpenSSLドキュメント を参照)。例えば。設定:

tls-cipher DEFAULT:@SECLEVEL=4

上記の2つの設定を必要なグループサイズ(DHの場合は7680ECDHの場合は384)に調整するまで、OpenVPN接続は失敗します。

2