セキュリティを整える
中級ソルト&レインボーテーブルを整える。
= ハッシュだけでは破られる。ソルトで守るしくみを体験
「パスワードはハッシュ化してるから安全」——本当でしょうか。よくあるパスワードのハッシュは、攻撃者が事前に用意した対応表で一瞬で逆引き(クラック)されます。ここでは内蔵の事前計算テーブルでそれを体感し、ソルトを足すと同じ表が効かなくなることを対比します。入力もハッシュもこの端末から一切出ません(送信ゼロ)。防御・教育のためのツールです。
🔰 かんたんに言うと
パスワードを「指紋(ハッシュ)」にしただけでは破られる理由と、「ソルト」を足して守るしくみを体験します。
TLDR — 30秒で分かる
ハッシュにしただけでは安全じゃない。よくあるパスワードは事前計算表で一瞬で破られる——でもソルトを足すと同じ表が効かなくなる。その対比をブラウザの中だけで体験。
主な機能を見る
- パスワードのSHA-256を端末内で計算(同じ入力=必ず同じ値)
- 内蔵の事前計算テーブルで逆引き(クラック成功)を再現
- ソルトを足すとハッシュが変わり同じ表が効かなくなる対比
- ソルトを引き直すたびハッシュが変化するのを可視化
- ユーザー毎ソルト/bcrypt・Argon2/ペッパーの防御作法を図解
- 送信ゼロ・SubtleCryptoで端末内完結(攻撃ツールではない)
漏れたDB
ハッシュだけ
事前計算表
よくあるPW
逆引き成功
平文がバレる
ユーザー2人
同じPW
ソルト付与
各自バラバラ
保存される値
別々のハッシュ
STEP 1
※ イメージ図です。下の入力欄で、実際にハッシュ計算・逆引き・ソルト無効化を体験できます。
⚠ このページは安全な接続(https または localhost)でのみハッシュ計算できます。今は計算できない環境のようです。
これはあなたの端末の中だけで計算されます。実在のパスワードを試すのは避け、サンプルで体験してください。
計算中… 同じパスワードなら、いつ・誰の端末でも必ず同じこの値になります。だから事前計算表が成立します。
—
攻撃者はこういう表を事前に1回だけ作っておけば、以後は漏れたハッシュを照合するだけ。今あなたが入力した値が一致する行は赤でハイライトされます。
| 平文(よくあるPW) | 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)でのみ動作します。
よくある質問
- 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の「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
RELATED TOOLS
続けて整える