2016 年 10 月 10 日
SHA について
SHA とは?
Secure Hash Algorithm (セキュア・ハッシュ・アルゴリズム)の略称です。一般に「シャー」と呼ばれますが、「エス・エイチ・エー」と呼ばれることもあります。例えば SHA-1 は「シャーワン」です。
SHA は「ハッシュ」と呼ばれる関数の代表例でして、SSL/TLS サーバー証明書に使われています。
何のために?
証明書が使われている 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/TLS 暗号化通信やサイトの認証の以前に、サイトが利用できないわけです。この問題に対し、SHA-1 が誤判定するリスクは許容されているのだと考えます。
例1:XP SP2 上の Internet Explorer で SHA-2 の証明書が使われているサイトにアクセスした時のエラー
例2:XP SP2 上の Chrome で SHA-2 の証明書が使われているサイトにアクセスした時のエラー
SHA-1 の使用の廃止
しかし、Microsoft を皮切りに、主なブラウザベンダーが SHA-1 を用いた SSL/TLS サーバー証明書の廃止に取り組むようになりました。より安全な 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 重の赤い取消線表示
Microsoft は認証事業者(サイバートラストのような、証明書を発行する事業者)に対し、2016 年 1 月 1 日以降は SHA-1 の証明書の発行(販売)を終了することを課しています。まもなく入手できなくなること、そして、ブラウザでの警告のことを考えますと、SHA-2 への移行は皆さんにとって不可避な対応となるわけです。