暫定 - 技術メモなど

今のところはRaspberry Piを使ったIoTが話題の中心です

パスワードの作り方

今、ネット上で話題となっていることがある。
宅ふぁいる便の個人情報漏えい事件である。

piyolog.hatenadiary.jp
www.fnn.jp

このような情報漏えい事件では、様々な反応が見られる。不服を唱える者、煽る者、揚げ足を取って悦に入る者、まったく意に介さない者。今回はネット上の反応は概ね、ログインパスワードが平文で保存されていたことに対する批判であるように見受けられる。その中でも特に、一つのパスワードを複数のサービスで使用していたユーザーからの批判は怒りの度合いが高いようだ。他のサービスでも同じID・パスワードを使用している以上、乗っ取りを避けるには、他のサービスのパスワードを全て変更する必要があるからだろう。
筆者の反応はというと、サービス利用者ではあるが、意に介さない、に近い。なぜかと言えば、パスワードが漏れたところでなんの問題もないからである。

一つのパスワードを複数のサイトで使用することの危険性は何年も前から指摘されている。しかし、一般的にパスワードを複数使い分けるのが至難の技であることもまた事実である。

宅ふぁいる便のサービスとしての問題を論うことも一つの「立派な意見」ではあると思うが、後ろを向き続けていてもしかたがない。このブログは少しでも誰かの役に立つことを願って始めたものである。今回のエントリーもそうであってほしいという思いを込め、今更ではあるが、複数のサイトで使える(と私が考える)「パスワードの作り方」を提示したいと思う。

1.サービスの重要度を考える

あなたが何かのインターネット上のサービスを使用したい、と思ったとする。最近ではアカウントを作らずに使用できるサービスはまず希で、サービス提供側もあの手この手でアカウントを作らせようとするものだ。
アカウントにはパスワードがつきものである。そして、このパスワードこそが曲者なのである。

パスワードを設定する前に、ちょっと考えてみてほしい。目の前のサービスは自分にとってどれくらいの重要度を持つか。仮にアカウントを乗っ取られた場合、このサービスは自分の生活を脅かすだろうか。
簡単な判断材料は金銭が絡むか絡まないか、である。
その判定基準で言えば、銀行や証券会社はSランクと言える。もちろん、乗っ取られた場合、どれだけ買い物されるかわからないような楽天やアマゾンもSランクだと思っていい。
直接金銭には絡まないものの、信用問題に発展しそうなメールやSNSはAランクくらいだろうか。
一方、乗っ取られてもさして生活を脅かしそうにないサービスの場合はB〜Dランクを設定する。宅ふぁいる便は筆者にとってはCランクに相当する。多少信用問題には関わるが、第三者にファイルを送信されても直接の被害はないし、ファイルを送信した通知が自分自身に届くので、気づく機会はあるからだ。
そして、目の前のサービスにランクをつけ終えたらS〜Aと、B〜Dを明確に分ける。真剣に考えなくてはならないのはランクA以上のサービスだ。B以下のサービスには使い回しのパスワードを設定しても構わない。私はこのルールを「しょうもないサービスにはしょうもないパスワード」と呼んでいる。それくらいの気楽さは必要だ。

2.真剣に考えるべきパスワードをどうするか

では、本気で守らなくてはならないAランク以上のパスワードをどう考え、また、複数のサイトでそれぞれ違うパスワードを設定するにはどうすればよいか。
まず、よいパスワードとは何か考えてみよう。思いつくのは以下の3つだ。

  1. いつでも思い出せること
  2. 他人には想像もできないこと
  3. サービスごとのパスワードであること

上記を満たすことは通常困難だ。だから人は一つのパスワードを使い回さなければならなくなるのだ。
更に、各サイトが定めるパスワードポリシー(数字、記号、アルファベットの大文字を含む必要がある等)を満たす必要もあるので、より困難さを増すことだろう。

2-1.言葉を考える

困難に立ち向かう為に、まずはパスワードのコアになる言葉を考えよう。
これは辞書から持ってきてもいいし、思いつくもので構わない。但し、すぐ思い出せること、複数であることが必要だ。また、複数の言葉が並んで意味を成すことも避けた方がいいだろう。
cuticle mumbai はいいが、 red square は避けた方がよいだろう。また、3語以上にすると複雑さが増してより強固になる。

2-2.言葉に数字や記号を付与する

コアとなる言葉を決めたら、次にこの言葉を加工しよう。簡単に言えば、単語の間に数字や記号を付与するのである。red square を例にして説明すると、

red1@square

とする。上の例では1@を付与した。
一応説明しておくと、ひと昔前では1語の英単語をパスワードとして用いる場合、lを1に、aを@、oを0に置き換えることが流行った時期がある。例えば password を p@ssw0rd と読み替えることを指すが、今ではまったくお勧めできないことを断っておく。攻撃者の総当たり辞書に予め登録されているからだ。

2-3.サービスごとの固有情報を付与する

サイトごとに違うパスワードを設定するにはここからが正念場だ。自分でルールを考える必要がある。
サイト、もしくはサービス提供者の情報をパスワードに組み込むのだ。簡単に思いつくのは最初と最後にサイトのURLの一部を付与する方法だ。例えば、 abc.def.com というサイトのサービスを使用するとする。この情報を2-2で決めたパスワードに組み込む。

ared1@squref

上記の例では、URLの情報をわかりやすく最初と最後に持ってきた。もちろん単語の途中に組み込んでもいいだろう。
これで最初よりも複雑性を増すことができる。しかも、サイトのURLを見れば、たちまちパスワードを復元することが可能だ。
但し、これではまだ弱い。この中に自分の思い出しやすい数字(例えば家の電話番号の一部でもよい)を更に加える。

0ared1@squref6

最近のサービスではパスワードは8〜16文字、数字・記号を含む必要があることが条件となっていることが多いが、上記であれば満たすことができるだろう。更に、アルファベットの大文字も含むことを求められる場合があるが、その場合、大文字にする文字を決めておけばよいだろう。

0aRed1@squRef6

上記の例では「Rは必ず大文字にする」というルールを適用している。
これで、2.他人には想像もできない 3.サービスごとのパスワードであるが、1.いつでも思い出せる、という3つの条件を満たし、かつ大抵のパスワードポリシーも満たすことができるだろう。このルールを発展させ、最初に決めた言葉を組み替えたり、記号を足したり、もっと複雑にすることもできる。

****

この先、ネット上のサービスはますます増加するだろう。そして、使用するサービスが増えるに従い、個人情報の漏えいはますます増えていくと思う。企業は情報の漏えいを前提にして、なるべく個人情報を持たないサービスを設計する必要が出てくるだろうが、サービスを受ける側にもできることがあるということを知ってほしい。漏えいを前提にして準備をしなくてはならない時代が来ている。かと言って、いつも気を張ってサービスを受けるなんてまっぴらごめんだ。
だからこそ「しょうもないサービスにはしょうもないパスワード」を。

・・・などと色々書いたが、面倒な人はパスワード管理ツールの使用を検討してほしい。年間数千円でサイトごとの強固なパスワード生成から管理までお任せできて、この面倒な問題を丸投げできるのだから安いものだと思う。
パスワード管理ツールを選ぶポイントを一つ挙げるならば、データをエクスポートできること、この一点である。選んだパスワード管理ツールに問題があった場合や改悪された場合、他所に引っ越しやすいことが重要となる。
しかし、パスワード管理ツールを使い始めるにあたっても、まずパスワードを設定する必要があり、言うまでもなくパスワード管理ツールはSランクのサービスだ。
本当に世知辛い世の中である。
その際にも本エントリーを参考にしてパスワードを決めて頂けると幸いである。