ハッシュとは:IT・暗号資産での意味をわかりやすく
ハッシュとは、データから決まった長さの「指紋」のような値を作る仕組みのことです。この値をハッシュ値、作る関数をハッシュ関数と呼びます。パスワードの保存、ファイルの改ざん検知、そしてビットコインなどのブロックチェーンやマイニングで欠かせない技術です。この記事では、ハッシュ関数の意味と特徴、SHA-256とMD5の違い、セキュリティでの使われ方、ブロックチェーンでの役割をわかりやすく解説し、実際にハッシュ値を計算できるツールも用意しました。
下のツールはブラウザ内で計算するため、入力した文字列がサーバーに送信されることはありません。
ハッシュ(ハッシュ関数)とは
ハッシュ関数は、どんな長さのデータを入れても、決まった長さの値を返す関数です。たとえばSHA-256なら、1文字でも長い文書でも、必ず64桁の16進数(256ビット)になります。同じデータからは必ず同じ値が出るため、データが同じかどうかを短い値で比較できます。プログラミングでは、辞書(ハッシュテーブル)でデータを素早く探すためにも使われます。
ハッシュ値の特徴:一方向性と衝突耐性
- 決定性:同じ入力からは常に同じハッシュ値が出る。
- 一方向性:ハッシュ値から元のデータを復元することは事実上できない。
- 雪崩効果:入力が1文字変わるだけで、ハッシュ値はまったく別物になる。
- 衝突耐性:異なる2つのデータから同じハッシュ値を見つけるのが事実上不可能。
SHA-256とMD5の違い
| アルゴリズム | 長さ | 現在の評価 |
|---|---|---|
| MD5 | 128ビット | 衝突が見つかっており、安全性目的には不適 |
| SHA-1 | 160ビット | 実用的な衝突攻撃が示され、廃止が進む |
| SHA-256 | 256ビット | 現在も安全とされ、ビットコインや証明書で使用 |
米国NISTはSHA-2系とSHA-3系を推奨しており、SHA-1は段階的に廃止する方針を示しています。
パスワード保存・改ざん検知での使われ方
サービスはパスワードそのものではなく、ハッシュ値を保存します。ただしSHA-256のような高速なハッシュだけでは総当たり攻撃に弱いため、ユーザーごとのランダムな値(ソルト)を加え、Argon2idやbcryptのような意図的に遅いアルゴリズムを使うのが一般的です。ソフトウェアのダウンロードページに掲載されたハッシュ値と、手元のファイルのハッシュ値を比べれば、改ざんされていないかを確認できます。オンラインで計算するならSHA-256オンライン計算も使えます。
ブロックチェーンとマイニングでの役割
ブロックチェーンでは、各ブロックが直前のブロックのハッシュ値を含むことで鎖のようにつながり、過去の記録を書き換えるとそれ以降のすべてがずれてしまいます。ビットコインのマイニングは、ブロックヘッダーの「ナンス」を変えながら、目標値より小さいハッシュ値を探す作業です:ナンスとは、マイニングの仕組み。その計算速度がハッシュレートです:ハッシュレートとは。全体像は仮想通貨とブロックチェーンをご覧ください。
実際にハッシュ値を計算してみる
下の欄に好きな文字を入力して、SHA-256のハッシュ値を確認してみましょう。次に1文字だけ変えると、値がまったく違うものになるはずです。
ゲームで本物のSHA-256
TotalHashはTelegramで遊べる無料のマイニングゲームで、ゲームの仕組みとして本物のSHA-256ハッシュを計算します。タスクでTONウォレットに少額のUSD₮とGRAMが届きます。収入を約束するものではありません。
Telegramの無料ゲーム。
TotalHashを開くよくある質問
ハッシュとは簡単に言うと何ですか?
データから決まった長さの指紋のような値を作る仕組みです。
ハッシュ値から元のデータに戻せますか?
事実上できません。一方向性があるためです。
MD5はもう使えないのですか?
衝突が見つかっているため、安全性が必要な用途には使うべきではありません。
マイニングとハッシュの関係は?
マイニングは目標値より小さいハッシュ値を探す作業です。