dmosk / passcheck

パスワードの漏洩チェック

Have I Been Pwned の k-匿名性でパスワードを確認:SHA-1 はブラウザ内で計算し、短いハッシュ接頭辞だけが送信されます。ローカルのエントロピー推定もあります。パスワードは当方サーバーに送られません。プライバシー注記を参照。新しいものが必要なら passgen。

パスワードは端末内に留まります。Have I Been Pwned API には短い SHA-1 ハッシュ接頭辞だけが送られます(k-匿名性)。当方はパスワードを受け取らず、保存もしません。

passcheck を使う理由

  • HIBP と k-匿名性。SHA-1 はブラウザ内で計算し、短いハッシュ接頭辞だけを API に送ります。
  • ローカルエントロピー。長さと文字クラスから強度を推定 — 端末上で。
  • パスワードは当方バックエンドへ行きません。受信も保存もしません。
  • 結果が明確。漏洩で見つかった / 見つからない。見つかればおおよその HIBP 回数。
  • 正直な限界。絶対安全の約束はしません — HIBP コーパスとヒューリスティックのみ。
  • 無料・多言語。アカウント不要。各ロケールの UI/SEO。
  • ジェネレーター連携。新しいパスワードは passgen.dmosk.net。

パスワードの確認方法

  1. パスワードを入力します(表示/非表示も可)。
  2. 確認を押すと、ブラウザが SHA-1 を計算し接頭辞で HIBP に問い合わせます。
  3. 漏洩ステータスとローカル強度推定を確認します。
  4. 見つかった場合はまだ使っている場所で変更し、passgen で新規作成します。

パスワード衛生と HIBP

Have I Been Pwned は既知の漏洩からパスワードハッシュを集めています。一致は、その文字列が漏洩データに既に現れたことを意味します — 使用をやめてください。強度スコアはヒューリスティックであり、一意の乱数パスワードの代わりにはなりません。

おすすめ:

  • サービスごとに一意のパスワードを使う。
  • メモやチャットではなくパスワードマネージャーに保存する。
  • 長さと文字の多様性は辞書の「巧妙な」語より重要。
  • 可能なところでは二要素認証を有効にする。
  • HIBP で見つかったら、まだ有効な場所すべてで変更する。
  • HIBP で「未検出」でも「永遠に安全」ではない。
  • 新しいものは passgen で。
  • 怪しいサイトにパスワードを入力しない — 本ツールは当方サーバーへ送りません。

用途

  • 既知の漏洩にパスワードが出ていないか素早く確認する;
  • ローテーション前の粗いエントロピーの目安;
  • 弱い・使い回しパスワードのリスク説明;
  • passgen のジェネレーターへ続く;
  • 当方サーバーへパスワードをアップロードせずに。

よくある質問

HIBP の k-匿名性とは?

ブラウザが SHA-1 を計算し、ハッシュ先頭だけを送ります。HIBP はその接頭辞のサフィックス一覧を返し、完全一致はローカルで確認 — 完全なパスワードは API に行きません。

パスワードは当方へアップロードされますか?

いいえ。受信も保存もしません。短い SHA-1 接頭辞だけが HIBP API に送られます。

Have I Been Pwned とは?

Troy Hunt のプロジェクトで、公開漏洩のパスワードハッシュを集約します。passcheck はその range API を使います。

「約 N 回」は何を意味しますか?

HIBP データでのおおよその出現回数。多いほど広く流通している — 変更してください。

エントロピー推定の意味は?

粗いヒューリスティック: 長さ × 文字クラスから推定したアルファベットの log2。ラボ監査ではありません。

「未検出」は絶対安全ですか?

いいえ。HIBP は不完全で、弱いかコーパス外で漏洩している可能性があります。

新しいパスワードはどこで?

passgen.dmosk.net を開いてください — ブラウザ内で生成。

無料ですか?

はい — 登録不要、確認料金なし。

完全オフラインで動きますか?

強度推定はローカル。漏洩確認には HIBP API へのネットワークが必要です。

HIBP 障害や CORS 失敗時は?

接続エラーが表示されます。後で再試行。強度推定は使える場合があります。

どのハッシュ?

HIBP の k-匿名 range API が求めるパスワードの SHA-1 です。

確認履歴を保存しますか?

いいえ。入力パスワードは当方へ送られず、DB にも書きません。