今日、ウェブに接続する人々はかつてないほど増え、場所も増え続けています。
私たちはノートパソコン、スマートフォン、タブレットとつながっていますが、おそらくプライベートのデバイスやアクセサリーにもすぐにつながっています。インターネットには信頼できないネットワーク、場合によっては悪意のあるネットワークからアクセスします。私たちの生活の多くがオンラインで行われる中で、私たちのデータとユーザーのデータを保護するための措置を講じることが不可欠です。
とりわけ、開発者は SSL の必要性と実用性を理解する必要があります。
SSL とはセキュア ソケット レイヤ(Secure Sockets Layer)の略で、インターネット上での通信セキュリティを確保するために設計された暗号プロトコルです。暗号化と整合性によりプライバシーを保証し、インターネット接続の傍受や改ざんを防ぎます。SSL にも欠点がありますが、これはインターネット上のあらゆる種類のデータ通信セキュリティを確保するための、最先端の方法であり、まさに唯一の方法です。
SSL Pulse によると、1 年前には SSL の導入率が 15% 弱でしたが、現在は 50% を超えています。
2 つの頭字語:
TLS: ほとんどのインテントと目的において、SSL と同じです。正確に言うと、SSL 3.1 は TLS に名前変更され、TLS は IETF 標準の名前です。しかし、この 2 つは交換可能です。
HTTPS: HTTP over SSL です。SSL と標準 HTTP のセキュリティ機能がレイヤ化されています。まず、公開鍵/秘密鍵暗号を使用して、クライアントとサーバー間のハンドシェイクを行います。共有鍵は、SSL プロトコルの 2 番目の部分で通信の暗号化に使用されます。
インターネット上のネットワークは、安全で迅速、かつ高速であると感じるかもしれません。まるでウェブサイトに直接話しかけているように感じられます。しかし実際には、それは直接のつながりではありません。Google の通信は Wi-Fi ルーターや ISP を経由しており、また、ユーザーのデバイスとウェブサイトとの間の中継プロキシとなる場合もあります。HTTPS を使用していない場合、通信はすべて書式なしテキストで行われます。
問題は、ユーザーが HTTPS を指定して完全な URL を入力することがほとんどないか、HTTP を使用してリンクをクリックすることです。さらに悪いことに、(女性)中間者攻撃を仕掛けて HTTPS が HTTP に置き換わるおそれもあります。まさにそれを実現するのが、2009 年に導入された SSLstrip というツールです。2010 年以来、Firesheep は開いた Wi-Fi ネットワークを聞いて、クッキーがクリアな状態で送信されることを聞いていました。つまり、チャットを聴いたり、他人の Facebook アカウントにログインしたりできる、という意味でした。
しかし、SSL は(比較的)安価で迅速、デプロイが簡単です(ssllabs.com と Ilya Grigorik の書籍『High Performance Browser Networking』をご覧ください)。非営利目的であれば、startssl.com から無料の証明書を入手することもできます。公開鍵のピン留めは、ウェブサイト事業者がサイトに対して実際に証明書を発行できる認証局を制限する手段を提供するように設計されています。
「今年(2010 年)1 月、Gmail はデフォルトで HTTPS の使用に切り替わりました。..これを行うためには、追加のマシンも特別なハードウェアも導入しなくてはなりませんでした。本番環境フロントエンド マシンでは、SSL は CPU 負荷の 1% 未満、接続あたりのメモリ容量は 10 KB 未満、ネットワーク オーバーヘッドの 2% 未満です。
ここで覚えておいていただきたいのは、SSL はもう計算処理に費用がかかるわけではない、ということです。」
– Overclocking SSL、Adam Langley(Google)
よくあるバグは次のとおりです。
- 混合コンテンツ: HTTP と HTTPS を使用するサイト。コンテンツを読み込む際に権限ボタンをクリックすることになるため、ユーザーにイライラします。(Chrome と Firefox では、実際に iframe から混合コンテンツが制限されます)。相対 URL またはスキーム連動 URL(例:
<style src="//foo.com/style.css">
)を使用して、HTTPS ページ内のすべてのリソースが HTTPS で読み込まれるようにします。 - 安全でない Cookie: HTTP 接続を介して暗号化されていない状態で送信されます。これを回避するには、Cookie ヘッダーに Secure 属性を設定します。新しい「Strict Transport Security」ヘッダーを使用して、SSL トランスポート セキュリティ(HSTS)を要求することもできます。
テイクアウェイ
- ユーザーデータのプライバシーと完全性を重視する場合は、SSL を使用する必要があります。これまで以上に速く、簡単で、より低価格になりました。
- 混合コンテンツのバグや、適切な HTTP ヘッダービットの設定の失敗など、一般的な実装の問題を回避します。
- 相対 URL またはスキーム相対 URL を使用します。
- HSTS や証明書ピニングなど、新しい機能をご確認ください
スライド: SSL に対応していますか?