応用情報技術者試験 技術要素編

# ヒューマンインターヘェース
人とシステムの接点となる入力画面・出力画面などのインターヘェース。

## ヒューマンインターヘェース技術/インターヘェース設計
> フループルーフ設計：人の不注意、誤操作を防ぐための仕組み。

### 入力チェック一覧
* ニューメリックチェック：データを数値で扱う場合、入力データが数値であるかどうか。
* フォーマットチェック：形式指定がある場合に、入力データが指定形式かどうか。
* リミットチェック：字数制限がある場合に、範囲内に収まっているか。
* 論理チェック：複数のデータの組み合わせに論理的な矛盾がないか。
* 照合チェック：入力データがシステム内に存在するかどうか、照らし合わせる。
* バランスチェック：複数の計算結果が等しくなる場合に、計算結果が正しいか。
* シーケンスチェック：データが定められた順番に並んでいるのか。
* 重複チェック：データに重複がないか。

###コード設計
商品番号や学籍番号などデータを識別するためのコードを作成する体系。

* 順番コード：連番を付与するコード。
* 区分コード：いくつかの区分に分けて、ブロックの上位桁をブロックにして、ブロック内に連番でコードを付与する。
* 桁別コード：コードを桁ごとに区切って、区切りごとに大中小分類などの階層化した分類を行い意味を付与する。
* 表意コード(ニモニックコード)：対象物を連想できるように文字列を割り振る。
* デシマルコード(10進コード)：0〜9までの数値を割り振って10グループに分割、さらに10個のサブグループに分割。
* 合成コード：複数のコードを組み合わせて利用。

###画面・帳票設計
* 画面設計：入力の流れが自然になるよう、ルールを設けたり、操作ガイダンスを表示したりする。
* 帳票設計：関連項目を隣接させる、必要最小限の情報を盛り込む、ルールを決めて帳票に統一性を持たせるなど。
* スタイルシート：サイト全体の色調やデザインに統一性を持たせるためのもの。

### ユニバーサルデザイン
年齢や文化、障害の有無や能力の違いなどにかかわらず、できる限り多くの人が快適に利用できる事を目指す考え方。(Webアクセシビリティ)

### ナビゲーション
ユーザビリティ向上のために、Webページ上のページの把握、遷移をしやすくする仕組み。

* パンくずリスト：階層構造をトップページから現在地まで表示する事。
* サイトマップ：ページがどのようになってるかわかりやすく表示したページ。
* ナビゲーションバー：コンテンツや分類を表示してユーザーがコンテンツに移動できるようにするバー。
* グローバルナビゲーション：全体を把握するためのナビゲーションバー。カテゴリの大項目。
* ローカルナビゲーション：特定のカテゴリの中のカテゴリ一覧を表示して目的のコンテンツに誘導するナビゲーション。カテゴリの中項目。
* スクロールバー：ウィンドウ内にサイトが収まらない場合に、一部だけ表示して、必要に応じてページを移動するGUIツール。

### GUI
* ウィンドウ：表示するための領域。
* アイコン：画像で表現したもの。
* ラジオボタン：複数の項目から1つだけ選択させるボタン。
* チェックボタン：複数の選択項目からいくつか選択させるボタン。
* ダイアログボタン：ユーザーに情報を提示し、必要に応じてユーザーに応答してもらうもの。エラーメッセージを表示したりする。
* リストボックス：複数の選択肢が一覧表示され、一覧の中から選択するもの。
* コンボボックス：選択項目から一つ選ぶ時に、選択項目にないものはテキストボックスに入力する。
* プルダウンメニュー：上から下へ引出されるように選択項目の一覧が表示されるメニュー。
* ポップアップメニュー：確認時に画面上に表示されるメニュー。
* サムネイル：画面、文章を縮小して全体を見やすくできるようにしたもの。
* オートコンプリート：入力中の文字から過去の入力履歴を参照して、候補となる文字列の一覧を表示する機能。

### ユーザービリティ評価
サービス改善の為に、利用者・専門家がサービスを評価してフィードバックしてもらいます。
* アンケート調査：アンケート用紙を配布して利用者に記入してもらう。
* 思考発話法：ユーザーにサービスを利用してもらい、操作方法を認識するたびに発話してもらい問題点を確認する。
* 回顧法：被験者がサービスを利用して、専門家がその行動を分析して事後に質問する。回答と共に分析する。
* インタビュー法：利用者に直接インタビューする。
* ヒューリスティック評価法：過去の経験則を元に、設計書やプロトタイプを見て専門家が評価する。
* ユーザビリティテスト：被験者にサービスを利用してもらい、行動や発言から問題点を確認する。
* 認知的ウォークスルー法：対象とするユーザー像を設定し、行動をシミュレーションする事で問題点を明らかにする。
* ログデータ分析法：被験者の操作ログから、利用パターンを分析する。

### アクセシビリティ
等しい水準のユーザービリティを全ての個人について達成する事ではなく、
少なくともある程度のユーザービリティを全ての個人について達成する事を目標とする。

### ユーザーインタヘェース
機械と利用者の間で情報をやりとりするためのインタヘェース

* 感性インタヘェース：機械と人間を心理と感性を元に直観的に結びつけるインタヘェース。
* ノンバーバルインタフェース：音声以外の身振り、視線、表情等を利用したインタヘェース。
* 自然言語インタヘェース：人間同士のように言語を用いてコンピュータと会話をするように操作するインタフェース。
* マルチモーダルインタフェース：音声にプラスで身振りや表情を組合わせたインタフェース。
* VUI：音声でコンピュータや端末を操作するインタフェース。
* UX：製品全体を通じて得る事ができるユーザーの体験。

# マルチメディア
文字情報に加えて、音声、画像などの様々な形態のアナログ情報をデジタル化し、コンピュータ上で統合的に扱うこと。

## マルチメディア技術
* ハイパーテキスト：コンピュータ上の文章を拡張したもの。文章にリンクを埋め込んで文章を相互に結びつけたもの。
* ハイパーメディア：ハイパーテキストを文章から画像や音声に拡張したもの。
* ストリーミング：音声、動画の転送、再生するダウンロード形式。ダウンロードと同時に再生できる。
* DRM：デジタル著作権管理
* CPRM：1回のみ録画。他のメディアにコピーできないようにする。
* HTML5：HTMLの最新バージョン。
* SMIL：Web上でマルチメディアコンテンツを表現する。XML形式で記載してコンテンツのレイアウト、再生のタイミングを設定する。
* SGML：文章の構造を記述するためのマークアップ言語で国際標準規格。
* PDF：図形、画像を埋め込んだ文章を小容量で実現できる文書ファイルフォーマット。
* Tex：数式表現が得意なフリーの文章作成用フォーマット。
* RTSP：インターネット上で動画をストリーミング配信するための制御プロトコル。

### マルチメディアファイル形式
* MP3：音声データを圧縮するフォーマット。
* MIDI：音声データをデジタル転送するための世界共通規格。
* JPEG：1670万色まで扱えるフルカラーの画像圧縮形式。
* GIF：256色の色数の少ない静止画像を扱う画像圧縮形式。
* PNG：画像データを圧縮するファイル形式。
* MPEG：情報量が多い動画や高解像度動画を格納できる国際標準規格の圧縮形式。
* H.264/MPEG-4 AVC：ビデオカメラやワンセグの動画を圧縮する規格。
* TIFF：静止画像の符号化形式。
* BMP：Windows標準使用の静止画像で、ドット単位で管理して圧縮を行わない。
* SVG：図形をXML形式で記述した画像ファイル。
* G-729：人の声を対象にした音声圧縮のアルゴリズム。
* AC-3：音声のデジタル符号化形式でDVDへの記録に用いる。

### グラフィックス処理
* 光の3原色：RGB
* 色の3原色：CMY
* 色相：色の種類。
* 明度：色の明るさ。
* 彩度：色の鮮やかさ。

### 画像の品質
* 画素(ピクセル)：画面に表示されている無数の点の数のこと。
* 解像度：画像の密度のこと。
* 階調：色の濃さや明るさを何段階で表現できるかを表す数。

## マルチメディア応用
* VR：仮想の空間を現実であるかのように知覚させる。
* AR：現実の一部に仮想の情報を加える拡張現実のこと。
* 4K/8K：横方向の画素数のこと。

### CG技術の手法
* シェーディング：画素を調整して、明暗のコントラストを出して影をつける技術。
* 陰線消去/陰面消去：3D画像において、表示する画面に収まる部分だけを表示する手法。
* クリッピング：表示領域を提示して、はみ出る部分を切り取る技術。
* ライティング：3DCG空間上に光源を表現する技法。
* レイトレーシング：光線の軌跡を追跡して計算し、光の反射、屈折を表現する手法。
* モーフィング：中間画像を生成しながら、滑らかに変化する様子を表現する技術。
* モーションキャプチャ：人やものの動きを計測して、動いた位置を数値化してデジタル的に記録する技術。
* ラジオシティ：物体から反射した光を計算して、光を表現する。
* レンダリング：抽象的なデータ集合、設定内容から演算を行い、画像を生成すること。
* テクスチャマッピング：3Dモデルの表面に画像を貼り付けて質感を高める手法。
* メタボール：物体を球体として濃度分布を設定して、滑らかに表現する手法。
* インデックスカラー：各色に番号を振って用いる際に番号を指定する。
* オーバレイ：画像上に別の画像を重ね合わせて表示させる技術。
* カーニング：文字間を詰めること。
* ディザリング：少ない色数で見かけ上表示できる色数を増やす技術。
* アンチエイリアシング：ピクセルで斜線や曲線を表現する際に生じるギザギザを目立たなくする。
* サーフィスモデル：3次元の物体を表面のみで表す技術。
* ポリゴン：多角形を用いて物体を表現する際の構成要素。
* ワイヤーフレーム：3次元の物体を線のみで表現する技法。
* セルアニメーション：セル画を用いて表現されたアニメ。
* デジタルアニメーション：コンピュータグラフィックスで動画を作成するアニメーション。

# データベース
大量のデータを一定の規則に従って並べてデータを管理する。

## データベース方式
### ACID特性
* 原子性：全て実行されるか、一つも実行されないというどちらかの状態。
* 一貫性：処理前後でデータの整合性が保たれ、矛盾の無い状態が継続される性質。
* 独立性：他の処理などに影響を与えない性質。
* 耐久性：結果は記録され、システム障害が生じても失われないこと。

### データベース管理システム(DBMS)
システムのデータベースを構築して、データを管理するためのシステム。

* 関係(リレーショナル)データベース(RDBMS)：表形式でデータを管理するDBMS。
* 主キー：レコードを識別するためのカラム。重複があってはいけない。
* オブジェクト指向データベース：操作の定義や型の継承関係の定義を可能としてオブジェクトとしてデータを格納するデータベース。

## データベース設計
### データベース設計手順
1.概念設計：実体(エンティティ)とその関連(リレーションシップ)にまとめてER図で表す。
2.論理設計：データ構造を正規化を行い詳細化する。
3.物理設計：性能向上、データのレイアウト、耐障害性、セキュリティを高めるなど。

### 3層スキーマ
* 概念スキーマ：データを論理的に構造化したもの。
* 外部スキーマ：機密データを除いた外部に公開できるデータに限定したスキーマ。
* 内部スキーマ：データベースを作成する際の物理的な構造。

### 制約
* 候補キー：行を一意に識別するための最小限必要な列の組み合わせ。
* 主キー：一意に識別することができるように指定するカラム。
* 外部キー：他のテーブルと紐付けるために用いるカラム。
* インデックス：索引の事で、高速化したい場合に用いる。

### 主キー制約
* 一意性制約：一意でなければならず、重複する行は存在しない。
* 非ナル(NOT NULL)制約：空の値をとってはならない。

### 参照制約(外部キー制約)
参照されている行の削除、又は参照先のないものを参照している行の追加時はエラーなる。

### チェック(検査)制約
指定の条件を満たしているのかをチェックする制約。

### データの正規化
データを管理、整理しやすくするためのテーブル設計の作業。データの重複、矛盾がないようにする。

#### 第一正規形
繰り返し項目(属性)を排除した形。

#### 第二正規形
候補キーの一部に従属する(部分関数従属)列が存在しないこと。

#### 第三正規形
候補キー以外で、従属する(推移的関数従属)列が存在しないこと。

## データ操作
* 選択：必要なレコードを取り出す。
* 挿入：データを挿入する。
* 削除：データを削除する。
* 射影：データの一部のカラムだけを抽出する。
* 結合操作：複数のテーブルを結合して抽出する。

### SQL文
* SELECT文：データを取り出す。FROM指定で対象のテーブルを指定可能。
* INSERT文：データを挿入。
* UPDATE文：データを更新。
* DELETE文：データを削除
* WHERE句：行を絞り込む。
* DISTINCT句：重複行を1つにする。まとめる。
* ORDER BY句：行を並び替える。ASC(昇順)DESC(降順)
* GROUP BY句：一部の列を用いて表をまとめる。
> WHERE句はまとめる前に使用、GROUP BY句を使用してまとめたあとは、HAVING句を用いる。

### 副問い合わせ
1.SELECT文の中にSELECTを記載して絞り込みに利用する。
2.EXISTSを利用して存在するものだけを取り出す。

### Viewの作成
テーブルからの問合せを仮想的に格納する。(外部スキーマ)

#### 更新可能なView
Viewから元のテーブルを更新できるViewの条件
* FROM句の表は1つしかないこと。
* WHERE句に副問い合わせがないこと。
* GROUP BYがないこと。
* DISTINCTや算術演算子を利用していないこと。

### テーブル定義
CREATE文を用いてテーブルを作成。

####制約一覧
* PRIMARY KEY：主キー制約。
* NOT NULL：非ナル制約。
* UNIQUE：一意性制約。同じ値は禁止。
* CHECK：チェック(検査)制約。
* FOREIGN KEY REFERENCES：参照制約。
> 参照制約のあるデータに紐づくデータも含めて、強制的に削除する場合、ON DELETE CASCADEをDELETE文と一緒に記載。

####GRANT文/REVOKE文
テーブルへのアクセス権の付与・はく奪。

## トランザクション処理
* コミット：一連の処理が全て成功したら処理結果を確定。
* ロールバック：処理が途中で失敗した場合、処理前の状態に戻す。
* アボート：トランザクションの結果を破棄してロールバックする事。

### 2層コミットメント
データベースが2つの場所にまたがっている場合に複雑な制御をする。
全ての従サイトがコミット可能ならコミットし、それ以外はロールバックを主サイトが従サイトに支持する。

### 障害回復(トランザクションの回復)
DBMS障害発生時にデータの矛盾がないように障害発生前の状態に戻すことが求められる。

* ログ：DBに対して更新を行った記録を保管する。
* UNDOログ：実行した更新を取り消すことができるように実行前の状態を保持するログ。
* REDOログ：更新の途中で障害が発生した場合に、その時点までの状態に戻すことができるように更新内容を記録するログ。
* チェックポイント：COMMITをデータベースに書き込む。いくらかメモリ上に溜まったのちにハードディスクに書き込まれる。
* ロールバック：障害発生時に、UNDOログを用いて更新処理実行前の状態に戻す。
* ロールフォーワード：障害発生時に、REDOログを用いて更新後の状態に戻す。

### (媒体)障害回復
1.新しいデータベースと交換する。
2.バックアップファイルを用いて、バックアップ取得時点まで戻す。
3.アーカイブログを用いて、バックアップ取得時点から障害発生時まで戻す。(ロールフォワード)

* バックアップファイル：取得した時点のデータベースの状態を記録するファイル。(フルバックアップ)
* アーカイブログ：バックアップした状態からのデータベースの更新内容を記録するログ。

### 性能改善(キャッシュ)
キャッシュ上にデータがある場合、ストレージへのアクセスが発生しないため、性能は向上する。
> DB再起動直後などはあえてリクエストを投げてキャッシュにデータをのせる処置をとることもある。(暖機運転)

### 性能改善(索引)
データ取得の際に、インデックスを利用すると高速でデータを取得できる。
> 目安として絞り込む対象が全データの15%未満の場合はインデックスを利用した方が速い。
チューニング時には、データ量と検索内容でインデックスをはるかどうか検討する必要がある。

### 性能改善(アクセスパス（実行計画）、オプティマイザ)
DBの状態、テーブル構造でデータを取得する方法(アクセスパス)は異なる。
アクセスパスを決めるプロセスがオプティマイザ。
> コストベース：統計情報に基づいてアクセスパスを決めるオプティマイザのこと。
> ルールベース：所定のルールで実行計画を決めること。

## データベース応用
### データウェアハウス
システム上のデータを統合して時系列に蓄積するデータベース。ビックデータ分析に用いる。
> スタースキーマ：ファクトテーブルとそれに紐づいたディメンジョンテーブルが放射状に関連付けされる。デェメンジョンテーブルはマスタデータを記録して、データマイニングに用いる。

### データレイク
構造化、非構造化されたデータをそのままの形で蓄積するデータベース。

### データマイニング
膨大なデータの中から、未知の規則性、関連性を得る手法
* テキストマイニング：アンケート、SNSなどの大量のテキストデータを解析して、問題点を抽出する。
* クラスタリング：類似した性質のもつデータのグループに分ける。(教師なし)
* クラス分類：クラスを予め定義し、どのクラスに分類されるのかを決定する(教師あり)
* アソシエーションルール：相関関係を導き出す技術。

### ビッグデータ
* 経営ダッシュボード：経営状況を様々な視点で分析する。
* パーソナルデータ：個人の購買情報やスマホなどから収集した個人的なデータ。
* オープンデータ：公的機関が保有する公開データ。
* レポーティング分析：ビッグデータを定められた手順で定期的に分析してレポートを作成する手法。
* アドホック分析：レポーティング分析からある項目を深く分析する手法。

### NoSQL(Not Only SQL)
データへのアクセスをSQLに限定しないデータベース管理システム。

#### NoSQL種類
* グラフ指向：データをグラフ構造で関連させるデータベース。
* 列指向：列処理特化データベース。
* ドキュメント指向：自由な長さ、構造のテキストデータを保存する。
* KVS：キーと値のペアを管理する。スケールアウトしやすい。

# ネットワーク
## ネットワーク方式
### ネットワークの種類
* LAN：限られた範囲で利用するネットワーク。
* WAN：遠隔地との接続もできるLANとLANを繋いだネットワーク。
* インターネット：世界中のLANやサーバを接続した巨大なネットワーク。
* イントラネット：組織内だけで接続できるネットワーク。

### 用語
* TCP/IP：インターネットで利用されるプロトコル群の総称。
* 伝送速度：1秒間に転送できるデータ量。
* MACアドレス：ネットワーク機器に、製造時に割り振られる番号。
* MACアドレスフィルタリング：登録済みのMACアドレスのみしか接続できないようにし、不正利用を防ぐこと。
* ESSID：無線LANを識別する名前。(SSID)
* モバイル通信規格：ネットワークの通信の規格。
* SDN：ソフトウェアによって、ネットワーク構成を作り制御する技術。
* ビーコン：Bluetoothの信号を発信して、発信した端末の位置を知らせる発信機。

### OSI基本参照モデル
* アプリケーション層：具体的なシステムやサービスに必要な機能。
* プレゼンテーション層：データの表現形式を規定して、アプリケーション層、セッション層から受け取ったデータを適切な形式に変換して渡す。
* セッション層：通信の始まりから終了の制御を行う。
* トランスポート層：データの送受信の制御を行う。受信したデータの報告、エラー検出、再送要求などを行う。
* ネットワーク層(インターネット層)：IPアドレスを用いてネットワーク間の接続、中継を行う。
* データリンク層(リンク層)：MACアドレスを用いて隣接するPCと接続して、データの転送、誤り制御を行う。
* 物理層(ハードウェア層)：無線、光ファイバー等を通じてデータを転送する。

> ゲートウェイ：7階層の全てで機能してプロトコルの変換を行う。
> ルータ、レイヤ3スイッチ：LAN同士をネットワーク層以下で接続する。
> ブリッジ、レイヤ2スイッチ(スイッチングハブ)：データリンク層以下で動作してMACアドレスを用いてネットワークを繋ぐ。
> リピータ、リピーティングハブ：物理層で接続する装置で、電気信号の整形、増幅を行う。

### IPアドレス
ネットワークで接続する際のコンピュータの住所のこと。2進数32桁で表し、4つに区切って10進数化する。

### DNS
IPアドレスとドメイン名を紐付けて管理し、変換して表示する。

### IPv4
32ビットのアドレスで8ビットごとに区切って10進数で表記。

#### 特殊なアドレス
* ネットワークアドレス：ホスト部が全て0のアドレス。ネットワークそのものに付与するアドレス。接続PCに付与不可。
* ブロードキャストアドレス：ホスト部が全て1のアドレス。ネットワークに属する全てのホストを指す。
* ローカルループバックアドレス：自分自身を指しているアドレス。
* プライベートアドレス：範囲に含まれているIPアドレス。
* グローバルアドレス：インターネット上で一意なプロバイダから割り当てられるアドレス。

### CIDR
ネットワーク部の長さを自由に設定できる。この長さをプリフィックス値という。

> サブネットマスク：ネットワーク部が全て1、ホスト部が0のもの。

### IPv6
IPv4の後継規格。

> 先行する0は省略。
> 0000が何度も続く場合は::で繋ぐ。(一度のみ使用可能)

## データ通信と制御
### ルーティング
TCP/IPプロトコルを通じて、適切な経路を選択して通信を行うこと。
ルータとホスト上のルーティングテーブルに記録された経路情報を元にルーティングを行う。

> 最長一致検索：接続対象が複数の場合、プリフィックス値が大きいものを選択する方式。

#### ルーティングプロトコル
* RIP：ポップ数(経由するルータの数)が最小となる経路を選択する。
* OSPF：コスト値(インターフェースの帯域幅)に基づいて最速の経路を選択する。

### データの転送
ネットワーク層の通信ではIPアドレスを用いて宛先、送信元IPは中継後も変わらない。
データリンク層の通信ではLAN内の規格に沿ったMACアドレスを用いる。中継時に設定し直される。

### プロキシサーバ
クライアントからの要求を受けて、代理として他のサーバにアクセスする。
内部サーバを隠すことができ(セキュリティ効果)、キャッシュを利用することでパフォーマンス向上になる。(パフォーマンス効果)

* フォーワードプロキシ：Webブラウザの代理としてWebサーバにリクエストを送信する。
* リバースプロキシ：Webサーバの同一組織内の存在し、代理として応答。
* NAT：プライベートアドレスをグローバルアドレスに変換する。
* NAPT：グローバルアドレスにポート番号を加えて、1つのグローバルアドレスに複数のプライベートアドレスが対応付けられる。

### VoIP
符号化した音声データをネットワークを通じて伝送する技術。

* VoIPゲートウェイ：IP網と公衆電話網のプロトコル変換を行う装置。
* PBX：電話回線交換機でどの電話機に接続するのかコントロールする。
* IP-PBX：IP電話に接続するPBX。
* LTE：携帯電話網で利用される通信規格。
* WSN：無線機能をもつセンサを利用して、広範囲のリアルタイムデータ通信を行うネットワーク。

### 伝送速度・時間・効率
```
伝送速度 = 伝送データ量 / 伝送速度(bps：ビット数/秒)
```

* 実効的な伝送速度：伝送効率を考慮した伝送速度のこと。
* 実効的な伝送データ量：伝送に付与しなければいけない制御情報がある時、データ量が増える。
* ボトルネック：複数回線を繋いだ場合、一部の回線が高速でも全体としての伝送速度は最も遅い回線のものになる。

### 回線利用率
```
回線利用率 = 単位時間あたりの実効伝送データ量 / 回線速度
```

### ビット誤り率
```
ビット誤り率 = 単位時間あたりのビット誤り数 / 単位時間あたりの伝送ビット数
```

## 通信プロトコル
ネットワークを介して、情報の伝達を行う際の共通の規則。

* HTTP：アプリケーション層のWebページを表示するためのプロトコル。
* HTTPS：HTTPにセキュリティ用の認証、暗号機能を追加したプロトコル。
* SMTP：メール送信、サーバ間の転送を行うプロトコル。
* POP(POP3)：メール受信に利用するプロトコル。
* TCP：ファイル転送に用いるトランスポート層のプロトコル。スルーウェイハンドシェイクで通信の確立を確認する。
* UDP：ファイル転送に用いるトランスポート層のプロトコル。信頼性よりもリアルタイム性を重視。
* FTP：ファイル転送のアプリケーション層のプロトコル。
* NTP：時刻を正しい時刻に同期して合わせる際に用いるプロトコル。
* DHCP：IPアドレスを自動的に割り当てるプロトコル。
* IMAP(IMAP4)：メール受信に利用するプロトコル。メールサーバ上に残したままメールを管理する為、複数端末で参照可能。

## ネットワーク管理
### 媒体アクセス制御方式(MAC)
データリンク層で用いる制御方式。

* CSMA/CD方式：有線LANで用いる。伝送路にフレームが流れていないことを確認してフレームの送信をする。コリジョンが発生した場合、ジャム信号を送信する。
* CSMA/CA方式：無線LANで用いる。一定時間回線が空いていることを確認しフレームを放出する。受信側は端末に送信権を与えデータの受信を確認したらACKを返す。
* PPP：WANを介して、二つのノードに接続するときに使用されるプロトコル。プロバイダに接続する場合に用いる。
* ICMP：IPを補完したプロトコルでのエラーメッセージや制御メッセージなどを通知。
* ARP：IPアドレスからMACアドレスを問い合わせる要求。
* RARP：MACアドレスからIPアドレスを問い合わせる要求。
* SNMP：通信機器を管理したり障害時に情報収集するためのプロトコル。
* DHCP：ネットワーク設定を自動化するプロトコル。
* アドレスプール：DHCPサーバに設定されている割り当て可能なIPアドレスの範囲のこと。
* リース期限：割り当てるIPアドレスの割り当て期間。
* DHCPリレーエージェント：別ネットワークDHCPサーバに通信する場合、中継を担う。

### インターネットサービス
* Webメール：Webブラウザを利用して操作する仕組みのメール。
* Cookie：Webブラウザ上にユーザーが操作した内容、情報を一時的に保存しておく仕組み。
* MIME：電子メールに画像や音声などのメディアを添付できるようにした規格。
* S/MIME：公開鍵暗号方式を用いて電子メールの盗聴、改ざんを守るために開発された技術。
* オンラインストレージ：オンライン上にファイルを配置できるサービス。
* WebSocket：Webブラウザとサーバ間で双方向通信を低コストで行う仕組み。
* ブロードキャストストーム：LANスイッチがループした形でつながっているネットワークに永遠とフレームが循環し続ける現象。
* スパニングツリープロトコル(STP)：一部ブロックして切断し、ブロードキャストフレームを防ぐ。
* マルチホーミング：複数のISPを通じて接続する。
* SOAP：異なるコンピュータ、異なるOS上のデータの取り出し、サービスの呼び出し、メッセージの送信を行うプロトコル。XML形式を用いる。
* REST：分散システムで複数のソフトウェアを連携させるためのソフトウェア設計思想。

## ネットワーク応用
### ネットワークの仮想化
* VLAN：スイッチングハブを仮想化して、物理的な接続をなくした仮想的なネットワークを構築する技術。
* SDN：仮想的にソフトウェアで実現された構成のネットワーク。
* VRRP：ルータを冗長化して信頼性を高めるプロトコル。

### 通信サービス
* パケット交換方式：データ送信時に、パケットと呼ばれる単位に分割して送信する方式。
* モバイル通信：基地局を介してインターネットに接続する無線の通信方式。
* IP電話：インターネットを利用した電話。
* 光通信：光ファイバケーブルで高速な通信を行う。

# セキュリティ
## 情報セキュリティ
### サイバー攻撃
システムを破壊することを目的として、大量のデータを送りつけたり、不正侵入してデータを盗んだり・改竄するような攻撃の総称。

### 情報資産
企業が守るべきデータ。

### システムの脅威と脆弱性一覧
1. 人的脅威：直接、人が関わる攻撃。
2. 技術的脅威：マルウェアを用いた攻撃。
3. 物理的脅威：物理的に破壊させる行為。
4. 脆弱性：セキュリティ上の欠陥。
5. 不正：内部のものがシステムの破壊を行うこと。

### 脅威と脆弱性
#### 人的脅威の種類と特徴
* なりすまし：盗んだIDとパスを用いて、正規のユーザーのように操作して情報を盗むこと。
* クラッキング：ネットワークを通じて他人のPCやシステムに侵入して中の情報を盗んだり、破壊したりすること。
* ソーシャルエンジニアリング：本人を装ってパスを聞いたり、緊急を装って組織の機密情報を聞き出すこと。

#### 技術的脅威の種類と特徴
* ワーム：複製しながらコンピュータを移動することで増殖するウイルス。
* スパイウェア：ユーザーが認識せずに悪意のあるプログラムをインストールさせて個人情報を盗むプログラム。
* ランサムウェア：ファイルを使用不能にして、回復するために金銭を要求する。
* ボット：他人のPCを操り、情報を盗んだり他サイトを攻撃する。
* トロイの木馬：有用ソフトに見せてインストール後に悪意のある動作をするソフト。
* ルートキット：サーバーにバックドアを作り、サーバー内の侵入の痕跡を隠蔽するなどの機能がパッケージ化された不正なツールのこと。
* RAT：物理的に離れた場所から、システムにアクセスしてシステムを悪用するSWの総称。
* マクロウイルス：Officeのファイルを開いた場合に、マクロが実行されウイルスに感染する。
* ガンブラー：サイトのWebサーバーをウイルスで感染させ、訪問者PCも感染させる。
* キーロガー：キー入力を監視してそれを記録するソフトウェアまたはハードウェアのこと。
* バックドア：後から何度もログインできるように仕掛ける入り口のこと。
* SPAM：受信者の意向を無視して無差別かつ大量に一括してばら撒かれる各種メディアにおけるメッセージ。

#### 物理的脅威
災害、破壊など。

#### 脆弱性
* セキュリティホール：プログラムのバグ、設計上の問題によって生じるセキュリティ上の欠陥のこと
* バグ：コンピュータのプログラム上の誤り、バグ。
* 人的脆弱性：人的なミスによって生じる脆弱性のこと。
* シャドーIT：従業員が企業のIT部門の許可を得ていないデバイスを使用すること。
* クラッカー：サイバー攻撃などのコンピュータ犯罪を行う攻撃者。
* ホワイトハッカー：サイバー攻撃からシステムを守る。
* スクリプトキディ：攻撃用ツールを興味本位で利用するもののこと。
* ボットハーダー：ボットネットを構築し、C＆Cサーバーと呼ばれるマシンによってボットネットに命令を送り、サイバー攻撃を行う。

#### 不正のメカニズム
* 機会：不正行為を実行しやすくする環境が与えられていること。
* 動機：待遇の不満など不正を働きたくなるきっかけ。
* 正当化：自らの行為を納得させるための理由付け。

### 攻撃手法
1. 総当たり(ブルートフォース)攻撃：あらゆる文字列を試してログインを試みる攻撃。
 * 辞書攻撃：辞書に乗っている単語から試すもの。
 * パスワードリスト攻撃：他サービスから流出したIDとパスを用いて不正ログインを試す攻撃。
2. クロスサイトスクリプティング：Webサイトの脆弱性を利用した攻撃手法。JavaScript付き入力を行い、他のユーザーのブラウザ上で実行させて、情報を盗む。
3. SQLインジェクション：システムが想定していないSQLを実行させ、データを盗み出す。
4. DNSキャッシュポイズニング：データを書き換えてユーザーを悪意のあるサイトに誘導する攻撃手法。
 * ソースポートランダマイゼーション：ポート番号固定せず、ランダムになるように設定すること。
5. その他の攻撃
 * 標的型攻撃：無差別ではなく、特定の組織に対して攻撃をすること。
 * フィッシング詐欺：他サイト装った偽のWebサイトやメールを用いて、暗証番号を騙しとる詐欺。
 * ワンクリック詐欺：リンクをクリックしただけで、契約完了の画面を表示させ、料金を請求する詐欺。
 * ドライブバイダウンロード：Webサイトを閲覧したときに、悪意のあるソフトウェアを自動的にダウンロードさせる攻撃手法。
 * DOS攻撃、DDOS攻撃：サーバーに対して大量にデータを送信して、サーバーの機能を停止させる攻撃。
 * ゼロデイ攻撃：ソフトウェアのパッチが配布される前にセキュリティホールを狙って攻撃すること。
 * バッファオーバーフロー攻撃：プログラムの想定データ量を超えるデータが発生して、正常に動作しなくなる状態をわざと引き起こす攻撃。
 * MITB攻撃：ユーザーのWebブラウザをのっとり、サーバー間の通信を監視して、情報の盗聴、改竄などをする。
 * MITM攻撃：中間者攻撃。通信の間に入ってメッセージの改竄や取得などを行う攻撃。
 * クロスサイトリクエストフォージェリ(CSRF)：メールやSNS、他のサイトを通じて、標的となるページに強制的にリクエストを送らせて、掲示板の書き込み、オンラインショップでの注文をさせる。
 * CAPTCHA：機械では判別できない歪んだ文字の画像を表示して人間に入力させ、人間の入力を保証する。
 * クリックジャッキング：ボタンやリンクなどを透明で見えない状態にして、通常のWebページの上に被せてしまうこと。
 * ディレクトリトラバーサル：アクセス禁止ファイルやディレクトリを、プログラムに表示させる不正なアクセスをする攻撃。
 * ドメイン名ハイジャック：ドメイン名を書き換えて、正規のサイトではなく偽のサイトへと誘導する。
 * セッションハイジャック：セッションを窃取し。本人に成り代わって通信を行うというサイバー攻撃。
 * リプレイ攻撃：ネットワークに流れるデータを盗聴して、データを認証サーバーへ送って、システムへ不正にログインする攻撃。
 * IPスプーフィング：送信元のIPアドレスを偽装する攻撃。
 * Wanna Cryptor：解除する場合に金銭を要求するランサムウェア。
 * SEOポイズニング：検索エンジン上位に悪意のあるサイトが並ぶように細工してユーザーを誘導する。
 * サラミ法：複数の資産から少しずつ搾取する攻撃。

### 暗号技術
#### 共通鍵暗号方式
送信者と受信者で鍵を共有して利用。高速だが鍵の管理が困難。
* AES：最も一般的な暗号規格。米国の国家暗号規格。
* DES：AESの前の暗号規格
* IDEA：暗号化するデータを６４ビットごとに区切り、１２８ビットの暗号鍵によって変換する。

#### 公開鍵暗号方式
受信側の公開鍵で暗号化して、受信側の秘密鍵で復号する。
* RSA：素因数分解の困難さに基づいた暗号規格。
* 楕円曲線暗号(ECDSA)：ICカードで用いる暗号方式。

#### セッション鍵方式(ハイブリッド暗号方式)
共通鍵と公開鍵暗号方式を組み合わせたもの。

#### ディジタル署名
送信するメッセージの正当性を保証するための技術。送信者が本人であること、改竄されていないことを保障。

#### PKI(公開鍵基盤)
認証局が、公開鍵証明書を発行して公開鍵が本人のものであることを証明する仕組み。

> CRL(証明書失効リスト)：証明書の有効性を確認するために公開されている情報。リストにある証明書は無効。
> 時刻認証：作成時刻を証明する技術で、タイムスタンプ(時刻認証情報)を埋め込む。タイムスタンプを発行する認証局を時刻認証局(TSA)と呼ぶ。

### 利用者認証
* ワンタイムパスワード：パスワードを毎回変更して利用する。
* チャレンジレスポンス方式：パスワードとチャレンジ(サーバーが生成した乱数)を組み合わせて演算結果をサーバーに送信。サーバーで比較し一致したら認証する。
* デバイス認証：本人しか持ちえないICカードやUSBトークンを用いて認証をする。
* シングルサインオン：サーバーが複数台の場合に、一度認証を受けて全てのサーバーの認証を不要とする仕組み。

### 生体認証(バイオメトリクス認証)
* 指紋：センサを用いて特徴点抽出。
* 虹彩：虹彩のパターンで照合。経年劣化がほとんどない。
* 静脈：赤外線照射をして静脈パターンを照合。
* 署名：サインの速度・筆圧で照合する。
* 声紋：音声の周波数パターンと照合する。

## 情報セキュリティ管理
### リスクマネジメント
#### リスクアセスメント
* リスク特定：自社の情報資産、情報システムにどのようなリスクがあるのか特定。
* リスク分析：特定したリスクの発生頻度、発生した場合の被害の大きさを分析。
 * ベースラインアプローチ：既存の基準をベースラインに設定して、リスクと比較してベースラインの水準と比較して問題がないか評価する。
 * 詳細リスク分析：個々の情報資産の資産価値、脅威、脆弱性の評価を行う。
 * 非形式的アプローチ：組織や担当者の知識、経験を元にリスクを評価する。
 * 組み合わせアプローチ：複数のアプローチを組合わせる。
* リスク評価：分析結果からリスクの重大性を評価して対策方法を決定する。
 * 定量的手法：予想損失額とリスクの発生確率から算出する。
 * 定性的手法：情報資産の価値や脅威、脆弱性の相対的な評価を元にリスク値を算出する。
#### リスク対応
* リスク回避：リスクの原因を排除する。
* リスク共有：第三者(保険)に肩代わりしてもらう。
* リスク軽減：発生率、損害額を少なくなるように対策をする。
* リスク保有：リスクをそのままにする。
> リスクファイナンス：リスクが顕在化した場合に資産面で対応すること。会社の資産や、保険で賄うこと。

### 情報セキュリティマネジメントシステム(ISMS)
情報セキュリティのレベルを維持、向上していくために、継続的に対策を行っていく取りくみ。

### 情報セキュリティポリシ
* 基本方針：基本的な取り組みを経営層が決定して周知する。
* 対策基準：守るべき規則や判断基準
* 実施手順：規則を実現するための実施手順。

### 情報セキュリティインシデント
セキュリティ上の脅威となる事象のこと。

#### セキュリティインシデントの管理
* インシデント対応の準備
* 事象の検出
 * シグネチャ検出：既存の事象の攻撃パターンを記録、マッチングして検出。
 * アノマリー検出：法則、理論から見て異常、説明できない事象を検出する。
* インシデント対応
* 改善

### 情報セキュリティの要素
#### CIA
* 機密性：決められた人だけデータにアクセスできるようにする。
* 完全性：データが最新かつ正しい状態で保つこと。
* 可用性：情報が使いたいときに使えること。
#### AAR
* 真正性：利用者の身元が主張通りであることを保証すること。
* 責任追跡性：誰がいつ、どのようにを事後に追跡できること。
* 否認防止：取引の事実が、後になって否認されることがないこと。
* 信頼性：システムが正常に機能し、異常な結果で終了することがないこと。

### 個人情報保護
* プライバシーポリシー：サイトの管理者が定めた規範のこと。
* プライバシーマーク制度：適切な保護措置をする体制の整備がされている事業者を評価し、付与。
* 安全管理措置：個人情報保護法　第二十条
* サイバー保険：サイバー事故で企業に生じた第三者に対する費用などを補填する保険。

### 情報セキュリティ組織・機関
* 情報セキュリティ委員会：ISMSの構築を主導する委員会。
* SOC：インシデントの予兆や早期発見を行う組織。
* CSIRT：SOCから伝えられた情報を元にインシデントを最小限に抑えるための対応する。(JPSERT/CC)
* コンピュータ不正アクセス対策基準：実行すべき対策を取りまとめたもの。
* J-CSIP(サイバー情報共有イニシアティブ)：各参加組織間で検知されたサイバー攻撃等の情報をIPAに集約する。
* サイバーレスキュー隊(J-CRAT)：標的型サイバー攻撃に対する支援を行う組織。
* NICT(内閣サイバーセキュリティセンター)：日本をサイバー攻撃から防衛するための司令塔となる組織。

## セキュリティ技術評価・情報セキュリティ対策
### 技術的セキュリティ対策の種類
* コンテンツフィルタリング：Webサイトの閲覧、利用を制限する仕組み。
* コールバック：受信側が一旦回線を切断して発信側にかけ直すことで利用者確認を行う。
* DLP：機密情報の紛失や漏洩を防止する仕組みやソフトウェア。
* ファイアウォール：通信内容を検査して、遮断か通過かを判断する役割。
* DMZ(非武装地帯)：外部からアクセス可能なネットワーク、サーバー群。
* SSL/TLS：クライアントとサーバ間のやりとりを暗号化し安全にやりとりするプロトコル。
* HTTPS：暗号化にSSL/TLSを用いたHTTP通信のこと。
* VPN：セキュリティ技術を用いてインターネット上に仮想的な専用網を構築する仕組み。
* ブロックチェーン：取引情報を記録した分散型台帳システム。
* S/MIME：電子メールの本文や添付ファイルを暗号化と改竄検知などをする機能。
* SMTP-AUTH：電子メールの送信プロトコルにユーザー認証の機能を取り入れたもの。
* OP25B：25番ポートを禁止することで、スパムメール送受信を防ぐことができる。
* インテグリチェック法：認証技術を用いてファイルを入手する。
* コンペア法：ファイルを安全に保管されている原本を比較する。
* チェックサム法：チェックサム値を用いてファイル送付後と入手後で改竄されていないか確認する。
* パターンマッチング法：ウイルスに特徴的なパターンがないかチェックする。
* ビヘイビア法：メモリ上の仮想環境下で実行して、ウイルスによって引き起こす挙動がないか監視する。
* アプリケーションゲートウェイ：アプリケーションレベルで制御可能なファイアウォール。
* IDS：不正侵入を検知する仕組み。
* IPS：IDSの検知だけでなく、防御をするもの。
* 検疫ネットワーク：一定のセキュリティ水準を満たしたものだけを接続できるようにすること。
* MDM：セキュリティなどの設定を統合的・効率的に管理する手法。
* SSH：遠隔ログイン、遠隔操作をするためのプロトコルでセッション鍵による暗号化、認証機能を持つ。
* IPSEC：ネットワーク層のセキュリティプロトコル。
* ディジタルフォレンジックス：不正アクセスの追跡や証拠データの解析などの操作をITを利用して行うこと。
* ペネトレーションテスト：脆弱性がないか侵入テスト。
* ステガノグラフィ：画像や音声などのデータ内に、第三者に気づかれない情報を埋め込む技術。
* 電子透かし：利用者に気づかれないように著作権情報を埋め込んで不正利用を防ぐ。
* サンドボックス：攻撃されても良い仮想環境を構築し、その中で怪しいプログラムを動作させてウイルスを確認する。
* DNSSEC：DNSサーバからの応答にディジタル署名を用いることで正当なサーバからの応答であることを確認する。

## 情報セキュリティ実装技術
### 物理的セキュリティ対策の種類
#### 無線LANのセキュリティ
無線LANでの暗号通信の仕組み。

* WPA
 * WPA-TKIP RC4 128ビット
 * WPA-AES AES 128,192,256ビット
* WPA2
 * WPA2-TKIP RC4 128ビット
 * WPA2-AES CCMP 128,192,256ビット
* MACアドレスフィルタリング：登録のされていない端末の接続を禁止する技術。
* ステルスESS-ID：無線LANのSSIDを隠蔽して、SSIDの知らない端末の不正接続を禁止する。

### ブロードバンドルータとPPPoE
* PPPoE：イーサネット上にPPPフレームをカプセル化して送信する。
* NAPT：ブロードバンドルータ上でプライベートIPアドレスとグローバルIPアドレスをポート番号と一緒に変換する。

### IOTシステムのセキュリティ
* IOTセキュリティガイドライン：IOT機器やシステム、サービスに対してリスクに応じた適切なサイバーセキュリティ対策を検討するための考え方をまとめたもの。
* コンシューマ向けIoTセキュリティガイド：利用者を守るために提供する事業者が考慮しなければいけない事柄をまとめたもの。

### メッセージ認証符号
ハッシュ関数を用いてメッセージの改ざん検知を行う方法。

### その他の情報セキュリティ対策技術
* CRYPTEC暗号リスト：国が安全性を確認し、利用を推奨する暗号技術の一覧。
* 危殆化：技術の進歩や、暗号技術の解読手法の発見などによって暗号技術が役に立たなくなること。
* ハニーポッド：攻撃者の侵入を許し、攻撃手法を分析するための機能を持ったシステム。
* SIEM：様々なソフトウェアの動作状況の記録を蓄積、管理しセキュリティの脅威となる事象をいち早く検知、分析するためのもの。
* バインド機構：SQLインジェクション対策に用いられる。SQLの雛形を用意して一部を変数化して変数に値を割り当てSQLを実行する。
* SPF：メール送信元のなりすましを発見してスパムメールを発見する。
* WPA2-PSK：アクセスポイントと端末で通信前に共有しておくパスフレーズのことでパスフレーズとSSIDを用いて端末認証を行う。
* レッドチーム演習：専門家のチームが、様々な手法で攻撃するテスト。
* ファジング：予測不能なデータを入力してプログラムの挙動を確認するテスト。
* 耐タンパ性：内部構造やデータを外部から解析、読み取り、改ざんされにくいようにすること。
* プライバシーバイデザイン：システムの企画、設計時にプライバシー保護の観点で行うこと。
* セキュリティバイデザイン：システムの企画、設計時にセキュリティの観点で行うこと。