なぜ常時SSL化をするか

最近、常時SSL化という流れがあるらしい。

BASEが独自ドメインも常時SSL化、グーグルの「SSL推し」に対応 (ITpro)

確かに、いろんなWebサイトでHTTPS使ってるよなぁ。


これまでも、パスワードや個人情報をやりとりするWebサイトではHTTPSを使うことは一般的だった。

HTTPSはHTTPの通信内容をSSLで暗号化してやりとりするもの。

この仕組みによれば、他に知られると困るような情報を安全にやりとりすることができる。

自分のサーバーでも、パスワードをやりとりするところ、プライベートなコンテンツはHTTPSを使っている。

クライアント証明書で通す

これはHTTPSのちょっと変わった使い方だけど、必要なところでピンポイントで使うという発想に違いはない。


それに対して常時SSL化というのは、必ずしも秘密にする必要が無い内容でも暗号化すると。

一般的に知られてるような内容をわざわざ暗号化するのは無意味と思うかも知れないが、

SSLには盗聴を防ぐ以外の目的もあって、そこに期待しているという話である。


盗聴を防ぐ以外のSSLの役割、それは改ざん防止という役割である。

SSLではサーバー証明書で相手が信頼できるか確認してから、End to Endで暗号化通信を行う。

以前、TwitterがEV証明書を使ってるって話を取り上げたことがあるけど(cf. そこでEV証明書がくるとは)、

TwitterにHTTPSでアクセスすると、ブラウザ上に「Twitter, Inc (US)」と表示され、相手が確かにTwitterであることを確認出来る。

そして、その内容はTwitterのサーバーを出てから、改ざんも盗聴もされていないことが保証されているわけである。

TwitterのWebサイトの内容が改ざんされていないということに価値を感じるかと言われると、それは微妙だが、

これがもし銀行のWebサイトだったり、行政機関のWebサイトだったら、改ざんされていないというのは重要な気がする。


常時SSL化の難点としては、通信のオーバーヘッドが増えることがある。

その一方でHTTPS限定の高速化技術もあるので、レスポンスが悪くなるとも限らないらしいのだが。

常時SSL化しても割が合うという算段は十分なり立つようだが、注意は必要だよと。


End to Endでの暗号化というのはけっこうメリットがあるという話を書いたわけだが、

逆に暗号化されていないからこそできることというのもある。

それがGoogle Chromeのデータセーバー機能である。

これはWebサイトのアクセス時、中間にGoogleのサーバーを介して、データを圧縮することで通信量を削減する仕組みだ。

Googleのサーバーが中間に入り、データの圧縮(ある種の改ざん)を行うということで、中間者攻撃と同じ仕組みである。

なので、この機能はEnd to Endでの暗号化を行う、HTTPSでのアクセス時は無効化されることになっている。

End to Endでデータの完全性を保証するということは、途中にデータセーバーの入る隙はないということである。


SSLを使わないと、データセーバーの恩恵は受けられるが、データセーバーと同様に中間者攻撃が入る隙がある。

逆に常時SSLを使うことで、盗聴防止・改ざん防止に強い効果があるが、その一方でデータセーバーのような存在は認められない。

常時SSL化の意味を理解するには、これがいい説明なんじゃないかなぁ。

その上でどっちがよいかというのは各自考えるべきということである。

世の中はGoogleの方針もあって、常時SSL化に傾いているようだけど。