SSL/TSLは、それぞれSecure Sockets LayerとTransport Layer Securityの略称でインターネット上での通信内容を暗号化するためのプロトコル(手順や規約などの約束事)です。
インターネットの通信はいわばバケツリレーなので、途中のバケツから悪意を持ってデータを閲覧しようとした場合、盗み見ることは難しくはありません。
難しい話から始まりましたが、今回はSSL/TSLが必要になった経緯となるべく『安く』実装するための情報を提供致します。
コンテンツ
SSL/TSLっていったい何!?
暗号化されていないデータを盗み見ることは難しくないのですが、盗み見られてそんなに困るデータってあるのか?と思います。
途中でハッキングすることが難しくないとしても、個人同士がやり取りしている内容をいちいち取得して解析されることなんて、ほぼ、考えられません。
見られてたとしても、ちょっぴり恥ずかしいだけで、特に問題にはならないと思います。
では、どの様な場合にSSL/TSLが必要になるのでしょう?
今までは、主にフォームメールやECサイトの決済、特にクレジットカード決済に利用されてきました。
ですので、フォームメールだけサーバー会社の用意する共有SSL/TSLスペースを利用したり、決済画面のみSSL/TSLに対応するなど、サイト全体をSSL/TSL対応せずに済ますこともよくありました。
なぜなら、SSL/TSLの設定には比較的高額な費用がかかり、契約の手間が面倒、個人では契約できないなどの制約があったためです。
また、前述した様に、普通の会社や個人のデータをハッキングする人は、いたずら以外に考えられなかったからです。
SSL/TSLの仕組みをもう少し詳しく
SSLはもともとNetscape Communicatinos社が開発・公開した、インターネットの通信を安全に行うための技術です。
後に、インターネット標準とするためにIETF TLSワーキンググループに移管され、標準化が進むことになります。
2014年に、様々な脆弱性が発見され問題になりましたが、いくつかのバージョンアップを経て、現在に至っています。
SSL/TSLには、暗号化、認証、改ざん防止の3つの機能が備えられています。
SSL/TSLの暗号化の仕組み
まず「暗号化」についてですが、ブラウザから何らかのアクションを起こすと、サーバーにはSSL/TSL通信のリクエストが送られます。
サーバーからは「SSLサーバー証明書」がブラウザーに送られ、ブラウザでは受け取った証明書の公開鍵を使って共通鍵を暗号化してサーバーに送付します。
サーバーの方では、受け取った「共通鍵」を「秘密鍵」を使って暗号化します。
この共通鍵を使って、ブラウザとサーバーで送受信するデータを暗号化、複合化して通信を行います。
なんだか複雑な様ですが、このような手順を踏まえて、SSL/TSLを利用した暗号化通信が行われています。
認証の仕組み
認証の仕組みにより、「なりすまし」を防止することが可能になります。
簡単に言うと、そのサーバーが本当にそのサーバーなのかを確認することができます。
SSL/TSL通信では、通信を行う最初の段階でサーバーから本人性を証明する証明書を接続元のブラウザなどに提示します。
受け取った側では、信頼できる機関が発行した証明書であるかを確認し、問題なければ通信を継続する、という流れになります。
改ざん防止の仕組み
SSL/TSL通信では、「メッセージダイジェスト」という機能を利用して、途中で第三者がデータを書き換えた場合、データに何らかの手が加えられて変更されていることがわかるようになります。
この様な改ざんを検知した場合、そのデータは破棄して送り主にデータを再送信するように依頼します。
SSL/TSLが必要になった理由
SSL/TSLによる暗号化通信が安全な理由は以上の通りです。
なるほど、通信が安全な方が良いに決まっている、でも、サイトに導入するにはそれなりの手間と費用が掛かります。
では、なぜ、SSL/TSL通信が推奨、というよりも「必須」になってきたのでしょう?
SSL/TSLが必須になったのはGoogleが推奨しているから?
それは、Googleが以前から提唱している、安全なWEBのためのHTTPS暗号化採用によるものです。
具体的な内容が以下の「A secure web is here to stay」に記載されています。
現在の Chrome は、HTTP 接続をニュートラルな接続インジケーターとして表示していますが、これでは HTTP 接続が安全でないことが伝わりません。HTTP 経由でウェブサイトを読み込むと、ネットワーク上にいる他者がサイトの情報を事前に盗聴したり改ざんしたりすることができます。(原文は英語)
具体的には、Google Chrome のアドレスバーに、以下の様な警告を表示します。
対応していないサイトは、「このサイトは安全ではありません」というメッセージが表示されてしまいます。
安全性を高めるにはやはりSSL/TSLが必要
Googleの一方的な押し付けの様にも思えますが、安全性を高めるには、やはり、SSL/TSLが必要です。
近年では、スマートフォンやタブレット端末の普及により、駅や空港などの公共施設で手軽に公衆無線LANが利用できるようになりました。
これらの公衆無線LANでは、セキュリティーレベルが低いため、悪意を持った第三者による通信の傍受が容易です。
スマートフォンは画面が小さいため、いちいちSSL/TSLの対応を確認することが少ないため、さらにリスクは高まります。
確かに、盗聴やなりすましなどのリスクを考えると、安全性を高める為にサイトにSSL/TSLを導入する方が良さそうです。
SSL/TSL導入にはメリットもある!?
それでは、SSL/TSL導入するメリットは、セキュリティー面の他にあるのでしょうか?
Googleは、SSL/TSL対応サイトの検索順位を優遇する方針を発表しています。詳細は以下のページを参照して下さい。
同じサイトなら、SSL/TSL対応しているサイトを上位に表示するという事です。
これは、導入しない手はありません。
また、似たような話ですが、同じ内容であれば、SSL/TSL対応サイトが優先的にインデックスに登録されるとも発表しています。
HTTPS ページが優先的にインデックスに登録されるようになります
いずれも、「ユーザー」=「検索する人」のセキュリティーを最優先しているとの説明です。
さらに、Google Analyticsでは、「リファラー」(参照元=流入元のサイト)を把握するには、SSL/TSL対応サイトでないと、情報を引き渡せない仕組みになっています。
このため、HTTPからのアクセスは、ノーリファラーとなってしまい、参照元が把握できません。
あくまでも、ユーザーのセキュリティー強化がGoogleの目的と説明されています。
SSL/TSLを導入するには?
色々な事情はありますが、やはり、SSL/TSLは導入しておいた方がよさそうです。
では、どうすればよいのでしょうか?
個人やサーバー関連の費用に予算が避けない中小企業の場合は、無料でSSL/TSLを設定できるレンタルサーバーを利用するのが一つの方法です。
設定は比較的簡単で、特別な申し込み手続きは不要ですので、費用をかけたくないという方には、この方法がおすすめです。
暗号化強度については有料のものと変わりませんのでその点は心配ありません。
無料でSSL/TSLを導入出来るサーバー
以下に、当社で無料SSL/TSLの導入を行ったサーバーを中心にお知らせします。
導入方法については、各社のサポートページをご確認下さい。
ECサイトなど、クレジットカード決済を行うサイトでは、決済会社の指定で無料のSSL/TSLではカード決済の契約ができないケースがありますので、ご注意ください。
まとめ
いかがでしょうか?
SSL/TSLと言われても、技術的にはとっかかり難いですが、要はサイトのセキュリティー強化が目的です。
導入しておけば、通信時の盗聴や改ざんの危険性が低くなります。
無料で導入できるサーバーも増えてきていますので、サイトを構築する際には、必ず導入しておきましょう。