ハッシュ関数の世代交代? 電子証明書の移行喚起が本格化

米国標準技術研究所(NIST)が2013年末の使用停止を勧告していたハッシュ関数の「SHA-1」。Microsoftが証明書での使用廃止を決め、証明書を発行するSymantecも段階的に終了する。この喚起は利用者に届くのか――。

» 2014年02月06日 08時00分 公開
[ITmedia]

 データの改ざん検知などに使われるハッシュ関数の「SHA-1」の使用停止に向けた動きが徐々に本格化している。米Microsoftは2013年11月、ルート証明プログラムにおけるSHA-1の使用を2016年12月31日で廃止することを発表。電子証明書の発行事業を手掛けるSymantecも、SHA-1に対応したSSLサーバ証明書などの発行を順次終了する方針を明らかにした。

「SHA-1」に関するMicrosoftのセキュリティアドバイザリー

 SHA-1の使用停止が喚起されるのは、コンピュータ性能の向上により、ハッシュ関数を使用して電子証明書などが正しいもの(オリジナル)であることを確認するための「ハッシュ値」を、第三者によって生成できてしまう可能性が高まったことに起因する。

 ハッシュ値は、あるデータにハッシュ関数を用いた処理を行うことで生成される「値」。原則として同一のデータから生成されるハッシュ値は常に同じとされ、オリジナルのデータが一部でも変化するとハッシュ値も変わる。また、ハッシュ値からオリジナルのデータを復元することは原則としてできない。

 こうした特徴を生かし、例えばデータをやりとりする際に、データ送信者がオリジナルのデータとハッシュ値を相手に送り、相手はハッシュ値を見て受け取ったデータが本当にオリジナルのものであるかを確認できる。また、オンラインサービスのログイン認証などではオリジナルのデータ(パスワードなど)の代わりにハッシュ値が使われることもある。オリジナルのデータを直接的に扱わないことにより、不正アクセスなどでハッシュ値の情報が漏えいしても、第三者に悪用されにくいためだ。

 しかし、「同一のデータからハッシュ関数によって生成されるハッシュ値は常に同じ」というのは絶対的なものではなく、理論的には異なるデータでも同一のハッシュ値を生成できてしまう可能性があるとされる(「衝突」といわれる)。悪意のある人物が「衝突」を不正に用いると、正規のデータと同じハッシュ値を持つ不正なデータによって、相手をだますことができてしまう。

 正規のWebサイトを証明する「SSLサーバ証明書」や正規のプログラムを証明する「コードサイニング証明書」などの証明書では、証明書自体が正しいものであることを確認する方法にハッシュ値が使われるケースがある。つまり、証明書のハッシュ値を生成するハッシュ関数に「衝突」が見つかれば、悪意のある人物は正しい証明書と同じハッシュ値を持つ“偽”の証明書を作成できるわけだ。“正規”のSSLサーバ証明書と同じハッシュ値を持つ“偽”のSSLサーバ証明書を用いて、詐欺サイトを“ホンモノ”に見せかける、あるいは“偽”のコードサイニング証明書を使って、マルウェアを埋め込んだ不正プログラムを“ホンモノ”のプログラムのように見せかけることが可能になる。

 実際にハッシュ関数において「衝突」が可能かどうか解読するには、高い処理能力を持つコンピュータが必要だ。ハッシュ関数によっては、現在のPC程度の能力でも解読できてしまうものが既にあり、SHA-1でもその可能性が次第に現実味を帯びてきた。このため、米国標準技術研究所(NIST)は2013年12月31日までにSHA-1の使用を停止するよう政府機関などに勧告。国内でも内閣官房情報セキュリティセンター(NISC)の指針でSHA-1の最長使用期限を2019年としている。

 MicrosoftやSymantecの対応はこうした流れに沿ったものになる。Microsoftは、2016年1月1日以降にルート証明機関がSHA-1を使って、SSLやコードサイニングを目的とするX.509証明書を発行できなくなると説明する。Symantecも期限は未定ながら、SHA-1に対応したSSLサーバ証明書の発行を終了する。両社とも証明書を利用するWebサイト運営者やプログラム開発者などに対し、SHA-1よりも強度が高い(「衝突」を発見されにくい)ハッシュ関数の「SHA-2(SHA-224や同256)」に対応した証明書を利用するよう呼び掛けている。

 SHA-1の証明書を利用し続けた場合に想定される影響は、例えば、SHA-1をサポートしないWebブラウザではユーザーに警告メッセージが常に表示されることになり、Webサイトに対する信用が低下しかねない。プログラムをインストールする際にも同様に警告メッセージが表示され、ユーザーがプログラムを疑いかねない。正規サイトの運営者やプログラム開発者にとって、ユーザーに不審がられることは本意ではないだろうか。

 Symantecによると、現状では同社から購入されるSSLサーバ証明書のほとんどがSHA-1に対応したものであり、SHA-2に対応したSSLサーバ証明書が購入されるケースはあまりないという。同社は多数のWebサイトにSSLサーバ証明書を発行している立場から、Microsoftの表明を受けて「衝突」を発見される恐れのあるSHA-1の使用を速やかに終息させたいという考えがある。Microsoftも、SHA-1の「衝突」を悪用するサイバー犯罪の現実味が増してきた以上、SHA-1のサポートを打ち切らざるを得ないという見解だ。

 既にSSLサーバ証明書ベンダーの多くは、SHA-2対応証明書の提供を開始している。利用者が更新する場合に、自動的にSHA-2対応証明書へ切り替えたり、発行費用が変わらないといたりするところも多い。現在までにSHA-1対応証明書の提供を終了する方針を明言しているのはSymantecなど一部ベンダーだが、電子証明書に関する業界団体「CA・ブラウザフォーラム」もSHA-1の使用停止を勧告しているため、今後は提供を終了するベンダーが相次ぐとみられる。

 ただし、Webブラウザ側は、PC版ブラウザでは大半がSHA-2をサポートしているが、古いスマートフォン(SymbianやWindows Mobile)やフィーチャーフォンの多くがSHA-2に対応していない。Webサーバソフト側でSHA-2をサポートするのは、Apache 2.0/OpenSSL 0.9.8以降およびWindows Server 2003 SP2以降に搭載されるInternet Information Services(IIS)など。Symantecによれば、主要なロードバランサの中には、SHA-2のサポートが直近の製品に限られるものもあるという。

 Webサイト運営者がSHA-2への対応を検討する場合、実際にはWebブラウザを受け入れる範囲や、運営するWebシステムの更改時期なども加味して考えていく必要がある。さらには、「衝突」を悪用するサイバー犯罪が現実に発生する可能性や、被害(利用者が犯罪に巻き込まれる、あるいは、Webサイトのブランドが悪用されるなど)可能性もある程度は想定しておくべきかもしれない。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ