本文へ移動

基本情報技術者試験 · 学習ガイド

技術要素

情報を使う画面、画像・音声、関係データベース、通信と安全対策を具体例で学びます。SQL、E-Rモデル、プロトコル、Web攻撃の対策を役割で区別します。

仕組みを理解する

データベース

データベースとは、データを重複なく整理して管理する仕組みで、正規化やトランザクションが土台になります。

注文ごとに重複した顧客情報を一か所にまとめ、各注文から参照する図。
同じ顧客の住所を注文ごとに保存すると、一部だけ更新して不整合が生じることがあります。顧客情報を分けて参照する設計で、更新箇所をまとめます。

注文表の全行に顧客住所を繰り返し書くと、一部だけ変更されて住所が食い違うことがあります。正規化はこのような更新の不整合を減らします。

基本の仕組み

基本の仕組みの図解。中央の縦仕切りを挟み、左の注文表には顧客番号だけ、右の顧客表には顧客番号と住所を置く。同じ顧客番号を左から右への矢印で結び、住所の書き換えは右の表だけで示す。
覚えること:顧客番号で決まる住所は顧客表で変更

注文表に顧客番号と住所を毎回書く代わりに、顧客番号で決まる住所を顧客表へ分け、注文表には顧客番号だけを置きます。住所変更を一か所で行えるようになります。

トランザクションは一まとまりの処理です。振込みなら引落しと入金をまとめ、途中で失敗したらロールバックすることで片方だけの更新を防ぎます。

正規化は表を細かく分けること自体が目的ではありません。関数従属性を確認し、分けた表を結合すれば元の関係を正しく復元できるように設計します。

関係モデルの制約

関係モデルの制約の図解。中央に縦の仕切りを置き、左の参照元の表の外部キーから、右の参照先の表に実在する行の主キーへ矢印を引く。主キーはその表の行を一意に識別するものとして描く。
覚えること:外部キーは別表の実在する行を参照

主キーは行を一意に識別し、外部キーは別表を参照します。正規化は重複と更新時の不整合を減らすため、関数従属を見て表を分割します。参照整合性は存在しない参照先を作らない制約で、トランザクションの原子性とは別です。

関係モデルの制約
概念対象
主キー行の一意性
外部キー別表の参照
正規化重複と更新異常の抑制

トランザクションの性質と障害回復

トランザクションの性質と障害回復の図解。中央に「更新途中」のデータ、左に「開始前」の状態を置き、上から「異常終了」の矢印を中央へ向ける。中央から左へ戻る矢印に「ロールバック」と添え、その矢印のそばに「更新前ログ」を配置する。
覚えること:途中で異常終了→更新前ログでロールバック

トランザクションが満たすべき性質は、頭文字をとってACID特性と呼びます。処理が確定したことをコミット、取り消して開始前に戻すことをロールバックといいます。

障害回復では、トランザクションの途中で異常終了したら、更新前ログを使うロールバックで取り消します。ディスク障害では、バックアップを戻してから更新後ログを適用するロールフォワードで、コミット済みの更新を再現します。

複数のトランザクションが同じデータを更新するときはロックで排他制御します。読取り用の共有ロックどうしは同時に掛けられますが、更新用の専有ロックは他のロックと両立しません。互いのロック解除を待ち合うとデッドロックになります。

トランザクションの性質と障害回復
特性意味
原子性(Atomicity)全て実行されるか、全く実行されないか
一貫性(Consistency)実行前後でデータの整合性が保たれる
独立性(Isolation)同時に実行しても互いに影響しない
耐久性(Durability)コミットした結果は障害後も失われない
トランザクションの性質と障害回復
障害回復方法使う情報
トランザクションの異常終了ロールバック更新前ログ
ディスク(媒体)障害ロールフォワードバックアップと更新後ログ

試験に出る

  • 正規化は更新の不整合や重複を減らすこと。
  • 関数従属性を確認し、結合して元の関係を復元できるよう設計すること。
  • ACID特性(原子性・一貫性・独立性・耐久性)の区別と、原子性を保つロールバック。
  • 障害回復のロールバック(更新前ログで取消し)とロールフォワード(バックアップ+更新後ログで再現)の使い分け。
  • 共有ロックどうしは両立し、専有ロックは他のロックと両立しないこと。

重要な言葉

正規化
データの重複や更新の不整合を減らすよう表を整理すること。
トランザクション
一まとまりとして扱う処理。途中で失敗したら全体を取り消す。
原子性
処理が全て行われるか、全く行われないかを保証する性質。
関数従属性
ある属性が決まれば別の属性が決まる関係。
ロールフォワード
バックアップ時点から更新後ログを適用し、障害直前のコミット済み状態まで戻す回復方法。

確認問題

確かめよう引落しだけ完了し入金が失敗した状態を残してよい?

いいえ。原子性を保つため全体を取り消すなどの処理が必要です。

トランザクションの途中で失敗したら、全体を取り消す。

正規化は、表を細かく分けること自体が目的である。

途中で失敗したときに全体を取り消す性質を何という?

データの重複や更新の不整合を減らすための整理は?

注文表の全行に顧客住所を繰り返し書くと、一部だけ変更されて住所が食い違うことがあります。はこのようなを減らします。

注文表に顧客番号と住所を毎回書く代わりに、で決まる住所を顧客表へ分け、注文表には顧客番号だけを置きます。を一か所で行えるようになります。

は一まとまりの処理です。振込みなら引落しと入金をまとめ、途中で失敗したらすることで片方だけの更新を防ぎます。

正規化は表を細かく分けること自体が目的ではありません。を確認し、分けた表を結合すれば元の関係を正しくできるように設計します。

ネットワーク

ネットワークとは、複数の機器を接続してデータをやり取りする仕組みで、層ごとに役割を分けます。

IPv4アドレスの32ビットを、ネットワーク部24ビットとホスト部8ビットへ分けた図。
考え方の例:IPv4の/24では、32ビットのうち先頭24ビットがネットワーク部、残り8ビットがホスト部です。アドレス数と端末に割り当てられる数は区別します。

荷物を送るときの宛先と、確実に届けるための確認は別の役割です。ネットワークも層ごとに担当を分けます。

基本の仕組み

基本の仕組みの図解。中央に/24のIPアドレスを横長の帯で描き、縦線で左の先頭24ビットと右の残り8ビットを仕切る。右側のホスト部から下の候補箱へ矢印を伸ばし、全0・全1の2枚を取り除いた先に「254個」を置く。
覚えること:通常の/24では全0・全1を除き254個

IPは宛先へパケットを届ける役割を担い、TCPは順序や再送などで信頼性を補います。DNSは名前に対応するIPアドレスなどを問い合わせます。

IPv4の/24は先頭24ビットがネットワーク部で、残り8ビットがホスト部です。通常のサブネットでは全0と全1を除く254個をホストへ割り当てられます。

一般にホスト部がnビットなら、割当て可能なホスト数は2^n−2個です。/26ならホスト部は6ビットで62個、サブネットマスクは255.255.255.192です。IPアドレスとサブネットマスクのANDを取るとネットワークアドレスが求まります。

DNSと暗号化を混同しないことが重要です。また、2台を結ぶだけの/31(RFC 3021)のような特別な利用法では、一般的なホスト数の式がそのまま当てはまりません。

層ごとの通信の役割

層ごとの通信の役割の図解。中央を横線で上下に分け、下段はネットワーク層のIPが二つのネットワーク間を転送する横矢印、上段はトランスポート層のTCP・UDPからアプリケーションへ向かう矢印で描く。二つの矢印の行き先を変え、役割の違いを見せる。
覚えること:IPは網間転送、TCP・UDPはアプリへ

OSI基本参照モデルは通信の機能を7層に分けます。IPはネットワーク層でネットワーク間の転送を、TCP・UDPはトランスポート層でアプリケーションへの受渡しを担います。TCPは信頼性のある転送、UDPは接続確立なしの軽量な転送です。

DNSは名前解決、HTTPはWebの要求・応答、TLSは通信の保護を担います。通信相手のアプリケーションはポート番号で区別し、HTTPは80番、HTTPSは443番、DNSは53番、SMTPは25番が標準です。

NAPT(IPマスカレード)は、社内のプライベートIPアドレスとポート番号の組を、グローバルIPアドレスとポート番号の組へ変換し、複数の機器で一つのグローバルアドレスを共用します。

層ごとの通信の役割
仕組み主な役割
IP宛先への転送
TCP再送等による信頼性
UDP接続確立なしの軽量な転送
DNS名前解決
TLS通信内容の保護
層ごとの通信の役割
OSIの層主なプロトコル・機器
第7層 アプリケーション層HTTP、SMTP、DNS
第4層 トランスポート層TCP、UDP
第3層 ネットワーク層IP、ルータ
第2層 データリンク層イーサネット、MACアドレス、スイッチ
第1層 物理層ケーブル、リピータ

試験に出る

  • IPは宛先へ届ける役割、TCPは順序・再送で信頼性を補う役割。
  • DNSは名前に対応するIPアドレスを調べる仕組みで、暗号化とは別。
  • /24はネットワーク部24ビット・ホスト部8ビットで、通常254台が割当可能。
  • ホスト部nビットで2^n−2台の計算(/26なら62台)と、サブネットマスクとのANDでネットワークアドレスを求めること。
  • /31など特別な利用法では通常の式が当てはまらないこと。
  • OSI基本参照モデルの層とプロトコル・機器の対応、代表的なポート番号。

重要な言葉

TCP
順序制御や再送で信頼性を補う通信プロトコル。
DNS
名前に対応するIPアドレスなどを調べる仕組み。
サブネット
ネットワークを分割した範囲。
ホスト部
IPアドレスのうち機器に割り当てる部分。

確認問題

確かめよう通常の/24サブネットのホスト部は何ビット?

32−24=8ビットです。

DNSは通信内容を暗号化する仕組みである。

通常の/24サブネットでは、ホスト部は8ビットである。

名前に対応するIPアドレスを調べる仕組みは?

通常の/24サブネットでホストに割り当てられる個数は?

荷物を送るときのと、確実に届けるための確認は別の役割です。ネットワークもに担当を分けます。

IPは宛先へパケットを届ける役割を担い、は順序や再送などで信頼性を補います。は名前に対応するIPアドレスなどを問い合わせます。

IPv4のは先頭24ビットがネットワーク部で、残り8ビットがホスト部です。通常のサブネットでは全0と全1を除くをホストへ割り当てられます。

と暗号化を混同しないことが重要です。また、2台を結ぶだけの(RFC 3021)のような特別な利用法では、一般的なホスト数の式がそのまま当てはまりません。

情報セキュリティ

情報セキュリティとは、情報の機密性・完全性・可用性を守るための仕組みと対策の総称です。

エルくんが説明する図解。送信者秘密鍵→署名、送信者公開鍵→検証、本文を隠す機能とは別と表示。
送信者が秘密鍵で署名を作り、受信者は対応する公開鍵で検証します。送信者の公開鍵が本物かは証明書などで確認します。

受け取ったファイルが誰から来て、途中で変わっていないかを確かめたい場面では、秘密にするだけでは足りません。

基本の仕組み

基本の仕組みの図解。左でエルくんが秘密鍵を使って文書に署名を付け、文書から右の受信者側の検証枠へ矢印を引く。検証枠では対応する送信者の公開鍵で署名を検証し、証明書などから公開鍵へ「本物の確認」を示す小矢印を引く。
覚えること:公開鍵の本物を確認して署名を検証

送信者が秘密鍵で署名を作り、受信者は対応する公開鍵で検証します。送信者の公開鍵が本物かは証明書などで確認します。

デジタル署名は作成者と改ざんの有無を確認する仕組みです。機密性のために相手へ暗号化して送る場合は、相手の公開鍵で暗号化し相手の秘密鍵で復号するなど、目的と鍵の役割が違います。

署名だけでは本文は隠れません。また、秘密鍵を他人へ渡すと本人だけが署名できるという前提が崩れます。

デジタル署名だけでは侵入を防げないため、社内・社外を問わずアクセスを検証するゼロトラストの考え方も重要です。多要素認証や最小権限、通信の記録を組み合わせます。

安全性の目的と対策

安全性の目的と対策の図解。中央を上下に仕切り、上段は左の共通鍵から公開鍵暗号へ矢印を引き、右に暗号化した共通鍵を置く。下段は本文と共通鍵を共通鍵暗号へ矢印で入れ、右に暗号化した本文を置く。
覚えること:共通鍵は公開鍵暗号、本文は共通鍵暗号

機密性・完全性・可用性は守る性質、認証・認可・監査は利用を制御する仕組みです。ハッシュ関数は同じ入力から同じ固定長の値を作り、値から原文を復元できないため、改ざんの検知に使います。

共通鍵暗号は暗号化と復号に同じ鍵を使い、処理は速い一方で鍵を安全に配る必要があります。公開鍵暗号は鍵配送が容易ですが処理が重いため、共通鍵を公開鍵暗号で送り、本文は共通鍵で暗号化するハイブリッド暗号が使われます。

n人が互いに通信する場合、必要な鍵の数は共通鍵暗号でn(n−1)/2個、公開鍵暗号で2n個です。10人なら45個と20個になります。

デジタル署名では、送信者が本文のハッシュ値を自分の秘密鍵で署名します。受信者は送信者の公開鍵で署名を検証し、自分で計算した本文のハッシュ値と一致すれば、作成者と改ざんのないことを確認できます。

安全性の目的と対策
手段主な用途
暗号化秘匿(機密性)
ハッシュ改ざん検知等
デジタル署名作成者・完全性の検証
安全性の目的と対策
方式鍵長所短所
共通鍵暗号暗号化と復号で同じ鍵処理が速い鍵の配送と管理(n(n−1)/2個)
公開鍵暗号公開鍵と秘密鍵の組鍵配送が容易(2n個)処理が重い

試験に出る

  • デジタル署名は作成者と改ざんの有無を確認する仕組み。
  • 署名は送信者の秘密鍵、検証は送信者の公開鍵を使うこと。
  • 機密性のための暗号化は相手の公開鍵で行い、秘密鍵で復号すること。
  • 署名だけでは本文は隠れないこと。
  • 秘密鍵を他人に渡すと本人だけが署名できる前提が崩れること。
  • 共通鍵暗号の鍵数n(n−1)/2と公開鍵暗号の2n、両者を組み合わせるハイブリッド暗号。

重要な言葉

デジタル署名
作成者と改ざんの有無を確認する仕組み。
公開鍵
広く公開する鍵。署名の検証や暗号化に使う。
秘密鍵
本人だけが持つ鍵。署名の作成や復号に使う。
機密性
許可された人だけが情報を見られるようにすること。
ゼロトラスト
ネットワークの内外を問わず、全てのアクセスを検証するセキュリティの考え方。

確認問題

確かめよう送信者の署名を検証する鍵は?

送信者の公開鍵です。受信者の秘密鍵ではありません。

デジタル署名を検証するのは、受信者の秘密鍵である。

署名を付ければ、本文の内容は自動的に隠される。

送信者の署名を検証する鍵は?

デジタル署名で確認できることは?

受け取ったが誰から来て、途中で変わっていないかを確かめたい場面では、だけでは足りません。

送信者がで署名を作り、受信者は対応するで検証します。送信者の公開鍵が本物かは証明書などで確認します。

は作成者と改ざんの有無を確認する仕組みです。のために相手へ暗号化して送る場合は、相手の公開鍵で暗号化し相手の秘密鍵で復号するなど、目的と鍵の役割が違います。

署名だけでは本文は隠れません。また、を他人へ渡すと本人だけが署名できるというが崩れます。

だけでは侵入を防げないため、社内・社外を問わずアクセスを検証するの考え方も重要です。多要素認証や最小権限、通信の記録を組み合わせます。

ヒューマンインタフェース

ヒューマンインタフェースとは、人とコンピュータの接点となる画面や操作の設計を扱う領域です。

エルくんが説明する図解。赤色だけのエラーと、警告アイコン+入力し直す説明を伴うエラーを比較。
必須項目を赤色だけで示す代わりに「必須」という文字も付けます。エラーは入力欄の近くに理由と直し方を示すと、次の行動が分かります。

操作できる人を増やすには、色や細かな文字だけに頼らない設計が必要です。見た目の統一と利用しやすさは同じではありません。

基本の仕組み

基本の仕組みの図解。中央に入力欄を大きく置き、そのすぐ下にエラーの理由と直し方を並べる。直し方から入力欄へ短い矢印を向け、次に操作する場所を示す。
覚えること:エラーの理由と直し方は入力欄の近くに

必須項目を赤色だけで示す代わりに「必須」という文字も付けます。エラーは入力欄の近くに理由と直し方を示すと、次の行動が分かります。

アクセシビリティは多様な利用者が情報や機能へアクセスできること、ユーザビリティは目的を効果的・効率的に達成できる使いやすさを扱います。

説明を増やしすぎて重要な操作を埋めないようにします。利用者に実際に操作してもらい、迷い・誤操作・完了時間を観察することが改善につながります。

操作設計の観点

操作設計の観点の図解。中央に入力エラーを表示した画面とキーボードを置き、エルくんが修正中の一つの作業から、左右の評価欄へ矢印を伸ばす。左はユーザビリティの有効さ・効率・満足度、右はアクセシビリティとして障害や利用環境にかかわらず使えるかを示し、両欄を仕切る。
覚えること:実際の利用者の作業で両観点を評価

ユーザビリティは、特定の利用者が特定の状況で目的を達成するときの有効さ・効率・満足度で評価します(JIS Z 8521)。アクセシビリティは、障害や利用環境にかかわらず情報や機能を利用できることです。

画面遷移、操作後の状態が分かるフィードバック、入力エラーからの回復、キーボードだけでの操作、画像の代替テキストなどを、実際の利用者の作業で具体的に評価します。

操作設計の観点
観点確認例
有効さ目的を正確に最後まで達成できる
効率達成までの時間や手間が少ない
満足度不快さがなく、使って満足できる
アクセシビリティ色覚・視覚・操作方法などの違いがあっても使える

試験に出る

  • アクセシビリティ(多様な利用者が使える)とユーザビリティ(目的を達成しやすい)の違い。
  • 色だけで意味を伝えず、文字や記号を併用すること。
  • エラーは入力欄の近くに理由と直し方を示すこと。
  • 説明を増やしすぎて重要な操作を埋めないこと。
  • 実際に操作してもらい、迷い・誤操作・完了時間を観察すること。

重要な言葉

アクセシビリティ
多様な利用者が情報や機能を利用できること。
ユーザビリティ
目的を効果的・効率的に達成できる使いやすさ。
エラー表示
入力の誤りを利用者に伝え、直し方を示す表示。
必須項目
入力が欠かせない項目。

確認問題

確かめよう赤と緑だけで成功と失敗を区別して十分?

いいえ。文字や記号なども組み合わせます。

色だけでエラーを伝えると、見分けにくい利用者がいる。

アクセシビリティとユーザビリティは同じ意味である。

多様な利用者が情報や機能を利用できることを表すのは?

色だけでエラーを示す問題点を補う方法は?

操作できる人を増やすには、色や細かな文字だけに頼らないが必要です。見た目の統一とは同じではありません。

を赤色だけで示す代わりに「必須」という文字も付けます。エラーは入力欄の近くに理由とを示すと、次の行動が分かります。

は多様な利用者が情報や機能へアクセスできること、は目的を効果的・効率的に達成できる使いやすさを扱います。

説明を増やしすぎてを埋めないようにします。利用者に実際に操作してもらい、迷い・誤操作・を観察することが改善につながります。

画像・音声のデータ量と圧縮

マルチメディアデータとは、画像や音声を数値として扱うデータで、標本化・量子化を経て記録し、圧縮できます。

エルくんが波に等間隔の時刻スタンプを押し、採った2.3の札を目盛2へ移す図。
標本化は時間の間隔、量子化は値の段階を決めます。考え方の例として、測定値2.3を最も近い整数の段階2へ丸めています。

写真や音声も、コンピュータでは数値の並びとして扱います。細かく記録すれば情報量が増える一方、保存容量や転送時間も必要になります。

基本の仕組み

基本の仕組みの図解。中央の音声波形を左から右へたどり、縦の時間目盛りで区切る「標本化」→測った高さを横の段階線に合わせる「量子化」→数値をビット列にする「符号化」を矢印でつなぐ。エルくんはこの一続きの図に1体だけ配置する。
覚えること:時間を区切り、振幅を段階化し、符号化

音声を毎秒44,100回、1回16ビット、2チャンネルで記録するなら、1秒のデータ量は44,100×16×2=1,411,200ビットです。ヘッダ等を除く非圧縮の条件で計算しています。

標本化は時間方向を区切って測定し、量子化は振幅を有限の段階へ対応させ、符号化は数値をビット列へ表します。画像では横画素数×縦画素数×1画素のビット数が非圧縮データ量の基本です。

可逆圧縮は元の情報へ完全に戻せますが、非可逆圧縮は一部の情報を省きます。一般的なJPEG写真とPNG画像では、用途と圧縮の考え方が異なります。圧縮率が指定されたら、元データと圧縮後のどちらを分母にするかを確認します。

非圧縮データ量の算定

非圧縮データ量の算定の図解。左に「横1,024画素」「縦768画素」「1画素24ビット」を並べ、掛け算の矢印で中央の18,874,368ビットへ集める。そこから「÷8」の変換ダイヤルを通る右向き矢印で、右の2,359,296バイト(約2.4Mバイト)へつなぐ。
覚えること:画像バイト=横×縦×1画素のビット数÷8

画像は横画素数×縦画素数×1画素のビット数、音声は標本化周波数×量子化ビット数×チャンネル数×時間でビット数を求めます。8で割るとバイトです。可逆圧縮は完全復元でき、非可逆圧縮では失った情報は戻せません。

例えば横1,024画素×縦768画素、1画素24ビットの画像は、1,024×768×24÷8=2,359,296バイト(約2.4Mバイト)です。

非圧縮データ量の算定
対象非圧縮時のビット数
画像横画素数×縦画素数×1画素のビット数
音声標本化周波数×量子化ビット数×チャンネル×秒

試験に出る

  • 音声のデータ量=標本化周波数×量子化ビット数×チャンネル数の計算。
  • 標本化・量子化・符号化の役割の違い。
  • 画像の非圧縮データ量は横画素数×縦画素数×1画素のビット数。
  • 可逆圧縮は完全に戻せ、非可逆圧縮は情報を一部省くこと。
  • 圧縮率は元データと圧縮後のどちらを分母にするかを確認すること。

重要な言葉

標本化
時間方向を区切って音声などを測定すること。
量子化
振幅を有限の段階へ対応させること。
可逆圧縮
元の情報へ完全に戻せる圧縮。
非可逆圧縮
一部の情報を省く圧縮。元へ完全には戻せない。

確認問題

確かめよう同じ標本化周波数・量子化ビット数なら、モノラルから2チャンネルでデータ量は?

基本的に2倍です。

非可逆圧縮は、元の情報へ完全に戻せる。

同じ条件なら、2チャンネルの音声はモノラルの2倍のデータ量になる。

音声の1秒のデータ量を求める式は?

元の情報へ完全に戻せる圧縮は?

写真や音声も、コンピュータでは数値の並びとして扱います。細かく記録すればが増える一方、保存容量やも必要になります。

音声を毎秒回、1回16ビット、2チャンネルで記録するなら、1秒のデータ量は44,100×16×2=です。ヘッダ等を除く非圧縮の条件で計算しています。

は時間方向を区切って測定し、は振幅を有限の段階へ対応させ、符号化は数値をビット列へ表します。画像では横画素数×縦画素数×1画素のビット数が非圧縮データ量の基本です。

は元の情報へ完全に戻せますが、は一部の情報を省きます。一般的なJPEG写真とPNG画像では、用途と圧縮の考え方が異なります。圧縮率が指定されたら、元データと圧縮後のどちらを分母にするかを確認します。

関係データベースの設計とSQL

関係データベースとは、表の形でデータを管理し、主キーや外部キーで表同士を関連付ける仕組みです。

エルくんが顧客ID1の名札と注文A・Bの顧客ID1欄を同じ色のひもで結ぶ図。
顧客表の主キーを注文表の外部キーから参照します。同じ顧客の注文が複数あることと、顧客表のIDが一意であることは両立します。

注文のたびに顧客の住所をコピーすると、変更時に直す場所が増えます。重複と更新の不整合を防ぐため、何を別の表にするか考えます。

基本の仕組み

基本の仕組みの図解。左に顧客表の1行、右に注文表の複数行を置く。顧客表の主キー「顧客ID」から、同じ値を持つ各注文行の外部キー「顧客ID」へ矢印を分岐させ、一対多を示す。
覚えること:同じ顧客IDで1人と複数注文を結ぶ

顧客表を顧客ID・氏名、注文表を注文ID・顧客ID・金額とすれば、同じ顧客の複数注文をIDで結べます。顧客と注文の関係は一対多です。氏名は同姓同名があり、識別子としては不十分な場合があります。

主キーは各行を識別し、外部キーは別表の対応行を参照します。正規化では属性間の依存関係を整理し、部分関数従属や推移的関数従属を別の表へ分離します。

SQLのIN述語は候補集合への所属を判定します。顧客ID IN (1,3)ならIDが1または3の行が対象です。内部結合は結合条件が一致する行を組み合わせます。GROUP BYでまとめた集計結果をHAVINGで絞る場合は、集計前に行を絞るWHEREと適用段階を分けます。

E-Rモデルは顧客・注文などの実体と、それらの関連を表します。顧客一人が複数の注文を持ち、一つの注文の顧客は一人なら、一対多の関連です。E-R図はそのモデルを図で表したもので、処理の順番を示すフローチャートとは異なります。図形や線の表記規則に従って多重度を読みます。

SQLと正規形

SQLと正規形の図解。左から右へ、表の行→WHERE→GROUP BY→HAVINGの順に矢印でつなぐ。WHEREの後に仕切りを置き、左は集約前の行、右はまとめられた集約結果として、条件をかける対象の違いを示す。
覚えること:WHEREは集約前、HAVINGは集約後

SELECTで列、WHEREで行を絞り、JOINでキーに基づき表を結びます。GROUP BYは集約単位、HAVINGは集約結果の条件です。外部結合(LEFT OUTER JOIN)は、左側の表の行を全て残し、対応する行がない列はNULLにします。

正規化では一つの事実を重複して持たせないよう関数従属を調べ、分割後は外部キーで関係を保ちます。第1正規形から第3正規形まで、次の表の順に従属を取り除きます。

SQLと正規形
句役割
WHERE集約前の行条件
GROUP BY集約単位
HAVING集約結果の条件
JOIN表の結合(内部結合・外部結合)
SQLと正規形
正規形取り除くもの
第1正規形繰返し項目(1つの欄に複数の値)
第2正規形主キーの一部だけで決まる項目(部分関数従属)
第3正規形主キー以外の項目で決まる項目(推移的関数従属)

試験に出る

  • 主キー(行の識別)と外部キー(別表の参照)の違い。
  • 顧客と注文が一対多になる関係の読み方。
  • IN述語は候補集合への所属を判定すること。
  • 内部結合は条件が一致する行を組み合わせること。
  • GROUP BYでまとめた結果をHAVINGで絞り、WHEREとは適用段階が違うこと。
  • 第1〜第3正規形で取り除く従属の違いと、外部結合で対応のない行がNULLで残ること。

重要な言葉

主キー
表の行を一意に識別する項目。
外部キー
別の表の対応する行を参照する項目。
E-R図
実体とその関係を図で表したもの。
内部結合
結合条件が一致する行を組み合わせる操作。

確認問題

確かめよう一対多の顧客・注文表を結合した結果は必ず顧客数と同じ行数?

いいえ。複数注文のある顧客は対応する注文ごとに現れます。

外部キーは、表の行を一意に識別するために使う。

GROUP BYでまとめた結果を絞るにはHAVINGを使う。

表の行を一意に識別するキーは?

集計した結果を条件で絞るのに使うのは?

注文のたびに顧客の住所をコピーすると、変更時に直す場所が増えます。とを防ぐため、何を別の表にするか考えます。

顧客表を顧客ID・氏名、注文表を注文ID・顧客ID・金額とすれば、同じ顧客の複数注文をIDで結べます。顧客と注文の関係はです。氏名は同姓同名があり、としては不十分な場合があります。

は各行を識別し、は別表の対応行を参照します。正規化では属性間の依存関係を整理し、部分関数従属や推移的関数従属を別の表へ分離します。

SQLのは候補集合への所属を判定します。顧客ID IN (1,3)ならIDが1または3の行が対象です。は結合条件が一致する行を組み合わせます。GROUP BYでまとめた集計結果をHAVINGで絞る場合は、集計前に行を絞るWHEREと適用段階を分けます。

は顧客・注文などの実体と、それらの関連を表します。顧客一人が複数の注文を持ち、一つの注文の顧客は一人なら、一対多の関連です。E-R図はそのモデルを図で表したもので、処理の順番を示すフローチャートとは異なります。図形や線の表記規則に従ってを読みます。

LANと通信プロトコルの役割

LANとは、同じ建物など限られた範囲のネットワークで、機器ごとに通信の役割を分けて転送します。

エルくんが抽象配送カードの外側MAC札を中継境界で交換し、内側IP宛先札を保つ図。
データリンクの区間と、ネットワークをまたぐ配送を分けます。ルータで区間が変わっても、相手のネットワークへ届けるためにIPを用います。

通信が届かないときは、宛先、経路、転送方法を分けて調べます。同じネットワーク内での配送と、別ネットワークへ送る処理は役割が異なります。

基本の仕組み

基本の仕組みの図解。左のネットワークと右のネットワークを仕切りで分け、中央にルータを置く。左からルータへ向かう矢印に「IPアドレス」、ルータの脇に「経路表」、ルータから右へ向かう矢印に「転送」を付ける。
覚えること:ルータはIPと経路表で網間転送

無線LANでは送信前に媒体が空いているかを確認し、待ち時間などを使って衝突を避けます。CSMA/CAは衝突を完全にゼロにする保証ではなく、確認応答や再送も組み合わせる方式です。

同じLAN内の転送ではMACアドレスを扱い、ルータはIPアドレスと経路表を基にネットワーク間へ転送します。TCPは接続管理、順序制御、再送等を行い、UDPはそれらを必須としない軽量な転送を提供します。

動画や音声でUDPが使われることがあっても、アプリ全体に損失対策がないとは限りません。DNSは名前を調べる仕組みで暗号化そのものではなく、TLSは通信の保護を担います。一つの用語で通信の全機能を説明しないようにします。

LAN内外の通信

LAN内外の通信の図解。左に同一LAN内の端末とスイッチ、右に別のネットワークを置き、中央のルータを境界にする。同一LAN内の転送はスイッチへ向かう矢印に「MACアドレス」、ネットワーク間の中継はルータを通る矢印に「IPアドレス」と付ける。
覚えること:LAN内はMAC、網間はIPで転送

スイッチはMACアドレスで同一LAN内を転送し、ルータはIPアドレスでネットワーク間を中継します。ARPはIPからLAN内のMACアドレスを調べ、DHCPはアドレス等を自動設定し、DNSは名前を解決します。HTTPSはHTTPをTLSで保護します。

有線LANで使われてきたCSMA/CDは、送信中に衝突を検出したら送信を止め、ランダムな時間待って再送します。衝突の検出が難しい無線LANでは、衝突を避けるCSMA/CAを使います。

LAN内外の通信
装置・方式主な役割
スイッチLAN内の転送
ルータネットワーク間の転送
ARPIPアドレスからMACアドレスを調べる
DHCP自動設定
DNS名前解決
CSMA/CD有線LANで衝突を検出して再送
CSMA/CA無線LANで送信前の待機により衝突を回避

試験に出る

  • CSMA/CAは送信前の確認と待機で衝突を避ける方式。
  • 同じLAN内はMACアドレス、ネットワーク間はルータがIPアドレスと経路表で転送すること。
  • TCPは接続管理・順序制御・再送を行い、UDPは軽量な転送を提供すること。
  • DNSは名前を調べる仕組みで暗号化ではなく、TLSが通信を保護すること。
  • CSMA/CAは衝突を検出してからだけ再送する方式ではないこと。

重要な言葉

CSMA/CA
送信前に媒体を確認し、待機で衝突を避ける無線LANの方式。
MACアドレス
同じLAN内で機器を識別するアドレス。
ルータ
IPアドレスと経路表を基にネットワーク間へ転送する機器。
TLS
通信を暗号化して保護するプロトコル。

確認問題

確かめようCSMA/CAは衝突を検出してからだけ送信をやり直す方式?

いいえ。送信前の確認や待機により衝突回避を図ります。

CSMA/CAは、衝突を検出してから送信をやり直す方式である。

同じLAN内の転送ではMACアドレスを扱う。

同じLAN内で機器を識別するアドレスは?

送信前に媒体を確認して衝突を避ける無線LANの方式は?

通信が届かないときは、、、転送方法を分けて調べます。同じネットワーク内での配送と、別ネットワークへ送る処理は役割が異なります。

無線LANでは送信前に媒体が空いているかを確認し、待ち時間などを使ってを避けます。は衝突を完全にゼロにする保証ではなく、確認応答や再送も組み合わせる方式です。

同じLAN内の転送ではを扱い、はIPアドレスと経路表を基にネットワーク間へ転送します。TCPは接続管理、順序制御、再送等を行い、UDPはそれらを必須としない軽量な転送を提供します。

動画や音声でが使われることがあっても、アプリ全体に損失対策がないとは限りません。DNSは名前を調べる仕組みで暗号化そのものではなく、は通信の保護を担います。一つの用語で通信の全機能を説明しないようにします。

Web攻撃と防御の組合せ

Web攻撃とは、Webアプリの入力を悪用したり利用者のブラウザを狙ったりする攻撃で、対策を組み合わせて防ぎます。

エルくんが固定SQLテンプレートを留め具で固定し、入力42のカードを値専用の受け皿へ入れる図。
考え方の例:入力値をSQLの命令文へ直接つなげず、パラメータとして渡します。図はSQLインジェクションへの対策の一つを示します。

Webへの攻撃は、入力を命令として解釈させたり、利用者のブラウザを悪用したりします。どの段階で信頼できないデータが使われるかを見ます。

基本の仕組み

基本の仕組みの図解。正方形の中央に仕切りを置き、左の「SQL命令」と右の「値」を分離する。検索語から値への矢印を描き、値を受け取る場所を「プレースホルダ」と示す。
覚えること:プレースホルダで命令と値を分ける

検索語をSQL文字列へ直接つなぐと、入力に含まれる記号等で命令の意味を変えられるおそれがあります。プレースホルダを使って命令と値を分けることが、SQLインジェクションの対策です。

クロスサイトスクリプティングはブラウザ上で不正なスクリプトを実行させる攻撃で、出力先に応じたエスケープ等を行います。CSRFはログイン中の利用者に意図しない操作を送らせる攻撃で、トークンなどにより正当な要求かを確認します。

WAFはHTTP等のWeb通信を検査し、攻撃の検知・遮断を助けますが、アプリ側の修正に代わる万能策ではありません。事故発生時にはCSIRT等が調査・連絡・封じ込め・復旧を調整し、原因分析と再発防止へつなげます。

攻撃と対策の対応

攻撃と対策の対応の図解。SQLインジェクションへの対策を、左の「入力値」と右の「SQL文」の対応で示す。両者を仕切りで分け、入力値からSQL文内の「プレースホルダ」へ対応を示す矢印を引く。入力値をSQL文へ直接書き込む矢印は描かない。
覚えること:プレースホルダ等で値とSQL文を分離

SQLインジェクションにはプレースホルダ等による値とSQL文の分離、XSSには出力先に応じたエスケープ、CSRFにはトークン等による要求の検証を使います。入力値検証だけで全攻撃を防げると考えず、対策を攻撃の入り口に合わせます。

OSコマンドインジェクションは入力をOSのコマンドとして実行させ、ディレクトリトラバーサルは「../」などでファイルのパスを操作し、公開していないファイルを読ませます。シェルを経由しない実行や、ファイル名を固定の候補から選ばせる設計で防ぎます。

攻撃と対策の対応
攻撃主な対策
SQLインジェクションプレースホルダ
XSS出力時のエスケープ
CSRFトークン等の要求検証
OSコマンドインジェクションシェルを呼ばない実行・入力の検証
ディレクトリトラバーサルパスを直接指定させない設計

試験に出る

  • SQLインジェクションはプレースホルダで命令と値を分けて防ぐこと。
  • クロスサイトスクリプティングは出力先に応じたエスケープで防ぐこと。
  • CSRFはトークンなどで正当な要求かを確認すること。
  • WAFは検知・遮断を助けるが、アプリ側の修正に代わる万能策ではないこと。
  • 事故時はCSIRT等が調査・封じ込め・復旧を調整すること。

重要な言葉

SQLインジェクション
入力をSQL命令として解釈させる攻撃。
クロスサイトスクリプティング
ブラウザ上で不正なスクリプトを実行させる攻撃。
CSRF
ログイン中の利用者に意図しない操作を送らせる攻撃。
WAF
Web通信を検査し、攻撃の検知・遮断を助ける仕組み。

確認問題

確かめようTLSで暗号化すればSQLインジェクションも防げる?

いいえ。経路の暗号化と、アプリの入力・命令の扱いは別の問題です。

SQLインジェクション対策にはプレースホルダが有効である。

TLSで暗号化すれば、SQLインジェクションも防げる。

入力をSQL命令として解釈させる攻撃への対策は?

ログイン中の利用者に意図しない操作を送らせる攻撃は?

Webへの攻撃は、入力を命令として解釈させたり、利用者のを悪用したりします。どの段階でが使われるかを見ます。

検索語をSQL文字列へ直接つなぐと、入力に含まれる記号等で命令の意味を変えられるおそれがあります。を使って命令と値を分けることが、の対策です。

はブラウザ上で不正なスクリプトを実行させる攻撃で、出力先に応じたエスケープ等を行います。はログイン中の利用者に意図しない操作を送らせる攻撃で、トークンなどにより正当な要求かを確認します。

はHTTP等のWeb通信を検査し、攻撃の検知・遮断を助けますが、アプリ側の修正に代わる万能策ではありません。事故発生時には等が調査・連絡・封じ込め・復旧を調整し、原因分析と再発防止へつなげます。

覚えるポイント

  • データベース:トランザクションは一まとまりの処理です。振込みなら引落しと入金をまとめ、途中で失敗したらロールバックすることで片方だけの更新を防ぎます。
  • ネットワーク:IPv4の/24は先頭24ビットがネットワーク部で、残り8ビットがホスト部です。通常のサブネットでは全0と全1を除く254個をホストへ割り当てられます。
  • 情報セキュリティ:デジタル署名は作成者と改ざんの有無を確認する仕組みです。機密性のために相手へ暗号化して送る場合は、相手の公開鍵で暗号化し相手の秘密鍵で復号するなど、目的と鍵の役割が違います。
  • ヒューマンインタフェース:アクセシビリティは多様な利用者が情報や機能へアクセスできること、ユーザビリティは目的を効果的・効率的に達成できる使いやすさを扱います。
  • 画像・音声のデータ量と圧縮:標本化は時間方向を区切って測定し、量子化は振幅を有限の段階へ対応させ、符号化は数値をビット列へ表します。画像では横画素数×縦画素数×1画素のビット数が非圧縮データ量の基本です。
  • 関係データベースの設計とSQL:主キーは各行を識別し、外部キーは別表の対応行を参照します。正規化では属性間の依存関係を整理し、部分関数従属や推移的な依存を分離します。E-R図は対象となる実体とその関係を表し、処理の順番を示すフローチャートとは異なります。
  • LANと通信プロトコルの役割:同じLAN内の転送ではMACアドレスを扱い、ルータはIPアドレスと経路表を基にネットワーク間へ転送します。TCPは接続管理、順序制御、再送等を行い、UDPはそれらを必須としない軽量な転送を提供します。
  • Web攻撃と防御の組合せ:クロスサイトスクリプティングはブラウザ上で不正なスクリプトを実行させる攻撃で、出力先に応じたエスケープ等を行います。CSRFはログイン中の利用者に意図しない操作を送らせる攻撃で、トークンなどにより正当な要求かを確認します。

出典・参考資料

試験の公式案内と、この記事の参考にした学習資料です。

編集:Pinternet Works · 更新日:

教材の編集方針・訂正について