パスワード生成(自動生成ツール)
安全なランダムパスワードやパスフレーズをブラウザ内で自動生成します。送信も保存もしません。
生成したパスワード
- 強度
- とても強い
- エントロピー
- 104ビット
- 総当たりにかかる時間
- 10億年以上
盗まれたパスワードのハッシュに対し、1秒に100億回試すオフライン攻撃を想定した目安です。実際の攻撃はこれより遅いことも速いこともあり、使い回しや流出済みのパスワードは長さに関係なくすぐ破られます。
詳細設定
パスワードはお使いのブラウザ内で生成されます。どこにも送信されず、このブラウザにも保存されません。
使い方
- 「パスワード」(ランダムな文字列)か「パスフレーズ」(ランダムな単語の組み合わせ)を選びます。
- パスワードの場合は、スライダーか数字の欄で文字数を決め、登録先のサイトで使える文字の種類にチェックを入れます。
- 一度に作る数を1・5・10から選びます。
- 使いたいパスワードの横の「コピー」を押し、登録画面やパスワード管理アプリに貼り付けます。
- 「新しく生成」を押すと作り直せます。設定を変えたときも自動で新しいパスワードになります。
パスワードはブラウザの中だけで作られます
このパスワード生成ツールは、すべての処理をお使いの端末の中で行います。ページを開いた時点のHTMLにはパスワードは含まれておらず、ツールがブラウザで動き始めてから初めて1つ目のパスワードを自動生成します。文字は、ブラウザに備わっている暗号用の乱数生成器(crypto.getRandomValues)で選んでいます。一般的なプログラムで使われる Math.random よりも予測が難しく、暗号の鍵づくりにも使われる仕組みです。
作ったパスワードはページのメモリ上にあるだけで、サーバーへの送信、ログの記録、ローカルストレージへの保存、URLへの書き込みは一切しません。再読み込みやタブを閉じると消えるので、必要なものは必ずパスワード管理アプリなどに保存してください。
1文字ずつ、偏りなく選ぶ仕組み
乱数を「90種類の文字のうちどれか」に変換するとき、よくある「90で割った余りを使う」方法では、ごくわずかに出やすい文字が生まれます。このツールでは、偏りの原因になる乱数を捨てて引き直す「棄却サンプリング」を使っているため、候補のどの文字も完全に同じ確率で選ばれます。
「選んだ種類の文字を必ず1つ以上含める」をオンにすると、まずチェックした種類(英大文字・数字・記号など)から1文字ずつ選び、残りを全体から選んだあと、フィッシャー–イェーツ法で全体の並びをシャッフルします。必須の文字が先頭に固まらないので、「大文字で始まり記号で終わる」といった、攻撃者が最初に試すパターンになりません。「英大文字・小文字・数字をそれぞれ含めてください」という条件のあるサイトでも、一度で通るパスワードが作れます。
パスワードの強さ(エントロピー)をやさしく
エントロピーは、攻撃者が試さなければならない組み合わせの数を「2の何乗か」で表したものです。1ビット増えるごとに、総当たりに必要な手間は2倍になります。
- パスワード:文字数 × log2(使える文字の数)。4種類すべてを使うと90文字なので、1文字あたり約6.5ビット。初期設定の16文字なら約104ビットです。
- パスフレーズ:単語数 × log2(単語リストの語数)。リストは976語なので1語あたり約9.9ビット、5語で約50ビットです。「数字を入れる」をオンにすると数ビット増えます。
強度の表示は、40ビット未満が「弱い」、40〜59が「普通」、60〜79が「強い」、80以上が「とても強い」です。「総当たりにかかる時間」は、流出したパスワードのデータベースに対して1秒に100億回試す場合の時間で、平均するとその半分で見つかります。この数字は、ここで作ったようなランダムなパスワードにだけ当てはまります。名前と誕生日を組み合わせたような自分で考えたパスワードは、文字数から想像するよりはるかに弱いことに注意してください。
生成ツールより大切な、パスワードの基本
- サイトごとに別のパスワードを使う:不正ログインの多くは、どこかのサービスから流出したパスワードを別のサイトで試す「リスト型攻撃」です。サイトごとにランダムなパスワードにしておけば、この攻撃は効きません。
- パスワード管理アプリを使う:数十個のランダムなパスワードを覚えるのは不可能です。管理アプリに暗号化して保存し、自動入力させれば、覚えるのは強いマスターパスワード1つだけで済みます。
- 手で入力するものはパスフレーズに:マスターパスワードやパソコンのログインのように毎回打つものは、7語以上のパスフレーズが入力しやすく、しかも十分に強くなります。
- 二段階認証(2FA)を有効にする:認証アプリやセキュリティキーを使えば、万一パスワードが漏れてもアカウントを守れます。
ネットバンキングやポイントサイトなど「8〜16文字・記号不可」のような制限があるサービスでは、記号のチェックを外し、許される最大の文字数で作るのがコツです。
公平にくじを引いたり数字を選んだりしたいときは、同じ偏りのない方法を使ったランダム抽選ツールが使えます。文字数制限のある欄に貼る前に長さを確かめたいときは、文字数カウントも便利です。
よくある質問
このパスワード生成ツールは安全ですか?
パスワードはお使いのブラウザの中で、暗号用の乱数生成器(crypto.getRandomValues)を使って作られます。サーバーへの送信は一切なく、Cookieやローカルストレージ、履歴にも残しません。タブを閉じればパスワードは消えます。
パスワードは何文字にすればいいですか?
英大文字・小文字・数字・記号をすべて使う場合、16文字で約104ビットになり、現実的な総当たり攻撃ではまず破られません。重要度の低いサービスでも12文字以上、パスワード管理アプリのマスターパスワードなら20文字以上かパスフレーズがおすすめです。
記号が使えないサイトではどうすればいいですか?
「記号」のチェックを外してください。そのぶん1文字あたりの強さが下がるので、文字数を2〜3文字増やすと同じくらいの強度になります。特定の記号だけ使えるサイトでは、「使う記号を指定」にその記号(例:-_.@)だけを入力します。
見間違えやすい文字を除くとは?
大文字のI(アイ)、小文字のl(エル)、数字の1、大文字のO(オー)、数字の0は、紙に書き写したり画面を見ながら入力したりするときに取り違えやすい文字です。これらを使わないようにできます。使える文字が少し減るため、表示されるビット数もわずかに下がります。
パスフレーズとは何ですか?
ランダムに選んだ単語をつなげたパスワードです。例えば「river-cold-number-paper-table」のような形で、覚えやすく入力しやすいのが特長です。このツールの単語リストは976語なので、1語あたり約9.9ビットです。大事な用途では7語以上にしてください。
パスフレーズに英単語を使うのはなぜですか?
パスワード欄は半角英数字と記号を前提にしているサービスが多く、日本語の単語は入力できなかったり、ローマ字の綴りが人によって揺れたりします。誰でも同じ綴りで打てる英単語なら、そうした問題が起きません。
「総当たりにかかる時間」はどれくらい正確ですか?
あくまで目安です。攻撃者がパスワードのハッシュを入手し、1秒に100億回試すという、かなり速い条件で計算しています。bcryptなど遅いハッシュで守られていれば攻撃はずっと遅くなります。一方、他のサイトから流出したパスワードや使い回しのパスワードは、長さに関係なく最初に試されてしまいます。