36
BearSSL は他の最新 TLS ソフトウェアライブラリに加わり、インターネットのセキュリティを強化します

カナダのセキュリティ専門家であり、複数の暗号化アルゴリズムと研究論文を執筆しているトーマス・ポーニン氏は、「BearSSL」と呼ばれるTLSプロトコルのより軽量で高速、かつ安全なソフトウェア実装の開発に着手しました。C言語で書かれたこのソフトウェアライブラリは、はるかに肥大化し、レガシーコードに悩まされているOpenSSLの競合となるでしょう。さらに、より簡素化されたLibreSSLやGoogle独自のBoringSSLライブラリとも競合するでしょう。

Heartbleed後のOpenSSLの競合

TLS暗号化を必要とするソフトウェアの大部分は、ほぼ20年前のOpenSSLソフトウェアライブラリを使用しています。時間の経過とともに、ライブラリにはバグのあるコードが蓄積されてきました。この問題が本格的に表面化したのは、2014年にHeartbleedバグが発生した時です。そして、多くの人々がOpenSSLを解析し、機能強化し、独自の競合する代替ライブラリを作成し始めたことで、この問題は表面化しました。

LibreSSLは、Heartbleed発見後に作成されたOpenSSLの競合製品の一つです。OpenBSDオペレーティングシステムの開発グループがメンテナンスを行っているOpenSSLのフォークです。開発グループはほぼ即座にOpenSSLから9万行のコードを削除しました。その後もSSLライブラリのクリーンアップを進め、最新の機能を追加しています。

Googleは昨年、OpenSSLの別のフォークであるBoringSSLを発表しました。同社はOpenSSLをクリーンアップし、Googleプロジェクト専用の特別バージョンとして使用することを目指しました。Android 6.0以降では既にBoringSSLが使用されており、Chromeも数バージョン前から使用しています。

セキュリティ専門家で元Mozilla社員のブライアン・スミス氏も、独自の暗号ライブラリプロジェクト「Ring」の開発に着手しました。このプロジェクトはBoringSSLアルゴリズムを採用していますが、コードは全く新しいものです。この新しいライブラリは、Mozillaが支援するメモリセーフかつスレッドセーフなプログラミング言語であるRustを主に使用することを目指しており、Firefoxコンポーネントの高速化とセキュリティ強化にも活用されています。Ringは、Rustを安全に使用できない場合や、タイミング攻撃を回避するためにより高いパフォーマンスが求められる場合には、アセンブリ言語も使用します。

上記の暗号ライブラリはすべて、大幅に改良されたOpenSSLの派生版ですが、OpenSSLと一部のコンポーネントを共有しているようです。Ringは完全に新しいコードであり、Googleセキュリティチームによって既に書き換えられているBoringSSLアルゴリズムを使用している可能性が高いため、この定義には最も当てはまりません。

BearSSLはパフォーマンス上の理由から、完全にC言語で記述されます。元の作者と同等のC言語の知識を持たない人がBearSSLに貢献するようになれば、長期的にはデメリットとなる可能性があります。Pornin氏は今のところ、安全なC言語コンポーネントのみを使用するように努めるべきです。その方法の一つとして、ライブラリのアーキテクチャとAPIの使用方法の両方について、可能な限り多くのコードドキュメントを提供するよう努めています。

BearSSLはゼロから開発され、高パフォーマンス設計のため、コンパイル済みコードサイズはわずか20KB、RAM消費量はわずか25KBです。この軽量設計により、このライブラリはデスクトップやモバイルOSだけでなく、セキュリティ強化が急務となっている軽量IoTプラットフォームにも最適です。

Thomas Pornin 氏はまた、できるだけ多くの開発者とプラットフォームが利用できるように、ライブラリを移植性が高く機能豊富なものにすることを目指しています。

特徴

BearSSLは、ライブラリバージョン0.1(まだアルファ段階)で既にTLS 1.0、1.1、1.2をサポートしています。他のライブラリでは既にSSL 3.0が非推奨となっているため、BearSSLもサポートしません。

また、RSA、ECDH、ECDHEもサポートされますが、DHEはECDHEよりも優れた点がなく、開発者が誤って使用することが多いため、サポートされません(Pornin氏)。BearSSLは、AES/GCM、AES/CBC、3DES/CBC暗号に加え、RSAおよびECDSA暗号署名、SHA-1およびSHA2ハッシュ関数もサポートします。

すべてのアルゴリズム実装は、タイミング攻撃を回避するため、デフォルトで「定数時間」で実行されます。セキュアな再ネゴシエーション、静的リンクモデル、動的割り当ての回避、ステートマシンAPIなどの機能も備えています。

今後登場する TLS 1.3 プロトコル、Curve25519 楕円曲線、ChaCha20-Poly1305 暗号化モード、x86 および ARM アーキテクチャの最適化など、より現代的な機能の実装も計画されています。

新しい TLS ソフトウェア ライブラリのいずれかが、OpenSSL の人気度に大きな影響を与えるかどうかはまだわかりません。OpenSSL は現在、Linux Foundation から資金提供を受けており、独自のクリーンアップと改善が行われています。

新しいライブラリには、レガシーコードがほとんど含まれていない、あるいは全く含まれていないという利点があります。また、以前のライブラリよりもはるかに安全な方法でゼロから開発されているという利点もあります。新しいライブラリを採用することで、インターネットトラフィックの整合性と機密性を確保するはずのソフトウェアにおける重大な脆弱性が減少する可能性があります。

更新、2016 年 11 月 7 日午前 9 時 50 分 (太平洋時間): Brian Smith 氏が元 Mozilla 社員になったことを明記し、その他のいくつかの誤りを修正するために投稿が更新されました。

ルシアン・アルマスは、Tom's Hardware USの寄稿ライターです。ソフトウェア関連のニュースやプライバシーとセキュリティに関する問題を取り上げています。