Web Cryptoパスワード生成器

Web Cryptoの乱数を使い,4〜64文字の候補を1・3・5・10件生成します.文字種と類似文字除外を選び,設定上の理論ビット数を確認できます.

読み込み中...

このツールが向いている用途

操作欄に戻る ↑

安全な乱数で推測されにくいパスワードを素早く作成したい場面に適しています。4〜64文字、英大小・数字・記号の選択や類似文字の除外を指定できます。

まず試せること

16文字・生成件数3件を指定し、再生成ボタンを押して異なる文字列の組み合わせが出力される例を確認してください。

利用条件

文字種許可の仕様上、全文字種の確実な含有は保証されません。漏洩照合や保管・失効管理の機能はなく、実際の利用パスワードを入力・試用しないでください。

初期設定と利用前の確認

初期設定は16文字・3件で,大文字24種,小文字24種,数字8種,記号28種の合計84文字を候補にします.理論値は16×log2(84)で約102.3ビットです.これは設定が作る候補空間の目安で,実際の解読時間やアカウント全体の安全性を保証する値ではありません.

「数字」や「記号」をオンにする操作は,その文字種を候補へ加える意味です.個々の結果へ最低1文字を強制しないため,利用先が「数字を1文字以上」などの条件を設けている場合は,生成結果を確認してから使用してください.設定を変えた後は「パスワードを再生成」を押す必要があります.

W3CのWeb Crypto仕様はgetRandomValuesを暗号学的に強い乱数値の取得手段として定めています.ただし,長いパスワードでもフィッシングや端末上の盗み見は防げません.NIST SP 800-63B-4も参照し,利用先ごとに固有のパスワード,パスワードマネージャー,多要素認証を組み合わせてください.

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

設定から生成結果までの流れ

このパスワード生成器は,文字数,生成件数,使用候補にする文字種,類似文字の除外を設定し,「パスワードを再生成」を押して候補を作るツールです.初期値は16文字,3件,大文字・小文字・数字・記号がすべてオン,類似文字除外もオンです.件数は1件,3件,5件,10件から選びます.長さは数値欄とスライダーのどちらでも4文字から64文字まで指定できます.

設定を変えると,画面上の理論ビット数は新しい文字プールと長さに合わせて更新されます.一方,すでに生成済みの文字列は設定変更だけでは変わりません.新しい条件の候補が必要なときは再生成ボタンを押します.たとえば16文字の結果が表示されたまま長さを32へ変えると,理論値は32文字分へ更新されますが,結果欄は再生成するまで16文字のままです.

設定値と表示結果を混同しないよう,変更後には再生成を行ってください.

すべての文字種をオフにすると候補となる文字がなくなり,理論値は測定不能になります.その状態で再生成すると以前の結果を消し,文字種を1つ以上選ぶようエラーを表示します.Web Cryptoが利用できず安全な乱数を取得できない場合も,Math.randomへ切り替えず,結果を空にしてエラーを表示します.

生成結果は各行のコピーボタンから個別にコピーできます.一括コピー,ファイル保存,生成履歴,結果の並べ替え,パスワードマネージャーへの直接登録はありません.候補を採用する前に,利用先の最小・最大文字数,利用可能な記号,必須の文字種を確認してください.

第2章

文字プールと類似文字除外の内訳

元となる文字プールは,英大文字26種,英小文字26種,数字10種,記号29種です.4種類をすべて選び,類似文字除外をオフにした場合は合計91種になります.記号の候補は,感嘆符,アットマーク,番号記号,ドル記号,パーセント,キャレット,アンパサンド,丸括弧,角括弧,句読点,演算子など,画面に内蔵された29文字です.任意の記号を個別に除外したり,利用者が独自の文字集合を入力したりする機能はありません.

類似文字除外をオンにすると,大文字のIとO,小文字のlとo,数字の0と1,記号の縦棒を候補から外します.その結果,大文字24種,小文字24種,数字8種,記号28種となり,初期文字プールは合計84種です.除外は転記時の見間違いを減らすための設定で,パスワードの長さを自動的に増やす処理ではありません.文字プールが91種から84種へ減れば,同じ長さで計算する理論ビット数も少し下がります.

生成関数は,受け取った文字集合をJavaScriptのコードポイント単位で読み,同じ文字が複数あれば1種類へまとめます.現在の内蔵文字集合には意図的な重複はありませんが,この処理によって同じ候補が重なったことによる出現率の増加を避けます.絵文字などを自由入力するカスタム文字欄はこの画面にはないため,利用者がコードポイント処理を直接設定する場面はありません.

「数字をオン」「記号をオン」は,その種類を候補プールへ追加する操作です.各種類から最低1文字を先に選ぶ処理はありません.初期の84種から16回選んだ結果に数字が1文字もない場合も,その結果を数字入りへ置換せず,そのまま表示します.同じ文字が連続した場合も除外や再抽選を行いません.

利用先が「大文字・小文字・数字・記号を各1文字以上」のような条件を課している場合は,個々の結果を確認し,条件を満たす候補が出るまで再生成してください.

第3章

Web Cryptoと拒否サンプリング

各文字位置の選択には,共通関数secureRandomStringを使います.この関数は文字数と文字プールを受け取り,各位置についてsecureRandomIntを呼び出します.secureRandomIntは,ブラウザ環境のglobalThis.crypto.getRandomValuesでUint32Arrayへ値を取得します.

W3CのWeb Cryptography仕様では,getRandomValuesは暗号学的に強い乱数値を生成するAPIとして定義されています.

ただし,W3C仕様は暗号学的に強い値に含まれる情報理論上のエントロピー下限を定めていません.ブラウザやOSがどのハードウェア情報を使うかも,このページの実装からは確認できません.そのため,熱雑音やディスク動作など特定の乱数源を利用していると断定したり,出力の予測が数学的に絶対不可能だと保証したりはできません.

本ツールが行うのは,Web Cryptoが提供する値を文字選択へ偏りなく写すための処理です.

32ビット符号なし整数の候補数は2の32乗ですが,これは84や91で常に割り切れるわけではありません.単純に乱数値を文字プール数で割った余りを使うと,端数部分に対応する一部の文字がわずかに選ばれやすくなります.secureRandomIntは,文字プール数で均等に分割できる最大の範囲を計算し,その上限以上の値を捨てて取り直します.

初期プール84種では,2の32乗を84で割った余りは4です.したがって0から4,294,967,291までを採用し,4,294,967,292から4,294,967,295までの4値を取得した場合は再取得します.採用範囲を84で割った余りを文字の位置として使うため,乱数源が均等であるという前提の下で,単純な剰余による割当の偏りを持ち込みません.

再取得回数に固定の上限はありませんが,通常の84文字プールで値が捨てられる確率はごく小さいものです.

第4章

理論ビット数と四段階表示の読み方

画面の推定ビット数は,パスワードの実物を解析した値ではありません.選択中の文字プール数をN,指定した長さをLとし,L×log2(N)で計算します.各位置がプール全体から同じ条件で選ばれる場合の候補空間をビット単位で表した理論上の目安です.初期設定では16×log2(84)で約102.3ビット,類似文字除外をオフにした91種では約104.1ビットです.

表示ラベルは,40ビット未満,40以上60未満,60以上80未満,80以上の四区分です.ゲージ幅には順に20,40,75,100という固定スコアを使います.この100は安全性が100%であることを意味せず,80ビット以上の区分をゲージの最大幅で示しているだけです.

たとえば類似文字を除いた小文字24種だけで12文字なら,12×log2(24)で約55.0ビットとなり,40以上60未満の区分に入ります.

推定式は,生成に使った設定の候補数と長さだけを見ます.生成結果に数字や記号が実際に含まれたか,同じ文字が並んだか,辞書語に似ているか,過去の漏えい済みパスワードと一致するかは検査しません.利用先のハッシュ方式,試行回数制限,攻撃者の計算能力を入力する欄もなく,解読時間を算出しません.

したがって「推定80ビット以上」という表示は,特定のアカウントが安全であることや,総当たり以外の攻撃を防げることの保証ではありません.

設定変更直後は,強度表示が新しい設定を示し,結果欄は以前の設定で生成した文字列を示す場合があります.理論値を個別の結果と対応させるには,設定変更後に再生成してください.実際の文字列に対する追加の規則確認が必要なら関連する強度診断ツールへ手動で入力できますが,その診断も将来の安全性を保証するものではありません.

第5章

コピー,保持,通信の範囲

コピーボタンはブラウザのClipboard APIへ対象の1件を書き込みます.書き込みが成功した場合だけ,その行のボタンを2秒間「コピー済」に切り替えます.権限や実行環境により書き込みが失敗した場合は,コピー済表示にせずエラーを出します.重要な結果は,利用先へ貼り付けた後にも内容を確認してください.

2秒後に行うのはボタン表示を元へ戻すことだけです.クリップボードへ空文字や別の乱数を書き込んで自動消去する処理はありません.OSやクリップボード履歴アプリが内容を保持する可能性も,このページから制御できません.コピー後の扱いが気になる場合は,保存先へ登録した後に利用者自身で別の内容をコピーするなど,利用環境に合った方法で上書きしてください.

生成した候補はReactの状態として保持され,画面のDOMにも文字列として表示されます.ローカルストレージやファイルへの保存,過去の結果一覧,ブラウザのパスワードマネージャーへの登録処理はありません.JavaScript文字列が使っていたメモリを明示的にゼロで上書きする処理もなく,ページを閉じた後の物理的なメモリ状態を保証しません.

生成コンポーネントには,作成した文字列を生成目的でサーバーへ送る処理はありません.一方で,ページを表示するためのファイル取得,アクセス解析,広告など,ページ全体に関する別の通信が発生する場合があります.「生成処理に送信機能がない」ことと「ページから通信が一切ない」ことは分けて考えてください.

第6章

実際の認証での使い方と関連ツール

生成した候補を使うときは,アカウントごとに別の値を選び,再利用を避けます.利用先が対応するなら,パスワードマネージャーへ保存して自分で記憶・転記する回数を減らす方法があります.NIST SP 800-63B-4は,単一要素認証を提供する検証者に最低15文字を要求し,パスワードマネージャーを使って固有のパスワードを選択・保持する選択肢にも触れています.

これは利用先のサービス設計に関する要件を含むため,すべての利用者へ同じ設定を一律に強制する説明ではありません.

長くランダムなパスワードは候補空間を広げますが,偽サイトへ入力させるフィッシング,端末上のキーロガー,セッションの窃取など,総当たりとは異なる攻撃を防ぐ機能ではありません.利用先が対応している場合は,多要素認証やパスキーなども併用し,復旧手段と登録端末を確認してください.パスワードそのものをメールやチャットへ平文で送ることも避けます.

実際の文字列を別の観点から確認したい場合はパスワード強度診断,Hex・Base64・Base64URL・UUIDなどAPIキー向けの形式が必要な場合はセキュアトークンジェネレーター,共有秘密から時間ベースのワンタイムコードを確認する場合はTOTP生成・検証ツールが目的に近くなります.

これらは独立した画面で,生成結果や設定を自動的に引き継ぎません.用途を切り分け,移動先でも入力内容と前提を確認してください.

よくある質問(FAQ)

A.
保証されません.各位置を選択中の文字プール全体から抽出するため,数字や記号をオンにしていても,個別の結果には含まれない場合があります.利用先が文字種を必須にしている場合は,結果を確認して再生成してください.
A.
選択中の文字プール数と長さから 長さ × log2(プール数) を計算した理論上の目安です.実際の出力文字列,漏えい済みパスワード,辞書語,解読速度,利用先の防御は検査しません.
A.
大文字のI・O,小文字のl・o,数字の0・1,記号の|を候補から外します.初期設定の文字プールは84種類,除外をオフにした全プールは91種類です.
A.
消去されません.2秒後に戻るのはボタン表示だけです.クリップボード履歴を含む保存状態はOSやブラウザ側の管理になるため,必要に応じて利用者が別の内容で上書きしてください.
A.
生成機能には結果をサーバーへ送信したり永続保存したりする処理がなく,履歴も作りません.ただし,ページ表示に必要なファイル,アクセス解析,広告などの別通信が発生する場合があります.