強力なパスワードの作り方は?

強力なパスワードとは、攻撃者が現実的な時間内に推測することができず、かつ他のどのサービスでも使い回していないパスワードのことです。短くて予測しやすいパスワードは真っ先に解読され、使い回されたパスワードはどこかのサービスから情報漏洩が発生した際に他のサービスで試されます。この2つの弱点は簡単に対処できます。ただし、強力なパスワードであっても万能ではありません。巧妙なフィッシング詐欺サイトへの入力やマルウェアによる盗難までは防ぐことができません。そのため、本稿の後半で紹介するステップはパスワード自体の文字列にとどまらない対策となっています。まずは結論となるステップを提示し、続いて各対策がなぜ有効なのかを解説します。

要約:安全を確保する手順

  1. 自分で考えるのではなく自動生成する:サイトが許容する限り、16 文字以上の長さに設定します。
  2. 大文字、小文字、数字、記号など、そのサービスが受け付けるすべての文字種を使用します。
  3. パスワードマネージャーに保存します。
  4. 1つのパスワードは絶対に1つのアカウントだけで使い、使い回しをしません。
  5. 2要素認証(二段階認証)を有効にし、対応しているサービスではパスキー(passkey)を利用し、リカバリーコードを安全に保管します。

何がパスワードを強固にするのか

パスワードの強度は主に3つの要素によって決まります。第1に「長さ」です。ランダムな文字が1文字増えるごとに、攻撃者が試行しなければならない組み合わせの総数は何倍にも増えます。第2に「ランダム性」です。パスワードの強度はそれを生成したプロセスの確からしさに依存するため、機械が完全にランダムに選んだ12文字は、名前と生まれ年を組み合わせただけの12文字よりも圧倒的に強固です。第3に「一意性(固有性)」です。2つのWebサイトで同じパスワードを使い回している場合、その安全性はセキュリティが脆弱なほうのサイトと同じレベルにまで低下します。あるサービスから漏洩したパスワードは、他のサービスでも日常的に試されるからです。

パスワードの強度は「エントロピー」という単位(ビット)で測定され、1ビット増えるごとに総当たりに必要な試行回数は2倍になります。英小文字 a–z、英大文字 A–Z、数字 0–9 の合計 62 種類の文字から等確率かつランダムに1文字選ぶと約 6 ビットのエントロピーが加わります。したがって、同様に選ばれた 12 文字のパスワードは約 71 ビット、16 文字は約 95 ビットの強度を持ちます。ただし、これらの数値は各文字が完全に独立して無作為に選ばれた場合にのみ当てはまり、人間が頭の中で考え出したパスワードには適用できません。当サイトの生成器が表示する目安において、60 ビットは日常的なアカウントに実用的な水準、80 ビットは十分に強固、そして 100 ビットは現代のハードウェアによる総当たり攻撃(ブルートフォース)の現実的な到達範囲を超える強度と位置づけています。これらは絶対的な規格というよりも指標であり、実際の耐性はサービス側の保存方法や攻撃者の攻撃手法にも左右されます。

なぜありがちな工夫では通用しないのか

人間がパスワードを考える際の発想パターンは驚くほど共通しており、パスワード解読ツールはまさにそうした人間の心理的癖を突くように設計されています。

これらに共通する欠陥は、人間が選択する予測可能なパターンに従っている点にあります。記号や数字を強制したり、90 日ごとの定期変更を義務付けたりするルールは、皮肉にも利用者をまさにこうした安易なパターンへと追い込む結果となっていました。そのため、NIST(米国国立標準技術研究所)の最新ガイドライン では、複雑な構成ルールの強制や定期的な変更の要求を取りやめ、代わりに過去に漏洩したパスワードのブラックリストと照合することをサービス側に推奨しています。

手入力が必要なパスワード:パスフレーズを活用する

パスワードマネージャーが手元にない状態で入力しなければならないパスワードもわずかに存在します。パスワードマネージャー自体のマスターパスワード、PCやスマートフォンのログインパスワード、そして多くの人にとっては主要なメールアカウントのパスワードです。これらには、自分で考えた文章ではなく、無作為に選ばれた複数の単語からなる「パスフレーズ」を使用するのが賢明です。代表的な手法にDiceware法があり、非営利団体の EFF(電子フロンティア財団)が専用の単語リスト を公開しています。ここでは英語の「EFF Long Wordlist」を使った手順を紹介します。

  1. リストを開きます。リストには 7,776 個の英単語が掲載されており、それぞれに 1 から 6 までの数字五桁の番号が割り振られています。
  2. 通常の6面体サイコロを五回振るか、五個のサイコロを一度に振って左から順に読み、五つの出目をメモします。
  3. その数字に対応する単語をリストから見つけます。
  4. この手順を繰り返し、合計6つの単語を選び出します。
  5. 単語が途中で重複したり、もっと格好いい単語に変えたくなったりしても、出たままの単語をそのまま維持します。覚える際は、単語自体や順序を変えることなく、単語同士をつなぐ情景やストーリーを頭の中で思い描くようにします。

このリストの各単語は約 12.9 ビットのエントロピーを追加するため、五単語で約 65 ビット、6単語で約 78 ビットの強度になります。同じ強度を持つ記号混じりのランダム文字列と比べて、6つの一般的な単語のほうが圧倒的に記憶しやすく、キーボードでの入力も容易です。この方法を成立させるには2つの必須条件があります。第1に、単語は必ず偶然性(サイコロの出目)によって選ばれなければならないということです。好きな歌詞のフレーズや有名な引用文などはすでに攻撃者の辞書に登録されています。同様の理由から、どこかで例として見かけたフレーズをそのまま使ってはなりません。第2に、そのパスフレーズを使い回さないことです。1つのパスフレーズは1つの場所だけで使用します。

その他のあらゆるパスワード:自動生成に任せる

手入力する必要のないその他の無数のアカウントについては、人間が苦労してパスワードを考案する理由は一切ありません。当サイトの 強力なパスワード生成 ツールは、Web Crypto APIを利用してお使いのブラウザ内で直接パスワードを生成し、生成したパスワードがサーバーに送信されることはありません。長さ を 16 以上に設定し、対象サイトが許可している文字種を選択して 生成 をクリックしてください。生成結果の下に表示されるエントロピー推定値がビット単位の強度を示します。画面を見ながら手で入力したり口頭で読み上げたりする必要がある場合は、紛らわしい文字を除く を有効にすれば見分けにくい文字(Il1O0o)を排除できます。また、複数のアカウントを一度に開設する際は 個数 を指定してリスト形式で一括出力できます。

一部のWebサイトでは、いまだにパスワードの最大文字数が制限されていたり、特定の記号が使えなかったりします。生成したパスワードが弾かれた場合は、禁止されている記号の種別だけをオフにし、可能な限り長さを維持してください。文字数を減らすのは、システム側で文字数制限が厳格に課されている場合だけに留めましょう。いずれの場合も、自分で考えたパスワードに戻ってしまうのは避けてください。機械的に生成された無作為な 12 文字のパスワードのほうが、人間が工夫した文字列よりはるかに安全です。

パスワードの安全な保管場所

すべてのアカウントに固有のランダムパスワードを適用する最も簡単な方法は、パスワードマネージャーの導入です。パスワードマネージャーは各パスワードを暗号化して保存し、ログイン時に自動入力してくれるだけでなく、保存したパスワードが過去のデータ漏洩事故に含まれていないかを警告してくれる機能も備わっています。これを利用すれば、百個のパスワードを暗記する代わりに、たった1つのマスターパスフレーズを覚えるだけで済みます。どうしても専用ソフトを使いたくない場合は、自宅の来客の目につかない安全な場所に置いた紙のノートに手書きでメモしておくほうが、同じパスワードを複数のサービスで使い回すよりはるかに安全です。役に立たないのは、デスクトップ上にテキストファイルで保存したり、チャットツールの自分宛てメモに残したり、オフィスのモニターに付箋で貼ったりすることです。

安全のためのチェックリスト

これらのルールがなぜ必要なのかをさらに詳しく知るには、パスワードはどのように解読されるのですか? をご一読ください。関連するその他の解説は パスワード生成の資料 にまとめられています。