応用情報技術者試験の対策をする上で、必ず勉強するのが「不正アクセスの手法と対策」。私も午前試験のために必死に覚えました。
今回は、不正アクセスの手法と対策の中でも忘れやすいものをピックアップしました。サッと目を通して復習に用いてもよいです。
【そもそも】不正アクセスとは?
総務省のホームページによると、
不正アクセスとは、本来アクセス権限を持たない者が、サーバや情報システムの内部へ侵入を行う行為です。
https://www.soumu.go.jp/main_sosiki/cybersecurity/kokumin/basic/basic_risk_06.html
不正アクセスによって情報漏洩が起こると、企業や組織の信頼が低下してしまいます。
それを回避するためにも、セキュリティ対策は必須です。
不正アクセスの種類
不正アクセスには様々な種類があります。
試験対策が前提にあるため、ここで挙げているものはその一部です。
スニッフィング
スニッフィングとは、ネットワーク上を流れるパケットを盗聴し、個人情報を不正に入手することです。
パケットとは、あるデータを複数の小さなデータへと分割したもののことです。
例えば、10箱の段ボールをある地点まで運ぶことを想像してみてください。10箱の段ボールを一度に運ぶのは大変ですよね。普通であれば、1、2箱ずつ運ぶはずです。
インターネット上でも同じです。大きなデータを一度に送信すると大変です。そのため、小さいデータに分割して、何回かに分けて送信します。この分割されたデータがパケットです。
もし、個人情報や機密情報のパケットを悪い人に盗聴されたら大変です。そうならないためにも、通信の暗号化が必須です。WebサイトのURLが「https:」で始まるものは、SSL/TLSが用いられており、通信が暗号化されています。そのため、スニッフィングの被害を防ぐことができます。
ブルートフォース攻撃
ブルートフォース攻撃とは、パスワードや暗証番号において、入力可能なすべてのパターンを試し、セキュリティを突破する方法です。
やり方が脳筋で、それほど脅威にならないのではと思った人は大間違い。
仮に暗証番号が4桁だとしましょう。「0000」〜「9999」の1万通りの中に答え(設定した暗証番号)が必ずあります。
また、人の手で暗証番号を入力するはずもなく、事前に用意したプログラムを実行して入力します。
そのため、1万通りしかない単純な暗証番号では、総当たりですぐにセキュリティを突破されてしまいます。
ブルートフォース攻撃の対策として、暗証番号の入力回数に制限をかけたり、大文字、小文字を区別した英字・数字・記号を用いてパスワードのパターン数を増やしたりする対策が有効です。
SQLインジェクション
SQLインジェクションとは、WebサイトやWebアプリケーションの脆弱性を利用し、フォームなどからSQLの命令文を注入して、データベースを不正に操作する攻撃のことです。
SQLとはデータベースを操作するために必要な言語です。この言語を利用して、データを取ってきたり、修正したりします。
データベースがよく分からない方は「【分かりやすく解説】データベースとは何か?」で解説しています。
データベースを不正に操作されるということは、データの改竄や流出が発生する可能性が高まるということです。
では、どのように対策をすれば良いのでしょうか。いろいろな対策がありますが、エスケープ処理が有効です。エスケープ処理とは、プログラミング言語にある特別な意味を持つ文字や記号を、別の文字列に置き換えることです。
レインボー攻撃
レインボー攻撃とは、攻撃者がレインボーテーブルというものを使用して、ハッシュ化されたパスワードを解読しようとすることです。
ハッシュ化とは、あるデータを別の値に置き換える操作です(詳細は割愛します)。この値をハッシュ値といいます。同じデータであれば、ハッシュ値はすべて同じになります。
例えば、「password」というパスワードのデータをハッシュ化して、「1」というハッシュ値が得られたとします。
実は、このハッシュ値から元のデータである「password」という文字列を復元することはできません。そのため、今回のようにパスワードをハッシュ化することによって、パスワードを知られることを防ぐことができます。
ハッシュ値から元の値に復元できないのであれば、大切なデータをハッシュ化しておけば安全だと思ってしまいます。
しかし、元の値とそれに対応するハッシュ値が分かっていたらどうでしょうか。
上図のような、元の値とハッシュ値のリストをレインボーテーブルといいます。
このレインボーテーブルがあれば、ハッシュ値から元の値を解読するのは容易です。
何らかの方法でハッシュ値「abcd」を手に入れたとします。普通であれば元の値を知ることは不可能です。ですが、レインボーテーブルを使えば一瞬で元の値を知れてしまいます。
厳密にはレインボーテーブルは上図のような表ではありませんが、ここでは理解優先のため、こんな感じなんだと思ってください。
レインボー攻撃の対策として考えられるのは、強力なパスワードを設定することや、ソルト付きハッシュを使用することが挙げられます。
大文字や小文字を混合させる、数字、特殊文字をパスワード内に入れると複雑で強力なパスワードをつくれます。
また、ソルトと呼ばれるランダムな文字列を元の値に加え、ハッシュ化することで本来とは異なるハッシュ値を生成できます。そのため、レインボーテーブルを用いた解読が不可能になります。
おわりに
今回は、不正アクセスの手法と対策を紹介しました。
ここで取り扱った不正アクセスの種類は一部にすぎません。他にも有名な手法がありますが、応用情報技術者試験対策向けに(個人的に)忘れやすい知識だけを紹介しました。
しっかりと知識をつけて、自分や他人の大切な情報を守りましょう。
そして、試験に合格できることを心から願っています!!
コメント