改めて知ろう、SSLサーバー証明書とは?(第三回)
こんにちは、サイバートラストの坂本です。今年もよろしくお願いします。
第一回と第二回では、SSL サーバー証明書の役割である通信の暗号化や Web サイトの認証について説明しました。
今回は、SSL サーバー証明書の役割ではなく、SSL サーバー証明書が関係する動向を紹介します。動向といっても、ビジネス、技術、規制など多種多様ありますが、本記事では、SSL の通信で使われている「SHA-1 の規制」と「SHA-1 に関する主要ブラウザの仕様」についてになります。
SHA?
Secure Hash Algorithm (セキュア・ハッシュ・アルゴリズム)の略称です。一般に「シャー」と呼ばれますが、「エス・エイチ・エー」と呼ばれることもあります。例えば SHA-1 は「シャーワン」です。
SHA は「ハッシュ」と呼ばれる関数の代表例でして、SSL サーバー証明書に使われています。
何のために?
証明書が使われている Web サイトにした時、あなた(の PC やスマートフォン等)は、サイトから証明書を受け取ります。この証明書で、サイト運営者の身元確認や、暗号化通信を始めるのでしたよね。
さて、第一回の話に戻り恐縮ですが、Web サーバーから送られる証明書は、インターネットという誰でも使える道路を旅して、あなた(のPCやスマートフォン等)に届くのです。
道中で、誰かに書き換えられたりする脅威がありますね。悪事を働くデータを仕込まれたりしても怖いですね。
これらの脅威を防ぐことは難しいのですが、実は気づくことは出来るのです。ハッシュ関数を使えば。
ハッシュ関数を用いて証明書を作っておけば、少しでも証明書が改ざんされていた時に、「この証明書は改ざんされている!」とあなた(のPCやスマートフォン等)は気づき、「この証明書は信頼できない」と判断することができるのです。
SHA-1、SHA-2?
繰り返しますが、SHA はハッシュ関数の代表例です。SHA の安全性にもレベルがあり、SHA-1 より SHA-2 の方が安全です。数字が高くなるほど安全なわけです。なお、2012 年にはSHA-3 が登場しましたが、こちらは、まだまだ普及しておらず、一般利用では SHA-2 が一番安全と言われています。
安全性とは何だという話ですが、そもそも「改ざんされていない」とは、本物がどういうものであるかがわかっているからこそ、成り立つ話です。自分が受け取ったものが、「こっちは本物」、「あっちは別物」と判断がつくわけです。
ですから、ここでの安全性とは、別物を本物と判断しない確率のことです。SHA-1 よりも SHA-2 の方が、誤判定しないのです。
SHA-2 の方が安全とはいえ、証明書の歴史をみれば、SHA-1 の方が使われています。先に登場したのが SHA-1 だからというのも理由として挙げられますが、とはいえ後から SHA-2 が登場しているわけですから、むしろ、SHA-1 から SHA-2 への移行が進められていないところに理由があるはずです。
私が考えるに、なかなか移行が進まなかった理由として、SHA-2 を扱えるサーバーやクライアントの普及が十分でなかったことが挙げられます。例えば、昨年サポートが終了した Windows XP SP2以前では、SHA-1 には対応しても、SHA-2 には対応していませんでした。ガラケーにしても、比較的古い多くの機種が SHA-2 に対応していません。
SHA-2 に対応していない端末で SHA-2 の証明書が使われている Web サイトにアクセスしても、サイトを見ることができません。SSL 暗号化通信やサイトの認証の以前に、サイトが利用できないわけです。この問題に対し、SHA-1 が誤判定するリスクは許容されているのだと考えます。
例1:XP SP2上のInternet ExplorerでSHA-2の証明書が使われているサイトにアクセスした時のエラー
例2:XP SP2上のChromeでSHA-2の証明書が使われているサイトにアクセスした時のエラー
SHA-1 の使用の廃止
しかし、Microsoft を皮切りに、主なブラウザベンダーが SHA-1 を用いた SSL サーバー証明書の廃止に取り組むようになりました。より安全な SHA-2 の普及を促すためです。
既に Google の Chrome では、SHA-1 の証明書が使用されているサイトにアクセスした時に警告を出すことがあります。出すかどうかの条件は、Chrome のバージョンと、証明書の満了日(※)が関係します。
※証明書には、有効期間というものが設定されています。有効性が切れる日を満了日と言いまして、これを超えて使うと安全性が保障されません。
参考までに、今後リリースされる Chrome 41 では、証明書の満了日に応じて黄色の三角マークや赤の×印が表示される予定です。この仕様と発生する条件は、42 以降も変わらないでしょう。
Chrome 41 (2015 年 3 月頃リリース予定) 満了日が 2016 年 1 月 1 日から 2016 年 12 月 31 日の SHA-1 証明書 鍵マークに黄色の三角つきのアイコン表示 満了日が 2017 年 1 月 1 日以降の SHA-1 証明書 鍵マークに赤い×がつき、https に 2 重の赤い取消線表示
Chrome の詳細や、Internet Explorer と Firefox における SHA-1 の証明書の扱いについては、さくらインターネットの「SHA-1 証明書の受付終了と SHA-2 証明書への移行について」を是非にご参照ください。また、このページでも説明されているのですが、Microsoft は認証事業者(サイバートラストのような、証明書を発行する事業者)に対し、2016 年 1 月 1 日以降は SHA-1 の証明書の発行(販売)を終了することを課しています。まもなく入手できなくなること、そして、ブラウザでの警告のことを考えますと、SHA-2 への移行は皆さんにとって不可避な対応となるわけです。
さくらインターネットが取り扱う SSL サーバー証明書である「SureServer for SAKURA」 と 「SureServer for SAKURA(EV)」は、SHA-2 の証明書です。前者がOV で後者が EV でして、この違いは前回の記事をご参考ください。