ダメだとわかっていても脆弱なパスワードを使ってしまいがち・・・

オンラインサービスのアカウントを保護するのは、主にパスワードです。そして、一番脆弱なのはアカウントのパスワードといってもよいでしょう。
いろんなサービスがあるので、よくないとわかっていても共通のパスワードを使っていまっているケースは多いでしょう。それと覚えやすくするために、シンプルなパスワードにしている例もまだまだ多いでしょう。

ダメだとわかb5f382a9377ea9998fc6a0d22cdccdf6_sっていても・・・以下のような脆弱なパスワードを設定してしまっているという方は少なくないと思います。

  • 短い文字数
  • シンプルな文字列
  • 複数サービスで共通

こうした脆弱なパスワードでは、総当り(ブルートフォース)攻撃や辞書攻撃に弱く、クラッカーにアカウントが乗っ取られてしまうリスクが大きくなってしまいます。さらに、1つのサービスのアカウントが乗っ取られてしまうと、芋づる式で他のサービスのアカウントも乗っ取られてしまい、被害が広がってしまうリスクも大きいです。

※直近では、スター・ウォーズの最新作の公開があったので「starwars」っていうパスワードが多いらしいですね(笑)。

 

安全なパスワードにするには

安全なパスワードにするには、脆弱なパスワードの逆を考えればよいです。

  • 文字数を多くする
  • 文字列を複雑にする
  • サービスごとにパスワードを変える

でも、安全なパスワードは大きなデメリットがあります。それは、「覚えにくい」ということです。サービスによっては、アカウント作成時にパスワードをユーザが指定するのではなく、デフォルトのパスワードが決められていることがあります。そうしたデフォルトのパスワードは、ランダムな文字列であることが多く、簡単に推測される心配はほとんどないです。でも、いざ、パスワードを入力しようとするとき、何も見ずに入力するのは難しいでしょう。

覚えやすい安全なパスワードの作り方

覚えやすくて、なおかつ、クラッカーに推測されにくいパスワードでアカウントを保護することがとても重要です。覚えやすくて安全なパスワードの作り方は、以下の3つがポイントです。

  1. 自分が好きな文章をベースにする
  2. 英単語の一部を数字や記号に置き換える
  3. サービスを区別する接頭文字または接尾文字を付加する

【1.自分が好きな文章をベースにする】

パスワードのベースは、自分の好きな文章にすることが一番のポイントです。自分の好きな文章なら忘れることはないでしょう。また、縁もゆかりもない第三者からは推測することはとても困難です。

※親しい人ならあなたの好きな文章を推測することはできるかもしれませんが、親しい人があなたのアカウントをハッキングするようなケースは考えたくないですね・・・

たとえば、「I_like_reading_books」のような文章にします。文章にするとパスワードの文字数が多くなっていて、なおかつ好きな文章なので忘れません。

【2.英単語の大文字・小文字、数字、記号を組み合わせる】

そして、アルファベットだけでなく記号や数字を使うためにアルファベットを記号や数字に置き換えます。よくあるのが、

a → @
e → 3
i → 1
s → $
y → \
z → 2

などです。
あと、前置詞の置き換えも効果的です。

at → @
to → 2
for → 4

以上のような置き換えのルールをたくさん使ってもいいのですが、使い過ぎると忘れてしまうかもしれないので、2つか3つぐらいでよいでしょう。

例として、aとiを以下のように記号と数字に置き換えるものとします。

a → @
i → 1

すると、パスワードは「I_l1ke_re@d1ng_books」のようになります。このように作成したパスワードは、他人が推測することはまず不可能です。ベースの好きな文章は、親しい人は別として推測できないでしょう。そして、置き換えルール自体はよく使われているものですが、そのうちのどれを選択しているかは第三者からはまずわかりません。
また、辞書攻撃でも破られる可能性がほとんどなくなります。単語の一部が記号や数字に置き換わっているからです。総当り攻撃では、天文学的な時間が必要なはずです。

【3.サービスを区別する接頭文字または接尾文字を付加する】

そして、いろんなサービスでパスワードを異なる文字列にするべきです。そのために、自分なりのルールでサービスを識別する文字列を接頭文字または接尾文字として追加すればよいでしょう。
たとえば、Amazonなら「AMA-」、Googleなら「GOO-」をという接頭文字を付加するものとします。

Amazon用のパスワード「AMA-I_l1ke_re@d1ng_books」
Google用のパスワード「GOO-I_l1ke_re@d1ng_books」

サービスを識別する文字列も前述の置き換えルールで置き換えておくとよりセキュアなパスワードになるでしょう。

【まとめ】

以上の覚えやすくて推測されにくい安全なパスワードについてまとめると、以下のようになります。

  • 自分だけがわかる文章をベースにする
  • 自分だけがわかるアルファベットと記号、数字の変換ルールを考える
  • 自分だけがわかるサービスの識別情報を考える

覚えておくのは、この3点だけでOKです。

自分の好きな文章はとくに意識しなくても覚えているでしょう。アルファベットの記号、数字の変換ルールも2つか3つぐらいだったら覚えるのは容易いでしょう。
サービスの識別情報は、数が多くなりがちなのですべて記憶するのは難しいかもしれません。サービスの識別情報も頭のなかに覚えておくのが理想ですが、どこかにメモをしていても特に問題はないでしょう。

【デメリット】

デメリットもあります。考えられるデメリットは、以下の2点です。

  1. 入力しにくい
  2. サービスによってはルール通りのパスワード設定ができない

パスワードが長くなり、アルファベットだけではなく数字や記号もあるので、入力しにくくなります。これは仕方ないです。セキュリティと利便性は相反するもので、セキュリティをがちがちにすると利便性は落ちてしまうものです。アカウントを保護するために必要なコストと割り切って、がんばって入力しましょう。将来的にはパスワードに頼らないユーザ認証がもっと普及することが理想です。

そして、サービスによってはルール通りのパスワードの設定ができないというのが、大きなデメリットです。パスワードの設定文字数の上限が決められていたり、使える文字列がアルファベットと数字しかないような場合があります。
個人的にはパスワードの設定で8文字しか設定できないとか、文字列を限定しているようなサービスは使いたくないです。しかし、必要不可欠なサービスであればルールに外れた例外としか管理するしかありません。