機密性が高く、使い回しじゃなくても忘れにくいパスワードのアイデア考えた
サービスの分だけパスワードを用意できるか
最近パスワードの使いまわしが原因で、LINEやFacebookの乗っ取りが話題になっており、以前にもましてネットセキュリティの管理が重要になって来ているように思う。
理想としてはwebサービスのアカウントごとに異なるパスワードを設定したいが、様々なサービスを利用している人間にとってサービスごとにパスワードを用意するのは大変なうえに、いちいち覚えてられないのではないだろうか。
推測されにくいパスワードとは
パソコン等を用いてパスワードを解析する方法をwikipediaで見てみると、次の3つに分けられるらしい。
- 類推攻撃
- 辞書攻撃
- 総当たり攻撃
簡単に説明すると、類推攻撃とは、氏名や誕生日、電話番号や住所など、ターゲットの個人情報から推測される語句を用いてパスワードを解析する方法。
辞書攻撃とは、その名の通り辞書に載っている言葉だけ、もしくは末尾に数字を足したようなものを中心に解析する方法らしい。
総当たり攻撃とは、文字列の組み合わせを全部試すという力技。解析にかかる時間は使用するコンピューターの性能によるとか。(参照:パスワードクラック - Wikipedia)
以上のことから、他人から攻撃を受けにくいパスワードとは、個人情報を含まず、辞書に載っているような単語を使わず、可能な限り長い英数字混合のパスワード、ということになる。しかもそれをwebサービスの数だけ用意しなきゃいけないんだから、そりゃみんな使い回しするわな。
「好きな英文」を意味不明化する
そこで今回提案するのが、好きな英文、ベル打ち暗号4桁、そしてサービス名を組みわせたパスワード。おいおい、いきなり辞書攻撃に引っかかりまくりの英文て、と思うかもしれないが、少しひねる。
たとえば、僕のはてなIDは「iwghasap」で、一見意味のなさそうな文字列だが、これは
I Wanna Go Home As Soon As Possible(早く家に帰りたい)
の単語の頭文字をつなげたものだ。この要領で、自分で気に入った英文の頭文字を拾っていけば、「意味があって意味がない」文字列が完成するわけだ。
ベル打ちで意味不明な4桁の数字を生成する
次に、ベル打ち暗号4桁について説明する。年配の方は昔ポケベルというものがあって、数字の組み合わせでひらがなと数字を作っていたのを覚えているだろうか?
ベル打ちの数字については説明するよりも、下の表を見ればわかりやすいだろう
例えば「やまもと」の場合、ベル打ちすると「81717545」となる。
このままだと本名を数字に打ちかえただけなので、個人情報丸出しといった感じがしないでもない。そこで、これを4桁程度の数字暗号にしてしまおう。やり方はいくつかあるが、シンプルな方法として「ピラミッド算」を使って桁数を減らしてみる。
ベル打ち+逆ピラミッド算で暗証番号生成
先ほど例で出した「やまもと」から、逆ピラミッド算を使って4桁の数字を生成してみよう。逆ピラミッド算の説明については下記を参照していただきたい。
私は実際この方式で、ある単語から生成した4桁の数字を暗証番号などに使っている。仮に数字を忘れてしまっても、短い単語から生成した数字ならその場で逆ピラミッド算で確認することも十分に可能だ。
最後にサービス名を付けて使い回し防止
ここまでで、「iwghasap5870」という「意味不明な文字列+意味不明な数字」のパスワードが生成できた。しかし、出来上がったパスワードは1種類なので、これを様々なWEBサービスに使いまわしては意味がない。
そこで最後にサービス名をパスワードの末尾に記載して、そのWEBサービス専用のパスワードにしてしまおう。
例えば、amazonのアカウント用パスワードであれば、末尾に「az」、EverNoteのアカウント用であれば「en」など、2文字程度の略語にして付加してしまえばいい。
先ほどの例であればamazonのパスワードは「iwghasap5870az」となり、個人情報も単語も使わずに適度に長く、しかも英数字を混ぜたパスワードを生成することができた。
あとは末尾のサービス名を自分の中で決めた法則性で略したものを付加すれば、破られにくく、使い回ししなくても忘れにくいパスワードになると思う。
これだって完璧じゃない
だがこれももちろん完璧ではなく、どこか1か所からでもパスワードが漏れてしまった場合、末尾のサービス名の略字の法則性に気づかれてしまい他のサービスでもパスワード攻撃を受ける可能性がある。英文字+数字+サービス略字の順番を入れ替えるなどして、さらにパスワード攻撃の危険性を下げる努力を各個人でしていく必要がある。