親のパスワード管理問題を解決する「パスワード用紙」を作った

背景:パスワードノートの課題
親世代のパスワード管理、どうしていますか?
パスワードマネージャーを勧めても「難しそう」と敬遠されたり、パスワードマネージャのパスワードに悩んだり。
結局パスワードノートに手書きで管理している方も多いのではないでしょうか。
パスワードノートには以下の課題があります:
- 複雑なパスワードを自分で考えるのが難しい: 結局「名前+誕生日」のような推測されやすいパスワードになりがち
- 手書きするときにミスする: 「l」と「1」、「O」と「0」などを書き間違えたり、読み間違えたり
パスワードノートは家に置いてあり、パスワードノートの盗難に遭う考慮は今回の対象外とします。
解決策:パスワード用紙
そこで作ったのが「パスワード用紙」です。
A4用紙にランダムな文字がグリッド状に印刷されており、必要な部分をハサミで切り取ってパスワードノートに貼り付けて使います。
特徴
- 各文字が四角で囲まれている - ハサミで切りやすい
- 誤読しやすい文字を除外 - l, 1, I, O, 0, o は含まれない
- 大文字・小文字・数字をバランスよく配置 - 40:40:20 の比率
使い方
- PDFを印刷する
- 必要な文字数分、連続した文字をハサミで切り取る
- パスワードノートに貼り付ける
例えば「8文字のパスワードが必要」なら、横に8マス分切り取るだけ。
また、4文字ずつ切っておき、16文字のパスワードをその中かから選ぶ、という使い方もできます。
技術的な話
ローカルで実行
Python 3.10以上とuvがあれば、以下のコマンドで実行できます:
uv run main.py
password_sheet.pdfが生成されます。
Webサービスとして公開
Vercelにデプロイしてあるので、以下のURLからすぐにPDFをダウンロードできます:
https://password-paper.vercel.app/
セキュリティについて
「ランダム性は大丈夫?」という疑問があるかもしれません。
このスクリプトではsecretsモジュールを使用しています。これはOSの暗号学的乱数生成器(/dev/urandomなど)を使用するため、パスワード生成に適した十分なランダム性があります。
また、PDFを生成するたびに異なる文字が出力されるため、同じ用紙を共有することはありません。
ソースコード
GitHubで公開しています:
まとめ
パスワード管理は難しい問題ですが、「紙に書く」という親世代に馴染みのある方法を少しだけ改善することで、セキュリティを高めることができます。
パスワード用紙が、パスワードノートを使っている方の助けになれば幸いです。
Discussion