ハッシュ値生成ツール|SHA-256でファイルの改ざんを確認(無料)

ソフトを配布しているサイトに、SHA-256: a1b2c3... という長い文字列が載っていることがあります。あれは「ダウンロードしたファイルが、途中ですり替えられていないか」を確かめるための値です。使い方を知らないと、せっかくの安全策が無駄になります。

このツールは、文字列やファイルからSHA-256・SHA-384・SHA-512・SHA-1のハッシュ値を計算します。配布元の値を貼り付ければ、大文字小文字と空白を無視して自動で照合します。

計算はすべてブラウザの中で行われ、ファイルも文字列もサーバーへ送信されません。200MBまでのファイルを扱えます。

ハッシュ値生成(SHA-256 ほか)

テキストとファイルに対応。ブラウザ内で計算し、データは送信されません。

RESULT

SHA-256(推奨)
SHA-384
SHA-512
SHA-1(非推奨・照合用途のみ)

FILE / ファイルのハッシュを計算

配布元が公開しているチェックサムと照合できます。ファイルは送信されません。

COMPARE / 2つの値を照合

大文字・小文字と前後の空白は無視して比較します。

ハッシュは「指紋」であって、暗号ではない

ハッシュ関数は、どんな長さのデータからも決まった長さの値を作ります。同じ入力からは必ず同じ値が出て、1ビットでも違えばまったく別の値になります。

ハッシュ暗号化Base64
目的同一性の検証秘密を守る文字で表現する
元に戻せるか戻せない鍵があれば戻せる誰でも戻せる
出力の長さ常に一定入力に比例約1.33倍
主な用途改ざん検知、パスワード保存通信・保存の秘匿データの受け渡し

「戻せない」ことが重要な性質です。だからこそパスワードの保存に使われます。サービス側はパスワードそのものではなくハッシュ値を保存し、ログイン時に同じ計算をして一致するかを見ます。仮に保存内容が流出しても、そこからパスワードを逆算することはできません。Base64との違いもあわせて確認しておくと、使い分けを間違えません。

ダウンロードしたファイルを、実際に照合する手順

手順は3つだけです。この確認をするかしないかで、改ざんされたインストーラを実行してしまうリスクが変わります。

順番やること注意点
1配布元公式サイトでハッシュ値を確認するダウンロードした場所と同じページに載っている値では意味が薄い。両方が差し替えられていたら検知できない
2このツールの「FILE」欄でファイルを選ぶファイルは送信されません
3COMPARE欄に公式の値を貼り、一致を確認する1文字でも違えば別物

1番目が肝心です。攻撃者がダウンロードサーバーを乗っ取れる立場なら、同じページに書かれたハッシュ値も書き換えられます。ハッシュ照合が意味を持つのは、ファイルの入手経路とハッシュ値の入手経路が違う場合です。公式サイトのハッシュと、ミラーサイトから落としたファイルを照合する、という使い方が本来の形になります。

コマンドラインでも計算できます。手元の環境に合わせて使ってください。

環境コマンド
Windows (PowerShell)Get-FileHash ファイル名 -Algorithm SHA256
Macshasum -a 256 ファイル名
Linuxsha256sum ファイル名

どの方式を使うべきか

方式出力の長さ評価使いどころ
SHA-25664文字(256ビット)現在の標準迷ったらこれ。ファイル検証、署名
SHA-384 / SHA-51296 / 128文字安全より長い値が求められる場合。64ビット環境では512のほうが速いこともある
SHA-140文字非推奨衝突を作る手法が実証済み。古いシステムとの照合にのみ
MD532文字使わない安全性の用途では不可。ブラウザの標準機能でも提供されていない

SHA-1とMD5が非推奨なのは、「異なる2つのファイルから同じハッシュ値を作る」ことが現実的な計算量で可能だと示されたためです。改ざんの検知という目的が成立しなくなります。新しく作るものには必ずSHA-256以上を使ってください。

なお、このツールにMD5がないのは、ブラウザの標準暗号機能(Web Crypto API)が意図的に提供していないためです。外部ライブラリを読み込めば実装できますが、推奨されない方式をわざわざ提供する必要はないと判断しました。

パスワードの保存に、素のSHA-256を使ってはいけない

「パスワードはハッシュ化して保存する」は正しいのですが、SHA-256をそのまま1回かけるだけでは不十分です。高速に計算できることが、この用途では弱点になります。

方式パスワード保存に理由
SHA-256を1回不適速すぎる。総当たりを1秒間に数十億回試せる
SHA-256 + ソルトまだ不十分事前計算表は防げるが、総当たりの速度は変わらない
bcrypt / scrypt / Argon2適切意図的に遅く、必要な計算資源を調整できる
PBKDF2反復回数を十分に設定すれば実用的

つまり、パスワード保存では「速いこと」が欠点になるという、他の用途とは逆の性質が求められます。ファイルの検証にはSHA-256、パスワード保存にはbcryptなど。目的で使い分けてください。利用者側の対策はパスワード管理の記事にまとめています。

ハッシュが使われている、身近な場所

場所何のために
ソフトの配布ダウンロード中に壊れていないか、すり替えられていないかの確認
GitのコミットID変更内容から一意の識別子を作る
SSL/TLS証明書証明書が改ざんされていないことの保証
パスワードの保存元に戻せない形で保管する
重複ファイルの検出中身が同じかを高速に判定する
ブロックチェーン直前のブロックとつなぎ、改ざんを検知する
キャッシュの識別内容が変わったファイルだけ再取得させる

共通しているのは、「中身を見ずに、同じかどうかだけを高速に判定したい」という要求です。この視点で見ると、なぜこれほど広く使われているかが分かります。用語の意味はIT用語辞典でも確認できます。

同じファイルかどうかを、名前ではなく中身で判定する

ファイル名が違っても中身が同じ、あるいは名前は同じでも中身が違う。こうした状況をハッシュ値で機械的に判定できます。

使う場面やり方
バックアップが正しくコピーされたか元とコピー先の両方でSHA-256を計算し、一致を確認する
重複した写真・書類を探すハッシュ値が同じものは、中身がまったく同じ
ダウンロードが途中で切れていないか配布元の値と照合する
編集したかどうか分からないファイル以前の値を控えておけば、変更の有無が分かる
ドライブ移行後の検証移行前後で主要ファイルのハッシュを比較する

ポイントは、1ビットでも違えば、まったく別の値になることです。「だいたい同じ」という結果は存在しません。一致か不一致かのどちらかです。ファイルの検証を含むバックアップ運用はWindowsのバックアップ完全ガイドにまとめています。

ソルトとペッパー|同じパスワードを違う値にする仕組み

ハッシュは同じ入力から必ず同じ値を出します。この性質は検証に便利ですが、パスワード保存では弱点になります。2人が同じパスワードを使っていると、保存されている値も同じになるからです。

仕組み内容防げるもの
ソルト利用者ごとに違うランダム文字列を、パスワードに足してからハッシュ化する事前計算表による一括解読。同じパスワードの利用者を見つけること
ペッパーサービス全体で共通の秘密文字列を、データベースとは別の場所に保管して使うデータベースだけが流出した場合の解読
ストレッチングハッシュ化を数万回繰り返し、意図的に時間をかける総当たりの速度

この3つを自前で組み合わせる必要はありません。bcrypt、scrypt、Argon2 といった専用の仕組みが、すべて内蔵しています。パスワード保存で「自分で実装しない」のが最も安全な選択です。利用者側でできることはパスワード管理の記事にまとめています。

ハッシュで「できないこと」

できることと同じくらい、できないことを知っておくと使い方を誤りません。

できないこと理由代わりに使うもの
元のデータに戻す一方向の計算。情報が失われている暗号化(AESなど)
中身を秘密にするそもそも隠す仕組みではない暗号化
どこが違うかを知る一致か不一致かしか分からない差分ツール
似ているかを判定する1ビット違えば全く別の値になる類似度判定の専用アルゴリズム
作成者を証明する誰でも同じ値を計算できる電子署名

最後の項目が重要です。ハッシュ値だけでは「誰が作ったか」は証明できません。ファイルと一緒にハッシュ値も差し替えられれば、検証は通ってしまいます。だからこそ、配布元とハッシュ値の入手経路を分けることに意味があります。

照合が一致しなかったときに、疑う順番

順番確認よくある原因
1方式が合っているか配布元がSHA-1やSHA-512を掲載しているのに、SHA-256と比べている
2コピー範囲が正しいか前後の空白や改行が混ざっている(当ツールは自動で無視します)
3ダウンロードが完了しているか途中で切れている。ファイルサイズを配布元と比べる
4バージョンが同じか配布元が更新され、掲載値が新版のものになっている
5入手先が正規かここまで確認して一致しないなら、そのファイルは使わない

5番まで来た場合、原因の追究より公式サイトから入手し直すほうが早く、確実です。不一致のファイルを「たぶん大丈夫だろう」で実行しないでください。

あわせて使える無料ツール