セキュリティーまとめ

## セキュリティー基本的なこと(前書き)

### 情報セキュリティー（CIA）
情報セキュリティーの７大要件

1. 機密性（Confidentiality）
1. 完全性（Integrity）
1. 可用性（Availavility）
1. 否認防止
1. 責任追跡性
1. 真正性
1. 信頼性

機密性の確保：
情報漏えい防止、アクセス権の設定などの対策

完全性の確保：
改ざん防止、検出などの対策

可用性の確保：
電源対策、システムの二重化などの対策

否認防止：
ある活動又は事象が起きたことを，後になって否認されないように証明するよう対策

責任追跡性：
ユーザーやサービスの行動、責任が説明できること。つまり、ユーザーIDなどで、システム上での行動を説明できるように扱うこと（主にログの記録）や、情報や制御の二重化により否認を防止などの対策

真正性：
利用者，プロセス，システム，情報などのエンティティに対して、主体又は資源が，主張どおりであることを確実にするように対策

信頼性：
意図した動作及び結果に一致するよう対策

参考URL [JNSA](http://www.jnsa.org/)

### 目次
1. 個人情報について
2. 暗号化
3. ハッシュ関数
4. 暗号鍵
5. 認証
6. 攻撃
7. リスクマネジメント

### 1. 個人情報について

#### 個人情報とは？
1. 個人に関する情報であること  
2. 特定の個人を識別できること

> 個人情報とは、生きている個人に関する情報であって、「その人が誰なのかわかる」情報をいいます。例えば、「氏名」や「その人が誰なのかわかる映像」などが個人情報です。また、「携帯電話番号」や「住所」だけでは「その人が誰なのかわかる」とは判断できませんが、「氏名と住所」など、他の情報と組み合わせることで「その人が誰なのかわかる」ようであれば、個人情報です。  
　なお、公的な番号として一人にひとつ、異なる番号が割り当てられた「マイナンバー」「パスポート番号」や、指紋など個人の生体情報をデータ化したものも、それだけで「その人が誰なのかわかる」ので、個人識別符号と呼ばれる個人情報です。

[個人情報保護委員会](https://www.ppc.go.jp/)より引用

※　JIS（日本工業規格） Q 15001では『「個人情報」の定義として『個人情報』には、死者の情報も含まれるが、歴史上の人物まで対象とするものではない。』と定義されている

#### 個人情報とプライバシーの違い
上述の通り、個人情報は個人を特定する情報であるのに対して、「プライバシー」には「個人や家庭内の私事・私生活。個人の秘密。また、それが他人から干渉・侵害を受けない権利。」（小学館「大辞泉」より)という意味があるほか、最近では、「自己の情報をコントロールできる権利」という意味も含めて用いられることがある。

#### 第三者提供
事業者が保有する個人データをその事業者以外の者に提供すること。
あらかじめ本人から同意を得た場合にのみ個人情報の第三者提供を認めることを「オプトイン」といい、オプトアウトの手続きをとっている場合と本人の同意を得ることが不合理な場合には、同意なしに個人データを第三者提供することが可能
。個人データを第三者提供する場合は*トレーサビリティの確保が重要であり、外国にいる第三者に個人データを提供する場合にはあらためて本人の同意が必要となる。

*トレーサビリティ...製品/商品の生産・流通履歴を追跡する仕組みのこと。これを可能にするためのシステムを「トレーサビリティシステム」と呼ぶ。

### ２. 暗号化

暗号化をする目的：機密情報の漏洩を防ぐ

1.  万が一、PCが盗難されてもセキュリティ対策になる
1.  紛失した場合でも情報漏えいのリスクが減る
1.  不正アクセスがあった場合でも解読が不可能
1.  廃棄したパソコンからの情報抜き取り防止

### 3. ハッシュ関数

ハッシュ関数とは入力した値に対して、まったく別の値が出力されるという暗号方式のこと。また、ハッシュ値とは、あるデータを変換して別の文字列や値に変換されたもので、ECサイトなどのWebサービスでは一般的にパスワードはハッシュ化されています。そうすることで、事業者もパスワードを知ることはできないため個人情報の漏洩に耐えることができます。ブロックチェーンのチェーンの部分にもハッシュ関数がつかわれている。

#### ハッシュ関数の種類
1. SHA-256
2. RIPEMD-160
3. MD5（Message Digest Algorythm 5）

SHA-256：
ハッシュ関数の計算手順(アルゴリズム)を定義しており、最長で2の64乗-1ビットまでの任意の長さのデータから256ビット(32バイト)のハッシュ値を生成する。同じ原文からは必ず同じ値が得られる一方、少しでも異なる原文からはまったく違う値が得られる。いわゆる暗号学的ハッシュ関数として設計されており、ある原文を元に同じ値になる別の原文を効率よく探索することは困難なようになっている。実装のしやすさや計算速度、暗号学的な安全性のバランスに優れ、最も広く普及している。

RIPEMD-160：
ライプエムディー160と読み、RACE Integrity Primitives Evaluation Message Digest」の略。
SHA-256よりも短いハッシュ値を出力することができ、ビットコインなどに用いられる。ビットコインアドレスなど短いハッシュが求められる場合に、SHA-256で一旦ハッシュを生成し、それをさらにRIPEMD-160で短いハッシュ値にする。

MD５：
*強衝突耐性が低いため、現在はセキュリティ用途で利用するのは推奨されておらず、インターネットに公開しているファイルのチェックサム（ファイルの改ざんや欠損がないことを確認する）などに利用するのが主な利用用途となっています。

*強衝突耐性...ハッシュ値が一致する２つのメッセージを発見することが困難となる性質のこと。

### ４. 暗号鍵

#### 暗号化種類

1. 共通鍵暗号方式
1. 公開鍵暗号方式
1. ハイブリット暗号方式（共通鍵と公開鍵の組み合わせ）
1. ディフィ・ヘルマン鍵交換法

#### 1. 共通鍵暗号方式

双方のデータのやりとりにおいて、共通の鍵をお互いがもっておいて暗号化、復元を行う方式。安全な鍵の受け渡しが必要となる。また、複数人でのやりとりでは、受取人ごとに異なる鍵を作成する必要がある。

＜AさんとBさんのやり取りの場合＞

Aさん（共通鍵の作成）
Aさん→Bさん（AさんからBさんに共通鍵を渡しておく）
Aさん→Bさん（AさんからBさんに暗号文を送る）
Bさん→Aさん（Bさんが共通鍵で復号して平文に変更を加えAさんに共通鍵で暗号化して渡す）
Aさん（共通鍵で復号）

#### 2. 公開鍵暗号方式と一方向関数

双方のデータのやりとりにおいて、あらかじめ閉める鍵を持っておき、受け取る方は、最初から開ける鍵を持っておけば、鍵をやり取りする必要はない。

#### 一方向関数

素数の積と素因数分解のように、数字を掛け合わせるのは簡単だが、素因数分解をするのは難しいという性質。
（３００桁の数を素因数分解するのにコンピューターを用いても天文学的な時間がかかることを利用する）

#### 公開鍵暗号方式

＜AさんとBさんのやり取りの場合＞

Aさん（公開鍵と秘密鍵の作成）
Aさん→Bさん（AさんからBさんに公開鍵を渡す）
Bさん→Aさん（Bさんが公開鍵で平文を暗号文にしてAさんに渡す）
Aさん（予め作成しておいた秘密鍵で復号）

※電子署名はこの公開鍵と秘密鍵が逆になったものと説明可能。

#### 暗号化の種類
|暗号方式|主なアルゴリズム|
|:--|:--|:--|
|共通鍵暗号|AES、RC4、DES、3DES|
|秘密鍵暗号|RSA、ElGamal|

AES暗号のアルゴリズム：
DESの上位版。Advanced Encryption Standardの略。Rijndael (ラインダール) というアルゴリズムがつかわれていて、ブロック長 128 ビットの*対称暗号アルゴリズムです。鍵のビット長は AES の規格では 128, 192, 256 ビットの3種類あり、それぞれ AES-128, AES-192, AES-256 と呼ばれています。AES の場合なら1回の処理で暗号化するのは 128 ビット (16 バイト) です。しかし、通常暗号化したい文章は当然もっと長いので、この*ブロック暗号を繰り返し使って、長い文章全体を暗号化する必要があります。ブロック暗号を繰り返す方法のことをブロック暗号の「*モード」と呼びます。ブロック暗号のモードにはいろいろな種類があります。

[AES encryption](https://aesencryption.net/)より
a => r4VekPQKVZcbG0Q9lyqDEg==

*対称暗号...暗号システムの内、先の暗号鍵と復号鍵に同じ鍵を用いる方式を対称暗号方式、 あるいは秘密鍵方式と言います。
*ブロック暗号...共通鍵暗号の一種で、情報をブロックと呼ばれる一定長のまとまりに分割して処理を行う暗号方式の総称。
*モード...モード（利用モード）とはブロック長nのブロック暗号Eを用いて、nより長い平文M=(m1,…,mt)を暗号化するための技術である。ECB,CTR,CBC,CFB,OFBモードなどがある。詳しくは参考URl [Security Akademeia](http://akademeia.info/index.php?FrontPage)

RSA暗号のアルゴリズム：
公開鍵暗号方式の暗号化の一つ。RSA暗号というシンプルな暗号化の方式。

-   _暗号文=平文^E mod N_
-   _平文=暗号文^D mod N_
N : 素数の積

参考URL　[公開鍵暗号](https://persol-tech-s.co.jp/corporate/security/article.html?id=26)
#### メリット、デメリットまとめ
|  | メリット | デメリット |
|:--|:--|:--|
| 共通鍵暗号方式 | 暗号化/復号の処理速度が高速。送受信する相手が少ないと鍵の管理は容易 | 送受信する相手が多いと鍵の管理が煩雑。最初に安全に鍵を渡す必要がある。* |
| 公開鍵暗号方式 | 公開鍵が漏洩されたとしても暗号文を復元できない。 | アルゴリズムが高度で処理内容も複雑なため、暗号化と復号の処理に時間がかかる。* |

*暗号化のニーズが遠隔地でのデータのやり取りをする場合なので、例えば最初に鍵を手渡しすることなどはニーズにそぐわない。
*例えば、IP電話などリアルタイムの通信では遅延が発生して品質が劣化する問題がある。

※参考URL [PKI（公開鍵暗号基盤）とは](https://jp.globalsign.com/knowledge/pki_keycryptosystem.html)

#### 3. ハイブリット暗号方式

共通鍵暗号方式のデメリットと公開鍵暗号方式のデメリットをお互いにいいとこ取りをして解消した暗号方式。共通キーの受け渡しを公開鍵暗号方式で暗号化する。

#### 4. ディフィ・ヘルマン鍵交換法

事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする暗号プロトコルのこと。離散対数問題を用いて鍵が盗まれたとしてもほとんど解読できない共通鍵を生成する。

### ５. 認証

#### 通信プロトコルとSSL通信

通信プロトコルとは通信する内容を解読・適切に処理を行うための通信ルールのことです。また、httpとはWebサーバとWebクライアント（ブラウザ等）用の通信プロトコルです。

httpsとは？：
通信を暗号化するもので、安全にWeb情報のやりとりを行うことができます。万が一通信経路から情報が抜き取られたとしても、暗号化されているので内容を判別することは困難な仕様になっています。

参考URL　[httpsとは？](https://cspssl.jp/guide/https.php)

#### SSL暗号化通信

インターネット上におけるデータの送受信は、盗聴やなりすましによって悪意のある第三者にデータを悪用されてしまう危険性がある（実在のホームページにそっくりなサイトをつくり、パスワードや暗証番号を入力させるなど”フィッシング詐欺”）。そこでSSL（Secure Sockets Layer）の仕組みを用いて、インターネット上での通信を暗号化します。

SSLが導入されているページでは、ブラウザのアドレスバーに表示されるURL「http://」にセキュア（Secure）を表す「s」が付き、「https://」と表示されます。

#### SSLの仕組み

ブラウザからSSLを利用したサイトへアクセス（サーバへ接続要求）すると、サーバ証明書と公開鍵が返ってきます。その公開鍵で共通鍵を暗号化し送付します。暗号鍵で復号して認証します。以後、共通鍵でブラウザとサーバ間のやり取りがなされます。

#### SSLとTLS（Transport Layer Security）
SSLとTLSの違いとは？
歴史的な観点ではTLSはSSLの次世代規格です。現在一般的に「SSL」と呼んでいるものは実質「TLS」を指していることも多く、場合によってはその両方をふまえて「SSL/TLS」と表記されることもあります。

#### 認証局とは？
認証局（CA：Certification Authority）の役割の一つ目は電子証明書を発行することです。たとえば、メールの暗号化などに使われるクライアント証明書の発行の場合、登記事項証明書や印鑑登録証明書を用いて申請元の企業が実在しているかを確認したりします。二つ目の役割は、失効の依頼を受けた電子証明書や秘密鍵の危殆化の可能性のある証明書を失効させることです。

#### 認証局の構成
認証局は、電子証明書の申請者が提出した所有者情報を審査する機関である登録局（Registration Authority）、登録局からの要求に基づいて実際に電子証明書の発行や失効を行う機関である発行局（Issuing Authority）、ならびに認証局に関する情報や電子証明書の有効性に関する情報を提供するリポジトリ（Repository）から構成されています。リポジトリの公開を義務付けている認証局では、リポジトリからルート証明書や中間CA証明書、CRLをダウンロードすることができます。

#### ルート認証局とは？

>ルート認証局とは、インターネット上で本人確認等を行う「電子証明書（デジタル証明書）」を発行するために、信頼できる公的機関が運営するサービスの1つです。認証局は大きく「ルート認証局」と「中間認証局」に二分できます。
ルート認証局は自分の正当性を自分自身で証明でき、他の認証局にも証明書を発行できる、最上位の認証局です。これに対して中間認証局は、自分の正当性を自分自身で証明することができず、上位認証局からの認証を受ける必要があります。ルート認証局が自分自身を証明するための証明書を「ルート証明書」と言います。また中間認証局が自分自身を証明するため、上位認証局に発行してもらう証明書を「中間証明書」と言います。
認証局は、電子証明書の申請者が提出した所有者情報を審査する「登録局（Registration Authority）」、登録局からの要求に基づいて電子証明書の発行や失効を行う「発行局（Issuing Authority）」、認証局に関する情報や電子証明書の有効性に関する情報を管理・提供する「リポジトリ（Repository）」で構成されています。ルート証明書や中間証明書はリポジトリからダウンロードできます。
公的に認められる電子証明書は、公的に認められた認証局から発行される必要があります。このような認証局を「パブリック認証局」と言います。これに対し、企業や個人が独自の運用基準を設けて設置した認証局を「プライベート認証局」と言います。プライベート認証局が発行する電子証明書は公的には正当であると認められませんが、特定組織内のユーザ認証（例えばクライアント証明書での認証）に使用する場合には、プライベート認証局で電子証明書を発行・管理するケースも少なくありません。

F5networksより引用

#### プライベート認証局とパブリック認証局
パブリック認証局は、発行する電子証明書のルート証明書が、一般的なウェブブラウザやメールソフトにあらかじめ組み込まれており、ルート証明書の配布やインストールが不要なため、取引先など外部とのやり取りに電子証明書を利用する場合に煩雑な設定が必要なく便利です。プライベート認証局は事業会社などが独自の運用基準を設けて設立したものです。ルート証明書の配布や設定などに手間が掛かりますが、運用規程を自由に設定できるため、社内だけなど、限られたネットワークで電子証明書を利用する場合は、プライベート認証局を設立し電子証明書を発行する方が便利です。

#### サーバ証明書

SSLサーバ証明書には、ウェブサイト運営者の身元保証の保証レベルによっていくつかの種類があり導入コストも異なります。ウェブサイト運営者が必要性に応じて選択しなくてはなりません。

1. ドメイン認証SSL（認証レベル1）
3. 企業認証SSL（認証レベル2）
4. EV認証SSL（認証レベル3）

> SSLサーバー証明書は、認証レベルにより「ドメイン認証」「企業認証」「EV認証」の3つに分けられます。ドメイン認証は、ドメイン名の所有権のみを確認し、企業認証は、ドメインの所有権に加え、申請した組織の実在性を確認します。最も厳格に審査するEV認証では、登記簿謄本や第三者機関のデータベース等により法的・物理的に組織の実在性を確認することで、高い信頼性を実現します。なお、3つの認証方式で証明書自体の機能（暗号強度など）には差がありません。証明書の発行申請者をどのように審査するかによって種類が異なります。

ーSAKURA internet より引用

#### デジタル署名とデジタル証明書の違い
デジタル署名は、文書に対して「ハッシュ化」と「秘密鍵による暗号化」を行ったものです。文書、画像や音声データなどに対して、ある時点の状態を明示するという役割を果たします。

デジタル証明書は、証明したい内容に対して「ハッシュ化」と「秘密鍵による暗号化」を行ったものです。
証明書を信頼できる第三者機関から発行してもらうことで、公的な確認（証明）ができる仕組みです。

デジタル署名：
デジタル署名とは、送付されたデータが確実に本人のものであることを証明する技術です。ハッシュ関数と公開鍵暗号方式（PKI：公開鍵基盤）を組み合わせて電子的な署名を作成します。

デジタル証明書：
デジタル証明書とは、第三者機関である「認証局」によって発行される電子式の身分証明書です。公開鍵の正当性を証明する役割を持つことから、「公開鍵証明書」とも呼ばれます。デジタル証明書は、ITU-T勧告の「X.509」で定義されています。

#### OpenSSLとは
暗号通信プロトコルであるSSLおよびTLSを利用するために必要な機能を提供する、オープンソースの暗号化ライブラリです。オープンソースソフトウェアとして公開されているため、誰でも自由に入手・利用したり開発したプログラムと共に再配布されています。様々なプログラミング言語やOSに対してライブラリが使えるようになっており、事実上の業界標準となっています。プログラムに暗号通信機能を組み込む手段として様々な分野で幅広く利用されています。また、OpenSSLは様々なハッシュ方式に対応しています。 MD4, MD5, SHA-1, SHA-2, RIPEMD-160といったハッシュ関数を用いてハッシュ値を求めることができます。

参考URL [SAKURA internet  SSLサーバー証明書の違い](https://ssl.sakura.ad.jp/column/attestation-level/)

ID/Passwordによる認証
２要素認証（I know/ I have）
パスワードは '知っている' 認証
ICカードは '持っている' 認証

※参考URL [「認証」の基礎知識](https://www.segunabe.com/category/it_security_powerup/)

#### ワンタイムパスワード
二要素認証の持っているに該当し、解読不可能な規則によって表示される数字（*トークン）をログイン認証の要件とする事で、ログイン認証のセキュリティ強化を図る。

*トークン...ワンタイムパスワードで生成される数字をトークン（Token）と言う事があります。また、ワンタイムパスワードを生成する機器自体をトークンと言う事があり、例えば、カード式などの物理的な機器の場合はハードウェアトークン、スマートフォンのアプリの場合はソフトウェアトークンと呼びます。

#### ワンタイムパスワードの仕組み

時刻同期方式：
（ハードウェアトークンで主につかわれる）。ハードウェアトークンにあらかじめ時刻をキーの1つとするアルゴリズムを組み込んでおく事でハードウェアトークンと認証サーバで同じトークン番号を表示する事ができます。

チャレンジ＆レスポンス方式：
クライアントがサーバに対して認証リクエストを送信すると、サーバがランダムな文字列を生成して「チャレンジ」としてクライアントに送信します。クライアントではそのランダムな文字列とあらかじめ設定されているアルゴリズムを利用して新しい文字列を生成し、「レスポンス」として返信します。サーバ側ではサーバ自身で作成したランダムな文字列とクライアントと同じアルゴリズムを利用して新しい文字列を生成し、クライアントから送信された文字列と比較します。比較した結果、文字列が一致していれば認証します。

### ６. 攻撃

#### サイバー攻撃とは？

サーバやパソコンやスマホなどのコンピューターシステムに対し、ネットワークを通じて破壊活動やデータの窃取、改ざんなどを行うこと。特定の組織や企業、個人を標的にする場合や、不特定多数を無差別に攻撃する場合があり、その目的も様々で、金銭目的のものもあれば、そうでないものも多くあります。

参考URL サイバー攻撃可視化サイト　[NICTERWEB](http://www.nicter.jp/atlas)

#### サイバー攻撃の種類

- 特定のターゲットを狙った攻撃（標的型攻撃）

1. ランサムウェア
1. 水飲み場型攻撃
1. クリックジャッキング

- 負荷をかける攻撃

1. DoS攻撃/ DDoS攻撃
1. F5アタック

- OS・ソフト・WEBサイトなどの脆弱性を狙った攻撃

1. ゼロデイ攻撃
1. SQLインジェクション
1. OSコマンド・インジェクション
1. バッファオーバーフロー攻撃
1. クロスサイトスクリプティング
1. クロスサイトリエクストフォージェリ（CSRF）
1. バックドア
1. セッションハイジャック
1. ディレクトリトラバーサル

- パスワード関連のサイバー攻撃

1. ブルートフォースアタック
1. パスワードリスト攻撃

- マルウェアによる攻撃

1. トロイの木馬
1. ボットネット

- *ファーミングによる攻撃

1. DNSキャッシュポイズニング
1. フィッシング詐欺

*ファーミング...ユーザーに気づかれないようにして金融機関などを装った偽のWebサイトに誘導し、不正に個人情報や暗証番号などの情報を得ようとする、ネット詐欺の手口のこと。

参考URL [サイバー攻撃とは？](https://cybersecurity-jp.com/cybersecurity-guide/14651#i-2)

#### 1. ランサムウェア

概要：
ランサムウェアの多くはユーザーのパソコン内部に侵入し、勝手にファイルを暗号化したり、パスワードを設定したりして、正常にデータにアクセス出来なくすること。ユーザがデータにアクセスしようとすると、アクセスが不可能になったことを警告し、復元するための対価としてユーザに金銭の支払いを要求する。

対策：
セキュリティ対策ソフトウェアを導入したり、OSやソフトウェアのアップデートを通じてセキュリティパッチなどをこまめに適用させる。また、メールなどで怪しい添付ファイルを開かないようにするなど。

#### 2. 水飲み場型攻撃

概要：
水飲み場型攻撃とは、攻撃対象となる組織のユーザーが普段アクセスするウェブサイト（つまり、水飲み場）を特定し、そのサイトを改ざんし、ドライブバイダウンロード攻撃（Webブラウザーを通じて、ユーザーに気付かれないように悪意のあるソフトウェアをダウンロードさせる攻撃手法）などを利用してマルウェアに感染させようとする標的型攻撃の一種。

対策：
この攻撃は組織内のインターネットユーザーが日常的に訪れるサイトに罠がしかけられることから、入口が不特定多数に及ぶため、十分な注意が必要です。入り口対策と出口対策をしっかりする。つまり、マルウェアの侵入を防ぐため、知っている相手からのメールであってもリンクをクリックする際はURLを確認する、ファイアウォールの設置による侵入防止やOSやウィルス対策ソフトは最新版に保っておくなど。また、外部送信データのチェック（持ち出しの監視）、通信ログを監視して、不正な通信を検知・遮断したり、持ち出されても中身を見られないように暗号化したりなど、外部への流出にも注意をする。

#### 3. クリックジャッキング

概要：
クリックジャッキングとは、ユーザーが利用するWebブラウザを悪用して、ユーザーに不利益をもたらすサイバー攻撃の一種で、具体的な特徴としては、ボタンやリンクなどを透明で見えない状態にして、通常のWebページの上にかぶせてしまうというもの。Flashを利用し、Webカメラやマイクを作動させたり、ソーシャル・ネットワーキング・サービスのプロフィールの公開設定を変更させたりされてしまう。最近では攻撃の一つ一つが巧妙化し、私たちコンピュータの利用者や企業、官公庁などにとって、脅威となっている。

対策：
制作側ではHTTPレスポンスヘッダーにX-FRAME-OPTIONSを付けたり、プログラムのセキュリティアップデートを適用すること。利用者側ではブラウザでJavaScriptやFlashなどを無効にする、ブラウザやOSにセキュリティアップデートを適用することなどが考えられる。

#### 1. DoS攻撃/ DDoS攻撃

概要：
２種類の類型があり、第一の類型はウェブサービスに大量のリクエストや巨大なデータを送りつけるなどしてサービスを利用不能にするフラッド攻撃（Flood＝「洪水」）であり、第二の類型はサービスの脆弱性を利用する事でサービスに例外処理をさせるなどしてサービスを利用不能にする攻撃。主に被害者の活動を停止させたり、経済的ダメージを負わせたりすることを目的にしている。（DDoS攻撃はDoS攻撃の進化版で、攻撃者がその被害を拡大させるために一旦無関係のたくさんのパソコンを経由する。）

対策：
防御対策としてはDoS攻撃に対応したファイアウォールやサーバやネットワークトラフィックを監視システムを導入しDoS攻撃を仕掛けてくるIPアドレスを特定、遮断する。

#### 1. F5

概要：
「F5攻撃」、「F5連続攻撃」などとも呼ばれる攻撃で、キーボードの「F5」キーを押してリロードするだけの簡単でアナログな攻撃手法です。あるWebサイトに対して多くのリクエストを送信して、サーバをダウンさせようとする攻撃で、対象のシステムにもよりますがDoS攻撃になり得てしまう攻撃です。

対策：
同じIPアドレスからの連続アクセスを遮断する設定にする。発信元が特定できれば、そこからのアクセスを遮断する。

*参考URL　[教えて！goo F5攻撃は犯罪ですか？](https://oshiete.goo.ne.jp/qa/3522161.html)

#### 1. ゼロビディ攻撃

概要：
発見されたセキュリティーホールが開発側によって修正されるまでの、「タイムラグ」を利用し、ゼロデイ攻撃は、OSやアプリ開発元によって修正される前にサイバー攻撃を仕掛ける手法

対策：
この種の攻撃には対応策があまりないというのが現状です。システムの基幹部分に使われる等の致命的な脆弱性に対しては、開発側が問題を修正する前の一時的な対応策として、「緩和パッチ」を公開するケースも少なく、事業の性質上、サービスの停止を行うことが難しい場合はこれらの緩和パッチを導入することが、現在最も有効な手段だと考えられています。

#### 2. SQLインジェクション
概要：
 アプリケーション上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。また、その攻撃を可能とする脆弱性のことである。

対策：
入力値を適切にエスケープする。静的プレースホルダーを利用する。（SQL文の実行前に、SQL 文の構文解析などの準備をしておく）

#### 3. OSコマンドインジェクション

概要：
閲覧者からのデータの入力や操作を受け付けるようなWEBサイトで、プログラムに与えるパラメータにOSに対する命令文（コマンド）を紛れ込ませて不正に操作する攻撃。情報漏えい、改ざん・削除、不正なシステムの操作、ウィルス感染などの被害が起こったり、踏み台にされ、他サイトへの攻撃をされてしまったときには、自分は悪くなくても、加害者になったりという可能性がある。

対策：
OSコマンド呼び出しを使わない実装方法を選択する。シェル呼び出し機能のある関数の利用を避けること。また、外部から入力された文字列をコマンドラインのパラメータに渡さないようにしたり、OSコマンドに渡すパラメータを安全な関数によりエスケープする。*サニタイジングを施す。

*サニタイジング...WEBサイトの入力フォームへの入力データから、HTMLタグ、JavaScript、SQL文などを検出し、それらを他の文字列に置き換える操作のこと。

#### 4. バッファオーバーフロー

概要：
バッファとはデータの保管領域のことである。また、コンピュータではメモリ上に確保する領域のことをバッファ領域とよび、コンピュータ上のメモリで確保されるメモリの中の領域は「スタック」と「ヒープ」領域の２種類があります。オーバーフローとは、メモリ上に確保されたバッファが溢れ、不定の動作（メモリアドレスの不正上書きなど）を引きおこしてしまうことを言います。スタックオーバーフローとは、関数の呼び出しにも方法としてスタックが利用されますが、これがセキュリティーホールになることがある。スタックされた領域には、データの領域とリターンアドレスが保持され、バッファでオーバーフローが発生すると、リターンアドレスが格納されているアドレスも書き換えられてしまう可能性があり、関数に戻る際に正常なアドレスに戻れなくなります。悪意あるユーザはこのリターンアドレスに「別のコードへのメモリアドレス」をセットすることで 悪意のあるコードや関数を実行させようとします。

対策：
入力データを受け付けるときに基本的にはバッファが必要になる。これらを始めバッファのチェックを厳格にすることで、攻撃コードのはいる隙をなくす。危険な関数はつかわないこと。古くから存在する関数はセキュアではない可能性が高いのでなるべく避ける。C言語やアセンブリはメモリの操作をユーザに委ねている、Cは高級言語だが、メモリ操作が原因でオーバーフローになることが多い、よってより高級な言語を使うことで、ある程度、安全性が向上する。

#### 5. クロスサイトスクリプティング（XSS）
概要：
ユーザのアクセス時に表示内容が生成される「動的Webページ」の脆弱性、もしくはその脆弱性を利用した攻撃方法のこと。攻撃者が不正なコードを入力して標的ユーザーのWebブラウザ上で、不正なタグやコードが動作するよう誘導すること。

対策：
Webページの本文やHTMLタグの属性値等に相当する全ての出力要素にエスケープ処理を行う。（ <　→　&gt; に置き換える等 ）

#### 6. クロスサイトリクエストフォージェリ（CSRF）
概要：
SNSなどのウェブサイトにログイン中のユーザーが、並行して開いた掲示板の攻撃者が作成したリンクをクリックしたときに（攻撃者によって誘導）、リンクの中にある悪意のある要求（リクエスト）があたかもユーザーが要求したかのように偽って、ウェブサイトにログイン権限で可能なユーザーが意図しない別の操作（例えば非公開の日記を公開にしてしまうなど）をさせられてしまうこと。

対策：
ユーザ本人以外の者が捏造したコンテンツに基づいて発せられたHTTPリクエストを、Webアプリケーションが受け付けないようにする。そのために代金決済やコミュニティ脱退等の重要な処理の場面において、秘密の「照合情報」をWebアプリケーションとブラウザの間でやりとりし、第三者が用意した偽のコンテンツから発せられたリクエストを区別できるようにする。

#### 7. バックドア（裏口）

概要：
コンピュータに設けられた通信経路のうち、正規の経路や手段を経ずにシステムへ侵入するために設けられる接続経路のこと。クラッカーなどと呼ばれる悪意を持ったユーザーが、他人のコンピュータのシステムへの不正侵入に成功した際、次回から容易にアクセスできるようにしたり、あるいは、不正アクセスに気付かれて防御された際のすり抜け道を作ったりする目的で設置される。バックドアが作られると、ログイン認証などによる防御などができなくなり、マシンのオーナーに気付かれないうちに、ゾンビマシン化されたり、ボットネットに組み入れたりされる。

対策：
信頼できないサイトの訪問や、プログラムのインストールは行わないこと。セキュリティ対策ソフト、ベンダーが提供する駆除ツールの利用、バックドアごとに個別にプログラム消去、レジストリ修正などを行う。

#### 8. セッションハイジャック
概要：
コンピューター通信でりようする「セッション」を窃取し、本人に成り代わって通信を行うこと。簡単に言うとなりすましのことである。

対策：
攻撃者にセッションIDを察知されないようにする。例えばワンタイムセッションIDなど、アクセスするたびにIDが変わるようにすることで特定が難しくする。

#### 9. ディレクトリトラバーサル
概要：
「../」等の親ディレクトリを示す表記をファイル名パラメータの中に混入し、サーバ内の任意のファイルを読み出そうとする攻撃である。

対策：
ファイル名をパラメータとして受け取るプログラムは要注意プログラムである。そのようなプログラムをWebサイトに置くことを決めた場合は、慎重に設計をする。可能であれば、ファイル名パラメータの仕様として、ディレクトリ修飾のあるファイル名（「/」を含むパス名）を禁止するものとし、その仕様に沿った入力検査を行う。

#### 1. ブルートフォースアタック

概要：
ユーザのアカウント・パスワードを解読するため、考えられる全てのパターンを試す方法で、文字通り総当たりの攻撃。

対策：
最低８桁以上のパスワードを設定すること。IPA（独立行政法人 情報処理推進機構）では、中小企業の情報セキュリティ対策ガイドライン付録の「情報セキュリティ5か条」では、「パスワードは英数字記号含めて10文字以上にする」と書かれています。

参考パスワードパターン数

|利用文字種桁数 |7桁 |8桁 |9桁 |10桁 |
|:---|:---|:---|:---|:---|
|英子文字のみ(26文字種)|約80億通り|約2088億通り|約5.4兆通り|約141兆通り|
|英大小文字+数字(62文字種)|約3.5兆通り|約218兆通り|約1.4京通り|約84京通り|
|英大小文字+数字+記号(96文字種)|約75兆通り|約7414兆通り|約69京通り|約6648京通り|

*英小文字のみの８桁のパスワードだと８秒以下で解析されてしまう。英大小文字+数字+記号の１０桁で６年かかる。（２０１８年現在、大雑把に一般的なPCのスペックでの見積もり）

#### 2. パスワードリスト攻撃

概要：
パスワードリスト攻撃とは、攻撃者がどこかで入手したID・パスワードのリストを用いて、正規ルートからの不正アクセスを試みるサイバー攻撃です。ネットユーザーの大半が複数のサイトで共通したID・パスワードを用いる傾向を利用した攻撃方法で、この攻撃は他の不正アクセスと異なり、正規のログイン方法を試みる手法であるため、プログラムによる検出が難しい点が特徴。

対策：
パスワードを使い回さないこと。また、紙のメモにパスワードを記録したり、パスワード管理ソフトを使う、パスコード付きのメモに書くなど。

#### 1. トロイの木馬

概要：
*マルウェアの一種。ユーザー側は攻撃を受けていることに気づきにくいのも特徴で、数あるマルウェアの中でも最も危険とされる。無害なアプリケーションを装いつつ（実際に無害な動作を行うものも）、*バックドアの構築やウイルスのダウンロードを行う。

*マルウェア...不正かつ有害に動作させる意図で作成された悪意のあるソフトウェアや悪質なコードの総称。（コンピュータウイルスやワームなどがある。）


|  | 存在方法 | 自己増殖 |
|:--|:--|:--|
| ウイルス | 他のファイルに寄生 | する |
| ワーム | 単体で存在可能 | する |
| トロイの木馬 | 無害ファイルになりすまし | しない |

*バックドア...管理者に気が付かれないようにポートを開き、攻撃者が遠隔操作を実行する。内部の情報を流出させたり、犯罪行為の実行役に仕立てあげる。

トロイの木馬にはたくさんの亜種が存在し、他に以下のようなものがある。
1. ダウンローダー型
2. クリッカー型
3. パスワード窃盗型
4. プロキシ型
5. ドロッパー型
6. 迷彩型ゼウス

対策：
ブラウザを最新のものにする。信頼できないURLをクリックしない、ソフトウェアを開かない。感染してしまった場合はウイルス対策ソフトで駆除を試みる。

#### 2. ボットネット

概要：
ボットとはネットワーク経由でコマンドを実行できる悪意のあるプログラムのこと。ボットに感染すると、外部から遠隔操作される「操り人形」と化してしまう。  感染しているかの判断が見かけや症状からは難しく、多くのユーザーは気づくことができないため厄介である。ユーザーとは無関係に外部からの命令を受け、DDoS攻撃や迷惑メールの送信、フィッシングサイトの構築、サイバー攻撃の踏み台とされてしまうなど、端末が悪用されてしまう恐れがある。「ボットネット」とはこうしたボットを束ねてネットワーク化したもの。ボットネットを構築すると、悪意のある攻撃者は特定のターゲットに一度に大規模な攻撃を仕掛けられるようになる。数万から数十万、場合によっては百万といった単位でボット化したパソコンを、C&Cサーバー（Command and Control server：ボットネットに指令を送ったり制御するサーバー）でコントロールして攻撃をしかける。

対策：
差出人が不明確な添付ファイルは絶対に開かないようにすること。そのうえでまず、ボットネットに加担していないかどうか、最新のセキュリティソフトで検出する。もし、ボットネットが検出された場合は感染のあったネットバンキングなどのパスワードを変更し、ウイルスソフトで感染源を駆除する。

#### 1. DNSキャッシュポイズニング攻撃

概要：
*フルサービスリゾルバ（　DNSサーバー　）が、ドメインをIPアドレスに変換した際、次回から高速に変換が行えるようにキャッシュを保存しておく。このキャッシュが任意の情報で上書きされることにより、あるドメインが本来対応するIPアドレスではない、別のIPアドレスに対応づけられてしまう。DNSキャッシュポイズニングに侵されると、URLを正確に入力したユーザーが否応なく別のWebサイトに接続されてしまうようになる。*Kaminsky attackなどの手法が有名。

*フルサービスリゾルバ...IPアドレスとドメイン名の紐付けに関して、まず自分自身の持っているキャッシュを見て探し、それでも分からなければ他のDNSサーバーに問い合わせを行うDNSサーバー。

*Kaminsky attack...これまではTTLが十分に長ければ、成功率を低くできると考えられてきましたが、Kaminsky氏による攻撃手法では、TTLの長さに関係なく攻撃することが可能。
参考URL　[日本ネットワークインフォメーションセンター](https://www.nic.ad.jp/ja/newsletter/No40/0800.html)

対策：
SSLによる認証を行っていれば、通信相手が偽のホストかどうか検知できます。しかし、DNSキャッシュポイズニングによる影響はWebだけではなく、電子メールやFTPなど多岐にわたるため、SSLは部分的な防御にしかなりません。そこで、根本的な解決策としてはDNSSECがあげられます。DNSSECでは、権威サーバによって応答に電子署名が行われ、キャッシュサーバがその署名を検証することで、応答が偽装・改ざんされているかどうかを確認できるようになります。そのため、キャッシュポイズニング攻撃に対する防御はほぼ完全になります。電子署名に必要な鍵の管理や配布方法の確立など課題は残っている。

#### 2. フィッシング詐欺

概要：
実在の銀行やクレジットカード、ショッピングサイトなどを装ったメールをユーザーに送信し、これらのホームページとそっくりなサイトへ誘導して、*重要な情報を入力させて搾取する（フィッシング）詐欺のこと。

対策：
銀行やクレジットカード会社が口座番号等をきくことはないので、怪しいメールのリンクはクリックしないようにする。フィッシングやスパムメール対策のソフトウェアを入れる。あらかじめこれらの会社のメーリングリストをつくっておき、なにか怪しいなと感じたらすぐに電話で確認して、フィッシングサイトと
発覚した際には*フィッシング対策協議会に連絡する。

*重要な情報...個人情報。クレジットカード番号、インターネットバンキングのパスワード、オークションサイトなどのIDやパスワード。
*[フィッシング対策協議会](https://www.antiphishing.jp/)

※参考URL [IPA情報セキュリティー脆弱性対策](https://www.ipa.go.jp/security/vuln/index.html)

#### その他の攻撃

ハイブリットな攻撃（詐欺×サイバー犯罪）：
SNSを使い、以前ではあり得なかった"ターゲットと親密になる"事でいとも簡単にディープな情報までもが漏洩しています。これは非常に狭くクローズドな空間。つまり、チャットやDMなど"見えない場所"で進行しています。プロジェクトでみすをしてしまったなど、人間の寂しさや辛さや悲しさといった負の要素につけ込み、情報を盗み出してサイバー攻撃につながげられてしまいます。対策としては、SNSは、様々なビジネスチャンスや人との繋がりを得る事が出来る素晴らしいサービスであるが故に"パッチの貼れない重大な脆弱性"がある事ということをしっかり認識しておくことです。その脆弱性はあなたの心の中にあるからです。また、企業や組合などのブラバシーポリシーなど危機管理を見直す必要があります。

IoT機器を狙うマルウェア「mirai」：
近年増えているのが、IoT関連のサイバー攻撃。IoT機器を乗っ取り、たくさんの機器を使って巨大な「ボットネット」を形成。「*C＆Cサーバ」として指示を出すことで、DDoS攻撃に移行するというもの。ボットネットによる組織的な攻撃を受けた対象サーバは膨大なパケット負荷に耐え切れず、本来のサービスを提供できない状態に陥る。IoT機器はPCやスマートフォンなどの端末よりもユーザーによる管理意識が低く、人によっては「IDやパスワードは初期設定のまま」というケースも多いです。コピー機や複合機も同じことが言えます。デフォルトパスワードの変更や最新ファームウェアの導入、回線を切断。電源を入れなおすなどの対策が考えられます。

*C＆Cサーバ...Command & Control Server の略で、マルウェアに感染してボットと化したコンピュータ群（ボットネット）に指令（command）を送り、制御（control）の中心となるサーバのこと。

### ７. リスクマネジメント

#### リスクと課題の違い
課題は、日々のプロジェクトですでに起こった事（明確になった事実）のこと。一方、リスクとはすでに起こった事象ではなく、今後起こるかもしれない（不確実な事象）のことをいう。

> マネジメントという観点から説明すると、課題マネジメントはすでに発生した問題の対処であり、「事後処置的なマネジメント」といえる。これに対してリスクマネジメントでは、不確実な事象が顕在化する前に把握し、プロジェクトにマイナスの影響を与える事象が発生しないよう、未然に対処する。発生した場合でもその影響を最小限にとどめるように対処する。いい換えれば「事前予防的なマネジメント」である。

参考URL [できるPMの決め手は「リスクマネジメント」](http://www.atmarkit.co.jp/ait/articles/0505/25/news114.html)より引用

#### リスクマネジメントの目的
1.  組織の情報を保存、処理、伝達する IT システムをより適切に保護すること。
2. 経営陣が、IT 予算の一部となるリスクマネジメントに対する支出を正当化できるようにすること。
3. リスクマネジメント実施の結果作成される文書に基づいて、経営陣が IT システムに対して認可 (または 承認) を行えるよう支援する。

#### リスク軽減の考え方
あらゆるリスクを排除することは通常非現実的であり、ほとんど不可能であることから、組織の資源やミッションに対する悪影響を最小限に保ちつつミッションにかかわるリスクを許容レベルにまで低減するために、最もコストのかからない手法を用いて、最も適した管理策を導入するのが相応しいという考え方。

#### システム開発のフロー（リスクマネジメント）
要求分析
　　　　　↓
リスク分析
　　　　　↓
セキュリティポリシーの策定
　　　　　↓
システムの設計と実装
　　　　　↓
セキュリティ運用
　　　　　↓
セキリュティ監査
　　　　　↓
リスク分析（以下繰り返し）

#### リスクへの対応策
リスクを現実化させない方法(負の要因だけでなく正の要因もある)、あるいは現実化した場合の影響を抑える方法であり、以下の4つがある。
　 1. 回避
　 2. 軽減
　 3. 移転（転嫁）
　 4. 受容
リスクへ対応する際は、リスクの大きさ（影響と発生頻度）と投入する資源とのバランスを取る。過度に資源に頼らず、対話や折衝、知恵と工夫で対処することが望ましい。

参考PDF [IT システムのためのリスクマネジメントガイド](https://www.ipa.go.jp/files/000015364.pdf)

参考URL [「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](http://wa3.i-3-i.info/index.html)