LibreSSL

LibreSSLは、TLS/SSLプロトコルのオープンソースによる実装である。TLSの実装にOpenSSLを利用していたOpenBSDの開発者が、2014年4月に明らかとなったOpenSSLのハートブリード脆弱性を受けて独自にフォークしたものである。OpenSSLのコードを見直し、よりセキュアな実装とすることを目的としている。 LibreSSLはOpenSSL 1.0.1ブランチからフォークしたものであり、OpenBSDプロジェクトの標準TLSライブラリとして利用されている。 OpenSSLのハートブリード脆弱性が明らかとなった後、OpenBSDプロジェクトではOpenSSLのソースコードの監査を新たに行った。その結果、OpenSSLをフォークし、OpenBSDプロジェクト自身によって管理する必要があると判断した。libressl.orgドメインの取得は2014年4月11日、プロジェクト名の発表は同月22日であった。 コードの見直しの最初の一週間で、C言語によるコードのうち90,000行以上が削減された。削減されたのは、古く使われていないコードや、古かったり現在となってはほとんど使われていないシステムのサポートのためのコードである。当初LibreSSLはOpenBSD 5.6においてOpenSSLを置き換えることを目的としていたが、安定版を他のプラットフォーム向けにもバックポートして公開することとした。2014年4月現在、LibreSSLプロジェクトでは外部からの継続的な経済的な支援を求めている。 6月5日、いくつかのOpenSSLのバグが公開された。いくつかのプロジェクトにはあらかじめバグの詳細が伝えられていたが、LibreSSLには伝えられていなかった。OpenBSDプロジェクトのテオ・デ・ラートは、OpenSSLの開発者がこの情報を意図的にOpenBSDおよびLibreSSLプロジェクトに伝えなかったとして非難している。 6月20日、GoogleによってOpenSSLの新たなフォークとしてBoringSSLが発表された。Googleは、バグ修正に関する情報をLibreSSLと相互にやり取りすることを表明しているほか、LibreSSL側の要請に応じてGoogle自身によるコミットを従来のライセンスだけでなくISCライセンスで再ライセンスしている。6月21日、テオ・デ・ラートはBoringSSLを歓迎する旨を表明し、他プラットフォーム向けのLibreSSL Portableの概要を発表した。6月20日にはLinux向けの、7月8日にはOS XおよびSolaris向けのポートの準備が開始された。 7月11日、ポータブル版のLibreSSL 2.0.0が公開された。また、2.1.4以降はWindowsにも対応している。macOS High Sierra以降、現行macOS VenturaではOpenSSLに代えLibreSSLが標準インストールされている。 LibreSSLでは、メモリ呼び出しがOpenSSLで用いられていた独自のものから標準ライブラリによるもの（ strlcpy、calloc、asprintf、reallocarray など）に変更されている。これにより、詳細なメモリデバッガを用いたり、ASLR・NXビット・スタックカナリアによってプログラムのクラッシュを観察することでバッファオーバーフローを検出することが可能となる。 CVSログからは、潜在的な二重解放の可能性が修正されていることもわかる。 潜在的な問題を早期に修正できるよう、安全のために設計されたコンパイルオプションやフラグ (-Wall, -Werror, -Wextra, -Wuninitialized) が既定で有効化されている。コードの可読性の向上（Kernel Normal Form、スペースによる整形、改行）や不要なラッパーやマクロの除去により、プログラムの正当性の検証やセキュリティ監査が容易となっている。 2038年問題にも対応済みである。 擬似乱数生成器による乱数のシード生成も、より安全となるよう改良されている。 また、新しい暗号アルゴリズム（ストリーム暗号であるChaCha、メッセージ認証コードであるPoly1305）、楕円曲線暗号（512ビットまでのbrainpool）にも対応している。 SSL 3.0における脆弱性であるPOODLEの報告をうけて、10月16日リリースのバージョン2.1.1よりSSL 3.0を既定で無効化した。 ハートブリードへの対応としてLibreSSLから除去された最初の機能は、Heartbeat拡張そのものであった。また、他のオペレーティングシステムやハードウェアアーキテクチャのサポート（バージョン9までの「クラシックな」Mac OS、NetWare、OS/2、OpenVMS、16-bitのWindowsなど)、不要あるいは安全ではないと考えられるプリプロセッサマクロ、アセンブリ言語、C言語、Perlのための古いデモ・ドキュメントファイルも除去されている。 NSAによるバックドアが存在すると疑われているDual_EC_DRBG（英語版）は、これを必要とするFIPS 140-2（英語版）標準と共にサポートが廃止された。 MD2、SSL 2.0、ケルベロス認証、Password Authenticated Key Exchange by Juggling（英語版） (J-PAKE)、Secure Remote Password protocol（英語版） (SRP)といった使われていないプロトコル、安全ではないアルゴリズムのサポートも廃止されている。 OpenSSLに対する批判の一つに、報告されているにもかかわらず長年修正されずに放置されているバグの数が挙げられる。LibreSSLではこれらのバグの修正も行っている。 ^ “LibreSSL 3.9.2 Released” (英語) (12 5月 2024). 12 5月 2024閲覧。 ^ a b Unangst, Ted (22 April 2014). “Origins of libressl”. flak. 2014年8月4日閲覧。 ^ Kemer, Sean Michael (22 April 2014). “After Heartbleed, OpenSSL Is Forked Into LibreSSL”. eWeek. 2014年8月4日閲覧。 ^ “Not Just a Cleanup Any More: LibreSSL Project Announced”. Slashdot (April 22, 2014). 2014年8月4日閲覧。 ^ Beck, Bob (17 May 2014). “LibreSSL: The first 30 days, and what the Future Holds Slides”. 2014年8月4日閲覧。 ^ M, Constantine (17 May 2014). Soulskill: “30-Day Status Update On LibreSSL”. Slashdot. 2014年8月4日閲覧。 ^ a b Seltzer, Larry (21 April 2014). “OpenBSD forks, prunes, fixes OpenSSL”. Zero Day. ZDNet. 2014年8月4日閲覧。 ^ Hessler, Peter (15 April 2014). “OpenBSD has started a massive strip-down and cleanup of OpenSSL”. OpenBSD Journal. 2014年8月4日閲覧。 ^ a b Brodkin, Jon (22 April 2014). “OpenSSL code beyond repair, claims creator of "LibreSSL" fork”. Ars Technica. 2014年8月4日閲覧。 ^ McCallion, Jane (22 April 2014). “Heartbleed: LibreSSL scrubs "irresponsible" OpenSSL code”. PC Pro. 2014年8月4日閲覧。 ^ Larabel, Michael (9 May 2014). “OpenBSD Affirms That LibreSSL Will Be Portable”. Phoronix. 2014年8月4日閲覧。 ^ “oss-sec: Re: OpenSSL seven security fixes”. Seclists.org. 2014年8月4日閲覧。 ^ “'Re: new OpenSSL flaws' - MARC”. Marc.info (2014年6月5日). 2014年8月4日閲覧。 ^ a b Langley, Adam (20 June 2014). “BoringSSL (20 Jun 2014)”. ImperialViolet. 2014年8月4日閲覧。 ^ Goodin, Dan (20 June 2014). “Google unveils independent “fork” of OpenSSL called “BoringSSL””. Ars Technica. 2014年8月4日閲覧。 ^ Sing, Joel (21 June 2014). “OpenBSD — lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c”. 2014年8月4日閲覧。 ^ Raadt, Theo de (21 June 2014). "Boringssl and such" (Mailing list). 2014年8月4日閲覧。 ^ Beck, Bob (20 June 2014). “OpenBSD — lib/libcrypto/crypto getentropy_linux.c”. 2014年8月4日閲覧。 ^ Beck, Bob (8 July 2014). “OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c”. 2014年8月4日閲覧。 ^ “Index of /pub/OpenBSD/LibreSSL” (11 July 2014). 2014年8月4日閲覧。 ^ Beck, Bob (11 July 2014). “First release of LibreSSL portable is available”. Marc.info. 2014年8月4日閲覧。 ^ “LibreSSL 2.1.4 released” (2015年3月4日). 2015年3月4日閲覧。 ^ openssl version で LibreSSL x.x.xと返される。macOS Ventura 13.0では3.3.6である。 ^ Orr, William (23 April 2014). “A quick recap over the last week”. OpenSSL Valhalla Rampage. 2014年8月4日閲覧。 ^ “OpenBSD LibreSSL CVS Calloc Commits”. 2014年8月4日閲覧。 ^ “OpenBSD LibreSSL CVS Double Free Commits”. 2014年8月4日閲覧。 ^ “OpenBSD LibreSSL CVS Insecure Seeding”. 2014年8月4日閲覧。 ^ “OpenBSD LibreSSL CVS Kernel Seeding”. 2014年8月4日閲覧。 ^ RFC 5639 ^ “LibreSSL 2.1.1 released.”. LibreSSL (2014年10月16日). 2014年10月21日閲覧。 ^ “OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEAT”. 2014年8月4日閲覧。 ^ Perlroth, Nicole (September 10, 2013). “Government Announces Steps to Restore Confidence on Encryption Standards”. The New York Times. http://bits.blogs.nytimes.com/2013/09/10/government-announces-steps-to-restore-confidence-on-encryption-standards/ 2014年8月4日閲覧。  ^ “OpenBSD LibreSSL CVS Buffer Release (#2167 bugfix) Commit” (10 April 2014). 2014年8月4日閲覧。 ポータル FLOSS Transport Layer Security TLS実装の比較 OpenSSL OpenBSD OpenSSH 公式ウェブサイト LibreSSL source code (OpenGrok) OpenSSL Valhalla Rampage（コードの見直しに関する情報をまとめているブログ）