空中の杜

旧名「空気を読まない中杜カズサ」。

記憶可能範囲でパスワードのセキュリティを高めるルール付加

部屋を整理していた勢いから、長い間混沌としていたパソコン内のデータの整理にも着手しています。特にメールは受け取りっぱなしだったりしていたので、不要なメルマガや広告は登録を解除しています。そのついでに、長い間昔のまま放置してあり、今となってはさすがにセキュリティ的に問題がありそうな各種パスワードも変更して回ることにします。大昔のパスワードとか5文字のとかあったりしたし。

しかしやってみると、Webサービスなどの利用数増加に伴ってその数が膨大になっていて、全部見て回るのがとても大変でした。特に私の場合ブログとそれに伴うWebサービスが大量にあるので、パスワード以前にここにログインするためにどのIDとパスワード使ったっけ? という状態でかなり苦労しました。忘れた時用のパスワード確認を求めたことも数知れず。

これは私だけではなく、Webサービスなどが増えている昨今、このように管理するIDやパスワードが膨大な数になっている人も多いことでしょう。そのような広がりに伴い、最近ではそれらが盗まれたり、不正にアクセスされる事件も発生しています。
しかしサーバへのハッキングなどで盗まれた場合は補償が効くこともありますが、自分のパソコンなどからの盗難の場合はそれが困難なことも予想されます。それをさせないためのパスワードという存在。にもかかわらずこの手の被害は後が絶えません。
その一因としては、パスワードに類推されやすいものを設定していた場合も多いようです。ちなみに最も危険性が高いとされる、ありふれたパスワードとされるものは以下の通り。
www.garbagenews.net

連番、よくある単語など。確かにこれらは危険で、パスワードの設定時でも避けるように警告されることが多いです。
とはいえ、特にネットにそこまでくわしくない人は、誕生日とか記念日、お気に入りの単語以外でどのようなパスワードを作ったらよいか迷いますよね。そんなこともふまえて、今日はネットその他における実用的、すなわち、セキュリティはそれなりに保ったまま、覚えやすい(記憶していられる)パスワードはどういうものがあるか、について考えてみたいと思います。
f:id:nakakzs:20171016171513p:plain

覚えていられないパスワードは、結局セキュリティを弱める可能性がある

さて前提。Googleが推奨するパスワードルール。

1 重要なアカウントにはすべて固有のパスワードを使用する
2 長いパスワードを使用する
3 文字、数字、記号を組み合わせたパスワードを使用する
4 自分だけが知っている語句を使うようにする
5 パスワードの回復方法を最新で安全な状態にする
6 パスワードの覚え書きは簡単に見つからない秘密の場所に保管する
7 Google アカウントのセキュリティレベルを高める(2段階認証)

 ■パスワード – 知っておきたいこと – Google

ここに書かれていることはもっともで、Google以外でもこれに従うことがパスワードのセキュリティを高めることに繋がると思います。

とはいえ、この通りに行けば理想ですが、現実的にはそううまくはいきません。というのは、人間は総じて「忘れる」動物なので。特にパスワードが長くなれば、また意味のない文字列になればそれだけ記憶の結びつきから外れてしまうことになります。

たしかにパスワードを忘れたときも、ほとんどのサービスには回復方法が備え付けられていますが、実はここがあまりこのテのパスワードセキュリティで言われていないネック。というのはそのようなパスワード回復方法には単純な認証より手間がかかります。よってそれを何度も繰り返すようになるとパスワードをメモってしまい、結果それが他の人に見られるというパスワードの意味をなさないセキュリティホールになる可能性があるからです。代表的なのが、オフィスにおける付箋に書いてあるパスワードですね。ほかにもたまに変更できないけど意味のない文字列パスワードが発行されることがありますが、それを何カ所にもコピーしてしまった経験がある人もいるでしょう。そうすると、結局はそのメモでセキュリティホールを自分から広げているようなものなのですよね。

結局のところ、セキュリティ意識をめんどくささが上回ってしまうケースというのは非常によくあると思われます。故に覚えていられるものではないとかえってセキュリティを下げてしまいかねない、というのが私の思うところです。それをふまえて、覚えやすく、且つセキュリティが保ちやすいものは何があるかを考えてみることにします。

単一の文字列をパスワードとするのではなくそれを「ルール」によって動かす

さて、パスワードといえばその種類を増やすために、いくつもの単語を、しかも他人には類推しにくい形で、且つ覚えていられるものを増やすのはけっこう頭を使うと思います。しかしここは記憶する単語を増やすのではなく、自分の中でその単語を動かす「ルール」を定め、それを念頭に置くことでその単語を応用する形ではどうかと。自分が思いつく方法で考えたその一例を以下に書いてゆきます

絶対に覚えていられる単語を2つ決める

タイトル通り、とにかく覚えていられる単語を2つ用意します。
ここではとりあえず

ikaruga
darius

としておきます。ここではあえてシューティングゲームの名前を出しましたが、本当は自分だけにわかって、他の人には全く類推されないもののほうが好ましいかもしれません。が、ここではあくまで自分が覚えていられるものを最優先としてください。ちなみにアニメ嫁のように思いつくものが複数あると、それが時期によって脳内でこんがらがることもあるので注意(そういえば誰か昔ネットで、アニメ嫁の名前をパスワードにすると、3ヶ月ごとに変わるからセキュリティが高まるってこと言ってたなあ)。

文字数はそれぞれ8文字以下くらいのほうがいいかなと。先にネタバレしますが、これらをくっつけて使うので、あまり長いと上限を超すことがあるので(そうじゃなくても超すことがありますが、それはあとで対処します)。

ちなみに現代のZIPなどのパスワード解読においては全通り検索するのでははなく、あらかじめありそうな単語、というか英単語全般がすでにリストになっていて、そこから調べて検索時間を短縮する、というものがあります。故に辞書に載ってるような英単語をそのまま使うのはあまり好ましくないとされているようですので、辞書にない固有名詞、もしくは自分としてはやぼったく見えても日本語ローマ字打ちなどの方がよいかと思います(ただしtsuとtuをまちがえないように)。故に今回は辞書に載ってそうな「GRADIUS」「Rayforce(Ray+Force)」とか外したわけで。

任意の数字を一つ決める

文字通り、任意の数字をひとつ決めます。別に一番好きな数字でもなんでもかまいません。とりあえず

9

とします。

任意の記号を一つ決める

これも数字と同じく。認証可能な半角記号の中から一つ。まあ受け付けてもらえないものもあるので、_-@#あたりから選ぶのが無難かなと。とりあえず

-

と決めておきます。


さて、これらで決めた単語ふたつ「ikaruga」「darius」、数字「9」、記号「-」。この4つはわざわざ単純なものにしたのでしっかり覚えておいてください。うまくいけば文字通り一生使えるレベルですので(まあもちろん変えてししょうがなければそれだけセキュリティが高まりますけど)

じゃ、応用編。

決めた「ルール」に従い、単語や数字をつっくけよう。

すでにお察しの方もいらっしゃるかも思いますが、先の二つの単語をつっくけたらそれだけで長い、しかもそれ単体としては単語ではなく類推されにくいパスワードになります。上の例で言えば

ikarugadarius

ですね。もちろん

dariusikaruga

でもOK。これで13文字の、しかも覚えやすいパスワード。さらに定期的に前後を入れ替えるだけでも、覚えやすさを保ったまま十分セキュリティがアップします。

そしてこれに数字を加えることで、さらに解読が難しくなります。これは自分の中でセキュリティを高めるだけではなく、Webサービス、とりわけ金融機関などでは数字交じりじゃないとパスワードとして登録できないことも多くなっているからですね。

しかしここでちょっと問題となるのが、数字を加える場所。いい加減なところに入れると忘れてしまい、意味をなさないことになります。故に入れる場所も自分の中でどこか決めておくとよいでしょう。まあ今回は簡単に「数字は一番末尾」と自分ルールを定め、

ikarugadarius9

とします。記憶(短期的ではなく、10年くらいは覚えていられるという意味で)に自信があるなら「前から○番目が数字」とルールを定めてもいいです。ただし、単語の切れ目はおすすめしません。

そして記号。これも数字と同じく課すところが増えているのですが、ここで問題が。たまに記号をパスワードとして認めてくれないところがあるのですよね。それなのに逆に記号必須のところもあるとかもうねという感じがしますが。よって記号は基本は使う場合、使わない場合を両方想定しておく必要があります。とはいっても、数字と同じように自分ルールを定めておき、今回は「記号は一番前」として

-ikarugadarius9

と置く場所を決めておいて、もし認証ではじかれたら「ikarugadarius9」にしておけばいいかと。記憶力に自信のある人なら記号の代わりの置き換え数字を用意して(たとえば「-」→「8」)、記号が認められないときは「8ikarugadarius9」とすればよいかと。

ずらしてみよう

さて、これだけで相当なパスワードになったとは思いますが、記憶に残せる範疇でさらに堅牢にすることが出来ます。それは「ずらす」。

それはどういうことかというと、一番最初のふたつの単語だけを組み合わせたとき、単語同士を入れ替えて「ikarugadarius」を「dariusikaruga」を「入れ替え」ましたね。上のように「-ikarugadarius9」となった状態でも「-dariusikaruga9」と出来ます。その他記憶が許せば記号や数字を加えたりとか、他の入れ替えパターンを使って複数の組み合わせを作ることが出来るでしょう。

そして「ずらし」。すなわち文字をルールに沿って○文字アルファベット順、もしくは前後にずらしてみるわけです。「ikarugadarius」をアルファベットで1文字ずつ次に、すなわちiをjに、kをlにとずらすなら

jlbsvhbebsjvt

と、全く類推が出来ないものになります。そして前に3文字スライドさせると

arugadariusik

と、こっちも意味がわかりにくいものになるわけです。ただし、これ(特にアルファベットずらし)は単語としては記憶は非常にしにくく、いちいち単語を確認しながらキーボードを打つことになりそうなので、堅牢なパスが必要じゃない限りはそこまでは、という感じがします。後者はしょっちゅうパスワードを変える必要があった場合は、わりと使えるかもしれませんね。


ともあれ、このように単語をルールに従って操作して、文字列の種類をいくつも作り出すことは可能、ということが可能なわけです。ルールを何種類か用意しておき、万一一つが暴かれた時にも全体に被害が及ばないようにリスクを分散するとなおよいでしょう。

暗証番号でのずらしの応用

実はこのずらす方法、英数字のパスワードよりも本領を発揮するところがあります。それは数字4桁の暗証番号。

こちらも誕生日や連番の簡単な数字で類推されてしまうケースがありますが、かといって関連づけのないものを暗証番号にしてもすぐに忘れてしまいます。しかしこれの応用で、数字として覚えておくものはひとつでも、いくつものパターンが生み出せます。

たとえば「2012」にしても、
反転」というルールなら「2102」、
ずらず」なら「1220」や「0122」そして「3123」
といったように、軸は同じでも多数のものが出来ます。よく覚えている「任意の数字」だけでは不安な人はこのような自分のルールを付け加えてはいかがかと。ただ暗証番号は3回間違えるとロックがかかるので、より忘れないように注意。

文字数制限が少ない場合の対処

しかし、これですべてのパスワード使用場面で有効ということになればいいのですが、そうはいきません。前述のように記号を認めてくれないところもあります。それだけならまだいいのですが、やっかいなのが文字数制限。多くのサイトでは16文字くらいまでは認めてくれるので、最初に決めたように7文字+6文字の組み合わせてよいのですが、場所によっては11文字以下、ひどいところだと6文字までというものまであります。

そういうときはどうするか。一つの手段として、決めているパスワードの何文字目からから任意の文字数を切り取るという方法があります。すなわち11文字制限なら「ikarugadarius」を「ikarugadari」。後ろから「arugadarius」など。もちろん真ん中で「karugadariu」としてもよいでしょう。ただ、そのサイトに文字数制限があるということ自体は面倒ですがパスワード管理ソフトなどに目印をつけないといけないかもしれません。

まあちょっと愚痴を言えば、ネットの世界におけるこのようなパスワードのルール、例えば文字数とかがばらばらなんですよね。いや、文字数が伸びるとか数字必須とかならまだいいのですけど、いまだに6文字が限度とかだとどうしろと感がかなりあります。そのへん是正してもらいたいところです。


覚えること、もう一度

さて、こんな感じでパスワードのことについて書いて来ました。基本的に覚えることは

自分にわかりやすい単語×2、数字、記号
・それらに数字、記号をくっつけるルール(複数覚えて使い分けるとなおよし)
・(さらに堅牢にするなら)ずらすルール

といったものだけです。まあ一番上だけ覚えれば、くっつけるルールは何度かリトライすれば思い出せることもあるかなと。

最近ではスマホアプリなどで、IDやパスワードを管理するアプリなども出てきてますので、そちらに頼る人も多いでしょうが。ただしこれも危険がないというわけではなく、逆に言うとそれを突破(主たる場合技術的よりも推測される暗証番号を打ち込まれるなどソーシャル的な方向で)されてしまうと、一気にあらゆるIDやパスワードが盗まれてしまう恐れがあり、これだけに依存は危険と思われます。
故にそういったところのパスワード欄にも、上の応用でパスワードをそのまま書かずに単語や数字をバラバラに書いておいて、あとで自分で決めたルールを適用するだけでも、一定のセキュリティは保たれると思います。


単語だけではなく、法則(ルール)を覚えることでの記憶

いろいろ書いてきましたが、別にこの通りやる必要はなく、あくまで参考です。肝心なのは、ひとつの単語をもとにしても、簡単なルールを付け加えてゆくことで、パスワードとしてかなり堅牢な文字列になるのだというのだよということを証明したかったのでこのようなことをやってみました。あまりにも意味のない「単語の暗記」よりは「ルールの記憶」のほうがよほど頭に残ると思いますので。
別に上で書いて来た方法は一例で、このようなルールを作って、それを並び替えなどで応用するような方法はいくらでも思いつくでしょう。それこそもっと覚えやすかったり、難解になる方法で(それも個人個人で違うと思いますが)。自分の中でそういった独自のルールも作って、パスワードを考えてみてはいかがかと。


総じてこのようなパスワード管理の目的というのは、実は「絶対に解かれないこと」ではなく、「解くのを非常に難しくする」ことだと思います。セキュリティに完全なものというのは存在しません。どんな堅牢なセキュリティもいつかは破られたり、暗号も時間をかければ解かれてしまうようにパスワードも時間や工数をかければほぼ絶対的にどんなものでも解かれます。ただ、その時間や工数に手間がかかるようになれば、盗んだ人もわりにあわないとあきらめざるを絵無い状況になることが多いでしょう。そして「難しくする」という作業は、このようなちょっとした工夫次第で、単純な英単語をパスワードとするより、覚えやすさを保ったまま作ることが出来るのです、ということで。

とはいっても、このパスワードや単語ルール自体をデスクトップに付箋で貼り付けたり、簡単に見られるようなところに置いておくと全く意味がなくなるのですけどね。結局こういうものはシステムなどより、個人個人の違式によるものなのでしょう(ハッキングも大半は技術的なものより、人の伝聞などから漏れ出すソーシャルハッキングだって言いますしね)。ま、パスワードを安易に晒すな、ということだけは意識しておく必要は、読まれた方はもちろんのこと、同じ職場とかでそうしている方に注意する必要はあるでしょうね。そのセキュリティホールから自分のセキュリティホールにも繋がりかねないので。