セキュリティを整える
中級ソルト&レインボーテーブルを整える。
= ハッシュだけでは破られる。ソルトで守るしくみを体験
ソルトが初めての方は、先に そもそもソルトとレインボーテーブルとは・どんな場面で出会うか をどうぞ。
アニメで見る — なぜハッシュだけでは足りないのか 開くと1ステップずつ動きます
漏れたDB
ハッシュだけ
事前計算表
よくあるPW
逆引き成功
平文がバレる
ユーザー2人
同じPW
ソルト付与
各自バラバラ
保存される値
別々のハッシュ
STEP 1
※ イメージ図です。下の入力欄で、実際にハッシュ計算・逆引き・ソルト無効化を体験できます。
⚠ このページは安全な接続(https または localhost)でのみハッシュ計算できます。今は計算できない環境のようです。
これはあなたの端末の中だけで計算されます。実在のパスワードを試すのは避け、サンプルで体験してください。
計算中… 同じパスワードなら、いつ・誰の端末でも必ず同じこの値になります。だから事前計算表が成立します。
—
攻撃者はこういう表を事前に1回だけ作っておけば、以後は漏れたハッシュを照合するだけ。今あなたが入力した値が一致する行は赤でハイライトされます。
| 平文(よくあるPW) | SHA-256 |
|---|---|
| 計算中… | |
計算中… —
ソルト無し
—
ソルトあり
—
同じパスワードの2人は、データベースにどう保存される?
上で入力したパスワードを、AさんとBさんが両方使っているとします(ハッシュの先頭16桁だけ表示)。
ソルト無しの保存
- Aさん
- —
- Bさん
- —
✕ 同じ値 = 1つ破れば2人とも破れる
ソルトありの保存
- Aさん
- —
- Bさん
- —
◯ 別の値 = 1人ずつ別々に攻めるしかない
「🎲 別のソルト」を押すたびハッシュが変わります=同じパスワードでもユーザーごとに保存値がバラバラになり、攻撃者の共通テーブルが一致しなくなります。
そもそもソルトとレインボーテーブルとは
パスワードのハッシュに「塩」を混ぜて、使い回しの攻撃表を無効にする。
レインボーテーブルは、よくあるパスワードとそのハッシュ値の組を、あらかじめ大量に計算しておいた「逆引き用の早見表」のことです。漏れたハッシュ値を表と照らし合わせれば、元のパスワードが分かってしまうことがあります。
ソルト(salt)は、ハッシュにする前にパスワードへ混ぜる、ランダムな追加の文字列です。英語の「塩」から来た名前で、料理に塩をひとつまみ足すと味が変わるように、同じパスワードでも違うハッシュ値になります。そのため、共通の早見表が使えなくなります。
どこで・どんな場面で出会うか
-
会員サイトやログイン機能を作るとき
パスワードを保存する設計は、最初に決めておくべき部分です。ここを雑にすると、後から直すのが大変になります。
-
「ハッシュ化されていた」という漏えいのニュース
パスワードが漏れた報道で見かける言葉です。ソルトの有無や方式によって、実際の危険度は大きく変わります。
-
古い社内システムや自作ツールを引き継いだとき
昔のシステムは、ソルトなしで単純なハッシュのまま保存していることがあります。棚卸しのときに確認したい点です。
-
フレームワークやログイン部品を選ぶとき
多くの部品は、ソルトつきの方式が標準で入っています。自分で作らず、定評のあるものを選ぶ理由がここにあります。
-
セキュリティ診断や監査を受けるとき
パスワードの保存方法は、診断で必ず確認される項目の一つです。説明できるように、意味を知っておくと役立ちます。
知らないと何が困るか
- 「ハッシュ化しているから安全」と思い込む。ソルトなしの単純なハッシュは、よくあるパスワードなら早見表で割り出されることがあります。
- 自作して SHA-256 だけで保存してしまう。動くものはできますが、守りとしては弱い設計になります。
- 漏えいのニュースを他人事にする。パスワードを使い回していると、別のサービスにまで影響が広がります。報道を見たら、変更するきっかけにできます。
上のツールで、ソルトなしとありでハッシュ値がどう変わるかを比べてみてください。
正しいパスワード保存・4つの作法
「ハッシュにした」だけでは、守ったことにならない。
- 1
ユーザーごとに違うソルトを使う
ランダムなソルトを1人1人に発行し、ハッシュと並べて保存します。これで事前計算テーブルが共通で使えなくなり、同じパスワードの人どうしでも保存値が一致しません。ソルトは秘密でなくてよく、漏れても効果は保たれます。
- 2
パスワード用の「遅い」関数を使う(bcrypt / Argon2 / scrypt / PBKDF2)
SHA-256 を1回かけるだけは速すぎて、GPU で毎秒何十億回も試せてしまいます。あえて計算を重く・メモリを食うようにした専用関数(ストレッチ)を使い、総当たりを現実的でない速度に落とします。生の SHA-256 単体はパスワード保存に不適切です。
- 3
ペッパー(アプリ側の共通秘密)を足す
ソルトとは別に、DB ではなくアプリの設定(秘密)側に置く共通の追加値がペッパーです。DB だけが漏れてもペッパーが分からなければクラックがさらに難しくなります。鍵管理サービス等で安全に保管します。
- 4
そもそも弱いパスワードを作らせない
どんなに保存方法を整えても、「password」「123456」のような単語は表に載っていて一瞬で破られます。長いパスフレーズ・パスワードマネージャ・パスキー(FIDO2)への移行が根本的な防御です。
⚠ このツールの位置づけ
これは攻撃ツールではなく防御・教育ツールです。内蔵テーブルはごく少数の「よくある弱いパスワード」だけを持ち、他人のパスワードを破る用途には使えません。他人のアカウントへの不正アクセスは法律で禁止されています。体験は必ず自分のサンプル値で行ってください。
🔒 計算はすべてあなたのブラウザの中(Web Crypto API)で完結します。入力した文字もハッシュもサーバには送られません(送信ゼロ)。crypto.subtle は安全な接続(https / localhost)でのみ動作します。
このツールについて
「パスワードはハッシュ化してるから安全」——本当でしょうか。よくあるパスワードのハッシュは、攻撃者が事前に用意した対応表で一瞬で逆引き(クラック)されます。ここでは内蔵の事前計算テーブルでそれを体感し、ソルトを足すと同じ表が効かなくなることを対比します。入力もハッシュもこの端末から一切出ません(送信ゼロ)。防御・教育のためのツールです。
ハッシュにしただけでは安全じゃない。よくあるパスワードは事前計算表で一瞬で破られる——でもソルトを足すと同じ表が効かなくなる。その対比をブラウザの中だけで体験。
🔰 かんたんに言うと
パスワードを「指紋(ハッシュ)」にしただけでは破られる理由と、「ソルト」を足して守るしくみを体験します。
主な機能
- パスワードのSHA-256を端末内で計算(同じ入力=必ず同じ値)
- 内蔵の事前計算テーブルで逆引き(クラック成功)を再現
- ソルトを足すとハッシュが変わり同じ表が効かなくなる対比
- ソルトを引き直すたびハッシュが変化するのを可視化
- ユーザー毎ソルト/bcrypt・Argon2/ペッパーの防御作法を図解
- 送信ゼロ・SubtleCryptoで端末内完結(攻撃ツールではない)
- 同じパスワードの2人の保存値をソルト有無で並べて比較
よくある質問
Q. ハッシュ化すればパスワードは安全では?
A. いいえ。同じパスワードは必ず同じハッシュになるため、よくあるパスワードのハッシュを事前計算した「レインボーテーブル」と照合すれば一瞬で平文が逆引きされます。ハッシュ化は安全の十分条件ではありません。
Q. レインボーテーブルとは何ですか?
A. よくあるパスワードのハッシュを事前に大量計算しておいた対応表です。攻撃者は1回作れば、以後は漏れたハッシュを「探すだけ」で総当たりなしに平文を割り出せます。本ツールはその縮小模型を内蔵しています。
Q. ソルトとは何ですか。秘密にすべき?
A. ユーザーごとに違うランダムな付加文字列です。秘密にする必要はなく、ハッシュと並べて保存します。役割は「同じパスワードでも保存値をバラけさせ、共通の事前計算表を無効化する」ことです。
Q. ソルトを付ければ SHA-256 のままで安全ですか?
A. 不十分です。ソルトは事前計算表を無効化しますが、SHA-256は高速すぎて1人ずつの総当たりには弱いままです。bcrypt・Argon2・scrypt・PBKDF2のような「遅い」関数を併用してください。
Q. ペッパーはソルトと何が違いますか?
A. ソルトはユーザー毎でDBに保存しますが、ペッパーはアプリ全体で共通の秘密で、DBとは別の場所(設定や鍵管理サービス)に置きます。DBだけが漏れてもペッパーが分からなければクラックがさらに困難になります。
Q. 入力したパスワードはどこかに送られますか?
A. いいえ。計算はすべてブラウザ内(Web Crypto API)で行われ、入力もハッシュもサーバに送信されません(送信ゼロ)。実在のパスワードではなくサンプル値で試してください。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。