トップQs
タイムライン
チャット
視点

OpenSSL

SSLプロトコル・TLSプロトコルの、オープンソースで開発・提供されるソフトウェア ウィキペディアから

OpenSSL
Remove ads

OpenSSL(オープン・エスエスエル)は、TLSプロトコル・SSLプロトコルの、オープンソースで開発・提供されるソフトウェアである。中心となっているライブラリC言語で書かれている)は基本的な暗号化関数と様々なユーティリティ関数を実装している。様々なコンピュータ言語でOpenSSLライブラリを利用できるようにするラッパーもある。OpenSSLはEric A. YoungとTim HudsonによるSSLeay1998年12月に開発者がRSA Securityに異動したため開発は終了されている)を基にしている。

概要 開発元, 最新版 ...

OpenSSLが利用可能なプラットフォームは、ほぼ全てのUnix系SolarisLinuxmacOSBSDを含む)、OpenVMS、そしてWindowsである。IBMによってSystem i (iSeries/AS400) に移植されたバージョンもある。

Remove ads

バージョン履歴

要約
視点
さらに見る バージョン, リリース日 ...

使用ライブラリ( libssl, libcrypto )を ver. 1.0 から 1.1 に変更する場合には、使用元のプログラムを少なからず変更する必要がある。本変更に関するノウハウや解説が[19]においてまとめられている。

Remove ads

暗号化アルゴリズム

OpenSSLは以下の暗号化アルゴリズムをサポートする。

プロトコル
SSL 3.0、TLS (1.0、1.1、1.2、1.3)、DTLS (1.0、1.2)
共通鍵暗号方式
AESBlowfishCamelliaChaCha20Poly1305SEEDCAST-128DESIDEARC2RC4RC5トリプルDESGOST 28147-89英語版[20]SM4英語版
ハッシュ関数方式
MD5MD4MD2SHA-1SHA-2SHA-3RIPEMD-160MDC-2英語版GOST R 34.11-94英語版[20]BLAKE2Whirlpool[21]SM3英語版
公開鍵暗号方式
RSADSAディフィー・ヘルマン鍵共有楕円曲線暗号X25519Ed25519X448Ed448、GOST R 34.10-2001[20]SM2
Remove ads

FIPS 140-2の承認

OpenSSLは、NIST(アメリカ国立標準技術研究所)のCryptographic Module Validation Program英語版によるコンピュータセキュリティ標準であるFIPS 140-2において承認された[22]初めてのオープンソースプログラムである。ただしOpenSSL自体が検証されたのではなく、OpenSSL FIPS Object Moduleという標準対応用のソースコードを組み込んだものが検証されている。このモジュールはOpenSSL 1.0.1/1.0.2で使用可能。[23]

最初の承認は2006年1月に行われた。同年7月には「承認されたモジュールによる外部のプログラムとの相互作用に関し疑問が提示された」[24]ため、いったんは撤回されたものの、翌2007年に再び承認が行われた[25][26]

ライセンス

OpenSSL v3.0.0未満はOpenSSL LicenseSSLeay Licenseの両方のライセンス下で公開されている[27]。OpenSSL v3.0.0以降ではApache License Version 2.0のみとなる[2][3][4]OpenSSL LicenseApache License, Version 1.0であり、SSLeay Licenseは宣伝条項付きの四条項BSDライセンスである。一般にデュアルライセンスではユーザーは2つのライセンスのうち片方を選択できるが、OpenSSLの説明書きによると、両方のライセンスが適用されることを意味している。

OpenSSL v3.0.0未満のOpenSSL Licenseは、Apache License Version 2.0ではなくApache License Version 1.0である(前述の通りOpenSSL v3.0.0以降ではApache License Version 2.0のみ[2][3][4])ため、「この製品はOpenSSLツールキットを利用するためにOpenSSLプロジェクトによって開発されたソフトウェアを含む。(This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit[28])」という一文を再頒布の際に含めなければならないという規定が含まれ、GNU General Public License (GPL) と非互換である[29]。ただしThe OpenSSL Projectの見解では、多くのLinuxBSDディストリビューションにおいて、OpenSSLはオペレーティングシステムの一部をなしているためGPLの制限は適用されないとしている[30]。中には、"OpenSSL exception"を追加してシステムで動かせるようにしているプロジェクトもある。GNU Wgetclimm英語版プロジェクトがそのような例である[31][32]

Remove ads

バグによる脆弱性

要約
視点

Debianの弱い鍵

ValgrindをOpenSSLに対しても適用可能とするために、Debianディストリビューションに含まれるOpenSSLにパッチを適用したが、この際に誤って擬似乱数生成器が正しく動作しなくなり、生成される暗号鍵が予測可能なものとなってしまった[33]

このバグは2006年9月17日にリリースされたDebian (OpenSSL 0.9.8c-1) から含まれており、バグが判明してDebianから発表されたのは2008年5月13日であった[34]。Debian系以外のシステムを含め、問題となったDebian上で生成した鍵を使用している場合は、脆弱性のないOpenSSLで鍵を再生成する必要がある[33]

このバグは、Debian 4.0 (etch) ではOpenSSLの0.9.8c-4etch3以降で、Debian 5.0 (lenny) では0.9.8g-9で修正されている[34]

Heartbleed

Thumb
Heartbleedバグのロゴ

2014年4月7日に、OpenSSLの1.0.2-betaや1.0.1系列で、TLSのheartbeat拡張[35]について、メモリの扱いにバグがあると発表された[36] 。このバグを利用することで、ハートビート1回ごとに64キロバイトのメモリを読み取ることが可能となる[36]。この問題のCVE番号はCVE-2014-0160である[37]

この脆弱性は2011年12月31日から存在し、OpenSSL 1.0.1がリリースされた2012年3月14日以降、脆弱性のあるOpenSSLが広く使われている[38][39]。サーバ側のメモリを読むことで、機密情報にアクセスが可能となり、場合によっては秘密鍵を盗まれて[38]暗号化が無力となり、中間者攻撃を仕掛けることが可能となる。

ユーザーに関する非公開の情報、たとえばセッションクッキーやパスワードも漏れうるため、他者になりすますことも可能となってしまう[40]。脆弱性が判明した段階で、認証局から証明を受けたHTTPSサーバのうち、ざっと17%から半分程度が影響するものと見られている[41]

基本的な対策はハートビートを使用しない(-DOPENSSL_NO_HEARTBEATS オプションを付けて再コンパイルする)か、脆弱性を修正したバージョン(1.0.1g以降)への更新となる[36]

CCS Injection Vulnerability

2014年6月6日に、過去10年以上に渡るすべてのOpenSSLのバージョンについて、ChangeCipherSpecメッセージの処理の不正な順序による挿入によって攻撃者の意図する弱い暗号へ強制変更させた通信として開始されるという攻撃方法が発見され、CCS Injection脆弱性 (CCS Injection Vulnerability, CVE-2014-0224) として公開された[42]

この脆弱性は過去のOpenSSLのほとんどのバージョンに存在し、通信開始手順の途中で不正な信号を送ると、該当する通信で使われる一時的な暗号鍵が、第三者でも予想できてしまうというものである。

また、脆弱性発見の経緯が、発見者により公開されている[43]

DROWN攻撃

Decrypting RSA with Obsolete and Weakened eNcryptionと名付けられた攻撃手法の略称[44]

脆弱性の概要は、SSLv2を使用可能にしていると攻撃者は、同じ秘密鍵を共有するSSLv2が有効なサーバにプローブを送信することで、新しいプロトコルであるTLSを使ったクライアントとサーバ間の接続を復号することができる[45]。 想定される影響は、遠隔の攻撃者に、SSLv2 をサポートしているサーバの暗号通信を解読されるおそれがある。SSLv2 をサポートしており、TLS 通信で SSLv2 と同一の証明書を使用している場合、TLS の暗号通信であっても、同様の影響を受けるおそれがある[46]。 この攻撃に対処したパッチは、1.0.1sまたは1.0.2.g[47]である。 SSLv2自体は、2011年から非推奨[48]となっている。

Remove ads

フォーク

LibreSSL

OpenBSDプロジェクトでは、前述のハートブリード問題をうけて、OpenSSL 1.0.1gをベースとしてフォークしたLibreSSLを2014年4月に立ち上げた[49]。これは、OpenBSDで利用されているOpenSSLライブラリを置き換えることを目的としており、OpenSSLのコードの見直しを行いよりセキュアな実装とすることを目指している。

既に、OpenBSDにおいて不要なコードや、古いシステムのサポートのためのコードの削除を行い、90000行以上のソースコードの削減を行っている[50]

2014年7月11日に、LibreSSL 2.0.0がリリースされた[51][52]

BoringSSL

Googleも、OpenSSLをフォークしたBoringSSLの立ち上げを2014年6月に発表した[53][54]。Googleでは、OpenSSL、LibreSSL双方の開発者と協力していくとしている。

Remove ads

脚注

Loading content...

関連項目

Loading content...

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads