独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【情報処理】セキュリティの基礎

ここではセキュリティの基礎のついて解説します。

セキュリティの必要性

コンピュータを扱う上でセキュリティは重要です。
インターネットの発展により、世界中のコンピュータ同士とやり取りができるようになりました。
それは、とても便利になった反面、情報漏洩や不正な攻撃が行われるリスクが高まったことでもあります。

個人でインターネットを利用する場合は、情報漏洩により個人情報を不正に利用されてしまうリスクがあります。
企業の場合、企業が保持している個人情報が流出することにより、企業の信用が失われてしまう可能性があります。
このような事態にならないように、コンピュータを扱う以上、最低限のセキュリティの知識を身に付ける必要があります。

インターネット通信にはどのようなリスクがあり、どのような対策をしているのかを簡単に説明していきます。

インターネット上のリスク

セキュリティの攻撃には様々なものが存在しますが、代表的なものを上げると、

  • 盗聴
  • 改ざん
  • なりすまし

があります。

盗聴

盗聴と聞くと、会話や音声を盗み聞きするイメージを持つかと思います。
ここで説明する盗聴はネットワーク盗聴といい、音声を盗み聞きすることではなく、ネットワーク上流れるデータ(パケット)を不正に覗き見ることを言います。

これはWiresharkのようなパケット解析ツールを使うことで簡単に実現できます。
このツールはもともと盗聴用のツールではなく、ネットワーク上に流れるデータを解析することでネットワークの状態などを分析するためのツールです。
しかし、結果として同じネットワーク内に流れるデータを見れることから、盗聴という使い方もできてしまいます。

では盗聴されることでどんな問題があるでしょうか。
例えば、WebサービスにログインするときのIDやパスワードを知られてしまう事で、不正にログインされてしまう可能性があります。
また、クレジットカードの情報などを盗まれて不正利用されるなども考えられます。
また、仕事上のやり取りを見られることで情報が流出して問題なる可能性もあります。

このような問題が起きないように、盗聴の対策が必要になります。

盗聴の対策

では、どうすれば盗聴を防ぐことができるでしょうか。
実は、盗聴を防ぐのは簡単ではありません。
というのも、同じネットワーク内(同じ無線LANを使用している場合など)であれば、データは盗聴できてしまうからです。
公共の無線Wi-Fiを利用したりすれば、盗聴のリスクは防げません。

ではどうやって盗聴の問題を解決するのか。
それは盗聴されたとしても内容を解読されないようにすれば良いです。
それには暗号という技術を使います。
通信する内容を暗号化することで、盗聴されて中身を見られても、簡単には中身が分からないようにするのです。
データを受け取った側は、暗号化されたデータを複合(元に戻す)して内容を確認します。

暗号化によってデータを盗聴されても簡単には見れなくなりますが、それでも、第三者が暗号を破って内容を解読されてしまう可能性はゼロではありません。
最近は個人情報を扱うほとんどのサイトやWi-Fiが暗号化されていますが、それでもリスクが完全になくなるわけではないです。
なので、大事な情報を扱う操作は公共のネットワークを使った環境では行わないなど、コンピュータを扱う人のリテラシーも重要になってきます。

改ざん

暗号化の技術を使えば、ある程度ネットワーク盗聴のリスクをなくすことができます。
しかし、そもそも送信したデータを第三者が途中で横取りし、別のデータに書き換えてしまったらどうなるでしょうか。
意図しない内容のデータが相手に送られてしまいます。
このような攻撃をデータの改ざんと呼びます。

ここでは詳しくは解説しませんが、インターネット上の通信ではメッセージダイジェストという仕組みを使って改ざんを防止します。

なりすまし

なりすましとは、メッセージを送る人が本人ではない別の人を装ってデータを送信する攻撃です。
つまり、Aさんではない人が、自分はAさんだと名乗って、誰かにデータを送ります。
Aさんは自分の意図しないところで自分以外の人が勝手に誰かにメッセージを送られてしまいます。
これではAさんも、メッセージを送られた方も困ってしまいます。

ここも詳しくは書きませんが、認証局という仕組みを使ってなりすましの対策を行います。

httpとhttps

インターネット上で情報を閲覧すると、どのWebサイトにもURLというアルファベットと数字の並びがあるはずです。
URLはhttpから始まるものとhttpsから始まるものがあります。
ちなみに最近のブラウザはhttpsは鍵マークがついていてhttpには鍵マークがついていないように区別されていて、文字までは見えないので意識しないのかもしれませんが。

これはWebにおける通信プロトコルの違いですが、簡単に違いを言えばhttpはセキュリティに対する考慮は何もなく、httpsはhttpの上にセキュリティの技術が色々と盛り込まれています。
httpsによる通信であれば、先ほど述べた盗聴や改ざん、なりすましなどを防ぐための技術が盛り込まれています。

セキュリティに対する意識

セキュリティのリスクや対策に対する知識、そして意識はすごく大事です。
ITを仕事にしたい人はもちろん、直接ITに関わる仕事はしていなかったとしても、スマホやPCに使う機会がある以上、セキュリティに対する意識は大事です。

特に注意してほしいのは、インターネットを閲覧するときに、URLがhttpsになっていれば全てが安全というわけではないということ。
URLがhttpsで、サイトもまともなサイトの様に見えても、実は悪意のある人が作ったそれっぽいサイトで、個人情報を盗む目的で作られた可能性もあります。
これはURLの内容を見なければ分からないこともあります。

また、URLがhttpsでも、Webアプリケーションのプログラムがセキュリティの対策が十分に行われていなかったとしたら、クロスサイトスクリプティングSQLインジェクションといった攻撃によって、情報を抜き取られたり、攻撃の踏み台として使われたりなど、様々なリスクが伴います。

また、悪意のある人が信頼できる人になりすましをしてメールを送ってきて、悪意のあるソフトウェアを実行してしまう場合もあるでしょう。

こういったセキュリティ事故の事例はいくらでもあります。
PCにセキュリティ対策ソフトをインストールして常に最新状態にしていたとしても、セキュリティの技術が発達しても、人間の意識が低ければ簡単にセキュリティ事故は起こります。

セキュリティの基本的な知識を身に付けるとともに、人間が意識を高く持たなければいけないことを認識しておく必要があるでしょう。

最低限のセキュリティ対策

ここで、最低限誰でもできるセキュリティ対策について書いておきます。
まずは、使用しているOSやアプリなどは、定期的にアップデートを行って最新の状態になるように保つことが重要です。
セキュリティ上の欠陥のことを脆弱性と呼びます。
OSのアップデートやアプリのアップデートには、脆弱性を修正したものが多く含まれています。
そのため、アップデートせずに古い状態を保ち続けるのはリスクになります。

また、アンチウィルスソフトなどのセキュリティ対策ソフトを導入することも必要です。
しかし、アンチウィルスソフトを導入したからといって、何もかもが安全であるとは限りません。
アンチウィルスソフトがあったとしても、悪意のあるソフトウェアが実行されてしまう可能性もあります。
セキュリティ対策ソフトは導入しないよりも確実に導入したほうが良いですが、それでも最終的には人間の意識が重要です。

パスワード

色んなWebサービスを利用していると、ログインするときのパスワードを決めることが多々ありますね。
これらのパスワードをどう設定しているかは重要です。
簡単で誰でも推測できるようなパスワードを設定していた場合、不正ログインをされるリスクが高まります。
推測が難しいパスワードにすると、安全性は高まりますが、忘れないようにするはなかなか難しいです。
忘れてしまうからと紙に書いて貼り付けたりしては意味がありません。
そういう意味ではパスワードを考える作業はなかなか大変です。

また、全てのサービスで同じパスワードを使用している場合、そのパスワードが流出したときに被害が大きくなります。
しかし、サービスごとにパスワードを変えて、それぞれで覚えておくのも管理が大変です。
安全性を高くしながら管理が楽なパスワードにするのはそれなりに工夫が必要ということになります。

パスワード管理の問題を解決する方法には様々な工夫があるかと思いますが、私が考えうる方法は大きく2つです。
一つはパスワード管理アプリを使用することです。
「パスワード管理 アプリ」などで検索すると様々なものが出てくるので、レビューを見たり実際に試して使いやすいものを使って見るのも良いかと思います。

2つ目の解決策は、パスワードに自分なりをルールを決めて運用することです。
パスワードは全てのサービスで同じにしてしまうと、流出したときのリスクが高くなるので、サービスごとに異なるものにするのが理想です。
しかし、その場合は覚えるのが大変になります。
そこで、たとえ忘れていたとしても思い出せるように自分なりのルールを設けるとパスワードの運用が楽になります。

例えば、普段使用しているパスワードに、サイト名の頭文字と最後の文字をくっつけるなどです。
ここでは仮にパスワードを「Password」とすると、
Yahooの場合は「PasswordYo」
Amazonの場合は「PasswordAn」 などです。
これはあくまで一例ですが、このように運用のルールを決めておけば、パスワードをサービスごとに異なるものにしつつ、忘れにくい(忘れてもすぐに作ることができる)ものにすることができます。
このように自分なりにルールを決めて運用してみると良いかと思います。

まとめ

  • インターネットは便利な半面、セキュリティのリスクが多くある
  • セキュリティリスクに対応するための技術は多くあるが、それらの技術を使っているからと言って安全な保証はない
  • 最終的には人間の意識が重要になる