さくらのSSLでは、各種SSLサーバー証明書(以下、SSL証明書)を販売していますが、そもそもこのSSL証明書とはなぜ必要なのでしょうか?デジタル証明書という実体のないものに10万円、20万円と高価な価値が付くのはなぜでしょうか。
この記事ではWebサイトの企画、営業担当の方を対象にSSL証明書の必要性を解説します。
通信の暗号化とサーバー証明、データの改ざん防止
通信を暗号化するためにSSL証明書が必要、と考えている方は多いと思いますがこの認識は必ずしも正しくありません。通信を暗号化する“だけ”なら市販のSSL証明書は必要ないのです。
市販のSSL証明書は、必ずブラウザ側が認めた発行者(認証局)によって“署名”が行われています。
例えば sakura.ad.jp のドメインへSSL証明書を発行する場合、最低限 sakura.ad.jp のドメインの持ち主(管理者)がSSL証明書の購入者と同一であることを認証局が確認してから発行されています。
悪意のある第三者が sakura.ad.jp のSSL証明書を発行しようとしても、不正な手段を取らない限り拒否されます。そして、不正な手段でSSL証明書を発行させることを防ぐために、認証局は様々なセキュリティ対策や発行フローの監査などを行っています。
正規に購入したSSL証明書の役割は以下の3点です。
- データの暗号化
- サーバー証明
- データの改ざん防止
データの暗号化について
1つ目の役割、データの暗号化について解説します。
インターネットは匿名で、誰にも見られずにデータをやり取りできるというのは誤った認識です。実際には、インターネットを流れているデータは送信元と受信先がIPアドレスで判別でき、さらに内容は暗号化しない限りただのテキストデータとしてやり取りされます。
例えば、これからWordPressでブログを立ち上げるとします。WordPressのログイン画面にはIDとパスワードを入力する画面がありますが、ログイン画面をSSL化していない場合、IDとパスワードは平文(暗号化されていない状態)でインターネットを流れます。
そのため、カフェのWi-Fiに見せかけた悪意のあるWi-Fiアクセスポイントなどに接続した場合、通信内容が全て流出する危険があります。他にも、PCに仕込まれた悪意のあるソフトウェアがネットワーク通信の内容を傍受し、外部へ送信するという可能性もあります。
WebサイトをSSL化した場合、Webサイトのサーバーとエンドユーザのブラウザの間で、暗号化が成立します。悪意のある第三者が通信内容を傍受したとしても、内容を解読することは容易ではありません。
これがSSL証明書の1つ目の役割、暗号化です。ただし、暗号化されるのは転送されるデータのみで、どのIPアドレスが、どこのサーバーへ、何かしらのデータを送信しているということは中間で傍受できます。完全に匿名にできるわけではありませんので、ご注意ください。
サーバーの証明について
2つ目の役割、サーバーの証明について解説します。
「証明」とは何かという話ですが、簡単に言うとサーバーの持ち主(管理者)が第三者機関によりドメインの持ち主であると保証されるということになります。正確には認証レベルにより証明される内容が異なってきますが、これはまた別の記事でご説明します。
httpでのWebアクセスについては、どこの誰が作ったかがわからないサーバーと通信していることになります。
例えば、 sakura.ad.jp と通信しているつもりでも中間経路でデータが改ざんされていて、全く別のサーバーであるにも関わらず、あたかも sakura.ad.jp と通信しているように見せかけることができます。
サーバーの証明書があれば、自分がアクセスしているWebサイトが sakura.ad.jp であるということをブラウザのアドレスバーにある鍵アイコンや「保護されています」などの表示で確認できます。
これにより、安心してWebサイトを閲覧することができます。さらにEV証明書と呼ばれるSSL証明書を導入するとアドレスバーに運営組織の名称を表示することができ、Webサイトの信頼性をさらに高めることができます。
データの改ざん防止について
3つ目の役割、データの改ざん防止について解説します。
改ざんはなりすましに似ていますが、上の例のように、 sakura.ad.jp を完全に装うことを「なりすまし」と言い、サーバーの証明により防ぐことができます。
一方、改ざんとは、エンドユーザが sakura.ad.jp と通信し続けているように見せながら、実はその内容を書き換えて攻撃者の任意のデータをユーザへ見せることを言います。
これにより、見た目は sakura.ad.jp にアクセスしながらも、実は攻撃者が任意の内容に書き換えたページを見せられてしまい、詐欺などの被害に遭ってしまう、といった可能性があります。
WebサイトをSSL化することで、SSL証明書がインストールされたサーバーから送られたデータが、エンドユーザのもとに届く際に改ざんされていないことを証明できます。
仕組みを簡単に解説すると、エンドユーザへデータを送るとともに、SSL通信では送ったデータの明細のようなものを送信します。この明細と実際に受け取ったデータを突き合わせることで、データの改ざん有無を検知することが可能となります。
組織認証の証明書について
SSL証明書にはDV、OV、EVの3種類があり、詳細については別の記事で説明しますが、この中でもOVとEV証明書は組織認証型と呼ばれています。
「サーバーの証明について」の項で解説しているとおり、EV証明書はアドレスバーに表示される運営組織の名称によって、そのWebサイトの持ち主を確認することができます。
OV証明書については、EV証明書に比べ組織認証レベルが低い分、安価で取得も簡単ですが、ブラウザでは「証明書の詳細」というダイアログを開いて初めて、運営組織の名称が表示されます。
現在さくらのSSLから購入できるEV証明書は、有効期間が最長2年で、ワイルドカード(1枚の証明書で複数のサブドメインに対応)は非対応となっています。有効期間3年の証明書が欲しい場合や、ワイルドカードオプションの付いている証明書が欲しい場合はOV証明書を選ぶ必要があります。
- ※2018年2月末をもって、3年の有効期間をもった証明書の発行は停止され、全証明書で有効期間は最長2年となります。
SSL証明書の限界について
これまで、SSL証明書の役割と必要性を解説してきました。しかし、SSL証明書も100%暗号化し、100%サーバーが証明できて、100%改ざんを防止できるわけではありません。
上記で説明しているとおり、攻撃者はエンドユーザがどのサーバーとどれぐらいの長さのデータを通信しているか、といったことを知ることができます。
例えば、ある人が動画サイトへ接続して、ギガバイトクラスのファイルを受信している場合、その人が動画を見ているのでは?と“推測”することができます。
その接続先の動画サイトが、アダルト専門だったとしたらどうでしょうか。アダルトサイト利用料の架空請求に悪用されたりするかもしれません。このように、通信しているデータ自体の秘匿はできても、完全にすべての通信を秘匿することはできないのが現在のSSL証明書の限界です。
また、サーバーの証明についても、完全にできるわけではありません。その1つに認証局は事実上どこのWebサイトのドメインに対してでもSSL証明書を発行できるという大きな欠点があります。
過去に、google.com のワイルドカード証明書がGoogle社の知らないうちに発行されるという事件があったこともあります(もちろんすでに失効しています)。
このように、100%通信を秘匿することはできないことを覚えておきましょう。
- ※2017年9月より開始されるDNSのCAAレコード認証追加など、このような誤発行を防ぐ仕組みが構築されつつあります。
SSL証明書の必要性
以上、SSL証明書の役割と限界を踏まえた上で、なぜSSL証明書が必要なのかというと、個人情報を狙う悪意のある第三者からクレジットカードなどのデータを暗号化により守り、エンドユーザの意図した正しい通信相手と、改ざんされていないことが保証されているデータをやり取りするため、と言えます。
数年前までは、インターネットにおいてSSLで通信すべきデータはカード番号、電話番号、住所などの個人情報のみでよいと考えられており、必要最低限のページのみを暗号化することに留められていました。
これは、当時のサーバーCPU性能などに限界があり、非SSL通信の場合と比べ、SSL通信の速度がとても遅かったという背景もありました。現在はCPU性能も向上し、SSL通信による通信速度のパフォーマンスダウンは起きにくい状況になっています。
昨今、Webサイトの常時SSL化というキーワードが注目されており、インターネットを通る全てのデータを暗号化しようという動きが広まってきています。
また、検索エンジンでは暗号化されたWebサイトの順位を優遇すると明言しています。今後、より多くのWebサイトがSSL化していくことで、通信するデータは守られ、より多くの人々が安全にインターネットを利用できるようになります。
ブラウザの非SSLサイトへの警告表示も段階的に強化されていくことが決定しているため、WebサイトのSSL化はもはや必須の流れとなってきており、必然的にSSL証明書が必要となっているのです。