総務省がパスワードの定期的な変更は不要であると方針転換したことが話題になっています。

むしろ、使い回しが危険であり、機器やサービスごとに固有のパスワードを設定することが求められます。つまり、複雑なパスワードを最初だけ設定することになります。

では、複雑なパスワードはどうやって作成するのでしょうか。自分でランダムに文字を組み合わせることもできますが、人によってはパターン化しやすく、ディープラーニグの格好の題材になってしまいそうです。できれば、機械で無作為に作成したいところです。

コマンドや製品を使ってパスワードを生成する方法

MacやLinuxにはパスワードを生成する便利なツールが結構あるので、ここでは紹介しません。しかし、Windowsとなると探すのに苦労しますので、いくつか分かっている方法を挙げておきます。

PowerShellを利用する方法

Windowsでpowershellを使用しランダムなパスワードを生成する(Hatena Blog)

Generate a random and complex passwords(Microsoft TechNet)

製品・サービスを利用する方法

以下の製品には、パスワード生成機能があります。

Kaspersky Password Manager

トレンドマイクロ パスワードマネージャー

Pythonで生成する方法

Pythonを使うなら、以下の簡単なプログラムで複雑なパスワードを生成できます。ただし、セキュリティ向けの強い乱数を生成できるsecretsモジュールを用いるので、Python3.6以上を利用してください。randomモジュールでも乱数を生成できますが、あくまでもシミュレーション向けの擬似乱数です。

import string
import secrets

def pass_gen(size=12):
  # 記号が必要な場合は末尾のコメント部分を適宜利用
  chars = string.ascii_uppercase + string.ascii_lowercase + string.digits \
          #+ '%&$#()'
  return ''.join(secrets.choice(chars) for x in range(size))

例えば、10文字のパスワードを生成する場合は、以下のように実行します。記号を含めたい場合は、サービスなどで許容されている記号を適宜charsに追加してください。

print(pass_gen(10))

今回は、話題のGoogle Colaboratory で実行してみます。Google Colaboratoryは、Jupyter NotebookのGoogle強化版です。すごいのが、GPUまで使えて無料です。本来は機械学習向きですが、ついでに使ってみました(そのままPython3.6が動きます)。

自分のマシンにインストールしてなくても、Googleアカウントでログインすればブラウザを使って実行できるので、かなり便利です。使い方は、以下のサイトがとてもわかりやすいです。

Google Colaboratoryを使えばブラウザ上でPythonの実行環境が簡単に手に入る(Hatena Blog)

データ分析や機械学習にバリバリ使える上にブラウザで使用できて環境構築不要のPython実行環境「Google Colaboratory」(Gigazine)

今後、製品やサービスごとに複雑なパスワードを設定する時に、是非参考にしてください。