ハッキングに対して「怖い」、「面白しろそう」など皆さんが持っている印象は様々ですが、実際ハッキングの仕組みを理解している人は少ないと思います。
今回はハッキングの仕組みについてまとめてみました。
その前に、不正なハッキング行為はクラッキングと言われ違法行為になります。
悪いことをすると必ず最後には裁きを受けることになります。
クラッキングは間違っても行わないようにしてください。
この記事は、
・クラッキングに不安を持っている人に知識を持ってもらうこと
・ハッキングを知識を正しく合法に役立ててもらうこと
を目的にして書いています。
目次
先ず違法なハッキングとは
本来、ハッキングとはエンジニアリングなどの高い技術力を持った的な意味だそうなんですが、一般的には他のコンピュータを入り込むことの意味合いで使われることが多いです。
ハッキングには違法なものと、そうでないものがあります。
なので、何が違法かをしっかりと知っておく必要があります。
ハッキングとは建物に入る行為だと考えてください。
つまり、自分の家に出入りしても罰せられることはありません。
では他人の家ならどうでしょう?
これは勝手に入ると不法侵入罪ですよね。
つまり、許可を得ていないと、違法という事になるのです。
他人のコンピューターに許可なく入り込むことは、すべて不正な侵入になりますので行わないように注意してください。
ハッキングの全体像
先ほどハッキングは建物に入る行為と言いました。
鍵のかかった建物にどうやって入るか考えることが、ハッキングに最も近いイメージなのかと思います。
もし「あなたが家のカギを無くしたらどうやって中に入るか?」考えてみてください。
大きく二つ方法があります。
・入口を何とかして空ける
・他に空いている窓などを探す
他にも、
・中にいる人を呼ぶ
・大家にカギを空けてもらう
・業者を呼んでカギを壊す
などがありますが、これは他の人の力を借りているので除外します。
入口を空けるハッキング方法
では本題です。
入口を空けるためにはカギが必要ですが、コンピューターの場合はどうでしょう?
そうです。多くの場合パスワードがカギの代わりになります。
でも、パスワードって知らなくても適当に入れていると、いつか当たる可能性ってありますよね。
実は、まさにこれがコンピューターの入口を正面突破する方法なんです。
適当なパスワードをトライアンドエラーで何回も試していく作業になります。
もし、パスワードがすべて数字で四桁だったら、何回試せば必ず当てられるかわかりますか?
正解は0~9999まで全部試せばいいので、1万回試せば必ず当たります。
人の手で1万回やるのは大変ですが、これをコンピュータにやらせれば、その作業も一瞬で終わります。
クラッキングから守る立場の人間も手をくわえて黙ってはいません。
パスワードは連続入力させない事を考えます。
一定間隔待たせる、例えば10秒待たないと入力できないようにすれば、ざっくり1万位試すのに10万秒つまり30時間弱かかります。
もしくは、数回間違えたらロックが掛かり入力できなくする、などの対策を講じます。
よくパスワードは「アルファベットも含めて8文字以上で」とか言ったりしますよね。
それはより複雑にすることで、試さないといけない数を増やしているんです。
少し話がずれますが、「イミテーションゲーム」っていう映画をご存知ですか?
ナチスドイツが使っていたエニグマっていう暗号機をイギリス人の学者が解読するっていう実話を元にした映画なんですが、面白いので興味ある人は是非見てください。
このエニグマという暗号機は、パスワードのような文字を最初に入力して使うと、暗号化出来るという装置です。
さっきのパスワード解読の話と一緒で、試していればいつか正解にたどり着くのですが、人の手で計算すると膨大な時間がかかります。
一日に一回パスワードが変更されるので、人の手では絶対に追っつかないという仕組みです。
この時、主人公のチューリングという科学者は、それ専用のコンピューターを作って解読したというお話です。
そして、このチューリングの技術が今のコンピューターのもとにもなっているというので驚きですよね。
パスコード解読は時間との戦いですね。
解読できるとしても、かかる時間が1年とかだと、結局解読できなかったのと同じという考えです。
パスワード解読されると何が危ないか
例えば、会員制のサイトなどを考えてください。
一般会員のログインとは別にサイトの管理者もログインするコントロールやダッシュボードなどが多くの場合存在します。
その管理者のログインを正面突破したらどうでしょう?
会員の個人情報は丸裸になると思います。
当然、犯罪ですよね。
しかし、多くの場合は守る立場の人間が、正面突破できないよう措置を取っています。
知識をもったエンジニアであればこの砦を守ることはそこまで難しくないと思います。
空いている窓などから入るハッキング方法
これは正面玄関はしっかりカギを閉めてたのに、お勝手口が開いていたといったケースです。
これはよく耳にするコンピューターの「脆弱性」というヤツです。
脆弱性とはプログラムを作った人が予期しなかった盲点みたいなものです。
プログラマーの単なる凡ミスもあれば、まさかこんな使われ方すると思わなかったというまさに盲点を突く方法です。
また、脆弱性は様々なところに存在します。
・サイトのプログラム
・インストールしているソフトウエア
・OS
具体的に脆弱性を突く例
また、会員サイトを例にとりましょう。
入口はがっちり重たい施錠が掛かっていたとします。
でも例えば脆弱なお問合せや掲示板みたいな何か文字を入力できる機能があったとします。
普通ならどんな文字を投稿しても問題ないですが、脆弱なその掲示板はプログラミング言語を入力するとプログラムとして実行されてしまうなんてことがあったとします。
そこで、サーバへ悪質なソフトウエア(マルウエア)をインストールするようなプログラムを書き実行することで、サーバを乗っ取るといったことが可能です。
このようなケースの場合は、サイトのプログラムに脆弱性があるので、知識をもったエンジニアが作ったサイトだとそういった穴が少ないうえに、クラッキングする側もどこに穴があるのか探すのが大変です。
しかし、インストールしているソフトウエアやOSといった一般的に多く使われているものに脆弱性があった場合が大変です。
クラッカーに脆弱な個所を発見されたら最後、同じソフトウエアを使っているすべてのサイトに危険が広がるわけです。
エンジニアはソフトウエアの脆弱性の最新情報を常にチェックしたり、心配な箇所は自分でテストしてチェックする必要があるでしょう。
まとめ
今回はハッキングの方法をなるだけわかりやすく説明しました。
ご自身がエンジニアという立場で無かったとしても、知識として知っておいた方がいいですよね。
サイトをクラッキングから守るエンジニアには、入口の堅牢性と脆弱性に関する最新の知識が必要になります。
別の記事にも書きましたが、こういったサイトを守ることを主として仕事をしているホワイトハッカーという存在もいます。
技術力は是非正義のために使ってもらいたいと思いますね。