web-dev-qa-db-ja.com

OpenVPNの新しいtls-cryptオプション

OpenVPN 2.4の新しいtls-cryptオプションについて読んでいましたが、正しく理解しているかどうかはわかりません。

私はOpenVPNのマニュアルページとセキュリティの概要(tls-cryptオプションがないようです)を読んだので、そのように理解しました。

tls-cryptを使用するTLSモードでは、2つのピア間の接続が確立され、tls-cryptオプションで定義された鍵ファイルを使用して暗号化および認証されます。次に、証明書を使用してピアを認証します。成功した場合、HMACおよび暗号化/復号化キーが生成され、確立されたTLS接続を介して交換されます。これらすべては、tls-cryptキーファイルで暗号化/認証された接続を介してまだ発生しています。

さらに、コントロールチャネルのTLS接続が静的tls-cryptキーによって暗号化されるため、OpenVPNトンネルの識別に対する追加のプライバシーと保護が実現されます。

tls-cryptオプションについての私の理解は正しいですか?

5
SaAtomic

Tl; drの回答は次のとおりです。はい、あなたの理解は正しいです。

TLSモードでは、OpenVPNはTLSセッションを確立して、そのTLSセッションでキー交換を実行し、トンネルペイロードデータの暗号化/認証に使用されるキーを取得します。これは通常のTLSセッションです。ブラウザでHTTPS Webサイトを開く場合と同じですが、サーバー認証だけでなくクライアント認証も実行されるため、クライアントには秘密鍵の証明書も必要になります。

それ自体のTLSセッション交換は安全である必要があります。結局のところ、たとえばオンラインバンキングサイトにアクセスしたときの情報はすべてですが、それは理論にすぎません。実際には、すべてのプロトコルに弱点があり、プロトコルに弱点がなくても、プロトコルの実装にも弱点があります。攻撃者がこのような弱点を利用するのをさらに困難にするために、静的キーファイルのキーを使用してTLSパケットを暗号化および認証するtls-cryptを使用できます。攻撃者はまた、そのキーファイルのコピーを手に入れる必要があります。そうでなければ、使用可能な攻撃を知っていて、それを阻止する可能性さえあります(たとえば、トラフィックを監視したり、中間者接続を実行したりできる) )彼を助けません。

Tls-cryptを使用すると、「TLSチャネル」で実行されるすべてのデータは、トンネルペイロードデータと同じアルゴリズムと静的キーファイルのキーで暗号化および認証されます。 TLSペイロードデータ(ユーザー認証、キー交換、構成プッシュなど)の場合、これは、このデータが暗号化され、2回認証されることを意味します。 TLSセッション自体がデータの暗号化と認証に使用されるため、tls-cryptとTLSセッション自体によって1回、そしてもちろん、tls-cryptが使用されない場合でも、ユーザー認証、鍵交換、および構成プッシュは暗号化および認証される必要があります。それ以外の場合は、プロトコル全体がどのように保護されていなかったでしょうか?

偏執的なVPN管理者に追加のセキュリティを追加します(ただし、過去2年間に見つかった恐ろしいSSL/TLSバグを考えると、これらの人々は以前ほど偏執狂ではなくなっているように見えます)、別の肯定的な効果もあります。サービス拒否攻撃。攻撃者がVPNに侵入できない場合でも、何千ものTLSセッションを同時に開こうとする可能性があります。有効な証明書を提供できないと、これらのすべてのセッションは最終的に失敗しますが、そうなるまで(デフォルトでは60秒かかります)、TLSセッションオブジェクトは、小さな組み込みデバイスに大量のメモリリソースを使用できますこれらの何千ものファイルを開くと、そのようなデバイスがすぐにダウンします。 tls-cryptを使用すると、すでに送信された最初のパケットは正しく認証/復号化されないため、すぐに破棄されます。その場合、TLSセッションオブジェクトを作成する必要すらありません。

4
Mecki