Microsoftがsha-1停止から一カ月が過ぎました。

2020年7月28日にMicrosoftダウンセンターにおけるsha-1で署名されたコンテンツの提供を8月3日に停止すると発表してから早1カ月が経過しました。

SHA-1 Windows content to be retired August 3, 2020

当然のことながらMicrosoftは既にsha-2への明確な一本化の方針を実施しており、Windows更新プログラムでは完全にsha-1による署名は停止されています。ある意味、長らくsha-1を引っ張って来たMicrosoftがsha-1を完全に停止したことは、世の中がsha-2への移行を完了させたことを暗示しているようなものだと思うのですが、皆様の会社ではsha-2への切り替えは完了していますでしょうか? もし、sha-1から切り替えていないようでしたら、優先度を上げてsha-2への切り替えスケジュールを検討してみてください。

SHA-1とは?

SHA-1とは、ある任意のデータの長さを元に160bitの値を生成するハッシュ関数のことです。 主にSHA-1は、VPN接続の認証や接続、署名の際に使われています。

余談ですが、何年か前に「ハッシュ関数のハッシュって何ですか?」と聞かれたことがあります。その時は「ハッシュドビーフのハッシュなので、細切れにするということなのでは?」と冗談半分に答えたことがありました。。

その後に気になって「hash」の直訳をGoogle翻訳やWeblioさんで調べてみたところ「切る・刻む」「細切れ肉料理」「寄せ集め」「ごたまぜ」という意味なのだとか。。

ということで、なんとなく意味は通じたということでアリとしました。

ハッシュはあるデータから目的のデータを得る為の関数

話は戻り、ここで言うハッシュ(hash)は、あるデータから別の目的のデータを得る為の関数のことを際しています。あるデータとは、主にパスワードのこと指すのですが、パスワードというデータを元に160bitのデータを生成する為に使われているのが、SHA-1という名のハッシュ関数となります。

クライアントがサーバーに接続する際、サーバーから送られてきたチャレンジコードを元にハッシュし、生成したハッシュ値をサーバーに返します。サーバー側では、レスポンスされたハッシュ値を検証し、接続の許可/拒否を返すという流れになります。※ハッシュ関数によって生成されたデータのことを「ハッシュ値」と呼びます。

ハッシュはVPNトンネルの暗号化の際にも使われますが、話が長くなるのでここでは割愛します。

SHA-1の脆弱性の指摘から15年

2005年に暗号化の権威であるBruce Schneier氏のBlog「Schneier on Security」で従来のbirthday paradox つまり1/2 80の確率でcollisionが起きるよりも少ない計算(2 69回の計算)でcollisionを発見する手法を発見したと発表されてから15年経過しました。当時は、SHA-1の安全性に問題があることが世界中に認識され、世界のいたるところで大騒ぎになったSHA-1にいよいよ終焉の時がやってきたようにも思えます。当時と比べ、今では当時の10倍以上もの速度で計算できると言われているSHA-1も、その後、SHA-2、SHA-3までリリースされていますが、2020年9月の段階ではSHA-2の安全性が壊れていないことからSHA-3はほとんど使われておらず、SHA-2一択となっています。