自動生成か手動生成か

現在考えられる主なパスワード作成方法は、ソフトウェアでランダムな文字列を自動生成するか、頭の中で考え出すかのどちらかだろう。

ソフトウェアを使えばランダムな文字列を簡単に作れる。しかし、法則性のない文字列は人間には覚えにくいのが難点。必然的にパスワード管理アプリを使うことになるだろう。

パスワードを生成するソフトウェアはいくつかあるが、特にこだわらないのであればUNIX系のコマンドでも作れる。例えば次の画面のような感じだ。

コマンドでランダムな文字列を生成 - macOS

コマンドでランダムな文字列を生成 - Ubuntu on WSL

上記実行例は「dd if=/dev/random bs=200 count 1 | strings」というコマンドの出力を多少加工して表示したもの。/dev/randomからランダムなデータを吸い出して、ここからさらに利用可能な文字列だけを表示させている。

別にほかのコマンドを使ってもよいし、スクリプト言語を使って軽く作成用のコードを実行してもよい。利用できる文字や長さを指定してパスワードを生成したいなら専用のアプリを使った方が楽かもしれない。パスワード管理アプリに用意されているパスワード生成機能を使う方も多いだろう。今の時代、簡単に作れるので気軽に試してほしい。

さて、前振りが長くなったが、今回はもう一方である、自分でパスワードを生成する方法について紹介したいと思う。

使ってはいけないパスワード

まず、パスワードとして使ってはいけない文字列を知っておく必要がある。

辞書に掲載されている単語を安易に使うのは避けたい。人名や固有名詞も同様だ。すでにインターネットの世界で電子データとして存在するこうした単語は、そのままブルートフォース攻撃(パスワードに使われていそうな文字列をリスト化して片っ端から試していく総当り攻撃)に利用される可能性があるので、多少リスクが高くなる。

連載第1回では、14億件の流出アカウントデータを分析した記事「1.4 Billion Clear Text Credentials Discovered in a Single Database|4iQ」を紹介したが、当然ながら、こうした流出データに含まれるようなパスワードはご法度である。すでにデータが入手できるため、ブルートフォース攻撃で使われる可能性が非常に高い。同記事に掲載されているパスワードトップ40は使っているようなユーザーは、パスワードを共有しているようなものである。「123456」などの数字の並びやキーボードの配列どおりの文字列が上位に入っているが、言語道断である。

パスワードの作り方

パスワードは次の要素をすべて満たすものが良しとされることが多い。

  • アルファベットの大文字と小文字
  • 数字
  • 記号

適当にキーボードを打てば作れるが、それでは覚えるのが難しい。パスワード管理アプリを使わないのであれば、何か規則性があったほうが良いだろう。

そこで便利なのが、文章を作って、そこから文字を抜き出すという方法である。

文章は何でもよい。筆者などは、ぱっと思いついた情景にアレンジを加えて印象深い文章を作ってみる。例えば、「千人の歌舞伎役者で埋め尽くされた小箱のステージ」なんて文章を作る。文章ができてしまえば、パスワードを作るのは簡単だ。品詞などを手がかりに、適当に切れ目を作って頭文字を並べた後に手を加えればよい。

ネタ 千人の歌舞伎役者で埋め尽くされた小箱のステージ
品詞分解 千 人 の 歌舞伎 役者 で 埋め尽くさ れ た 小箱 の ステージ
ローマ字 Sen Nin No Kabuki Yakusha De Umetsukusa Re Ta Kobako No Steiji
頭文字取り出し SNNKYDURTKNS
小文字織り交ぜ snNkyDuRTkNs
数字織り交ぜ snNk4DuRTkNs
記号織り交ぜ $nNk4DuRTkNs

文章を分解するルールは厳密に品詞分解である必要はなく、マイルールで分解すればよい。自分にだけ自然にわかりるものであればよく、そこは自分のフィーリングでやってもらえればよいと思う。小文字に変更する場所、数字を入れる場所、記号に置き換える文字列なども、マイルールを確立しておけば覚えやすくなるはずだ。

ネタ 千人の歌舞伎役者で埋め尽くされた小箱のステージ
マイルール分解 千人 の 歌舞伎役者 で 埋め尽くされた 小箱の ステージ
ローマ字 Sennin No Kabukiyakusha De Umetsukusareta Kobakono Steiji
頭文字取り出し SNKDUKS
小文字織り交ぜ SnKdUkS
数字織り交ぜ S1nKdUkS
記号織り交ぜ S1nKd##kS

文章は意味不明な文章にしてもよい。ただし、あまりに意味不明だと文章そのものを忘れてしまう。かと言って、パスワードを利用するサービスから想像しやすい文章もリスクが高まるのであまりよくない。そのあたりのバランスには気をつけてほしい。

筆者の場合、例えば、ストレージサービスのパスワードであれば、「ストレージ」→「入れ物」→「つづら」と連想して、以下のような文章を作ってパスワード化する。

ネタ つづらの中身は焼き肉定食ラーメンセット餃子付き
品詞分解 つづら の 中身 は 焼き肉 定食 ラーメン セット 餃子 付き
ローマ字 Tsudura No Nakami Ha Yakiniku Teishoku Ramen Set Gyoza Tsuki
頭文字取り出し TNNHYTRSGT
小文字織り交ぜ tnnhYTRSgt
数字織り交ぜ tnnhY99TRSgt
記号織り交ぜ t%%hY99TRSgt

ストレージならそのほかにも、「スライムで溢れかえる岡持ち」「無限に続く奇跡の押し入れ」などいろいろ考えられる。想像力をかきたてられる楽しい作業だ。

文章を考えるのが苦手という場合には、好きな映画や漫画、アニメのシーンを使ってもよい。そのまま文章にして、自分ルールで分解してパスワードを作ればできあがる。

ネタ 烏野コンビの変人速攻
品詞分解 烏野 コンビ の 変人 速攻
ローマ字 Karasuno Konbi No Henjin Sokkou
マイルール取り出し RSNHENS
小文字織り交ぜ RSNhenS
数字織り交ぜ R1SNhenS
記号織り交ぜ %1SNhen^

ここで紹介した方法は「How To Create A Strong Password That’s Hard To Crack?|fossBytes」にわかりやすい説明がまとまっているので、興味がある方はご覧になるとよいだろう。