カギバコ

パスワードもファイルも、送らずに作る・確かめる

パスワードを生成する

長さと文字種を選んで生成します。生成はお使いのブラウザの中だけで行われ、結果がサーバーに送信されることはありません。保存もしません(設定だけは次回のために覚えます)。

使う文字
オプション

生成結果は保存されません。ページを閉じると消えます(長さや文字種の設定だけを次回のために覚えます)。

使い方

  1. 長さを数字で入力します。用途に制限がなければ 20 文字以上をおすすめします
  2. 使う文字種(英大文字・英小文字・数字・記号)を選びます。記号は使いたいものを直接入力でき、「標準」「URL で安全」「シェル・設定ファイルで安全」のボタンで呼び出すこともできます
  3. 手で書き写す予定があるなら「紛らわしい文字を除く」を有効にします(0 と O、1 と l と I を除きます)
  4. 「生成する」を押し、コピーしてパスワード管理ソフトに保存します

よくある質問

本当にサーバーに送信されないのですか?

されません。生成はブラウザ内の JavaScript が行い、通信は発生しません。このページには Content-Security-Policy が付いており、アクセス解析のドメインと本サイト自身を除く、すべての宛先への通信をブラウザ自身が禁止しています(本サイト自身が許可されているのは、オフラインで使えるようにするキャッシュ機構のためです)。したがって、たとえこのページに悪意あるコードが混入しても、パスワードを第三者へ送信することはできません。ブラウザの開発者ツールの「ネットワーク」タブでこのページのレスポンスヘッダーを見れば確認できます。一切の通信を禁止した版が必要な場合は、厳格モードのページをお使いください。

何文字にすればいいですか?

パスワード管理ソフトに保存して使うなら 20 文字以上を推奨します。手で入力する必要があるなら、文字数を減らすよりパスフレーズ(単語をつなぐ方式)のほうが実用的です。

エントロピーの bit とは何ですか?

その設定で作られ得るパスワードの総数を 2 の累乗で表した数字です。1 bit 増えると候補が 2 倍になります。20 文字・英数字なら約 119 bit で、総当たりでの推測は現実的ではありません。「解読に何年」という表示をこのサイトが出さないのは、その数字が攻撃側の条件(オフラインかオンラインか、保存側のハッシュ関数、投入されるハードウェア)で 3 桁変わり、実質的に意味を持たないためです。

SSH やサーバーの作業で使うとき、避けたほうがよい記号はありますか?

SSH のパスワード認証そのものは、どんな記号でも問題ありません。パスワードは暗号化された通信路をそのまま運ばれ、途中でシェルが解釈することはないためです。事故が起きるのはその外側です。とくに $ はシェルの二重引用符の中で変数として展開され、エラーにならずに文字が消えます(` \ " ' も同様の危険があります)。ほかに、パラメータシート(Excel / CSV)では = + - @ で始まるセルが数式として扱われ、user:pass@host 形式の URL では @ : / が区切りと衝突し、Windows のバッチでは % が展開されます。確実なのは記号を - _ . の 3 種に絞り、先頭を英字にすることです。この 3 つはシェル・URL・ini・YAML・JSON のいずれでも素の文字として扱われます。「シェル・設定ファイルで安全」のボタンがこの設定です。

記号を絞ると弱くなりませんか?

長さを 1〜2 文字伸ばせば取り返せます。記号の種類は 1 文字あたりの情報量にしか効かず、標準の記号 20 種を - _ . の 3 種に減らしても 1 文字あたり 6.36 bit → 6.02 bit の差にしかなりません。一方で長さは 1 文字増えるごとに丸ごと 6 bit 増えます。実際、記号 20 種で 20 文字(約 127 bit)より、記号 3 種で 24 文字(約 145 bit)のほうが強くなります。記号の種類で粘るより、長さで稼ぐほうが強度と運用のどちらでも有利です。

同じパスワードを使い回してはいけないのはなぜですか?

どこか 1 つのサイトから流出すると、同じ組み合わせで他のサイトへログインを試す攻撃(パスワードリスト攻撃)に一斉にさらされます。サイトごとに別のパスワードを生成し、パスワード管理ソフトに覚えさせるのが現実的な運用です。

生成したパスワードは記録されていますか?

記録していません。生成結果はブラウザのメモリ上にだけあり、ページを閉じると消えます。localStorage などに保存することもしていません(保存するのは長さや文字種といった設定だけです)。