OpenVPN&セキュリティ情報
2011-11-21
OpenSSLのパフォーマンスに関する実験結果
「OpenVPNのスループット」でもJan Just Keijser氏の調査結果を取り上げさせていただきましたが、今度はOpenSSLに関する調査結果をOpenVPN Users MLで発表していますので、その内容をご紹介します。テスト方法
OpenSSLの処理速度を「openssl speed -evp aes-256-cbc」などのコマンド出力で計測し、CPUのクロックスピードをもとに整理した。すべてのテストはLinux(CentOS、Fedora)で行った(Windowsとの比較データも後述)。測定結果
- BlowFish (BF) のパフォーマンスはCPUのクロックスピードに完全に依存する。i7とXeon Xnnnnの場合は15%の速度向上が見られた。
- AES-NIサポートなしでのAES-256のパフォーマンスはCPUのクロックスピードに完全に依存する。
- AES-NIサポートを有効にした場合、小さいパケット(512バイト未満)の暗号化/復号処理のパフォーマンスはおよそ8倍程度に向上する。
- 大きいパケット(1024バイト以上)では、AES-NIサポートを有効にした場合でも速度の向上幅は1/4に低下する。
その他、ちょっとした情報
- CPUが多くのタスクを処理している状態でなければ、Turbo Boostは速度の向上に寄与する。Turbo Boostは1つのコアのクロックスピードの上限を引き上げることができるが、他のコア/スレッドのタスクで余裕がなくなるとすぐに通常の速度に戻ってしまう。
- RHEL/CentOS 5のopenssl-fipsでは、OpenSSLの速度が半減してしまう!
- opensslを 'noasm' フラグ付きでコンパイル(これにより、OpenSSLから提供されるハードコードされたアセンブリファイルを使用しなくなる)し直すと、AES-NIに対応していないCPUでのAES-256のパフォーマンス(小さいパケットの場合)が2倍に向上する。
- 明らかに言えることとして、OpenSSLが提供している暗号化ルーチンは性能をチューンナップできる余地がある。
WindowsとLinuxでの比較
Windows 7 64ビット版とFedora 14 64ビット版をインストールしたデュアルブートのマシンで同じテストを実施してみたところ、AES-NIなしのテストではLinuxよりもWindowsのほうが5%高速という結果が出た。Windows版のOpenVPN 2.2に同梱されているコンパイル済みOpenSSLは、LinuxのGCCでコンパイルされたOpenSSLよりもわずかに高速ということになる。しかし、OpenSSLのWindows版はAES-NI対応CPUでもAES-NIを使用できない。この点はOpenVPNの機能要望に追加する予定。備考・その他
これらの結果は「素」のOpenSSLでのテストであり、OpenVPNのパフォーマンステスト結果というわけではない。OpenVPNサーバーでは、負荷を分散させる意味で、複数のOpenVPNインスタンスは別々のポートで動作させることが望ましい。WindowsのOpenVPNクライアント/tap-win32ドライバは、Linux/*BSDバージョンに比べてまだだいぶ性能が低い。さらに、高帯域幅のクライアントを処理する場合、FreeBSDのほうがLinuxよりも若干高速という実験結果がある。
OpenVPNは暗号化/復号処理においてOpenSSLを使用しています。PolarSSLサポートも始まってはいますが、PolarSSLではPKCS#12やWindows CryptoAPIなど未対応の機能もあるため、しばらくはOpenSSLがSSLライブラリのメインになると思われます。OpenSSLのパフォーマンスはOpenVPNのパフォーマンスに大きく影響しますので、こういった実測値の情報はとても有用ですね。
以前も取り上げたように、暗号化処理の速度に対するAES-NIの効果性はかなり大きいようです。Windows版での対応も期待しましょう。
いつもながら有用な情報を提供してくださるJan Just Keijser氏に感謝です。
Related Posts
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
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