10月23日、ISRGが「RustlsがOpenSSLやBoringSSLを凌駕する」という記事を公開した。この記事では、Rustlsのメモリ安全性とパフォーマンスに焦点を当て、TLSライブラリの進化について詳しく紹介されている。
以下に、その内容を紹介する。
Rustlsとは何か?
Rustlsは、Rust言語で書かれ、メモリ安全性に優れたTLS(Transport Layer Security)実装である。
Rustlsはすでにプロダクション環境に対応しており、さまざまなアプリケーションで利用されている。C APIとFIPSサポートも備えており、既存のプログラムにも安全かつ高性能なTLSを提供することが可能である。
OpenSSLやその派生プロジェクトは、インターネット全体で広く使われているが、メモリ安全性の脆弱性が長い間指摘されており、今年も新たな脆弱性が発見されている。CベースのTLSからの移行が求められている中で、Rustlsの役割がますます重要になっている。
ハンドシェイク性能
最初に注目する指標は、同じハードウェアとリソース制約下で1秒間に完了できるハンドシェイクの数である。これらのテストでは、メモリバッファ越しにクライアントとサーバーが1対1で接続され、クライアントとサーバーの処理時間を計測している。ネットワーク遅延やシステムコールのオーバーヘッドを排除した上での最大性能が示されている。
すべてのテストシナリオで、Rustlsがリードしていることがわかる。
スループット性能
次に注目する指標は、同じハードウェアとリソース制約下でのスループット、つまり1秒あたりのメガバイト数である。
こちらでも、Rustlsが一貫して他のライブラリを上回る結果を示している。
テスト方法
これらのテストは、Debian Linuxを使用し、Intel Xeon E-2386G CPUで実施された。ハイパースレッディングやダイナミック周波数スケーリングは無効化され、CPUスケーリングガバナーはすべてのコアで「パフォーマンス」に設定された。詳細はこちらを参照してほしい。
Rustlsを試してみよう
Rustlsはすでにプロダクション環境で使用可能であり、以下の機能を提供している:
- CおよびRust APIのサポート
- FIPS対応
- ポスト量子鍵交換(新しいアルゴリズムは近日公開予定)
- 暗号化されたクライアントHello(クライアントサイド)
- OSトラストベリファイアのサポート
詳細は[Rustls Outperforms OpenSSL and BoringSSL」を参照していただきたい。