情報セキュリティ

# 情報セキュリティとは
インターネットにつながる　＝　外部ネットワークに潜む悪意ともつながる
→ 企業の持つ情報資産をいかに守るか！（**情報セキュリティ**）

## 情報セキュリティの３要素
「安全性」を重要視　→ 「利便性」がよくない
→ 安全性・利便性のバランスが重要（情報セキュリティマネジメント基本的考え方）
→ ３つの要素を管理してバランスを取ろう！

|要素|説明|
|:--|:--|
|**機密性（コンフィデタリティ）**|許可された人だけがアクセスできる|
|**完全性（インテグリティ）**|情報が書き換えられず、完全な状態|
|**可用性（アベイラビリティ）**|利用者が必要な時に利用できる|

＊　「機密性」　を保証する対策　：　例）　データの暗号化
＊　「完全性」　を保証する対策　：　例）　機械的なチェック　＋　人目によるチェック
＊　他の要素も加わることあり
|要素|説明|
|:--|:--|
|**真正性**|偽造ではなく本物である、間違いなく私ですと証明できるようにする|
|**信頼性**|思い通りに動く、バグ/障害が起こらないようにする（=デュアルシステムで実現）|
|**責任追跡性**|責任を追跡する（＝ログ取得で実現）|
|**否認防止**|「自分じゃない」と否定できない（＝デジタル署名で実現）|

## 情報資産・脅威・脆弱性
- **情報資産**：企業にとって価値のある情報
- **脅威**：情報資産に攻撃をすること
- **脆弱性（セキュリティホール）**：セキュリティ上の弱点
    - **セキュリティパッチ**：修正プログラム　→ 配布される
    - **ゼロデイ攻撃**　：セキュリティパッチが配布される前の攻撃

## リスクマネジメント
- **リスク**：脅威によって、企業が損する可能性
- **リスクマネジメント**：リスクを管理すること　→ リスクアセスメント・リスク対応

### リスクアセスメント（リスクを評価する3手順）
1. **リスク特定**　：リスクを洗い出す
1. **リスク分析**　：リスクの大きさ（**リスクレベル**）を計算　＝　損失額＋発生確率　
1. **リスク評価**　：リスク対策が必要か判断

### リスク対応（リスクアセスメント → 2種類の対応策）
1. **リスクコントロール**　：リスクを小さくする方法
1. **リスクファイナンシング**　：損失を補うために、金銭的な手当をする方法
![リスク対応.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/dc725ca0-448d-74ee-d341-581dd50a3d3b.jpeg)
※ **ビジネスインパクト分析**：　予期しない事態　→ ビジネス全体に与える影響を分析

## 情報セキュリティポリシ
組織内の情報セキュリティの対策などをまとめた文書
・ **情報セキュリティ基本方針**　：組織のトップ→情報セキュリティへの姿勢を宣言するもの
→ 参考にする教材：**情報セキュリティ管理基準**・・・政府が策定したもの
・　**プライバシポリシ**　：組織の個人情報の扱い方を定める
・　**CSIRT**(シーサート)：企業などに設けるセキュリティ対策チーム

## ISMS適合評価制度（Information Security Management System）
組織の情報セキュリティに対する取り組み　→ 第三者が審査する制度

## セキュリティバイデザイン
システムのデザインの段階から、セキュリティ対策を考えよう！
・ **プライバシーバイデザイン**　：上流工程から個人情報保護を考えよう！









# 脅威とマルウェア
## 脅威の種類
- **物理的脅威**：　災害による故障、侵入者による破壊・妨害
- **人的脅威**　：　操作ミス、紛失、不正利用など人による脅威
    - **ソーシャルエンジニアリング**：　人の心理につけこんで情報を入手すること
        - 例）画面を覗き見る：　**ショルダーハッキング**
        - 対策①）　離籍時は画面をロックする：　**クリアスクリーン**
        - 対策②）　盗まれてもわかるように机を整頓する：　**クリアデスク**
- **技術的脅威**：　コンピュータウイルス、サイバー攻撃などITを使った脅威

（PCを破棄する時）
HDDから情報を抜かれる可能性
（対策）
➡︎**データ消却用ソフト：ビット列を上書き**
➡︎**HDDを物理的に破壊**

（不正行為）
**不正のトライアングル理論**
機会・動機・正当化　＝　三要素が揃うと不正行為をしてしまう
（対策）
**職務分掌**：　役割分担


## マルウェア = Malicious(悪意)＋Software
悪意を持って作られたプログラムの総称(マルウェア＝広義のコンピュータウイルス)

|種類|説明|
|:--:|:--|
|**コンピュータウイルス**(狭義)|自己伝染・潜伏・発病のいずれかの機能を持つもの|
|**マクロウイルス**|ワープロソフト、表計算ソフトのマクロ機能を悪用|
|**ワーム**|自己増殖機能をもつ|
|**ボット**|ウイルスに感染したPCを外部から操る/ **C&C サーバ**：外部から悪意ある命令を出すサーバ|
|**トロイの木馬**|良いプログラムと見せかけて、潜伏後悪意ある動作|
|**スパイウェア**|意図せずインストール → 個人情報を収集|
|**ランサムウェア**|PCのファイルを暗号化して読めなくする → 金銭要求|
|**キーロガー**|キーボードのログ→個人情報盗む|
|**ルートキット**|**バックドア**を作る→侵入の痕跡を隠すプログラム|

＊　バックドア：侵入するために作ったアクセス経路

## ウイルス対策ソフト
マルウェアから守り、安全性を高めるソフトウェア　↓持つ
**ウイルス定義ファイル（パターンファイル）** ：　ウイルスを識別するコード（シグネチャコード）を記録
→ ウイルス定義ファイルを使ったウイルス検出方法

|方法|内容|
|:--|:--|
|**パターンマッチング方法**|検査対象　↔︎　シグネチャコード　＝未知ウイルスは検知できない|
|**ビヘイビア方式**|仮想環境で実行→監視　＝未知ウイルスも検知できる|

## 端末の管理
- **BYOD**（Bring Your Own Device）：　個人のPC・スマホを業務に使うこと
- **シャドーIT**：　会社の許可なく自分のPC・スマホ、社外のクラウドサービスを業務に使うこと
- **MDM**（Mobile Device Management）：　社員に貸すスマホなどを一元管理すること








# サイバー攻撃
インターネットを通じてコンピュータシステムに侵入　→ 情報の盗聴・窃盗、データの改ざん・破壊をすること
→ さまざまな攻撃方法

## 標的型攻撃
**標的型攻撃**：　標的を決めて行う攻撃
|種類|内容|
|:--|:--|
|**APT攻撃**|特定の組織　→ 執拗に攻撃|
|**水飲み場攻撃**|よく使われる企業Webサイト　→ ウイルス仕込む|

## パスワードクラック攻撃
**パスワードクラック**：　パスワードを解析すること
|種類|内容|
|:--|:--|
|**辞書攻撃**|辞書単語　→ ログイン試行|
|**ブルートフォース攻撃（総当たり攻撃）**|文字を組み合わせたパスワードを総当たり　→ ログイン試行|
|**リバースブルートフォース攻撃**|文字を組み合わせたIDを総当たり　→ ログイン試行|
|**パスワードリスト攻撃**|他サイトのID・パスワード　→ ログイン試行|


＊　対策：　パスワード入力に制限・複数のサイトで同じパスワードを使わない

## サービスを妨害する攻撃
・　**Dos攻撃**：　特定のサーバに大量のパケット送る　→ サーバの機能を停止させる
・　**DDos攻撃**：　複数のコンピュータから一斉に攻撃する
（対策）
・　**IDS**(Intrusion Detection System)：侵入検知システム
・　**IPS**(Intrusion Prevention System)：　侵入防止システム

## 不正な命令による攻撃
Webサイトの入力スペース　→ 不正な命令注入

### クロスサイトスクリプティング
1. 利用者がデータを入力
1. 悪意のあるスクリプトを埋め込んだ入力データを送る
1. 偽ページへ移動し、悪意のあるスクリプトを埋め込んだリンクあり
1. リンクをクリックすると、攻撃者へ入力内容を送信する
（対策）
- **サニタイジング**：　有害な入力を無害化
    - **エスケープ処理**：　入力データにHTMLタグ　→ HTMLタグではない他の文字列に置き換える
- 　**WAF**（Web Application Firewall）：Webアプリケーション専用ファイアウォール
    - 　アクセス制限の方法
        - 　IPアドレス・ポート番号　→ ヘッダで判断
        - 　直接のデータ内容で判断
 
### SQLインジェクション
Webアプリケーションの入力欄　→ 悪意あるSQL 注入　→ 意図しないSQL実行する
■ 対策
入力文字　→ DBの操作に使う、特別な文字に解釈されないように他の文字列に変える

## なりすましによる攻撃
**なりすまし**：　攻撃者が利用者になりすますこと
|種類|内容|
|:--|:--|
|**セッションハイジャック**|セッションIDを盗む　→　利用者になりすます|
|**DNSキャッシュポイズニング**|DNSサーバーに偽のドメイン入れる　→ 利用者を偽サーバへ|
|**SEOポイズニング**|悪意Webサイト　→ 検索結果の上位に表示|
|**IPスプーフィング**|送信元IPアドレスを詐称　→ ホストになりすます(なりすまし=スプーフィング)|
|**Evil Twins攻撃**|公衆無線LAN：アクセスポイントなりすまし|

### ディレクトリトラバーサル（Traversal:横断する）
攻撃者：パス名でファイル指定　→ 不正に閲覧する
（対策）
上位ディレクトリを指定する文字（../）を含む時は入力を受け付けない

## 他の攻撃
|種類|内容|
|:--|:--|
|**ドライブバイダウンロード**|Webサイト閲覧　→ マルウェアをダウンロードさせる|
|**フィッシング**|電子メール　→ 偽Webサイトにアクセスさせる|
|**バッファオーバーフロー攻撃**|入力のデータ　→ 大きいサイズ　→ 想定外の動作|
|**クリックジャッキング攻撃**|偽サイトのコンテンツ：透明なボタン　→ 意図しない動作|

＊　**Webビーコン**：　Webページに埋め込まれた画像（利用者に見えないほど小さい）
（目的）　利用者のアクセス情報を収集

## 攻撃の準備
**フットプリンティング**：　攻撃前の情報収集
　→**ポートスキャン**：　攻撃できそうなサービスがあるか調べること

**ディジタルフォレンジクス**（Forensics:鑑識）：コンピュータ犯罪の証拠を集めて、解析すること













# 暗号技術
丸裸のデータが送信者から受信者にいくまで、3つの脅威

|脅威|内容|
|:--:|:--|
|盗聴|送信者　→ 受信者　送信データを盗む|
|なりすまし|送信者　→ 受信者　送信者を装う|
|改ざん|送信者　→ 受信者　データを書き換える|

## 盗聴の対策
### 暗号化
- **暗号化**：　データの中身を第三者が分からないようにすること
- **復号**：　暗号化したデータを元に戻すこと
![暗号化_復号.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/35ccf914-9aae-01cf-c625-0599a53466f2.jpeg)
→暗号化・復号のパターンは2つ

### 共通鍵暗号方式（秘密鍵暗号方式）
暗号化・復号　→　同じ鍵を使う方法
![公開鍵.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/85a90ad6-a1a5-99d4-3e15-691de43b4ce8.jpeg)
（特徴）
- 鍵の管理に注意（鍵が盗まれる→復号できちゃう）
- 暗号化・復号：処理が速い
- 代表例）　**AES**　→ 無線LANの暗号化に使われる
- 具体例）　家の鍵

### 公開鍵暗号方式
暗号化・復号　→　違う鍵を使う方法
![公開鍵暗号方式.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/4fce5cae-f3a3-67ba-b070-3aaa255dc31c.jpeg)
（特徴）
- 鍵の管理が簡単（一方の鍵を公開しても、秘密鍵を持つ人しか復号できないため）
- 暗号化・復号の処理が遅い
- 代表例）　
    - **RSA**：大きな数の素因数分解が困難なことを利用
    - **楕円曲線暗号**：RSAより短い鍵長で、同等の安全性を提供できる
- 具体例）　南京錠


## なりすまし、改ざんの対策
### ディジタル署名（電子署名）
受信者：『送信者が本人か確認できる』『データが改ざんされてないか確認できる』
![デジタル署名.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/688b7a0b-dab5-f739-a1a2-136d62f42f8e.jpeg)

（送信者の処理）
1. 電子文書　→ （ハッシュ関数）文字列を作成
1. 文字列　→ （送信者の秘密鍵）ディジタル署名を作成
1. 電子文書　＋　ディジタル署名　で送信

（受信者の処理）
1. 電子文書　→ （同じハッシュ関数）文字列を作成
1. ディジタル署名　→ （送信者の公開鍵）復号　＝　送信者が本人か確認
1. 文字列が同一か比較　＝　電子文書が改ざんされてるか確認

＊　**ハッシュ化**：　**ハッシュ関数**→電子文書から文字列（**ハッシュ値・メッセージダイジェスト**）を作ること
→ 一部でも改ざん＝同じハッシュ値はできない
→ ハッシュ値から、元の電子文書を復元/推測できない
→ 代表的なハッシュ関数：**SHA(Secure Hash Algorithm)、SHA-256、SHA-512**











## なりすましの対策
### 認証局（CA：Certification Authority）
公開鍵暗号方式・デジタル署名：公開鍵が正当性を証明する
![認証局.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/12f7858a-7919-3876-1bf6-34ada20ad016.jpeg)
＊　**CRL**(**証明書失効リスト**)：有効期限内に失効させた証明書の一覧
＊　**PKI**(Public Key Infrastructure)（公開基盤）：　認証局・公開鍵暗号方式・ディジタル署名　→ 安全な通信ができる仕組み


## 改ざんの対策
### メッセージ認証
共通鍵　→ メッセージ内容の改ざんを確認する仕組み
（流れ）
1. 事前に送受信者　→　共通鍵を秘密で共有
1. 送信者：　メッセージ（公開鍵＋ハッシュ関数）　→ **メッセージ認証コード**（**MAC(Message Authentication Code)**）生成
1. 送信者：　メッセージ・MAC送信
1. 受信者：　受信したメッセージ（公開鍵・同じハッシュ関数）　→ **MAC**　生成
1. MACが一致するか比較
![メッセージ認証.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/d0cd9025-8c0a-a30b-b4bd-e44087dc5fe9.jpeg)
（ディジタル署名・メッセージ認証の比較）

||ディジタル署名|メッセージ認証|
|:--|:--:|:--:|
|なりすまし対策|●|●|
|改ざん対策|●|●|
|否認防止|●|✖︎|
|鍵|公開鍵・秘密鍵|秘密鍵・秘密鍵|
|付加|ディジタル署名|MAC|

## 盗聴・改ざんの対策
### SSL
通信を暗号化して、盗聴・改ざん防ぐプロトコル
- パスワード・クレカ番号などを安全にやりとりできる
- Webブラウザに搭載
- **HTTPS**（HTTP Over SSL）：SSL（暗号通信）をHTTPに実装したもの　
    - WebサーバーとWebブラウザ間の通信を暗号化
    - **TLS**：　SSLと機能同じ
![SSL通信.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/9bb37117-9064-3df5-d8c2-7d5ef49d72ff.jpeg)
1. PC → Webサーバ：SSL暗号通信をリクエスト
1. Webサーバ：「サーバの公開鍵」＆「サーバ証明書」送る
    1. サーバ証明書＝　＋α**ハッシュ値＋認証局の秘密鍵＝「デジタル署名」も付ける**
1. PC：サーバの公開鍵を取得/サーバ証明書を確認
    1. サーバ証明書：**デジタル署名→認証局の公開鍵で復号**
        1. → **サーバ証明書が改ざんされていない**
        1. → **サーバ証明書の正当性**
1. PC：共通鍵を2つ生成
1. PC：共通鍵(1つ)→ サーバの公開鍵で暗号化
1. PC → Webサーバ：暗号化された共通鍵　→ 送る
1. Webサーバ：暗号化された共通鍵　→ サーバの秘密鍵で復号　➡︎ **両者が「共通鍵」を持った状態に**＝暗号通信開始
1. 「共通鍵」で暗号化されたデータの通信をする

↓
※ **ハイブリッド方式**
共通鍵暗号方式　＋　公開鍵暗号方式　組み合わせた方式（長所を生かす）
→ 暗号化・復号＝ **共通鍵暗号方式（処理早）**
→ 鍵の配布＝ **公開鍵暗号方式（鍵の配布簡単）**

※ **セキュアブート**
PC起動前 ➡︎ マルウェア実行を防ぐ

※ **TPM**：PCなどに組込むセキュリティチップ
→ 公開鍵・秘密鍵・デジテル署名・ハッシュ値計算・・・をする











# ネットワークセキュリティ
## 利用者認証（ユーザ認証）
「あなた誰？利用許可されてる人？」確認作業
- **多要素認証**：二つ以上の認証を組み合わせる

認証の方法はいくつかある

### ワンタイムパスワード
1回限り使えるパスワード（毎回違う）

### バイオメトリクス認証（生体認証）
身体的特徴を使って認証する
- 身体の特徴：指紋・静脈・声帯認証
- 行動の特徴：署名の速度・筆圧
    -  **FRR(Fale Reject Rate)** ：本人を間違って拒否する割合
    -  **FAR(Fale Accept Rate)** ：他人を間違って許可する割合

### CAPTCHA（キャプチャ）
目的：プログラムの自動入力をさせない。
方法　↓
![CHAPTCHA.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/ebac1374-3840-455f-f444-e2941ef9da21.jpeg)

### チャレンジレスポンス認証
![チャレンジレスポンス認証.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/c69ede06-73a2-4755-6d50-d106965a882a.jpeg)

### シングルサインオン
最初に1回認証　→　ログアウトまで利用できる



## ファイアウォール
外部ネットワーク ↔︎ 内部ネットワーク間の壁になる　→ 不正アクセスを防ぐ仕組み
![ファイアウォール.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/058d823e-5e15-bfee-7ea6-217853cc3b39.jpeg)

### パケットフィルタリング
パケット（ヘッダー情報）見てアクセス可否をする
- 【ヘッダ情報】送信元IPアドレス、宛先IPアドレス、ポート番号、プロトコル
    - → どのIP/ポート/プロトコル　を通すか　→ ファイアウォールに設定
![パケットフィルタリング.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/33341a00-eb83-e1d0-e564-d8d7337450de.jpeg)

### プロキシサーバ / リバースプロキシサーバ
- **プロキシサーバ**：PCの代理　→　外部ネットワークにアクセス
- **リバースプロキシサーバ**：Webサーバの代理　→ 外部からのアクセス受ける
![プロキシサーバ:リバースプロキシサーバ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/6644e00d-d22e-250b-d2a4-76bcc6f6f369.jpeg)



## DMZ(DeMilitarized Zone)
- 外部・内部ネットワークから隔離されたゾーン
- 外部から直接アクセスできる非武装地帯
- セキュリティ上、優先順位が低いものしか置かない
![DMZ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/53f42b9f-7762-1148-a05b-b50ec9368866.jpeg)
※ **ゼロトラスト**：外部＆内部ネットワーク信用しない　→　全ての通信：認証機能



## その他のセキュリティ対策
- **UTM(Unified Threat Management)**：複数のセキュリティ機能まとめた製品
- **SIEM**：動作ログ一元管理
- **ぺネトレーションテスト**：あえて攻撃　→ 脆弱性見つける
- **ファジング**：エラー出そうなデータ入力　→ 脆弱性見つける