パスワード・シークレット生成ツール
ランダムなパスワード、単語を並べたパスフレーズ、API トークンを生成し、設定ごとのエントロピーをビット数で表示します。
エントロピー
ツールをここにピン留めできます。このブラウザに保存されます。
ツールをピン留めすると、そのステッカーがここに並びます。
ランダムなパスワード、単語を並べたパスフレーズ、API トークンを生成し、設定ごとのエントロピーをビット数で表示します。
エントロピー
すべての文字、単語、バイトは、ブラウザの暗号論的乱数生成器である crypto.getRandomValues から得ています。Math.random はどこにも使っていません。秘密情報向けに設計されておらず、出力を予測できるためです。
候補から 1 つを選ぶ処理には注意が必要です。ランダムなバイトを候補の数で割った余りを使うというよくある手軽な方法では、候補の数で 256 が割り切れない場合、一部の文字がほかよりわずかに出やすくなります。このツールは代わりに棄却サンプリングを使います。候補の数に必要な分だけのランダムビットを取り出し、候補の範囲外になった値は捨てて引き直します。各種類から 1 文字以上というルールも同じ考え方で適用しています。ある種類を含まないパスワードは丸ごと破棄するので、ルールを満たすパスワードはどれも等しい確率で生成されます。
シークレットはこのページの中にしか存在しません。どこにも送信されず、ブラウザにも保存されないので、再生成するかタブを閉じると消えます。
ビット単位のエントロピーは、等しい確率で起こりうる結果の数の底 2 の対数で、1 ビット増えるごとに推測の手間は 2 倍になります。この値は実際に使っているオプションから計算し、小数点以下を切り捨てて整数にしています。4 種類の文字をすべて使うと候補は 87 文字で、長さ 20 なら 128 ビットです。紛らわしい文字を除くと候補は 82 文字に減り、同じ長さで 126 ビットになります。パスフレーズのリストは 1,024 語で、1 語あたりちょうど 10 ビットです。5 語なら 50 ビット、8 語なら 80 ビットです。トークンは 1 バイトあたり 8 ビットなので、32 バイトなら 256 ビットです。
この数値が表すのは生成器の性質であって、結果の見た目ではありません。ランダムに選んだからこそ成り立つ値です。人が考えたパスワードは、長さから想像されるよりはるかにエントロピーが低いのが普通です。また、強力なパスワードでも 2 つのサイトで使い回すと、片方から漏洩した時点で両方が危険にさらされます。
パスワードマネージャーが保存して入力してくれるものにはランダムな文字を使ってください。マネージャー自体のパスワードや暗号化ディスクのパスワードなど、覚えておく必要があったり手で入力したりする数少ないシークレットにはパスフレーズを使い、強度を上げたいときは小細工をせずに単語を増やしてください。API キー、セッションシークレット、HMAC や JWT の署名鍵など、ソフトウェアだけが読むシークレットにはトークンを使ってください。hex は数字と a〜f の文字だけを使います。Base64url は同じバイト列をより少ない文字数で表し、URL でエスケープが必要な文字を含みません。
紛らわしい文字を除くオプションは、パスワードを読み上げたり紙から書き写したりするときに役立ちます。記号のセットからは、引用符、バックスラッシュ、バッククォート、山かっこ、スペースを除いています。これらはシェルのコマンドや設定ファイルを壊しやすいためです。$、&、! などの記号は残っているので、コマンドラインでパスワードを渡すときはシングルクォートで囲んでください。
このページは、ブラウザの暗号論的乱数生成器を使ってお使いの端末上で生成し、結果を送信も保存もしません。保証できないのは端末そのものです。マルウェアや悪意のあるブラウザ拡張機能は、ページに表示された内容を読み取れます。パスワードマネージャーを使っているなら、その内蔵の生成機能を使えば、新しいパスワードを生成と同時に保存できます。
文字数ではなくビット数で考えてください。4 種類の文字をすべて使う場合、12 文字で 76 ビット、16 文字で 102 ビットになり、アカウントのパスワードとしては十分に強力です。鍵や API シークレットには 128 ビット以上を目安にしてください。20 文字、または 16 バイト以上のトークンに相当します。
強さはビット数だけで決まります。このリストの 5 語は 50 ビットで、完全にランダムな 8 文字とほぼ同じです。10 語なら 100 ビットで、ランダムな 16 文字に近くなります。同じ強さならパスフレーズのほうが長くなりますが、入力も記憶もずっと簡単です。
トークンモードで 32 バイト(256 ビット)を使い、16 バイト未満にはしないでください。値はソースコードではなく、シークレットマネージャーや環境変数に保管し、ログやチャット、リポジトリに現れてしまったら新しい値に置き換えてください。
専用のウィンドウで開き、オフラインでも使えます。
インストールするには、共有ボタンをタップして「ホーム画面に追加」を選びます。