PerfData

Webのセキュリティ

Webパフォーマンス入門: SSLとWebセキュリティ

2017年10月25日
著者: Kameerath Kareem
翻訳: 小川 純平

この記事は米Catchpoint Systems社のブログ記事 Web Performance 101: SSL and Web Securityの翻訳です。
Spelldataは、Catchpointの日本代理店です。
この記事は、Catchpointの許可を得て、翻訳しています。


インターネットは、拡大し続けるデータの倉庫です。そのデータには、公開されているデータと、権限を持った人のみがアクセスできる(少なくともそうなっているべき)、個人的なデータや機密データの両方が含まれます。
ハッカーがこのデータを盗聴・改竄する方法は数多くあり、WorldWide Webはデータの安全性を保証できませんので、あなたがデータが安全に伝送・保存されていることを保証しなければなりません。
ネットショップや銀行サイトの顧客はハッカーの標的になりやすいため、かつてないほどにデータの暗号化が重要となり、サイバー攻撃の第一防御壁としての役割を担うようになっています。

全体像として

オンラインの世界を守る戦いは今も継続しており、データの剽窃は長年の間上昇し続けています。クリントン氏の選挙活動でのデータ漏洩や、Yahoo!(訳注: Japanではない)のデータベースから50億のユーザアカウントが盗まれた問題など、私達は目立ったデータ剽窃を数多く見てきました。

USにおけるデータ剽窃・暴露の年間件数のグラフ

ハッカーは、様々なテクニックを用いて、顧客のデータにアクセスします。いくつか挙げるなら、フィッシング、DNSスプーフィング、コードインジェクションなどでしょうか。
顧客のデータを安全にしておくには、最初にデータを収集・伝送する際に、暗号化された経路で送信することが重要です。
HTTPはデフォルトではデータのセキュリティ機能を提供せず、そのため接続は脆弱なものになります。

一方、HTTPSはユーザ(ブラウザ)とWebサイト(サーバ)の間のデータ交換を暗号化して保護します。
HTTPSは、SSL(Secure Sockets Layer)を用つつ、通常のHTTPに沿ったプロトコルで、インターネット上で機密性の高いデータを送信するための安全な接続を確立します。

SSLかTLSか?

SSLとTLS(Transport Layer Security)という言葉は、クライアント・サーバ間で認証とデータの暗号化を提供するもの、として、よく区別されずに使われます。
SSLには複数のバージョンがあり、その最後のバージョン(SSL 3.0)の後継がTLSです。SSLプロトコルの強化版になります。
現在全てのブラウザでサポートされているのはTLSなのですが、一般にSSLと呼ばれることが多いです。

何故SSLが必要なのか

SSLはクライアント・サーバ間での安全な経路を提供し、暗号化された通信のみ許可します。SSLを用いたHTTP接続(HTTPS)を盗聴しようとする者は、送信されているデータを解読することはできません。
データを安全に保つことに加えて、SSLはユーザの同一性を保護するためにも使われます。
Webサイトが位置情報を要求したり、個人情報やユーザの好みについて、Webサイトの流れの中で収集したりする場合には暗号化を行う必要があり、そうしなかった場合にはこのデータが、重要な個人情報を収集したい人に取得されてしまいます。

電話番号、社会保障番号(訳注: 米国において、日本のマイナンバーに相当)、銀行口座情報、クレジットカード情報などは、毎日のように顧客から提供されています。
そのようなデータのやり取りは、簡単に傍受されてしまいます。
ハッカーは保護されていないデータを読み取ったり、盗んだり、更にはデータを書き換えてクライアントのシステムに悪意あるコードを注入しやすくすることもできるのです。

SSLを導入するには

あなたのWebサイトにSSLを実装することで、顧客に信頼できる環境を提供することができ、データ剽窃の可能性を大幅に下げることができます。
SSLを導入するには、

SSLの動作

顧客がHTTPSを用いたページとやり取りする際、サーバは検証のため、SSL証明書のコピーをブラウザに送信します。
ブラウザ・サーバ間の安全な伝送路を確立するため、対象鍵ペアが生成されます。
手順については、下記の画像をご覧ください。

より詳細な解説は、こちらの記事(英語)で解説されています。

SSL通信路の確立手順

SSLとユーザ体験

SSLが正しく設定されていない場合、サイトの可用性とパフォーマンスに影響します。
証明書エラーを避けるために、SSL証明書ベンダの真正性を確認することが重要です。
もしブラウザがサーバの証明書を認証できない場合、ユーザはWebサイトにアクセスできなくなり、ユーザ体験は完全に損なわれます。

HTTPSで配信されるページの中にある、保護されていない要素(サードパーティからのオブジェクトも含みます)は、大きなボトルネックとなります。
リンク切れ・見つからない画像として処理されるか、あるいはページ全体の読み込みができなくなる場合もあります。
SSLが正しく設定され、デジタル体験に影響していないことを確認しなければなりません。

こちらの記事も興味深いかと思いますので、読んでみて下さい。
SSLがパフォーマンスに影響した際に、Catchpointがどうやってその根本的な原因を突き止めたかについて解説されています。

SSLとHTTP/2

HTTP/2はGoogleのSPDYプロトコルをベースに開発されたHTTPの最新版です。
HTTPのこのバージョンでは、スピードや効率性、セキュリティが向上しています。
(訳注: 残念ながら、Spelldataでの検証や、お客様のサイトでのHTTP/2導入後の検証では、高速性について有意差を認めることは未だにできていません。)

HTTP/2の規格は、SSL通信(HTTPS)と非SSL通信(HTTP)をサポートしていますが、ChromeやFirefoxなどのブラウザではHTTP/2の通信はSSLを使わないと行うことはできません。
HTTP/2をWebサイトで有効にするには、最新のSSL/TLSが必須となります。

多くの会社では、コストと、HTTPSによるページの読込時間のオーバヘッドのために、SSLの導入を避けていると思います。
私達は、SSLがWebサイトのパフォーマンスに与える実際の影響について、こちらで調査しました。
ページ上でSSLが有効になっている際、安全な接続を確立するのにラウンドトリップが余計に必要になり、サイトパフォーマンスに影響を与えます。

HTTP/2と通常のHTTPSトランザクションを比較した研究では、マルチプレキシングがページパフォーマンスに良い影響を与えており、HTTP/2の方が速く効率的でした。
(訳注: 実際、この記事の検証は、かなり問題があって、データ上はHTTP/2導入で遅延しています。)

セキュリティの優先度を決める

オンライン世界において非常に気がかりな事実として、サイバー犯罪が流行していることです。
Eコマース、ヘルスケア、銀行、教育、更には軍事に至るまで、あらゆる産業のデータベースがサイバー攻撃の標的となっています。
機密情報を守らなければならない時には、少なくとも基本的な計測を実装することが重要です。
SSL/TLSを用いることで、ユーザは情報を共有するのに安全な環境を提供され、効率的にデータ剽窃を防止することができます。