はじめに
SSL(Secure Socket Layer)は、Webの通信を暗号化してセキュリティを高める技術で、ブラウザに鍵マークが表示されて安全に通信できる方法として一般に広く認知されています。
SSLはオンラインバンキングなど高いセキュリティが要求されるサービスに用いられるのはもちろん、SSL環境でしか利用できない技術が登場している状況など、その重要性は近年ますます高まっています。本記事ではSSLを取り巻く現在状況や、SSLを容易に利用できる環境について紹介します。SSL環境でしか使えないWeb技術としてService Workerを紹介し、実装例を説明します。
対象読者
- SSLについて復習したい方
- SSLの重要性は知っているが、めんどくさそうで手が出なかった方
- Service Workerの実装例を探している方
本記事で使用する環境
本記事では使用している環境は以下の通りです。
- GitHubの操作:Windows 7 64bit版、Git v1.9.5
- Service Workerサンプルの実行:Nexus 5(Android 5.1.1)、Chrome 43.0.2357.93
Webの世界に安全性をもたらすSSL
特に意図しない限り、インターネット通信は暗号化されません。例えばWebアクセスに用いられるHTTP通信では、その内容を盗聴や改ざんするのは比較的簡単です。図1はWordPressで構築したブログの管理ページにスマートフォンからログインしたときの通信を盗聴した様子です。ログイン画面に入力されたアカウントやパスワードが丸見えになってしまっています。
また来日観光客の増加とともに拡がりを見せている公衆無線LANサービスでは、無線LANのレベルでセキュリティが設定されていない場合があります。このような無線LANでは電波の届く範囲にいれば理論上通信内容がのぞき放題で、非常にリスクが高い状態と言えます。
このようなセキュリティリスクに対応するため、SSL(Secure Socket Layer)はWebの通信に表1のような機能を提供します。SSLを利用することで通信時のセキュリティリスクを低減することができます。
機能 | 説明 |
---|---|
暗号化 | 盗聴の防止 |
改ざん検出 | データが正しいことを保証 |
認証 | 通信相手のサーバーが正しい相手であることを保証 |
なお現在利用されている技術は正確にはTLS(Transport Layer Protocol)ですが、過去経緯から広義にSSLと呼ばれることが多いため、本記事ではSSLと呼称します。