DigiCertは2010年10月28日、SHA-2の証明書を初めて提供した認証局(CA)のひとつです。
2013年11月12日に、Microsoftは「認証局に要求するルート証明書のポリシーをより強固で安全なものにするよう変更する」と発表しました。
2016年1月1日以降、MicrosoftはSHA-1ハッシュアルゴリズムで生成されたコードサイニング証明書の受け入れを中止し、2017年1月1日以降にはSSLサーバ証明書についてもSHA-1ハッシュアルゴリズムで生成されたものは受け入れ中止となります。
これにより、SHA-2への移行に向けた動きは現実のものとなっています。
本ページでは、この変化が起こっている理由を説明し、証明書管理者がより安全な環境を実現するためのSHA-1からSHA-2の移行をスムーズに行えるよう支援します。
SHA-1やSHA-2などのハッシュ関数は多くのセキュリティプロトコルにおいて重要な役割を果たし、暗号化に不可欠な要素です。
弱いハッシュ関数を使っていると、攻撃者は、署名されたメッセージを置換する攻撃(preimage attack:原像攻撃)を行ったり、正しく署名されているかのように見えるメッセージを作成する攻撃(collision attack:衝突攻撃)を行ったりできます。
暗号学的ハッシュ関数は、研究者による攻撃テストが継続的に行われています。
技術の進歩に伴い攻撃も高度化します。弱点が見つかった場合、当該ハッシュ関数の安全性は再評価されます。
ハッシュ関数が脆弱で安全ではないと判断された場合、認証局(CA)はその関数の利用を停止します。見つかった脆弱性の重要度に応じ、そのハッシュ関数を使っている証明書を無効にすることもあります。
暗号解読やハッシュ攻撃の既知のクラスは、原像攻撃(preimageとsecond-preimage)と衝突攻撃です。
原像攻撃 には二つのタイプがあります。両方のタイプとも特定のハッシュ値を持つメッセージを探す攻撃です。
preimageアタック
特定のハッシュ値になるようなメッセージを探索します。
second-preimageアタック
元のメッセージと同一のハッシュ値になるような別のメッセージを特定しようとします。
衝突攻撃は、「同じハッシュ値となるような2つのメッセージを求めることが困難」というハッシュ関数の原理への攻撃です。異なったメッセージが同じハッシュ値となった場合を衝突と呼びます。
原理的には、ハッシュ値の範囲はハッシュ長で決まるため、ハッシュ長が短いほど衝突が発生しやすくなります。そのため、ハッシュ長は十分大きいと思われる値(160ビットなど)に設定されています。
原理的な衝突の可能性よりも高確率で衝突を起こす方法が見つかった場合には、そのハッシュ関数は安全ではないと考えられます。
技術が進歩し、攻撃が高度化したことにより、それぞれのハッシュ関数はセキュリティアプリケーションとしては使えなくなる日が来る可能性があります。
MD5などの古いアルゴリズムで発見された弱点は、継続的にそのハッシュ関数を使うことができないようなものでした。ハッシュ関数で理論的な弱点が発見された場合、セキュリティ関連分野全体が、より安全なハッシュ関数利用の方向に動き始めます。
MD5は、2004年に研究者によって衝突耐性がないことを発見されるまで、最も普及したハッシュ関数でした。
それから数年の間に複数の深刻なセキュリティ上の欠陥が発見されたため、MD5からSHA-1への移管が急速に行われ、MD5は利用されなくなりました。
中国の研究チームは2005年、Secure Hash Algorithm (SHA-1) にセキュリティ上の欠陥が存在する可能性を特定しました。
中国の研究チームによる弱衝突耐性の発見は、攻撃は常に高度化していくという実態と相まって、 SHA-1では追加の脆弱性が見つかるに違いなく、SHA-1は使い続けるには弱すぎる (too-weak-to-use) ハッシュ関数だということを意味します。
この「衝突攻撃の影響を受けやすい」というセキュリティ欠陥の可能性についてのニュースをきっかけに、セキュリティ関連業界は、SHA-2にシフトし始めました。
SHA-1は衝突困難性での弱点を知られているため、認証局はSHA-1の証明書の発行を停止し、SHA-2証明書を発行に対応する必要があります。それに伴って、証明書の管理者も、SHA-1証明書の問題を回避するためにSHA-2に切り替える準備をしなければなりません。
証明書は、SSL、コードサイニング、ドキュメントサイニング、メールの暗号化、およびその他の分野で「本人識別」と「暗号化」の目的で使用できます。
それぞれの使用目的に沿って、証明書はメッセージが改変されていないことと安全であることを担保しています。
弱いハッシュアルゴリズムを使うことは、メッセージを危険にさらすことを意味します。それこそが、セキュリティ関連分野全体がSHA-2に移行している理由であり、すべての関係者が真剣にSHA-2への移行を検討しなければならない理由です。
SHA-2を利用することで、現時点はもちろん、近い将来にわたっても安全性を確保できます。
SHA-2には、SHA-224、SHA-256、SHA-384、SHA-512が含まれており、DigiCertはそれらのアルゴリズム全てをサポートしています。
DigiCertでは、安全第一の観点から、以下のようなポリシーで証明書を発行します。
有効期限が2015年12月30日以降のコードサイニング証明書 | ⇒デフォルトでSHA-2を使って発行 |
有効期限が2016年12月30日以降のSSLサーバ証明書 |