エンジニアが意識すべき『情報セキュリティ』について

現在の私たちの日常生活や仕事において、インターネットはなくてはならない存在となりました。
しかし非常に便利で欠かせない存在であると同時に、『情報漏洩』や『不正アクセス』『ウイルス感染』などの脅威が存在することを忘れてはいけません。
特にエンジニアとしてWebサービスやアプリケーションを提供する立場として、サービスを利用してくださるお客様が安心して使えるものを作ることは非常に重要です。

しかしいきなり『セキュリティに気を付けろ！！』といわれても
・そもそも情報セキュリティって何？
・どんな脅威が潜んでいるのか？
・どんな対策方法があるのか？
を知らないと非常に困ってしまうと思います。

ということで『[キタミ式イラストIT塾 基本情報技術者 令和03年](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C03%E5%B9%B4-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297117819)』の内容を参考にセキュリティについて学習したので備忘録として残しておきます。

#ネットワークに潜む脅威
###情報セキュリティ
情報セキュリティ・・・ネットワークへの侵入やデータ/ファイルの破壊などの悪意を持った人間から情報という資産をいかに守るか。

セキュリティマネジメント・・・ネットワークの安全性と利便性のバランスを取りながらセキュリティを高めること。『機密性』『完全性』『可用性』の３つの要素のバランスが大切。
　↳機密性・・・許可された人だけが情報にアクセスできるようにするなどの、情報が漏洩しないようにすること。
　↳完全性・・・情報が変化することなく、完全な状態を保っていること。
　↳可用性・・・利用する人が必要なときに、必要な情報を利用できるようにすること。
###セキュリティポリシ
セキュリティポリシ・・・企業としてどのように情報保護に取り組むかを明文化して、社内に周知・徹底すること。『①基本方針』『②対策基準』『③実施手順』の３段階で構成される。
　↳①基本方針・・・情報セキュリティに対して、企業としての基本方針を定める。
　↳②対策基準・・・基本方針を実現するために、行うべき対策や基準を定める。
　↳③実施手順・・・対策基準で定めた内容をどのような手順で実施していくのかを定める。

個人情報・・・氏名や生年月日、住所、電話番号などの個人を特定できてしまう情報のこと。
個人情報保護法・・・個人情報を事業者が適切に取り扱うためのルールを定めたもの。

プライバシーバイデザイン・・・システム開発の上流工程において、システム稼働後の情報漏えいなどのリスクに対して予防的な機能の検討、組み込みを行うこと。
#ユーザ認証とアクセス管理
###ユーザ認証
ユーザ認証・・・コンピュータシステムにおいてアクセスできる範囲を制限するために、利用者がどんな人物か？を確認する行為。
ログイン・・・ユーザ認証をパスしてシステムを利用可能な状態にすること。
ログアウト・・・システムの利用を終了してログイン状態を打ち切ること。
###ユーザ認証の手法
アクセス権・・・特定のデータを許可された人だけが閲覧できるよう設定すること。ユーザ・データごとに『読み取り』『修正』『追加』『削除』などのアクセス権限を設定できる。

ソーシャルエンジニアリング・・・コンピュータとは関係のないところで心理的不注意をついて情報資産を盗む行為。
　↳ショルダーハッキング・・・肩越しにパスワードを盗み見る
　↳スキャビンジング・・・ゴミ箱を漁って有用な情報を盗み出す
　↳身分を偽ってパスワードや情報を聞き出す
　↳付箋やメモに書いてあるパスワードや個人情報を見られる
→重要な情報が書いてあるメモや付箋はすぐにシュレッダーにかけたり、パソコンにブラインドシートを貼るなどの対策が必要。
###様々な不正アクセスの手法
パスワードリスト攻撃・・・どこかから入手したIDやパスワードを使って、他のサイトへのログインを試みる手法。

ブルートフォース攻撃・・・特定のIDを入手したら、パスワードとして使える文字のパターンを片っ端から総当たりで全て試す手法。

リバースブルートフォース攻撃・・・ブルートフォース攻撃の逆で、パスワードを固定してIDを片っ端から全て試す手法。

レインボー攻撃・・・ハッシュ値から元のパスワード文字列を解析する手法。

SQLインジェクション・・・ユーザからの入力をデータベースに問い合わせて処理するWebサイトに対して、入力内容に悪意のある操作を行うSQL文を埋め込みデータベースのデータを不正に取得したり改ざんしたりする手法。

DNSキャッシュポイズニング・・・DNSのキャッシュ機能を悪用して、一時的に偽のドメイン情報を覚えさせることで偽装Webサイトに誘導する手法。

Rootkit・・・不正アクセスに成功したコンピュータをリモート制御できるようにするソフトウェアの集合体。
　↳ログ改ざんツール・・・侵入の痕跡を隠蔽する。
　↳バックドアツール・・・リモートからの侵入を容易にする。
#コンピュータウイルスの脅威
###コンピュータウイルス
コンピュータウイルス・・・第３者のデータなどに対して、意図的に被害を及ぼすように作られたプログラムのこと。『自己伝染機能』『潜伏機能』『発病機能』のうち、どれか１つでも該当すればコンピュータウイルスに定義される。
　↳自己伝染機能・・・自分のコピーを他のコンピュータにも生成して感染を広げる。
　↳潜伏機能・・・対策を遅らせるため、感染後しばらくはおとなしくしている。
　↳発病機能・・・プログラムやデータを破壊したり予期しない動作を行う。
###コンピュータウイルスの種類
狭義のウイルス・・・他のプログラムに寄生して、その機能を利用する形で発病するもの。

マクロウイルス・・・アプリケーションソフトのマクロ機能を悪用するウイルス。ワープロソフトや表計算ソフトのデータファイルに寄生し感染を広げる。

ワーム・・・単独で複製を生成しながらネットワークを介してコンピュータ間に感染を広げるもの。

トロイの木馬・・・有用プログラムに見せかけてユーザに実行を促し、その裏で不正な処理を行うもの。

マルウェア・・・コンピュータウイルスを含む悪意あるソフトウェア全般を指す。
　↳スパイウェア・・・情報収集を目的としたプログラム。個人情報を収集して外部に送信する。
　↳ボット・・・感染した第３者のコンピュータを、ボット製作者の指示通りに動かすもの。迷惑メールの送信や他のコンピュータの攻撃の踏み台に利用される恐れがある。
###ウイルス対策ソフトと定義ファイル
ウイルス対策ソフト・・・コンピュータに入ってきたデータをスキャンして、データに異常がないかを確認する。またコンピュータの中を検査してウイルスに感染してないかをチェックしたり、すでに感染してしまったファイルを修復したりする。

ウイルス定義ファイル・・・既知ウイルスの特徴が記録されているファイル。多種多様なウイルスを検知するためにも最新の情報に保つことが大事。

ビヘイビア法・・・実行中のプログラムの挙動を監視して、不審な処理が行われないかを検査する手法。未知のウイルスも検出することが可能。動的ヒューリスティック法とも呼ばれる。
###ウイルスの予防と感染時の対処
ウイルスの予防・・・感染経路として、電子メールの添付ファイルやファイル交換ソフトなどを通じたものが多い。対策としては次のような取り組みが有効
　↳①ウイルス対策ソフトを導入し、常時動かしておく。
　↳②ウイルス定義ファイルを常に最新の状態にしておく。
　↳③ハードディスク内のウイルスチェックも定期的に行う。
　↳④不用意にインターネットからファイルをダウンロードしない。
　↳⑤ダウンロードしたファイルやメールの添付ファイル、USBメモリなどの外から持ち込んだファイルは必ずウイルスチェックしてから使用する。

感染時の対処法
　↳①感染拡大防止のためネットワークから切り離す。
　↳②ウイルス対策ソフトを使って問題のあったコンピュータのウイルスチェックを行う。
　↳③ウイルスが発見された旨をシステム管理者に伝え指示をあおぐ。
###ウイルス対策ソフトのパターンマッチング方式
コンペア方式・・・感染前のファイルと感染後のファイルを比較し、ファイルに変更が加わったかどうかを調べてウイルスを検知する方法。
　
パターンマッチング方式・・・既知ウイルス定義ファイルと比較してウイルスを検出する。

ビヘイビア方式・・・システム内でウイルスに起因する異常現象を監視してウイルスを検出する方法。

チェックサム方式・・・ファイルのチェックサムと照合して、ウイルスを検出する方法。
#ネットワークのセキュリティ対策
###ネットワークのセキュリティ
ファイアウォール・・・LANの中と外とを区切る壁の役割をするもの。外からの不正アクセスを防ぐ壁のような機能的役割のこと。実現方法として『パケットフィルタリング』や『アプリケーションゲートウェイ』などがある。

パケットフィルタリング・・・パケットをあらかじめ指定されたルールにのっとって通過させるかどうかを制御する機能。パケットのヘッダ情報を見て通貨の可否を判断するため、どのサービスを通過させるかを決めることができる。

アプリケーションゲートウェイ・・・LANの中と外の間に存在し、外部とのやり取りを代行して行う機能。プロキシサーバとも呼ばれる。外のコンピュータからはプロキシサーバしか見えないので、LAN内のコンピュータが不正アクセスの対象になることを防ぐことができる。

ペネトレーションテスト・・・既知の手法を用いて実際に攻撃を行い、システムのセキュリティの効果を確認するテストのこと。セキュリティを突破されないかを確認するだけでなく、突破された際にどうなるかや、何をされてしまうのかも検証する目的がある。
#暗号化技術とディジタル署名
ネットワークの通信経路上にひそむ危険
　↳盗聴・・・やりとりしているデータを、途中で第３者に盗み読まれるという危険性。
　↳改ざん・・・やりとりしているデータを、途中で第３者に書き換えられてしまう危険性。
　↳なりすまし・・・第３者が別人になりすまし、嘘のデータを送受信できてしまう危険性。
###暗号化と復号
暗号化・・・データの中身を第３者にはわからない形に変換してしまうこと。

復号・・・暗号化したデータを解読できるよう元の形に戻すこと。
###共通鍵暗号方式
平文・・・暗号化される前の元のデータ。

暗号文・・・暗号化が済んだデータ。

鍵・・・平文を暗号化する際や、暗号文を平文に戻すために使うデータ。

共通鍵暗号方式・・・送り手と受け手が同じ鍵を用いてやり取りを行う暗号化方式のこと。
###公開鍵暗号方式
公開鍵暗号方式・・・公開OKな『公開鍵』を用いて暗号化を行い、受信者しかしらない『秘密鍵』を用いて復号を行う暗号化方式。送り手側は受信者の公開鍵を用いて暗号化を行う。暗号化と復号で別々の鍵を用いるのが特徴。

#参考文献
この記事は以下の情報を参考にして執筆しました。
[キタミ式イラストIT塾 基本情報技術者 令和03年](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C03%E5%B9%B4-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297117819)