SHA-1ハッシュの計算
入力した文字列のSHA-1ハッシュ値をブラウザ上でリアルタイムに計算します。160ビットのハッシュ値を生成しますが、2017年にSHAttered攻撃で衝突が実証されており、新規用途への使用は推奨されません。
SHA-1ハッシュとは
SHA-1は、任意の長さのデータから160ビットの固定長の値を計算するハッシュ関数です。出力は40文字の16進数で表され、同じ入力からは常に同じ値が得られます。このツールは入力した文字列のSHA-1ハッシュをブラウザ内でリアルタイムに計算します。入力内容が外部へ送信されることはありません。
ただしSHA-1は新規のセキュリティ用途には使えません。2017年に、異なる2つのファイルから同じハッシュ値を意図的に作り出す攻撃が実証されたためです。署名や証明書、パスワードの保存には SHA-256 以上を選んでください。このツールの用途は、既存システムが出力した値との照合や、アルゴリズムの挙動の確認に限られます。
SHA-1ハッシュの計算手順
- 文字列を入力する ハッシュ化したい文字列を入力します。入力と同時に計算され、結果が表示されます。
- 結果を確認する 40文字の16進数が表示されます。1文字でも入力を変えると、まったく異なる値になります。
- コピーして照合する コピーボタンでクリップボードに入れられます。既存の値と突き合わせて確認できます。
使いこなすためのヒント
- SHA-1(Secure Hash Algorithm 1)はNSAが設計し1995年にNISTが標準化した160ビットのハッシュ関数です。出力は40文字の16進数で表現されます。
- 2017年、GoogleとCWIアムステルダムの研究チームがSHAttered攻撃を発表。同一のSHA-1ハッシュを持つ2つの異なるPDFファイルを実際に作成することに成功し、SHA-1の終焉を決定づけました。
- 主要ブラウザはSSL/TLS証明書のSHA-1署名を2017年以降無効として扱っています。Gitはコミット識別にSHA-1を使用してきましたが、SHA-256への移行が進んでいます。
- SHA-1はGitのコミットハッシュとして目にする機会が多いですが、Gitはセキュリティ目的でハッシュを使うわけではないため、現時点では実用上の問題は少ないとされています。
- 新規システムの設計では SHA-1 の代わりに SHA-256 以上のアルゴリズムを選択してください。
SHA-1ハッシュ計算の活用シーン
既存システムの値と照合する
SHA-1を使い続けているシステムが出力した値と一致するかを確認できます。移行作業中の検証に使えます。
Gitのハッシュを理解する
コミットIDと同じ40文字の形式を実際に生成して確かめられます。Gitがどんな値を扱っているかの把握に役立ちます。
実装のテストデータを作る
ハッシュ処理を実装した際に、期待値として使う既知の値をここで用意できます。
ハッシュ関数の性質を確かめる
入力を1文字変えるだけで出力が完全に変わる様子を実際に観察できます。
ハッシュに関する用語
- SHA-1
- 160ビットのハッシュを生成する関数です。1995年に標準化されましたが、現在は安全性が破られています。
- 衝突
- 異なる2つのデータが同じハッシュ値になる状態です。SHA-1では意図的に作れることが実証されました。
- SHAttered
- 2017年に発表されたSHA-1への衝突攻撃の名称です。同じハッシュを持つ2つのPDFが実際に作られました。
- 16進数表記
- 0からFの記号で数値を表す方法です。SHA-1の160ビットは40文字の16進数で表現されます。
- SHA-256
- 256ビットのハッシュを生成する関数です。現在も安全とされ、新規の用途ではこちら以上を選びます。
よくある質問
余談ですが ― SHAttered:922京回の計算で実証された衝突攻撃
2017年2月、Googleと蘭CWI研究所のチームが「SHAttered」と名付けた衝突攻撃を発表しました。同一のSHA-1ハッシュを持つ2つの異なるPDFを作成するのに要した計算量は、Google Cloud Platform上で99,000コアを2年以上動かし続けた膨大な量でした。
SHA-1への攻撃が「理論上可能」から「実際に実証」へと変わった瞬間でした。直後、GitHubやGoogleなどの主要サービスがSHA-1依存の廃止を加速。GitもSHA-256への移行計画を正式に始動させました。
「壊れた」とはいえ、今でもSHA-1を使っている実装は世界中に残っています。特に組み込み機器や古い企業システムはアップデートが難しく、レガシーSHA-1の廃止は業界全体の課題として続いています。