OpenVPN&セキュリティ情報
2013-02-08
OpenSSLの脆弱性(Lucky Thirteen)がOpenVPNに与える影響について
今週初め、OpenSSL等のSSLライブラリに見つかった脆弱性(Lucky Thirteen:CVE-2013-0169) が発表されましたが、この脆弱性がOpenVPNに与える影響について、David Sommerseth氏からOpenVPN Users MLに投稿がありました。結論としては影響なし、とのことですが、そのメールの参考訳を掲載します。
他の誰も返信しないようなので、私から返信します。この件については、この問題が一般に公開される前に開発チーム内で協議されました。この問題に関する情報は、多くのSSLライブラリのアップデートがリリースされるのに合わせて月曜日に公開されたものです。
まず、私は暗号化の専門家ではないため、問題の詳細に関しては限定的な理解であることを前置きさせてください。その上で、事実を過小評価したりいじったりすることなく、なるべく分かりやすく説明したいと思います。
前提として、OpenVPNのセキュリティについてですが、SSL/TLS処理についてはOpenVPNが使用しているSSLライブラリ(v2.3.0以降ではOpenSSLかPolarSSLを指します)に完全に依存しています。しかし! SSLライブラリが持つ機能のうち、OpenVPNが使用していないものがいくつかあり、OpenVPNはSSLライブラリに今回見つかったセキュリティ上の欠陥の影響をほとんど受けません。さらに、OpenVPNに対する攻撃を困難にするため、OpenVPNはSSL/TLSワイヤプロトコルに直接関連しない追加のレイヤーを追加することができます。
開発者による協議の結果によれば、今回の件でOpenVPNのセキュリティを弱める可能性のある問題は特にないとのことです。私の理解では、この脆弱性に関連した攻撃がOpenVPNに加えられた場合でも、OpenVPNは通常通りそのパケットを廃棄して新しいトンネルネゴシエーションを開始するに過ぎないと考えています。加えて、もし --tls-auth が設定されていれば、追加のHMAC認証にほとんどの場合失敗することになり、その場合はサーバーまたはクライアントはその後の解析処理に送るまでもなくそれらのパケットを破棄してしまいます。
今回発覚した脆弱性はDTLSにも密接に関連したものですが、OpenVPNはこのプロトコルを使用していません。OpenVPNはDTLSが提供している機能(UDPなどの信頼できない/ステートレスな接続上でのTLS機能)と同等の機能を独自のソリューションで実装しているためです。これはまた、OpenVPNがDTLSに関連した問題に影響されにくいことも意味しています。
私が理解している限り、今回の脆弱性の問題はタイミングとパディングに関連したものです。ざっくり言えば、不正なパディングとそれらのパケットの応答時間により、接続を切断できる可能性があり、暗号化されたデータの安全性を脅かすことができる、というものです。
PolarSSLでは、クライアントからのパディングに関わりなくほぼ同じ応答時間を提供する機能を実装したため、タイミング攻撃ベクタの使用がほぼ不可能になったとのことです。OpenSSLがどのような方法で対応したのかは現時点では私は理解していません。ただ、私たちは(OpenVPN側の問題でない限り)OpenSSLの今回の修正によってOpenVPNで問題が発生した [1] ことを理解しており、この件については調査中です。
[1] https://bugs.gentoo.org/show_bug.cgi?id=455810
Related Posts
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
807,747
Popular Posts
-
「VPNっていろいろあるけど、OpenVPNのメリットって何?」 という疑問は多くの方が持たれますよね。この点は公式サイトなどにもいろいろ書かれているのですが、実際に使ってきたユーザー側としてメリットと思う部分をまとめてみました。
-
現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。 OpenVPN.netのダウンロードページ にも Note that easy-rsa is no longer bundled with OpenVPN...
-
Jan Just Keijser氏の記事「 Optimizing performance on gigabit networks 」については こちら でも概要を取り上げましたが、記事全体にいろいろなヒントが含まれていますので、全文の日本語訳を掲載しています。意訳している部分も...
-
OpenVPNでは、接続してきたクライアントのVPNアドレスは動的に割り振られます(その際に割り振られる際のアドレス範囲はOpenVPNサーバー側設定ファイルに基づきます)。特定のVPNクライアントに特定のVPNアドレスを割り振りたい場合、OpenVPNでは以下の2つの方法で設定...
-
では、いよいよiPhone構成ユーティリティでVoDの設定をしてみましょう。あ、 前の記事 での準備はきちんとやっておいてくださいね!
-
現時点においてはマニュアルやHowToにも記載されていない(ChangeLogにちょっとだけ出てきます)あまり知られていない機能なのですが、「設定ファイルで鍵ファイルや証明書ファイルのパスを記載する」という通常の方法とは別に、「鍵ファイルや証明書ファイル内のデータをそのまま設定フ...
-
前回 は2つのワンタイムパスワードの生成方法について取り上げました。今回はいよいよ実際の生成アルゴリズムを取り上げましょう。TOTPをベースに説明します(ただ、前回も解説したように、基本的なロジックはTOTPとHOTPで同じです)。 参考としてpythonのコードも併記してみま...
-
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。 今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。 ...
-
前回 はワンタイムパスワードの基本的な仕組みについて説明しました。サーバー側とクライアント側で、それぞれ共通のルールに基づいてパスワードを生成させる必要があることを取り上げましたが、今回は OATH が規定しているその生成ルールについて具体的に説明します。 ワンタ...
-
OpenVPNを使用している方ならよくご存知だと思いますが、通常OpenVPNでは証明書認証を使用します。証明書認証はID/パスワード認証に比較すると安全性が高いとされます(もちろん、秘密鍵の管理方法に大きく依存します)が、証明書認証の概念を理解しにくいユーザーが秘密鍵や証明...
© yamata::memo 2013 . Powered by Bootstrap , WebLyb