総務省がパスワードの定期的な変更は不要であると方針転換したことが話題になっています。
いま話題になっている「パスワードは頻繁に変えるな」の総務省のページです。やはり一次資料がわかり易いです。
設定と管理のあり方|IDとパスワード|どんな危険があるの?|基礎知識|国民のための情報セキュリティサイト https://t.co/qDD9GnXPBx
— ガンマソフト株式会社 (@gammasoft_jp) March 28, 2018
むしろ、使い回しが危険であり、機器やサービスごとに固有のパスワードを設定することが求められます。つまり、複雑なパスワードを最初だけ設定することになります。
では、複雑なパスワードはどうやって作成するのでしょうか。
自分でランダムに文字を組み合わせることもできますが、人によってはパターン化しやすく、ディープラーニグの格好の題材になってしまいそうです。できれば、機械で無作為に作成したいです。
そんな時は、Pythonでパスワードを生成しましょう。数行のコードで簡単に生成できます。今後、製品やサービスごとに複雑なパスワードを設定する時に、是非参考にしてください。
Pythonでパスワードを生成する方法
Pythonなら以下の簡単なコードで複雑なパスワードを生成できます。ただし、セキュリティ向けの強い乱数を生成できるsecretsモジュールを用いるので、Python3.6
以上を利用してください。randomモジュールでも乱数を生成できますが、あくまでもシミュレーション向けの擬似乱数です。
# pass_gen.py
import string
import secrets
def pass_gen(size=12):
chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
# 記号を含める場合
# chars += '%&$#()'
return ''.join(secrets.choice(chars) for x in range(size))
print(pass_gen(10))
例えば、10文字のパスワードを生成する場合は、pass_gen(10)
のように呼び出します。記号を含めたい場合は、適宜chars
変数に記号を追加してください。
Google Colaboratory で実行してみる
今回は、話題のGoogle Colaboratory で実行してみます。Google Colaboratoryは、Jupyter NotebookのGoogle強化版です。すごいのが、GPUまで使えて無料です。本来は機械学習向きですが、ついでに使ってみました(そのままPython3.6が動きます)。
自分のマシンにインストールしてなくても、Googleアカウントでログインすればブラウザを使って実行できるので、かなり便利です。使い方は、以下のページを参考にしてください。
参考:コマンドや製品を使ってパスワードを生成する方法
MacやLinuxにはパスワードを生成する便利なツールが結構あるので、それらを利用することもできます。しかし、Windowsとなると探すのに苦労しますので、いくつか分かっている方法を参考までに挙げておきます。
PowerShellを利用する方法
Windowsでpowershellを使用しランダムなパスワードを生成する(Hatena Blog)
Generate a random and complex passwords(Microsoft TechNet)
製品・サービスを利用する方法
以下の製品には、パスワード生成機能があります。