4桁のパスワード特に考えもせず、誕生日を使っていないでしょうか?
はっきり言うと、6桁くらいのパスワードを解くというのは、プログラミングをかじったことのある方なら簡単なんです。
今回は、エンジニアとして働く僕が、パスワードクラックの方法の紹介とパスワードクラックから身を守る方法についてご紹介していきます。
数字だけのパスワードは超危険
パスワードと聞いて、どのようなものを思い浮かべるだろうでしょうか。
お金を下ろすときに使うやつですか?
アカウントにログインするために入力するやつですか?
どれも正解です。
今回取り上げたいとのはその中でも数字を使ったもの「0000」とは「123456」というパスワードたちです。
こういった数字のパスワードはかなり危険というお話になります。
4桁や6桁の数字のパスワードは非常に容易にハッキングできてしまうのです。
ハッキングいうよりクラッキングに近いかもしれないです。
クラッキングとハッキングの違いは、クラッキングは方法だけ知っていれば誰でもできるパソコン関係の悪いこと。
ハッキングは難しいパソコン知識を使ってより良いパソコン開発を実施することを言います。
ハッキングは悪いことという印象も強いかもしれないですが、ハッキングは悪いものではなくセキリュティを高めたりするものなのです。
悪いのは悪い人間がパソコンの知識を悪用して使うクラッキングと呼ばれるものです。
話を戻して、なぜ数字だけのパスワードが危険かというと。
数字を一桁ずつ見ていくとわかります。
例として「0000」について考えてみましょう。最初の1桁目は必ず0~9のいずれかの数字になります。
2桁目も同じく0~9、3桁目も4桁目も同じく0~9です。
ということはその組み合わせは10×10×10×10で答えは、
10000通りです。
10000通りもあればわかりっこないという印象も持つかもしれないですが、パソコンにとって10000通りなんて屁でもないのです。
実際僕が数十分ほどで作ったプログラムでは2秒もかからずにパスワードを見つけることができました。
パソコンは1秒で大体、軽く10億回以上の動くことができるのです。
10000通りなんてちょろいということがわかっていただけましたでしょうか。
さらに、容易にパスワードがわかってしまうという証明を次の実践編でお話ししましょう。
4桁や6桁ほどの数字のパスワードがどれほど弱いパスワードであるかがわかっていただけると思います。
パスワードの暴き方(クラッキング方法の紹介)
僕が実際に作った6桁以下の数字パスワードを暴くプログラミングについてご説明していきます。
ソースコード(コピペすればすぐに使えるプログラム)については悪用を防ぐために載せないのでご了承ください。
あくまでコンセプト、プログラムの書き方を少しでも知っている方ならこのコンセプトを聞くだけでプログラムが書けるかと思います。
僕が作ったプログラムは実に簡単な仕組みで、ブルートフォース攻撃、総当たり攻撃と呼ばれる手法で作りました。
よくわからない単語が出てきたぞ!?
大丈夫です。ちゃんとわかりやすいように説明させてください
ブルートフォース攻撃といういかにもカッコ良い名前がついてはいますが、要するに1~999999まで試してみようぜ!という手法です。
めちゃめちゃ地味ですが、これでほぼ100%の確率でパスワードを暴くことができるのです。
もっとわかりやすいイメージだと、数字付きの南京錠を「001」、「002」「003」という順番で全部試していく感じです。
人間の手だと非常に大変そうですが、パソコンだと6桁くらい軽いものです。
僕のプログラムだと2秒でパスワードの特定ができました。
僕のプログラムは至ってシンプルで、ループを6個重ねて一つ一つ試すだけです。
文字通り「0~999999」まで試します。
ループを6個も重ねるのは正直美しいプログラムではないので、プログラム初心者の方にはおすすめしません。
もっといい方法が思いつく方はコメントや僕にDMしていただけると嬉しいです。
もっと詳しいなんならコードも欲しいという方もコメントツイッターDMでソースコード公開も行います!
ちなみに言語はpythonで書いてます。
最近の僕の中での流行りです。
プログラムの様子を少しだけ公開するとこんな感じです。
最初のところで「948934」とパスワードを指定します。答えですね。
それでプログラムを回すと、最終的にプログラムが出した解答が出てきます。
照らし合わせると合っています。
ほんの10数分程度でできるプログラムでも十分パスワードのクラッキングはできてしまうのです。
ただし、これは数字かつ6桁くらいに限ります。
なぜかというと、、とそれは次の章で身を守る術と共にお話することにしましょう。
パスワードクラックから身を守るための術
ブルートフォース攻撃を使ったパスワードクラックいかがでしたでしょうか。
少しでも数字のパスワードというのはセキリュティ低いんだなとわかっていただけたら幸いです。
ではここからはそんな数字という低いセキリティでも身を守れるというお話をしていきます。
最初から気になっていた方もいるかもしれませんが、僕はずっと、「数字の」だったり「6桁くらい」と強調してきました。
ここにブルートフォース攻撃から身を守る秘密が隠されていたんです。
ブルートフォース攻撃は簡単にまとめると全てのパスワードに想定される値を試して行く手法です。
確かに4桁や6桁くらいのパスワードなら2秒くらいで破ることができますが、それが8桁以上になると難易度が跳ね上がるんです。
さらに数字でなく、アルファベットまで含むと0~9でよかったものがa~zと0~9になりこれまたとんでも無い量の組み合わせが存在するようになるのです。
流石のパソコンもここまで大きな組み合わせの数になると非常に時間を食ってしまうのです。
なので、ブルートフォース攻撃を防ぐ方法の一つは、パスワードの桁数を増やす、パスワードにアルファベットを混ぜるというものになります。
しかし、実はこれだけだと不十分なのです。
確かにアルファベットや桁数を増やせばパソコンも計算が大変になります。
とは言え時間をかければ解くことができるのです。
1日は掛からずにあなたの折角考えたパスワードも明らかになってしまいます。
困りましたね。え?困っていない?そうです。
これまた対策方法があるんです。
それはズバリ、「挑戦回数を絞ること」です。
iPhoneなどのパスワードで何度か間違えるとしばらく入力できなくなる機能があります。
これが「挑戦回数を絞る」例になります。
挑戦回数が絞られると流石のブルートフォース攻撃も意味をなしません。
何度も挑戦できるからこそ全ての組み合わせを試してパスワードを当てる手法だからです。
よかったですね。これ以上の対策方法はないレベルです。
ですが、「挑戦回数を絞る」と言ってもシステム側が対応していなければユーザー側、僕達側からはどうしようもないのが問題点です。
ですので、このような「挑戦回数を絞る」という対策を講じていないシステムは基本的に使わないのがいいです。
どうしてもそのようなシステムを使う場合には、他で使っていないようなパスワードを使い捨て感覚で使用すると良いでしょう。
以上、二つの対策方法によってブルートフォース攻撃からあなたの身を守ることができます。
1. アルファベットを含んだパスワードを使う
2. 挑戦回数が絞られているシステムを使う
この二点のみで十分ブルートフォース攻撃から身を守ることができるのです。
進化し続けるクラッキング方法
前章でブルートフォースアタックから身を守る方法について紹介しました。
ここからは、ブルートフォース攻撃以外のパスワードクラック方法の紹介と脅威についてお話し、少しでもパスワード強化に努めていただければと思います。
辞書攻撃
一つ目は、辞書攻撃と呼ばれるものです。
辞書攻撃とは、別のシステムで手に入れたIDとパスワードの組み合わせを使って、ログインを試す手法です。
例えば、楽天で手に入れたアカウント情報を使って、Amazonに不正にログインする。
みたいな形です。
ただし、楽天からアカウント情報を抜き取ること自体非常にハードルの高い行為です。
この辞書攻撃が有効なのは「アカウントIDとパスワードを複数のシステムで使いまわしているユーザー」にです。
ドキッとした方も多いのではないですか?
ハッキングの狙いがわかっていますので、対策としても至ってシンプルになります。
システムそれぞれに別々のアカウントIDとパスワードを振り分けることです。
パスワードを複数使うと忘れてしまう。
複数も考えるのが面倒臭い。という心理に漬け込んだ手法が辞書攻撃です。
ちょっと違うだけでもいいので同じパスワードとIDを複数のシステムで使い回すのはやめましょう。
リバースブルートフォース攻撃
二つ目は、リバースブルートフォース攻撃と呼ばれるものです。
こちらは前章で紹介したブルートフォース攻撃の弱点である「挑戦回数を絞る」に対して考えられた手法になります。
せっかく「挑戦回数を絞る」という必殺技を覚えたのに、もう敵は対応してくるんです。
セキリュティ業界はこのようなイタチごっこを繰り返しているのです。
リバースブルートフォース攻撃とはIDとパスワード全てに対して組み合わせを試す手法になります。
今回僕が紹介したブルートフォースアタックはパスワードに関する手法でしたが、これをIDとパスワード両方に行う方法です。
IDに対して「挑戦回数を絞る」という方式をとっているシステムが多い中、だったらIDを変えながら、合致するIDとパスワードの組み合わせを全部試してやる!というのがリバースブルートフォース攻撃です。
パスワード一つでもアルファベットが混ざるだけでとんでもない計算量なのに、IDまで含まれるとさらにとんでもない量の計算になります。
しかし、それでも頑張るのがクラッカーたちです。
それだけあなたのアカウントに入ることには価値があるのです。
多少時間はかかっても必ずアカウントをこじ開けるという熱意が伝わってくる手法になります。
以上、辞書攻撃とリバースブルートフォース攻撃の紹介でした。
皆さんのパスワードは大丈夫ですか?
簡単なパスワードやパスワードの使い回しは辞書攻撃の餌食です。
さらに安心しきっているとリバースブルートフォース攻撃の餌食です。
あなたのパスワードは本当に安全ですか?
まとめ
今回はパスワードクラックと言われる、パスワードを暴く方法について色々紹介してきました。
皆さんのセキリュティ意識が少しでも高まっていただけたら幸いです。
こうしているうちにも犯罪者たちはあなたのアカウントに潜り込む努力をしています。
結局これだけやっていれば安心という方法はないんです。
唯一有効なのが、2段階認証を取り入れることくらいです。
2段階によって日常の面倒臭さは高まりますが、セキリュティも同時に高くなります。
一枚の壁が破られてももう一枚の壁があれば防御が硬くなるのは想像にしやすいかと思います。
みなさんのアカウントが無事にあることを、みなさんのアカウントが悪さをしないことを祈っています。
この記事を読み終わった後に少しでも自分のパスワードは大丈夫かな?という気持ちだけでも残っていれば、僕の仕事は終わりです。では。
セキュリティについてもっと知りたい方は以下の本を読んでみると面白いと思います。
コメント