最近パスワードがバレて乗っ取られが周囲で流行っています。
注意喚起されるのは、
- 長いパスワードにしなさい
- 別サービスで同じパスワードを使いまわしちゃダメ
- パスワードは紙に書いたりしない
わかってるけど、長いパスワードたくさん覚えられーよ(●`ε´●)という方多いと思います。
そんな方のためのパスワード管理術を書きたいと思います。
#傾向性がバレるので本当は公でわざわざ晒したくはないのですが・・・
まずはパスワードに対する攻撃を知る
代表的な攻撃方法を知っておきましょう。通信経路盗聴系は個人では対策がなかなか厳しいパターンが多いのでここではとりあえず書かないことにします。
1. ブルートフォースアタック
いわゆる総当りです。
最近話題の数字4桁パスワードなんて総当りしても10,000通り。昨今のコンピューターの性能からしたら一瞬で試せますね。
ただ、さすがに連続攻撃は怪しすぎるので機械的に検知されることがほとんどです。銀行とか連続して失敗するとロックされますよね。
対策は組み合わせ数を増やすことです。
- できるだけパスワードを長くする
- 使う文字種を増やす(アルファベット、数字、記号を織り交ぜる)
2. 辞書攻撃
いくらパスワードが長くても英単語などを組み合わせると総当りせずとも推測が容易になります。
英単語に限定することで組み合わせ数はかなり減らすことができます。
対策は単語を使わないことです。ただし覚えられなくなること確実なので妥協します。人間だもの。
- 単語の一部をもじる(例:fujitsu -> fuji2)
- 間引く (例:fujitsu -> fj2)
- 組み合わせる(例: tako と ika を組み合わせて tiakkao)
3. リスト攻撃
これです、最近多いの。パスワードを使いまわしているので一箇所でバレると芋づる式にバレてしまうのです。
対策はもちろん「同じパスワードを使わない」です。が、冒頭に述べたとおり「覚えられねーよ」。
で、どうするか
本題です。やっぱ記憶容量に限界のある人間なので、
- ある程度覚えられるものにする
- メモる
というのがどうしても必要になってきます。
ということで、パスワードを4つの要素に分けて考えましょう。
- ベースパスワード
- ソルト
- ソルトを混ぜる方法
- ソルトを混ぜるキー
1. ベースパスワード
これは辞書攻撃対策を入れたある程度長い(6文字以上くらいを推奨)文字列で覚えられるものにします。
現実的には単語もじりとかが多くなるんじゃないかと思います。
サイトによって、英数しか使えない、大文字小文字を織り交ぜないとダメ、と制約があるので2,3パターン用意しておきます。
これだけは紙などに書かずに覚えましょう。
2. ソルト:サービスごとにコードネームを割り振る
コード | サービス名 |
---|---|
0001 | |
0002 |
こんな相対表を作りましょう。別に数字に限定しなくても、
コード | サービス名 |
---|---|
kao | |
tori |
など覚えられるものでもいいでしょう。
これは覚えられないなら紙に書いてもいいことにしましょう。
3.混ぜる方法
ベースパスワードとソルトを組み合わせます。
最も単純な方法は連結です。
ベース | ソルト | 組み合わせた結果 |
---|---|---|
hoge | kao | hogekao |
しかしあまりに芸がないのでもう少し工夫をしたほうがいいでしょう。
例えばソルトをシーザー暗号を使って連結するとか。
この混ぜる方法は暗算できる範囲の複雑さのもので覚えましょう。
絶対スマホ持ってる前提なら変換関数を決めてもいいです。(ソルトを二進数化してXORでマスクするとか)
4.混ぜるキー
前述通りシーザー暗号を使って連結するとしましょう。
混ぜるキーは後ろにずらす文字数がキーになります。
ベース | ソルト | キー | 組み合わせた結果 |
---|---|---|---|
hoge | kao | 2 | hogemcq |
これは忘れると思うのでメモりましょう。
ということで
ある程度メモに頼るとして、
サービス | ソルト | キー | ベースパスワードパターン |
---|---|---|---|
kao | 2 | Aパターン | |
tori | 5 | Aパターン | |
ggg | 4 | Bパターン |
こんなメモなら漏れてもまぁまぁという感じではないでしょうか。
もちろん覚えられることは覚えたほうが安全になりますが、パスワードを忘れるリスクもなかなかなもの(必要なときに使えなくなる)なのでバランス的にこんなもんかなというところです。