よろずやIT
用語辞典

パスワードのハッシュ化とは?暗号化との違い・復元できない理由・ソルトの役割をやさしく解説

執筆・監修:よろずやIT編集部|編集方針を見る

結論:まずここだけ読めばOK

詳しい手順・原因は、この下で解説しています。

用語辞典のイラスト

結論: パスワードのハッシュ化とは、パスワードを、元に戻せない文字列に変えて保管する方法です。サービスの側は、パスワードそのものを持たず、ログインの時に、入力されたパスワードを同じ方法で変換して、保存した値と一致するかを確かめます。「復元できない」仕組みですが、弱いパスワードは、推測されることがあります。そこで、ソルトや、計算に時間のかかる方式で、推測をさらに難しくします。

ハッシュ化とは

ハッシュ化とは、データをハッシュ関数という計算にかけて、**決まった長さの文字列(ハッシュ値)**に変えることです。次のような性質があります。

性質 内容
同じ入力は、同じ結果になる 同じパスワードなら、同じハッシュ値が得られる
少し違うだけで、結果が大きく変わる 1文字違うだけで、まったく別の値になる
元に戻せない ハッシュ値から、元のパスワードを計算で求めることは、できない

たとえば、パスワード「sakura123」を、ハッシュ関数にかけると、意味のない長い文字列が出てきます。この文字列を見ても、元のパスワードは分かりません。

ログインの時に、何が起きているか

サービスは、パスワードそのものではなく、ハッシュ値を保管しています。

  1. 登録の時:パスワードをハッシュ化し、ハッシュ値だけをデータベースに保存する
  2. ログインの時:入力されたパスワードを、同じ方法でハッシュ化する
  3. 照合:保存したハッシュ値と、一致すれば、ログイン成功

この仕組みなら、万一、データベースが外部に出ても、パスワードが、そのまま見えるわけではありません。

パスワードの登録時とログイン時に、ハッシュ値で照合する流れの図解

暗号化との違い

ハッシュ化と暗号化は、混同されやすい言葉です。

ハッシュ化 暗号化
元に戻せるか 戻せない 鍵があれば、戻せる
主な目的 一致するかの確認(パスワードの保管など) 内容を隠して、あとで読む(通信・ファイルなど)
例 パスワードの保管 HTTPS通信、ZIPのパスワード保護

パスワードの保管は、「あとで元の文字列を読む」必要がないため、元に戻せないハッシュ化が向いています。暗号化は、鍵が盗まれると、すべてが読まれてしまうためです。

「復元できない」のに、なぜ危険な場合があるのか

ハッシュ値から、計算で元に戻すことは、できません。しかし、攻撃者は、別の方法で、パスワードを当てにいきます。

そのため、「ハッシュ化されていたから、絶対に安全」とは言えません。短い・単純なパスワードほど、見つけられやすくなります。流出した時の考え方は、ハッシュ化されたパスワードが流出したら?で解説しています。

推測を難しくする仕組み:ソルトとストレッチング

ソルト(salt)

ソルトは、パスワードに足す、ランダムな文字列です。ユーザーごとに別の値を使います。

ソルトは、ハッシュ値と一緒に、保管されるのが一般的です。秘密にするためのものではなく、使い回しを防ぐためのものです。

同じパスワードでも、ソルトが違えばハッシュ値が変わることを示す図解

ストレッチング(計算を、わざと重くする)

ハッシュ化を、何度も繰り返すことで、1回の計算にかかる時間を、わざと長くします。正規のログインでは、1回の計算で済むため、ほとんど影響がありません。一方、数億回の総当たりをする攻撃者には、大きな負担になります。

パスワード向けの方式

ハッシュ関数には、いろいろな種類があります。計算が速いもの(MD5、SHA-1、SHA-256など)を、そのまま使うのは、パスワードの保管には向きません。 速いということは、総当たりも速くできる、ということだからです。

パスワードの保管には、ソルトを自動で扱い、計算の重さを調整できる方式が使われます。現在は、次のようなものが、よく挙げられます。

方式 特徴
Argon2 新しい方式。メモリを多く使う設計で、専用機器による攻撃にも強いとされる
bcrypt 広く使われている。ソルトを含めて扱える
scrypt メモリを多く使う設計
PBKDF2 標準的な方式。繰り返しの回数で、重さを調整する

どの方式を使うかは、サービスの設計や、基準によって異なります。選定の際は、公式の推奨や、セキュリティの基準を確認します。

開発者向け:短いコードの例

Pythonのbcryptライブラリを使うと、ソルトの生成と、ハッシュ化を、まとめて行えます。

import bcrypt

password = "sakura123".encode("utf-8")

# 登録時:ソルトを自動で生成して、ハッシュ化する
hashed = bcrypt.hashpw(password, bcrypt.gensalt())

# ログイン時:入力されたパスワードと、保存したハッシュ値を照合する
print(bcrypt.checkpw(password, hashed))  # True

このコードは、仕組みを説明するための例です。実際のサービスでは、設計・運用の基準に沿って、実装してください。

利用者ができる備え

サービスが、安全にパスワードを保管しているかは、外からは分かりません。そこで、自分の側でできることが大切です。

  1. 長く、推測されにくいパスワードにする:12文字以上を目安に
  2. 使い回さない:1つのサービスから漏れても、ほかに広がらないようにする
  3. パスワード管理ソフトを使う:長い、別々のパスワードを、覚えずに済む
  4. 2段階認証やパスキーを使う:パスワードだけで、ログインできない状態にする(2段階認証とパスキー)
  5. 「今のパスワードをメールで送ります」と言うサービスに、注意する:元に戻せる形で保管されている可能性があります

パスワードの管理の考え方は、パスワードを安全に管理する方法、使い回しが狙われる攻撃は、クレデンシャルスタッフィングとは?で解説しています。

まとめ

関連記事:ハッシュ化されたパスワードが流出したら?、SQLインジェクションとは?、SSL/TLSとは?

PRフロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識 【電子書籍】[ 平野昌士 ]

フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識 【電子書籍】[ 平野昌士 ]

¥2,970

楽天で見る
SHAREXLINEはてブ

よくある質問

Q.ハッシュ化と暗号化は、何が違いますか?

A.暗号化は、鍵を使えば、元のデータに戻せる変換です。ハッシュ化は、元に戻すことを前提としない変換です。パスワードの保管には、元に戻せないハッシュ化が向いています。

Q.ハッシュ化されたパスワードは、本当に復元できませんか?

A.計算で元に戻すことは、できません。ただし、候補の文字列を、片っ端からハッシュ化して、一致するものを探す(総当たりや辞書攻撃)ことで、推測される場合があります。短い、単純なパスワードほど、推測されやすくなります。

Q.「ソルト」とは何ですか?

A.パスワードに足す、ランダムな文字列のことです。ユーザーごとに別の値を使うため、同じパスワードでも、保存されるハッシュ値が変わります。あらかじめ計算された対応表を使った攻撃を、難しくします。

Q.「パスワードを忘れた」と言うと、今のパスワードをメールで送ってくるサービスは、安全ですか?

A.注意が必要です。パスワードを、そのまま表示・送信できる場合、元に戻せる形で保管されている可能性があります。安全に設計されたサービスは、再設定用のリンクを送り、今のパスワードは示しません。

Q.「hashed password」は、何の意味ですか?

A.ハッシュ化されたパスワードという意味です。英語の説明やドキュメントで、保管されているパスワードの値(ハッシュ値)を指す時に使われます。

関連記事

プログラミング用語解説

Base64とは|暗号化ではない理由と、メール・JWT・画像で使われる場面

Base64は、データを英数字だけの形に変換する方式です。暗号化ではなく、誰でも元に戻せます。変換の仕組み、使われる場面、データが約3分の1増える理由、パスワードの保護に使ってはいけない理由を解説します。

用語辞典用語解説

MFA疲労攻撃(プッシュ爆撃)とは?承認通知を連打されたときの対処法

MFA疲労攻撃は、パスワードを知った攻撃者が、ログインを繰り返して「承認しますか?」の通知を何度も送り、利用者がうっかり承認するのを待つ手口です。仕組みと、通知が止まらないときの対処、仕組みでできる対策をまとめました。

用語辞典用語解説

脆弱性とは?弱点が見つかった時に起きることと、利用者ができる対策

脆弱性とは、ソフトウェアやシステムにある、攻撃に悪用されうる弱点のこと。バグとの違い、見つかった後の流れ、パッチ・アップデートの意味、一般の利用者ができる対策をやさしく解説します。

用語辞典用語解説

ブルーグリーンデプロイとは?止めずに安全にリリースする方法

ブルーグリーンデプロイは、現行と新版の2つの環境を用意し、切り替えるだけでリリースする方法です。ダウンタイムを抑えて、すぐに元に戻せる利点と、費用やデータベース変更の注意点、カナリアリリースとの違いを解説します。

最新のIT関連書籍 トップ10

PR / 楽天市場の売れ筋ランキングを定期的に取得しています。価格は変動する場合があるため、購入前に各ストアでご確認ください。