お知らせ

SHA-1の衝突の脆弱性

GoogleがSHA-1に現実的な衝突の脆弱性があるという発表を実例をもって公開しました。

https://shattered.it

SHA-1というのは暗号化ハッシュ方式と呼ばれるもので、複数の複雑な計算を行い、一つのファイルなどから固定の長さの数値を導き出すものです。これは一つのファイルなどに対して、限りなくユニークになる数値を導き出すものです。

これをどのように利用するかといえば、文字列から生成されるハッシュ値を利用して電子署名やパスワードを原型を残さずに保存したり、ダウンロードするファイルの同一性を示すなどに利用されています。

ハッシュ値は限りなくユニークであることから、同じ文字列などから同じ計算をすれば同じ結果が得られ、またハッシュ値から元の文字列などには戻すことができないことから安全に利用されます。

ハッシュ衝突の脆弱性というのは、同一のハッシュ値を持つ全く別のファイルを容易に作成できることを指します。

上記のURLでは一つのPDFファイルのハッシュ値が全く異なる内容のPDFファイルと同一になり、ハッシュ値によって同一のものであると判定できなくなってしまったという内容です。

同一のハッシュ値を持つファイルを作るための計算は、数学的に考えると可能です。ただ計算のために最高のコンピュータを持ってしても数百年からの時間がかかるようであるとこれは事実上不可能と考えられ、この強度のより強いものを使うことが推奨されます。

今回のGoogleの発表は現実的な時間でこの衝突攻撃を起こすためのアルゴリズムを作り上げたということです。

SHA-1は一時期非常にスタンダードに使われていたので、現在もSHA-1によるハッシュ値を持つファイルはたくさんあります。ただ2005年の時点ではすでに将来的に通用しなくなる危険性があるとして、SHA-2やSHA-3へ移行することが推奨されてきました。

現在でもSHA-1を利用している場合は、この衝突攻撃を受ける可能性が高くなるので、早急な移行を促すための発表です。

Googleが公式に発表しなくとも、未知の脆弱性として攻撃者によって利用されうる状態にすでにあるということで、SHA-1による電子署名やファイルの同一性などを検証する仕組みは早急にアップデートされるべき状態にあります。