#先に結論から
- パスワードはランダムに見える共通パスフレーズ+ランダムなサイト別文字列で作成する
- 共通パスフレーズは記憶する
- サイト別文字列は、ダミーの文字列とともにExcelなどにメモし、パスワードロックして保管する(保管先はクラウドストレージだとアクセスしやすい)
#解説
##共通パスフレーズの作り方
共通パスフレーズは、ある程度の長さの文章を選択します。
パスワードとして利用するのは、その文章の子音のみにするなどして、ランダムな文字列っぽくします。
そのままだと日本語の文字列だと推測される(何しろ日本語の子音は13文字ちょいしかない)ので、C,F,J,L,Q,V,X,A,E,I,O,U を適当に混ぜる。単語を英語に置き換え(いわゆるルー語)てパスフレーズを作成するのもよい。
なお、金銭の絡む重要なアカウントとそれ以外では別の共通パスフレーズにするとより安心です。
ここで作ったパスワードは、記憶します。
##サイト別文字列の作り方
ランダムな文字列を出力してくれるサイトでパスワードを作ります。
例えば、以下のサイト
https://www.graviness.com/temp/pw_creator/
ここで出力された文字列の表を、丸っとコピーして、Excelに貼り付けます。
A列にはウェブサービス名を記載します。
で、1サービス当たり10個のパスワードが用意されました。使うのはこれらのうちのどれか、と見せかけて一つ下のサービスの行の中から選ぶとか、n文字目だけを使うとか、縦読みとか、好きな方法でサイト別パスワードを作ります。
利用するサイトを追加するときはA列の下に追加していきます。
##サイト別文字列の保管
Excelで作った場合
- 名前を付けてファイルを保存
- 保存先を選ぶ
- 保存ボタンの横にある「ツール」をクリック
- 「全般オプション」を選択
- 読み取りパスワードを設定する
##この方法の利点
###ウェブサービスからの平文漏洩に強い
- 利用しているウェブサービスがパスワードを平文で保管しており、それが流出した場合、漏洩したパスワードはすべてランダムな文字列に見える。
- サイト別文字列はサイトの文字列などとは無関係のため、平文で漏洩しても共通部分とサイト別の部分を判別できない。
###保管しているパスワードリストの漏洩に強い
- 乱数表をどう使うかの選択肢が膨大なため攻撃に手間取る
- 記載しているパスワードだけでは乗っ取ることができない
###利便性が高い
- クラウドストレージに保管しておくとどこからでもアクセスできる
###ウェブサービスからの平文漏洩とパスワードリストの盗難が重なっても被害の拡大を抑えられる
- 共通パスワードとサイト別パスワードの分離が困難
- パスワードリストだけでは他サイトへの攻撃ができない
##パスワードを更新したいときはどうするか
ウェブサービスからの平文漏洩などでパスワードの更新が必要になる時があります。
その場合、サイト別文字列の乱数表を書き換えると他のサイト別文字列への影響が避けられないため、当該のサイト名をA列から削除し、新たにA列の下端に新たに追加します。
サイト別パスワードのExcelファイルに、ファイルを開いたら通知が飛んでくるようなマクロを仕込んだら漏洩検知もできていいなぁ、とか思っている。(開いた覚えがないのに通知が飛んで来たら漏洩している&突破されていることが分かる)
他には乱数表をマクロでクラウドからダウンロードしてくるようにすると何かの拍子に乱数表を書き換えるリスクも避けられてよいのかもしれない。その動作自体が攻撃者のセキュリティソフトに引っかかって開くのをためらわせるのなら最良。
・・・VBA使えないんですけどね、私。
まあとりあえず、WebAuthnの普及を推進していきましょう。