今回は、通信経路を暗号化するHTTPS(Hyper Text Transport Protocol Secure)について説明します。 HTTPSは、SSL(Secure Socket Layer)/TLS(Transport Layer Security)を使い、HTTP通信を暗号化します。WebアプリケーションでHTTPSを使うと、盗聴や改ざん、なりすましによる被害を防げるようになります。

 ただしHTTPSの実装には注意が必要です。2014年には、SSLのオープンソースソフトウエアであるOpenSSLに、「HeartBleed」「POODLE」「FREAK」と呼ばれる重大な脆弱性が見つかりました。証明書を発行する認証局や、Google Chrome、Firefox、IEなどのブラウザーも対応を進めています。

▼Heartbleedとは、2014年4月に発覚したオープンソースの暗号化ライブラリ「OpenSSL」の脆弱性。サーバーの秘密鍵や利用者のCookieなどが盗み出される可能性がある(関連情報)。

▼POODLE(Padding Oracle On Downgraded Legacy Encryption)とは、2014年10月に発見された暗号化プロトコル「SSL3.0」の脆弱性。通信プロトコルのバージョンをSSL3.0にするように仕向け、暗号化された通信内容を解読できてしまう。2014年12月には、SSLに加えてTLSでも、この脆弱性の影響を受ける可能性があると指摘されている(関連情報)。

▼FREAK(Factoring RSA Export Keys)とは、SSL/TLSの実装に関して、2015年3月に公表された脆弱性。SSL/TLS通信を行うプログラムの中には、通信時に強度の弱い暗号(RSA Export Keys)を使用させられるものが存在する。FREAK脆弱性のあるソフトウエアに対して中間者攻撃が行われると、SSL/TLSの通信内容を解読される可能性がある(関連情報)。

 要件定義や基本設計に携わるSEやPM、そしてWebシステムの開発者は、HTTPSの基礎を押さえ、正しく設計・実装するとともに、最新の動向についても注意する必要があります。

HTTPSの三つの機能で脅威を防ぐ

 HTTPSには、(1)通信経路の暗号化、(2)コンテンツの改ざん検知、(3)通信相手の認証──の三つの機能があります(図1)。

図1 HTTPSの三つの機能
図1 HTTPSの三つの機能
[画像のクリックで拡大表示]