基本情報技術者試験:午前試験テクノロジ系チートシート
初めに
基本情報技術者試験の午前試験対策として、暗記が必要な部分について、個人的なチートシートを作ろうと思います。本記事はテクノロジ系です。午前中の範囲を一回通して学んだ方にとっては役に立つものになっていると思います。
Index
- 初めに
- Index
- 前提
- 基礎理論
- アルゴリズムとプログラミング
- コンピュータ構成要素
- システム構成要素
- ソフトウェア
- ハードウェア
- ヒューマンインターフェース
- マルチメディア
- データベース
- ネットワーク
- セキュリティ
- 公開鍵暗号方式
- 共通鍵暗号方式
- RSA暗号
- バックドア
- 楕円曲線暗号
- 不正のトライアングル
- AES
- ドライブバイダウンロード
- ディレクトリトラバーサル攻撃
- ブルートフォース攻撃
- 認証局の役割
- スパイウェア
- リスク対応
- リスクレベル
- 信頼性
- CSIRTマテリアル
- リスクアセスメント
- SaaS、PaaS、IaaS
- BYOD
- リスク共有(リスク転移)
- ビジネスインパクト分析
- ファジング
- ペネトレーションテスト
- マルウェア
- マルウェアの解析
- DMZ
- IDS
- セキュアブート
- 第三者中継
- SPF
- ポートスキャナ
- WAF
- デジタルフォレンジクス
- 電子透かし
- ウィルス定義ファイル
- WPA3
- SSL/TLS
- UPS
- システム開発技術
- 開発プロセス・手法
- 参考
基礎理論
補数
補数(complement):元の数と補数を足した場合に桁上がりをする数のうち最小のもの
減基数:元の数と補数を足して桁上がりが発生しない数のうち最大のもの
注. n 進数において、「n の補数」と減基数である「(n - 1) の補数」がある。数値が同じ場合、通常の補数であり、数値が - 1 されている場合、減基数のことである。
例. 10進数の10の補数の場合 (通常の補数)
- 4 の補数:6
- 23 の補数 77
補数の足し算を用いることで、マイナスの符号を使わずに負の数を表現できる
例. 10進数の10の補数の場合
- 82 - 23 がしたい場合 → 82 + (23 の補数) = 82 + 77 = 159
最上位の桁の " 1 " を取り除いて 59
仕組み 82 + 77 = 82 + (100 - 23) = 100 + (82 - 23) = 100 + 59
引き算の値と補数を足して、最上位の桁を取り除いた値は一致する
2 進数の 1 の補数
1 の補数は減基数。
例. 100101 の 1 の補数は、足しても桁が上がらない最大の数のため、011010 すなわち 0 と 1 をビット反転すればよい。
2 進数の 2 の補数
2 の補数は通常の補数である。
例. 100101 の 2 の補数は、足して桁が上がる最小の数のである。そのため、まず 011010 を足して 111111 にし、さらに 1 足せばよいので、011010 + 000001 = 011011 にすればよい。
(2 の補数の求め方)
- 元の数の 0 と 1 を反転させる
- さらに + 1 をする
アルゴリズムとプログラミング
リエントラント(再入可能)
同時に複数のタスクが共有して実行しても、正しい結果が得られるプログラムの性質。
リロケータブル(再配置可能)
主記憶上のどこのアドレスに配置しても、正しく実行することができるプログラムの性質。
Ajax
「Asynchronous JavaScript + XML」の略で、Webブラウザ内で非同期通信とインターフェイスの構築などを行う技術の総称。JavaScriptの非同期通信の機能を使うことによって,動的なユーザインタフェースを画面遷移を伴わずに実現する技術。
画面遷移を伴わずにコンテンツを書き換えられるので、シングルページアプリケーション(SPA)の制作などに利用されています。Ajaxを使用した有名なサービスにGoogleMapやGmailがある。
アプレット
Webページと同時にサーバからダウンロードされ、クライアントのWebブラウザ上で動作するコンパイル済のプログラム。
もともとサーバにあるが、クライアント側にダウンロードされ、クライアント側で実行されるのがアプレット。
XML、DTD
XML(eXtensible Markup Language,拡張可能なマークアップ言語)は、ユーザが定義したタグや属性を用いて文書構造を記述することのできるマークアップ言語。
HTML と似ているが、違いはユーザが自分で定義したタグや属性が使用できること。
DTD(Document Type Definition)において、文書構造を定義する。 の部分が DTD。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE 在庫データ[ <!ELEMENT 在庫データ (商品)> <!ELEMENT 商品 (名前, 個数)> <!ELEMENT 名前 (#PCDATA)> <!ELEMENT 個数 (#PCDATA)> ]> <在庫データ> <商品> <名前>テレビ</名前> <個数>15</個数> </商品> <商品> <名前>冷蔵庫</名前> <個数>10</個数> </商品> <商品> <名前>洗濯機</名前> <個数>25</個数> </商品> </在庫データ>
コンピュータ構成要素
メモリ
メモリの分類は、揮発性(RAM)と不揮発性(ROM)に分類されます。
- 揮発性:電源を切ると記録内容が消えてしまうメモリ
- 不揮発性:コンピュータの電源を切っても記録内容が消えないメモリ
RAM:Random Access Memory:自由に読み書きできるメモリ
ROM:Read Only Memory:読み出し専用メモリ
メモリの種類 | 分類 | 説明 |
---|---|---|
DRAM | 揮発性 | Dynamic search Random Access Memory コンピュータの主記憶装置(メインメモリ)に用いられる コンデンサに電荷を蓄えることにより情報を記憶し、電源供給が無くなると記憶情報も失われる |
SRAM | 揮発性 | Static search Random Access Memory キャッシュメモリ(CPUと主記憶装置の間にある記憶装置)として用いられるメモリ 主記憶装置より高速 メモリセルにフリップフロップ回路が使われる |
マスクROM | 不揮発性 | ユーザーによる消去・書き込みが不可能 動作に必要なプログラムやデータをあらかじめメモリ内に書き込まれている |
PROM | 不揮発性 | 特定の機器を使うことで記憶内容の消去と書き込みができるメモリ EPROM:紫外線を照射することでデータを消去して書き換えることができる EEPROM:電気的にデータを消去して書き換えることができる フラッシュメモリ:EEPROMの一種。ブロック単位でデータを消去して書き換えることができる |
メモリインタリーブ
物理上はひとつである主記憶領域を、同時アクセス可能な複数の論理的な領域(バンク)に分け、それぞれのバンクに対してデータの読み書きを並列で行うことにより、メモリアクセスの高速化を図る技術
ECC メモリ、ハミング符号
コンピュータのメインメモリ(RAM)に用いるメモリモジュールの種類の一つで、データ転送時の誤り訂正符号の付加と検証に対応したもの。
ハミング符号により、情報ビットに検査ビットを付加することで2ビットの誤りを検出し、1ビットの誤りを訂正できる。
デイジーチェーン
「PC-周辺機器-周辺機器」というように、PCを起点として複数の周辺機器を直列で(数珠つなぎのように)接続する方法
シリアルATA
シリアルATA(SATA)とは、コンピュータにハードディスクやSSD、DVDドライブなどの光学ドライブを接続するためのインタフェースの規格のこと。ホットスワップ(ホットプラグ)対応が可能、すなわち電源を入れたまま機器の脱着が可能。
なお、ATA(Advanced Technology Attachment)とはコンピュータ本体にハードディスクなどのストレージ装置(外部記憶装置)を繋いで通信するための接続方式の標準規格の一つ。
IrDA(Infrared Data Association)
携帯電話のアドレス帳などのデータ交換を行う場合に使用される赤外線を使って無線通信をする技術。
infrared が赤外線なので、それさえ覚えていれば判別可能。
磁気ディスク
ディスプレイ
システム構成要素
RAID
RAID(Redundant Arrays of Inexpensive Disks,レイド)は、複数のハードディスクを組み合わせて1台のハードディスクっぽくすることで、性能を良くしたり一部がぶっ壊れても大丈夫なようにしておく技術のこと。
Redundant:冗長な
直訳では、安価なディスクの冗長な配列
レベル | 説明 |
---|---|
RAID0(ストライピング) | 複数のディスクに分散してデータを書き込むことで、アクセス性能を向上させる。 |
RAID1(ミラーリング) | 同じデータを2台のディスクに書き込むことで、信頼性を向上させる。実質記憶容量は50%となるので記憶効率は悪い。 |
RAID5 | 情報データとともにパリティビットも各ディスクに分散して書き込む方式。信頼性、アクセス性能が共に高まる。 |
※ほかのレベルも多くあります。
デュアルシステム、デュプレックスシステム
デュアルシステム | 同じ処理を2組のコンピュータシステムで行い、その結果を照合機でチェックしながら処理を進行していくシステム構成。一方の系統に障害が発生した場合には、問題のある側のシステムをメイン処理から切り離し、残された側のシステムのみで処理を続行しつつ、障害からの回復を図る。 |
---|---|
デュプレックスシステム | 一方のコンピュータが正常に機能しているときには,他方のコンピュータが待機状態にあるシステム |
2台目の状態が異なる。デュアルシステムは稼働しており、不具合が起きていないか検証している。デュプレックスシステムは予備であり、なにもしていない。
フォールトトレランス、フェールセーフ、フェールソフト、フールプルーフ
名前 | 説明 |
---|---|
フォールトトレランス | fault:故障 tolerance:寛容さ システムの一部に障害が発生しても全体としては停止することなく稼働を続け、その間に復旧を図るような設計となっているシステム |
フェールセーフ | 部品の故障や破損、操作ミス、誤作動などが発生した際に、なるべく安全な状態に移行するような仕組み |
フェールソフト | 事故や故障が発生した際に、問題の個所を切り離すなどして被害の拡大を防ぎ、全体を止めることなく残りの部分で運転を継続すること。 |
フールプルーフ | 誤操作しても危険が生じない、あるいは誤操作できない構造や仕組みに設計すること |
(それぞれの違い)
スケールアップ、スケールアウト
システムの処理能力を向上させる施策。
名前 | 説明 |
---|---|
スケールアップ | 1台当たりの性能を上げること |
スケールアウト | 台数を増やすこと |
クライアントサーバシステム(C/S)
Web3層クライアントシステムの場合、次の3層で構成される
RPC
Remote Procedure Call。遠隔手続き呼び出し。
実行中のプログラムと別のアドレス空間(通常は共有ネットワーク上の別のコンピュータ)にあるサブルーチンや手続きを実行することを可能にする技術。
スプール、スプーリング
スプールとは、処理能力に大きな差のある装置やソフトウェア、通信回線などを協調して動作させる際に、速い側の待ち時間を短くするために、処理すべきデータを一時的に記憶装置に保存し、遅い側に少しずつ転送して処理させる仕組み。
コンピュータからプリンタにデータを送って印刷する場合などに使われる。
スプーリングはスループットを向上させる。
ソフトウェア
プリエンプティブ、プリエンプション
複数のタスクを同時に実行するマルチタスク(マルチプログラミング)に対応したOSの制御機能のひとつで、実行状態のタスクを一旦停止して、実行可能状態に戻すこと(他のタスクを実行状態にする)こと。
ディスパッチ
OSによるタスク管理の制御機能の1つで、実行可能状態のタスクの中から優先度順などによって次に実行すべきタスクを選択して、CPUの使用権を割り当てること。
ディスパッチを行うプログラムをディスパッチャ(Dispatcher)と呼ぶ。
ラウンドロビン方式
実行可能状態となった順に従って、タスクに一定のCPU時間(タイムクウォンタム)ずつ与えていくタスクスケジューリング方式です。一定時間内に処理が終わらなかったタスクは、実行可能状態の待ち行列の最後尾に移され、次にCPU使用権が与えられるまでの間は待ち状態となる。
メモリリーク
アプリケーションが「自身で獲得したメモリの解放忘れる」などのプログラム不備などが原因で発生する使用可能な主記憶容量が徐々に減少していく状態。リークはleak(漏れ出す)。
メモリの開放し忘れで主記憶容量が漏れ出し、減少するイメージ。
ポーリング制御
polling は直訳で投票や世論調査。相手がどんな状態になっているか、どんなことを待っているのかを問い合わせることで知る仕組みのこと。
データの転送を制御と監視のために使う。
例として、受信したメールの定期的な確認やサーバの監視がある。
ページング
仮想記憶空間と実記憶空間を,固定長の領域に区切り,対応づけて管理する方式。
仮想記憶空間(ハードディスク)に移すときに、ページと呼ばれる単位で区切って管理する。
スラッシング
仮想記憶システムにおいて主記憶の容量が十分でない場合にプログラムの多重度が増加すると、ページング処理が多発します。このようにシステムのオーバヘッドが増加したことによりアプリケーションのCPU使用率が減少し、処理速度が遅くなる状態。
フラグメンテーション
fragmentation は破片を意味する。
本来は一塊のデータがバラバラになった状態で記憶されること。OSが記憶領域の割当てと解放を繰り返すことによって,細切れの未使用領域が多数できてしまう場合がある。
LRU、LFU
LRU | Least Recently Used ページアウト要求があった場合に管理している中で「最後に参照された時刻が最も昔であるページ」を置換え対象とするアルゴリズム |
LFU | Least Frequently Used 「単位時間当たりの参照頻度」を置き換え対象とする |
シェル
OSの機能の一部であり、ユーザーからの指示を受けて解釈し、プログラムの起動や制御などを行うプログラムです。Windowsのコマンドプロンプトが例である。
OSの中核(カーネル)とユーザの橋渡しを行い、OS内部をユーザから隔てるという役割からシェル(殻)。
標準入力がキーボード,標準出力がディスプレイ。
セマフォ
セマフォ(semaphore)とは、信号機の意味で並行動作している複数のタスク間で共通して使用する資源へのアクセスを制御するメカニズム。
複数のプログラム(タスク)が同時に処理を行う環境(並列処理)で、共有資源に対して同時にアクセスしても問題なく動作できる仕組みのひとつ。P操作とV操作の2つの操作で成り立っている。
セマフォ変数が 1 のときは処理可能。0 の時は処理待ちになる。
マイクロカーネル
カーネル(kernel)は直訳で核を意味する。この場合は、OSの中核でオペレーティングシステム(OS)の基本機能の役割を担うソフトウェアである。ハードディスクやメモリなど、コンピュータの資源管理を行なっている。
マイクロカーネルはOSが提供する機能を最小限のメモリ管理やプロセス管理などに限定し,ファイルシステムなど他のOS機能はサーバプロセスとして実現されているもの。
API(Application Program Interface)
アプリケーションに共通の標準化されたインターフェイスを提供するためにOSなどが提供するライブラリ
差分バックアップ、増分バックアップ
差分バックアップ | 定期的にフルバックアップを行い、フルバックアップの間の期間は、フルバックアップ以降に変更のあった全てのファイルを記録する方式。 |
---|---|
増分バックアップ | 定期的にフルバックアップを行い、フルバックアップの間の期間は、前回の増分バックアップ以降に変更のあったファイルだけを記録する方式。 |
差分バックアップはフルバックアップからの差分。増分バックアップは前回からの増分。つまり、増分バックアップの方が一度にバックアップする量は少ないが、復旧には時間がかかる
アーカイブ
複数のファイルをひとつのファイルにまとめること、またはそのまとめられたファイルのこと
リンカ
linker。複数個のコンパイル済みプログラムや、そのプログラムで使用するライブラリを連結・統合し、1つの実行可能なプログラムファイルとして出力するソフトウェア。
テストカバレージ分析
カバレージ(coverage)は網羅率。どれだけカバー(cover)されているか。
ホワイトボックステストにおいて,コード中のどれだけの割合の部分を実行できたかを評価するテスト。
DLL
動的リンクライブラリ。主にOSが提供し複数のプログラムに共通して使用する関数やプログラムを機能単位でまとめたモジュールで、プログラムの実行中にホストアプリケーションに組み込まれる形で使用される。
プログラム実行中に使用されるので、動的。
オープンソースの定義
OSI(Open Source Initiative)によるオープンソースの定義(OSD:The Open Source Definition)では、以下の通り。
- 自由な再頒布ができること
- ソースコードを入手できること
- 派生物が存在でき、派生物に同じライセンスを適用できること
- 差分情報の配布を認める場合には、同一性の保持を要求してもかまわない
- 個人やグループを差別しないこと
- 利用する分野を差別をしないこと
- 再配布において追加ライセンスを必要としないこと
- 特定製品に依存しないこと
- 同じ媒体で配布される他のソフトウェアを制限しないこと
- 技術的な中立を保っていること
MapReduce、Hadoop
MapReduceとは、米グーグル(Google)が開発した、大規模なデータを効率的に分散処理するためのプログラミングモデル。
Hadoopで動作するプログラミングモデル。大規模データの蓄積・分析を分散処理技術によって実現するオープンソースのミドルウェア。
ハードウェア
アクチュエータ
アクチュエータ(Actuator)は act(動作)ate(させる)or(もの)。入力された電気信号を力学的な運動に変換する駆動機構。電気モータなど。
マイコン
マイクロコンピュータの略で組み込みシステムで使用されるCPUのこと。シングルチップマイコンにはRAMとROMの記憶装置が内蔵されていて、入出力機能も備わっています。
ヒューマンインターフェース
パンくずテスト
Webサイトを訪れたユーザが今どこにいるかを視覚的にわかりやすくした誘導表示のこと。
HOME > Page1 > Page 2
童話『ヘンゼルとグレーテル』で、主人公が森で迷子にならないように通り道にパンくずを置いていった、というエピソードに由来する。
マルチメディア
データベース
DBMS
DBMS(database management system)はデータベース管理システムのこと。データベースにおいて、データの情報の取り出し、登録、更新、削除などの機能をアプリケーションから簡単に扱えるようにしたもの。
占有ロック
データがロックされている間は、他ユーザはデータを読むことも、書き込むこともできないロック。排他制御(共有資源に対する複数アクセスが発生しても動作できる制御)に関するもの。
RDBMS
Relational Database(関係データベース)のこと。関係は表に対応付けられ、関係モデルの関係は関係データベースの表に対応する。
スキーマ
データの内容や論理構造、記憶形成や編成などデータベースの構造を記述したもの。
3層スキーマ構造
定義域(ドメイン)
関係データモデルにおいて,属性が取り得る値の集合。
UML
Unified Modeling Language(統一モデリング言語)。システムの振る舞いや構造をオブジェクト指向で分析したり設計したりする際に用いる図の標準規格。
UML2.0では、構造に関する表記が6つ、振る舞いに関する表記が7つある。
クラス図
クラス図は次の要素で構成される。
クラス名 |
属性(省略可) |
操作(省略可) |
クラス間相互関係は線形と多重度で表現されます。
線形 | 関係 | 説明 |
---|---|---|
関連(association) | 2つの関連を表す | |
集約(aggregation) | 全体と部分の関係を表す。 ひし形があるほうが全体 |
|
コンポジション(composition、編成) | 集約の一種。全体が部分の生成や削除を担っている場合に使用される。 全体が削除されると部分も削除される。 |
|
依存(dependency) | クラス間で関係性があるが関係があまり強くない場合に使用する | |
汎化(generalization) | 親クラスと子クラスの関係を表す。三角形があるほうが親。 | |
実現(realization) | 相手を具象化する関係のときに用いる。Javaでいるinterface |
多重度の表記 | 意味 |
---|---|
1 | 1個 |
'0..n"、'*' | 0以上 |
1..n | 1以上 |
2..5 | 2から5 |
E-R図
Entity Relationship Diagram。entityは直訳で実体を意味し、今回は、テーブルのことを表している。E-R図はデータベース化の対象となる実体(エンティティ)と、実体の持つ属性(アトリビュート)、及び実体間の関連(リレーションシップ)を表現する図である。
データベースの正規化
データベースの正規化とは、データベース設計の工程において同一テーブル内のデータの重複をなくすために、適宜データを分割・整理すること。
正規化されていないものだと、同じ項目が複数の表に存在し、修正が面倒になります。
正規化の手順は次の通りです。
- 第一正規化
同一行内での繰り返しをなくす - 第二正規化
主キーの一部によって一意に決まる属性を別表に移す - 第三正規形
主キー以外の属性によって一意に決まる属性を別表に移す
主キー
主キーとは、表内のある行を一意に決めることができる特性をもつ属性のこと。
主キーの制約条件は次の2つ
- 一意性制約:キー値が重複していないこと
- NOT NULL制約:Null値がないこと
データディクショナリ
DBMSが管理するデータ,利用者,プログラムに関する情報,及びそれらの間の関係を保持するデータの集合体
結合(join)
複数の表を共通する属性で結合し、1つの表にする操作
射影(projection)
表から指定された列(属性)を抽出する操作
選択(selection)
表から指定された行(タプル)を抽出する操作
和(union)
同じ属性を持つ2つの表の行を足し合わせて、1つの新しい表をつくりだす操作
A | B | C |
a_1 | b_1 | c_1 |
a_2 | b_2 | c_2 |
A | B | C |
a_3 | b_3 | c_3 |
和をとって、3行にする。
A | B | C |
a_1 | b_1 | c_1 |
a_2 | b_2 | c_2 |
a_3 | b_3 | c_3 |
SQL文
〇テーブルから列を抽出(SELECT FROM)
SELECT 列名 FROM テーブル名 /* 例 */ SELECT * FROM orders;
SELECT *(アスタリスク)は全フィールドを意味します。3行目の例はordersテーブルからすべての列を取得します。
〇条件の絞り込み(WHERE)
SELECT *FROM 列名 WHERE 条件 /* 例 */ SELECT * FROM products WHERE category = 'Electronics';
例はproductsテーブルの列のうち、category=Electronics のものを取得します。
〇カラムに別の名前を付ける(AS)
SELECT first_name AS "First Name", last_name AS "Last Name" FROM employees;
この例では、employeesテーブルからfirst_name列を "First Name" として、last_name列を "Last Name" として取得します。
〇昇順、降順で並べ替えて取得する(ORDER BY)
/* 昇順 */ SELECT * FROM products ORDER BY price ASC; /* 降順 */ SELECT * FROM products ORDER BY price DESC;
ORDER BY句は並べ替えを表します。ASCはAscending order(昇順)、DESCはDescending order(降順)を意味します。
例では、productsテーブルのすべての列を昇順、降順に並べ替えて取得しています。
〇データのグループ化(GROUP BY)
SELECT category, COUNT(*) FROM products GROUP BY category;
productsテーブルのcategory列の要素数(COUNT関数で取得)GROUP BY句でcategoryごとにグループ化しています。
〇新しい行をテーブルに挿入(INSERT文)
INSERT INTO customers (first_name, last_name, email) VALUES ('John', 'Doe', 'john.doe@example.com');
例では、customersテーブルに新しい行を挿入しています。
〇既存の行のデータを更新(UPDATE文)
UPDATE products SET price = 25.99 WHERE product_id = 101;
例では、productsテーブルのproduct_id=101の行のpriceを25.99に更新しています。
〇行の削除(DELETE文)
DELETE FROM customers WHERE customer_id = 105
例ではcustomersテーブルのcustomer_id=105の行を削除しています。
〇直積結合
/* customersとordersの直積結合 */ SELECT * FROM customers, orders;
(customersテーブル)
customer_id | first_name | last_name |
---|---|---|
1 | John | Doe |
2 | Jane | Smith |
3 | Mary | Johnson |
(ordersテーブル)
order_id | product |
---|---|
101 | Laptop |
102 | Tablet |
103 | Smartphone |
(直積結果)
customer_id | first_name | last_name | order_id | product |
---|---|---|---|---|
1 | John | Doe | 101 | Laptop |
1 | John | Doe | 102 | Tablet |
1 | John | Doe | 103 | Smartphone |
2 | Jane | Smith | 101 | Laptop |
2 | Jane | Smith | 102 | Tablet |
2 | Jane | Smith | 103 | Smartphone |
3 | Mary | Johnson | 101 | Laptop |
3 | Mary | Johnson | 102 | Tablet |
3 | Mary | Johnson | 103 | Smartphone |
〇文字列検索(LIKE句)
/* 完全一致 */ /* product_nameがLaptopと完全に一致するものをproductsから取得 */ SELECT * FROM products WHERE product_name LIKE 'Laptop';
% は0文字以上の任意の文字列を表します。部分一致を表したい場合に使います。
/* 前方一致 */ /* Lで始まるものを検索 */ SELECT * FROM products WHERE product_name LIKE 'L%'; /* 後方一致 */ /* aptopで終わるものを検索 */ SELECT * FROM products WHERE product_name LIKE '%aptop'; /* 部分一致 */ /* Tabletを含むものを検索 */ SELECT * FROM products WHERE product_name LIKE '%Tablet%';
"_"(アンダーバー)は任意の一文字に一致します。
SELECT * FROM customers WHERE first_name LIKE 'J_ne';
埋め込みSQL、カーソル
CやCOBOL、Pascalのような表データを直接扱えない手続き型プログラミングに、関係データベースを操作するためのSQLを埋め込むための手法。
埋込みSQLでは、問合せによって得られた導出表を1行ずつ親プログラムに引き渡しながら処理をしていく。この操作において結果表内のある1行を参照する仕組みをカーソルという、
トランザクション、アクティブ、アボート、コミット
口座から振込みを行う場合における送金側の残高減と振込先口座の残高増のように関連する1つ以上の処理をまとめた単位。
データの整合性を保つために「全ての処理が完了する」か「全く処理が行われなかったか」のどちらかで終了しなくてはならない。
処理、状態 | 説明 |
---|---|
アクティブ | トランザクションを処理中の状態 |
アボート | トランザクションの途中で処理を強制的に中断してトランザクションをロールバックする処理 |
コミット | トランザクションの一連の処理が成功した際に、その結果を確定させる処理 |
アボート(abort)は、頓挫する、無駄に終わる、失敗する、流れるなどの意味がある。
トランザクションが取れる状態は次の5つ。
デッドロック
共有資源を使用する2つ以上のトランザクションが、互いに相手トランザクションが必要とする資源を排他的に使用していて、互いのトランザクションが相手が使用している資源の解放を待っている状態。
永遠に待ちが続く。
ロールバック、ロールフォワード
機能 | 説明 |
---|---|
ロールバック(後退復帰) | トランザクションの途中、プログラムのバグなどでアプリケーションからの応答がなくなったり強制終了した場合に、更新前ジャーナル(ログ)を用いてデータベースをトランザクション開始直前の状態に戻す処理 |
ロールフォワード(前進復帰) | データベースシステムに障害が起こったときに行われる回復処理です。更新後ログを用いて今まで処理したトランザクションを再現しシステム障害直前までデータベース情報を復帰させる。 |
トランザクション処理で失敗し、更新前ジャーナルを使って、やりかけの処理を取り消すのがロールバック。データベースシステムに障害が起こった場合に、更新後ログを使ってやり直し、データ情報を復帰させるのがロールフォワード。
分散データベース
分散データベースとは、データを複数のコンピュータシステムに分散して配置するデータベース。複数のコンピュータでデータ管理を行うことで、可用性を高めることができる。
2相コミット
分散データベースシステムにおいて,一連のトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ,すべてのサイトが確定可能である場合,更新処理を確定する方式。
ACID
データベースのトランザクション処理を行う上で必要不可欠とされる4つの性質(Atomicity・Consistency・Isolation・Durability)のこと。
- Atomicity:原子性
- Consistency:一貫性
- Isolation:独立性
- Durability:永続性
データウェアハウス
企業の様々な活動を介して得られた大量のデータを整理・統合して蓄積しておき,意思決定支援などに利用するもの
ネットワーク
NAPT
Network Address Port Translation。IPアドレスとポート番号を、別のIPアドレスとポート番号に変換する技術で、 IPマスカレードと呼ぶこともある。
1つのグローバルIPアドレスで複数のPCが同時にインターネットを利用するためにはNAPT機能を使う。
NAT
Network Address Translation。グローバルIPアドレスとプライベートIPアドレスを紐付けて変換する技術。
IPアドレスクラス
上位8ビットでクラスを分類している。
上位8ビット | 分類 | 範囲 |
---|---|---|
0------- | クラスA | 0~127(2^7 - 1) |
10------ | クラスB | 128(2^7)~191(2^7 + 2^6 - 1) |
110----- | クラスC | 192(2^7 + 2^6)~223(2^7 + 2^6 + 2^5 - 1) |
1110---- | クラスD | 224(2^7 + 2^6 + 2^5)~239(2^7 + 2^6 + 2^5 + 2^4 - 1) |
ネットワークを構成するパソコンの台数によって分けられる。大規模だと範囲が大きいクラスAのようになる。
CSMA/CD方式
Carrier Sense Multiple Access with Collision Detection(搬送波感知多重アクセス/衝突検出方式)のこと。媒体共有型ネットワーク(通信機器と通信機器をつなぐ媒体(=ケーブル)を共有するネットワーク)で衝突を回避し、正しく送信を行うための方式。
次の手順で送信を行う。
- 伝送路上に他のノードからフレームが送出されていないかを確認する
- 複数のクライアントは同じ回線を共用し、他者が通信をしていなければ自分の通信を開始する
- 複数の通信が同時に行われた場合は衝突を検出し、送信を中止してランダム時間待ってから再び送信をする
衝突といわれたら、CSMA/CD方式。
OSI基本参照モデル、TCP/IPモデル
OSI基本参照モデルは、異機種間のデータ通信を実現するために,通信サービスを7つの階層に分割し,各層ごとに標準的なプロトコルや通信サービスの仕様を定めるという考え方をモデル化したもの。OSIはOpen Systems Interconnectionのこと。
TCP/IPはTransmission Control Protocol/Internet Protocolのこと。TCPはトランスポート層にあたるプロトコルで、インターネット等で利用される。
OSI参照モデルよりも実装面で効率的かつ現実的な仕様となっているのが「TCP/IP」の階層モデル
OSIモデルの階層 | 説明、主な役割 | 領域 | 関連装置、プロトコル |
---|---|---|---|
アプリケーション層 | 最も利用者に近い部分。ファイル転送や電子メールなどアプリ間のやり取り | ソフトウェア | HTTP/HTTPS、FTP |
プレゼンテーション層 | データの表示形式を管理したり、文字コードやエンコードの種類などを規定する役割 | ソフトウェア | SMTP、POP3、IMAP |
セション層 | 通信プログラム間の開始から終了までの一連の手順(セッション)を定義するもの | ソフトウェア | SSL/TLS |
トランスポート層 | 通信の品質をコントロールする層 | ネットワーク | TCP、UDP |
ネットワーク層 | ネットワークにおける通信経路の選択(ルーティング)や中継を行う | ネットワーク | IP、ルータ、L3スイッチ |
データリンク層 | 直接的に接続された機器同士の通信を実現 | ネットワーク | イーサネット、PPP、ブリッジ、L2スイッチ |
物理層 | ケーブルやコネクターなど物理的な接続 | ハードウェア | LANケーブル、リピータ |
ゲートウェイ
OSI基本参照モデルの7層すべてを認識しますが、主にトランスポート層以上でプロトコルの異なるネットワーク同士を接続する役割を持つ装置
リピータ
リピータは、物理層に位置し、ネットワークを流れる電流の増幅や整流を行う機器
スイッチングハブ(L2スイッチ)
OSI基本参照モデルのデータリンク層で動作し、通過するデータフレームの宛先MACアドレスを見てデータフレームを適切な送信ポートに転送する機能を有する機器
HDLC手順
HDLC手順(High-Level Data Link Control)は、OSI基本参照モデルのデータリンク層のプロトコルで高効率・高信頼性を目指した伝送制御手順の一種。
同期制御に任意のビットパターンを連続して送信可能なフラグ同期方式を採用し、パリティでは検出できないバースト誤りも検出可能であるCRC方式を採用している。
アドレスプレフィックス
192.168.0.0/23 のスラッシュ以降の /23 の部分。先頭から何ビットまでがネットワークアドレスであるかを示す表記法。
192.168.0.0/23(サブネットマスク255.255.254.0)で IPv4の場合は、32ビットなので、先頭から23ビットがネットワークアドレスであればホストアドレスに割り当てられるのは残る9ビット。
なお、サブネットマスクはネットワークアドレスの範囲を示すために使われます。今回は、255.255.254.0なので、2進数で表すと 11111111111111111111111000000000となります。1で表示された部分がネットワークアドレス、0で表示された部分がホストアドレスに割り当てられます。
全てが0の"000000000"と全てが1の"111111111"は、それぞれネットワークアドレス、ブロードキャストアドレスとして予約されているためホストアドレスとして割り当てることはできない。
ホストに割当て可能なアドレス数の上限は192.168.0.0/23 で IPv4の場合、2^9 - 2 = 510 個
ブロードキャストアドレス
あるネットワーク内のすべての端末に同じ内容を送信する(ブロードキャストする)ときに使われる特別なアドレスで、ホストアドレス部の全ビットを"1"に設定したアドレスをあて先に指定する。
DNS
TCP/IPを利用したネットワークでは、各ノードを識別するため一意のIPアドレスが割り当てられていますが、このIPアドレスは数字の羅列で人間にとって覚えにくいため、IPアドレスと対応する別名であるドメイン名が付けられています。DNS(Domain Name System)は、このドメイン名とIPアドレスを結びつけて相互変換する(名前解決する)仕組み。
コマンド
コマンド | 説明 |
---|---|
arp | ARPテーブルの管理に使用されるコマンド。 ARPテーブルはARP(Address Resolution Protocol)によって割り出したIPアドレスとMACアドレス(EthernetやWi-Fiなどの物理アドレス)の対応表のこと。 |
ipconfig | TCP/IPネットワーク設定を確認できるコマンドライン IPアドレスやサブネットマスクおよびデフォルトゲートウェイの情報が表示される |
netstate | 自端末のTCP/IPネットワーク接続状況を調べるコマンドです。ルーティングテーブル、通信状態、通信相手、通信量などの情報が得られる。 |
ping | 対象ノードにパケットを送ることでネットワークの疎通診断を行う機能 |
DHCP
Dynamic Host Configuration Protocol。TCP/IPネットワークで、ネットワークに接続するノードへのIPアドレスの割り当てをアドレスプールから自動的に行うプロトコル。
ウェルノウンポート番号
ポート番号のうち、よく利用される特定のアプリケーション用に予約されている 0~1023 までのこと。
NTP
NTP(Network Time Protocol)は、UDPのポート123番を使用
SDN、Overflow
Overflow はネットワーク機器を1つの制御装置で集中管理して複雑な転送制御を行ったり、柔軟にネットワーク構成を変更できる技術のこと。
SDN(Software-Defined Networking)はOpenFlow上でソフトウェア制御による動的で柔軟なネットワークを作り上げる技術全般。
SNMP
SNMP(Simple Network Management Protocol)は、TCP/IPネットワーク環境の監視・管理を担うプロトコル。ルータやスイッチングハブといったネットワーク機器、Windows、UNIXといったサーバなどの状態などの情報を取集ために使用される。
MIME
Multipurpose Internet Mail Extension。ASCII文字しか使用できないSMTPを利用したメールで、日本語の2バイトコードや画像データを送信するための仕組み。
MIMEに暗号化とディジタル署名の機能を付け電子メールの機密性と完全性を高めたものをS/MIME(Secure MIME)といいます。
RADIUS
Remote Authentication Dial In User Service。ネットワーク上で利用者の認証や権限の付与、利用状況の記録などを行うための通信プロトコルの一つ。大規模なネットワーク認証システムの構築に使われる。
パケット交換方式
情報を幾つかのブロックに分割し,各ブロックに制御情報を付加して送信する方式であり,誤り制御は網で行う.
セキュリティ
公開鍵暗号方式
公開鍵暗号方式の手順
- 通信を受ける者(受信者)は自分の公開鍵(暗号化のための鍵)p を全世界に公開する。
- 受信者に対して暗号通信をする者(送信者)は、公開鍵 p を使ってメッセージを暗号化してから送信する。
- 受信者は、公開鍵 p と対になる秘密鍵(復号のための鍵)s を密かにもっている。この s を使って受信内容を復号し、送信者からのメッセージを読む。
RSA暗号
素因数分解が困難であることを利用したアルゴリズム。公開鍵暗号方式(公開鍵と秘密鍵がある)で暗号化できる。デジタル署名もできる。
デジタル署名の手順
- 送信者は、メッセージをハッシュ関数にかけてメッセージダイジェスト(ハッシュ値)を得る。
- 送信者は、メッセージダイジェストを送信者の秘密鍵で暗号化することでディジタル署名を生成し、メッセージと一緒に送信する。
- 受信者は、ディジタル署名を送信者の公開鍵で復号し、メッセージダイジェストを得る。
- 受信者は、受信したメッセージを送信者と同じハッシュ関数でハッシュ化したものと、3.で復号したメッセージダイジェストを比較する。
- 一つのメッセージからハッシュ関数によって生成されるメッセージダイジェストは常に同じになるため、送信者から送られてきたメッセージダイジェストと、受信側でハッシュ化したメッセージダイジェストが同じなら、通信内容が改ざんされていないことが証明される。
デジタル署名は、「発信元が正当であるか」と「改ざんの有無」が確認できる。
バックドア
一度不正侵入に成功したコンピュータやネットワークにいつでも再侵入できるように攻撃者によって設けられた仕掛けのこと
不正のトライアングル
不正行動は「動機・プレッシャー」「機会」「正当化」の3要素がすべて揃った場合に発生するという理論。米国の組織犯罪研究者であるドナルド・R・クレッシーにより提唱された。
ドライブバイダウンロード
Webサイトに悪意のあるプログラムを埋め込み、Webブラウザを通じて利用者が気付かないようにそのプログラムをダウンロードさせたり、自動的に実行させる攻撃
ディレクトリトラバーサル攻撃
外部からのアクセスを想定していない「ディレクトリ(ファイルをグループ化するためのフォルダ)」内部に不正アクセスして、ファイルを閲覧したり書き換えたりするサイバー攻撃
ブルートフォース攻撃
組み合わせ総当たりで不正ログインやパスワード解析を試みる攻撃。
リスク対応
リスク対応は大きく分けて次の3つ。
- リスクコントロール
潜在的なリスクに対して、リスクを回避したり低減したりする対策を講じること。リスク回避・リスク低減・リスク移転などがある。
リスクが顕在化した場合に備えて、損失の補てんや対応のための資金確保策を講じること。
- リスク受容
リスクの損失額や顕在化の可能性が低いため、予算などとの兼ね合いからあえて対処を行わないこと。
リスクレベル
JIS Q 27000:2014(情報セキュリティマネジメントシステム-用語)における"リスクレベル"の定義は「結果とその起こりやすさの組合せとして表現される,リスクの大きさ」
信頼性
情報システムによる処理に欠陥や不具合がなく、期待した処理が確実に行われている特性
CSIRTマテリアル
CSIRT(シーサート: Computer Security Incident Response Team) とは、組織内の情報セキュリティ問題を専門に扱う、インシデント対応チーム。
組織的なインシデント対応体制の構築や運用を支援する目的でJPCERT/CCが作成したもの。
リスクアセスメント
リスクマネジメントの指針を示した規格であるJIS Q 31000では、「リスク特定,リスク分析及びリスク評価を網羅するプロセス全体を指す」と定義している。リスクアセスメントは組織に潜在しているリスクを把握し、リスクを最適化するために実施される。
- リスク特定
組織の目的の達成を助ける又は妨害する可能性のあるリスクを発見し,認識し,記述する
- リスク分析
必要に応じてリスクのレベルを含め,リスクの性質及び特徴を理解する
- リスク評価
リスク分析の結果と確立されたリスク基準との比較をし,追加する行為の決定を裏付ける
リスク基準の確立 → リスク特定 → リスク分析 → リスク評価 → リスク対応
SaaS、PaaS、IaaS
クラウドサービスの種類。クラウド事業者が運用管理して提供する範囲によって、名称が異なる。
サービス | 説明 | 例 | |
---|---|---|---|
SaaS(Software as a Service) | クラウドにあるソフトウェアを利用できるサービス。ハード、OS、ミドルウェア、アプリまで管理する。 | Slack、Google Meet、マネーフォワード クラウド | |
PaaS(Platform as a Service) | クラウドにあるプラットフォームが利用できるサービス。ハード、OS、ミドルウェアまで管理する。 | Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform | |
IaaS(Infrastructure as a Service) | クラウドにある、ネットワークやサーバ(CPU・メモリ・ストレージ)などのコンピューティングリソースを利用するサービス。ハードウェアを管理する。 | Amazon EC2 |
BYOD
Bring Your Own Device。従業員が個人的に所有するPCやスマートフォンなどの情報端末を職場に持ち込み、それを業務に使用すること。
リスク共有(リスク転移)
保険をかけたりリスクのある業務を委託をしたりすることでリスクによるマイナスの影響を他者と分担する戦略。
ビジネスインパクト分析
障害や災害によりシステムが停止した場合の事業への影響を評価する分析手法
ファジング
検査対象のソフトウェア製品に「ファズ(英名:fuzz)」と呼ばれる問題を引き起こしそうなデータを大量に送り込み、その応答や挙動を監視することで(未知の)脆弱性を検出する検査手法。
ペネトレーションテスト
ペネトレーションテスト(侵入テスト)は、ネットワークに接続されている情報システムに対して、様々な方法を用いて実際に侵入を試みることで脆弱性の有無を検査するテスト。
マルウェア
ウイルスを含む、あらゆる種類の悪意のあるソフトウェアの総称。
DMZ
DMZ(DeMilitarized Zone,非武装地帯)は、Webサーバ・メールサーバ・プロキシサーバなどのように外部セグメント(インターネット)からアクセスされる可能性のある情報資源を設置するための、外部でも内部でもない中間的な位置に存在するセグメント。
IDS
Intrusion Detection System(侵入検知システム)のこと。ネットワークやホストをリアルタイムで監視し、異常を検知した場合に管理者に通知するなどの処置を行うシステム。
ネットワークの通信を監視するネットワーク型IDS(NIDS)と、サーバなどにインストールされ、そのマシンの挙動を監視するホスト型IDS(HIDS)に分類される。
セキュアブート
PC の起動 (ブート) 時に悪意のあるソフトウェアが読み込まれないように設計された重要なセキュリティ機能。
PCの起動時にOSやドライバのディジタル署名を検証し,許可されていないものを実行しないようにすることによって,OS起動前のマルウェアの実行を防ぐ技術。
第三者中継
メール送信(SMTP)サーバが、関係のない外部からの送信を受け付ける設定になっていること、または実際にメールを送信してしまう状態のことである。Third-Party Mail Relay、オープンリレーとも呼ばれる。
受信者、送信者ともに無関係のメールのログがあれば、第三者中継。
SPF
SPF(Sender Policy Framework)は、メールを送信しようとしてきたメールサーバのIPアドレス情報を検証することで、正規のサーバからのメール送信であるかどうか確認することができる技術
ポートスキャナ
検査対象のコンピュータやルータの全部または一部の通信ポートに信号を送ることで、サービスの稼働状態を外部から調査するツール。
WAF
Web Application Firewall。
従来のファイアウォールやIDS/IPSでは防ぐことができない不正な攻撃からWebアプリケーションを防御するファイアウォールのこと。Webアプリケーションという観点から、一般的にはWAFといえばWebサーバーが利用するポート 80番(HTTP)、443番(HTTPS)のトラフィックを 双方向で監視して、悪意あるユーザーからWebアプリケーションとその背後にあるデータを守る製品のこと。
デジタルフォレンジクス
Forensicsは警察の犯罪捜査や法医学における鑑識・科学捜査を意味する。
不正アクセスや情報漏えいなどのセキュリティインシデントの発生時に、原因究明や法的証拠を明らかにするために対象となる電子的記録を収集・解析すること
電子透かし
ディジタルコンテンツに作者名・課金情報・コピー可能回数など著作権情報を埋め込む技術。
ウィルス定義ファイル
ウイルスが持つ特徴的なコードをパターン(シグネチャコード)として収録したファイルで、ウィルス対策ソフトがウィルスを検出するために使われる。
WPA3
Wi-Fi Protected Access 3。無線LANのセキュリティプロトコル。
WPA2には2017年11月に「KRACKs」と呼ばれる4ウェイハンドシェイク時における深刻な脆弱性が見つかっており、翌2018年に発表されたWPA3ではセキュリティのさらなる強化が図られた。
SSL/TLS
SSL(Secure Sockets Layer)は、通信の暗号化,ディジタル証明書を利用した改ざん検出,ノード認証を含む統合セキュアプロトコル。
TLS(Transport Layer Security)は、SSL3.0に基づいてIETFが標準化したOSI基本参照モデルのトランスポート層における暗号化プロトコルを中心とした規格。
UPS
Uninterruptible Power Supply。Uninterruptibleは中断されないなどを意味する。落雷などによる突発的な停電が発生したときに自家発電装置が電源を供給し始めるまでの一定時間、システムに電源を供給する役目をもつ装置。
システム開発技術
DFD
Data Flow Diagram。構造化分析手法の一つでデータの流れに着目して、その対象となる業務のデータの流れと処理の関係をわかりやすく図式化する手法。
〇 | プロセス(処理) | |
---|---|---|
□(長方形) | 外部実体 データの源泉、データの吸収先 |
|
→ | データフロー | |
=(二本の横平行線) | データストア |
決定表
決定表(デシジョンテーブル)は、ある事象について条件や選択肢を表形式で整理し、記述された条件・選択肢の組合せによってどのような処理を行うべきかを列挙したもの。
30歳未満 | Y | Y | N | N |
---|---|---|---|---|
男性 | Y | N | Y | N |
動作1 | X | |||
動作2 | X | |||
動作3 | X |
インスペクション
Inspectionは検査を意味する。事前に役割を決められた参加者が責任のある第三者(モデレータ)の下で成果物を確認する、最も公式なレビュー技法。
他のレビュー法と比較したときのインスぺクションの特徴は以下の3点。
- 参加者の役割が明確になっていること
- チェックリストなど形式的な文書に基づいて実施すること
- レビュー記録を正式な形で残すこと
通常3人から6人が参加する。各参加者に割り振られる役割は次の5つ。
- モデレータ:議長・司会
- オーナー:レビュー対象となる成果物の作成者で、発見された問題に応じて成果物の修正を行う
- インスペクタ:評価者としてレビュー対象となる成果物の問題発見を行う
- プレゼンタ:ミーティングにて参加者に資料の説明を行う
- スクライブ:書記としてレビューで発見された問題などを記録する
ウォークスルー
設計上の誤りを早期に発見することを目的として、各工程の終了時点で、作成者を含めた複数の関係者が設計書やソースコードを検査するデザインレビューの手法。
次の特徴がある。
- 原則として管理者には参加させない
- 誤りの発見を目的としその場で解決策を議論しない
- 事前に資料を配布しておくことで短時間で効率よく行う
命令網羅、判定条件網羅
どちらもホワイトボックステストのテストケース設計に関する網羅度のレベル。
- 命令網羅:すべての命令を一回は実行する。つまり、if文などの条件の部分を一回は踏むが、true と false を両方試す必要はない。
- 判定条件網羅:すべての分岐について、分岐先のすべての経路を一回は実行する。つまり、true と false を両方試す。
結合テストの実施方式
状態遷移テスト
設計段階でシステム要求事項をもとに作成した「状態遷移図」「状態遷移表」を使用して、システムが正しく挙動するかを検証するホワイトボックステストの手法。
開発プロセス・手法
リバースエンジニアリング
既存ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する技法
リファクタリング
外部から見たときの振る舞いを変えずに、ソフトウェアの内部構造を変えること
CMMI
Capability Maturity Model Integration。統合能力成熟度モデルと呼ばれ、組織におけるプロセス改善をガイドするモデル。
特許クロスライセンス
2つ以上の企業や団体が互いに自らの持つ特許の実施権を許諾しあうこと
アジャイル開発
計画→設計→実装→テストといった開発工程を、機能単位の小さいサイクルで繰り返す開発手法。仕様変更に強く、プロダクトの価値を最大化することに重点を置いた開発手法で、サービスインまでの時間を短縮できることが名前の由来(アジャイル=素早い)
スクラム
アジャイル開発の方法論の1つで、開発プロジェクトを数週間程度の短期間ごとに区切り、その期間内に分析、設計、実装、テストの一連の活動を行い、一部分の機能を完成させるという作業を繰り返しながら、段階的に動作可能なシステムを作り上げるフレームワーク
スクラム開発では開発反復の単位を「スプリント」といい、スプリント実施の際に行う各イベントが定義されている。
スプリントプランニング
スプリントの開始に先立って行われるミーティングで、プロダクトバックログの中から、そのスプリントで開発するものを決定する
デイリースクラム
開発チーム全員の活動の共有とコミュ二ケーションの促進を目的として、スプリント実施中に毎日10~15分程度行われる確認・調整のための会議。昨日やったこと、今日やること、障害になっていることを各人が話す
スプリントレビュー
スプリントの終了時に、関係者を集めて成果物のデモンストレーションを行い、成果物を検査し、フィードバックを得る
スプリントレトロスペクティブ
スプリント終了後に次のスプリントを見据えて行われる振り返り。上手くいったこと、上手くいかなかったこと、それに対する改善法・解決法を話し合う