この記事は何
応用情報技術者試験の本番30日前の勉強時のめも。 午後の過去問を解いて、間違えた問題や知らないワードをメモする。 特におすすめ分野とかは載せてないので、探している方は他の方のサイトを参照してみてください。 以下、あくまで自分の解釈や理解なので正しさは保証しません。
次回▼
おまけ▼
最近youtubeはじめました!
試験内容
要綱・時間・基準については最新の内容を確認してください。
2020年時点の試験では、
- 午前:9:30~12:00、150分間
- 午後:13:00~15:30、150分間
- 合格基準:午前・午後ともに100点満点中60点以上
対策
あまりに試験に特化すると試験を受かること自体が目的になってしまうので程々に。とはいえ落ちてしまってはどうしようもないので一通り調べてみる。
基本的には過去問を解くことを繰り返す。特に文章で回答する問題は、どの程度の内容の文章が解答の候補になりうるのかをチェックする。 勉強時間は30〜500時間と人によってバラバラ、個人個人の業務や専門の内容によって様々。
個人的には、午後の必須選択「セキュリティ」+「ネットワーク」「データベース」「アルゴリズム」「プロジェクトマネジメント」を中心に勉強を行い、その周辺の問題はわからなかったら調べる方針にしています。
結果
90点くらいで受かってました。参考書はほとんど読まず、IPAで公開されている過去問を見ながら言葉を調べる+関係するソフトやツールのマニュアルを調べてました。
メモ
全体共通
- 適切な選択肢を選ぶ問題は図との整合性をチェックする
- 記述形式で文字が余る場合は一部に問題文テキストも含める
- (特にセキュリティは)手続きの順番を覚える
- 適切な文言を埋める問題で用語以外を聞かれている場合は問題文の言葉を一部使用する
- 対策を聞かれた場合、問題文で困っている人・トラブルが発生している箇所の言葉を見る
- 『図X中の文言・字句を用いて〜』のような記載がある場合、問題文をほぼ切り抜いた答えになる可能性もあることを考慮する
セキュリティ
午後の必須、覚えることはそこまで多くないので必ず解けるようにする。 「それで答えになるんだ」といった問題もあるかもしれないので参考書や過去問でどのような回答が求められているのかのイメージを掴む(漏洩を防ぐために『廃棄時に物理的に破壊する』、など)。
用語
- コンピュータ・フォレンジック:コンピュータ・フォレンジック - Wikipedia
- ステガノグラフィ:バイナリファイル(画像・音声など)の中に別のファイルを埋め込んで隠蔽する
- ランサムウェア:コンピュータをロック・ファイルを暗号化して使用不可能な状態にして脅迫を行う
- 暗号化の流れ
- データ受信者が公開鍵をデータ送信者に送る
- データ送信者は受信者の公開鍵でデータを暗号化する
- データ送信者の秘密鍵でデータのダイジェストを暗号化する
- 受信者の公開鍵で暗号化したデータ+送信者の秘密鍵で暗号化したダイジェストを受信者に送る
- 受信者は送信者の公開鍵でダイジェストを復元する+受信者の秘密鍵で送られてきたデータを復元する
- ダイジェストを比較して改竄がないことを確かめる+なりすまし でないことを確かめる
- 各暗号化法で確認できること
- 過去問にて、盗聴や改竄が行われていないことを確認できる、といった解答を求められる箇所があったため
- 公開鍵暗号:相手に鍵を渡して自分だけが秘密鍵で復元する。そのため(自分の秘密鍵を誤って盗まれない限り)盗聴されていないことが確認できる。
- ハイブリッド暗号:公開鍵を共通鍵暗号で暗号化+送られてきた公開鍵を復元して、復元した公開鍵でデータを復元。
- MD5/SHA-1/SHA-256ハッシュ:送信前のハッシュ値と送信後のハッシュ値を比較することでデータが同一かどうか確認する。改竄を確認できる。
- ディジタル署名:送信者が持つ秘密鍵で暗号化した値(ダイジェスト)を受信者が公開鍵で復号できた場合はなりすまし無しだと確認できる。さらにダイジェストが一致していれば改竄していないことも確認できる。
- 機器や部品への攻撃
- ファジング:FAQ:IPA 独立行政法人 情報処理推進機構
ファジングとは、組込み機器やソフトウェア製品のバグや未知の脆弱性を検出する、セキュリティテストです
- 耐タンパー性能:中身の改竄や偽装に対する耐性
- セキュアエレメント:セキュアエレメント ‐ 通信用語の基礎知識
- ファジング:FAQ:IPA 独立行政法人 情報処理推進機構
- NTP
- インターネット用語1分解説~NTPとは~ - JPNIC
- サーバーや機器の時刻同期に用いられるプロトコル、複数の階層構造になっていて複数の上位レイヤーを参照することで時刻の正確さを担保する場合がある
- インターネット上のNTPサーバーを参照するためにはFWの設定を変更する必要がある
- コンピュータウイルスの進入経路
- ダウンローダ
- ドロッパ
- バックドア
- トロイの木馬
- ドライブバイダウンロード:ウェブ閲覧時にダウンロードさせる
- 総当たり攻撃
- DDoSに似たような痕跡で認証関係に攻撃している場合は 総当たり攻撃の可能性があるので問題文をよく読む
- パスワード認証に対する対策
- オートコンプリート機能を使用しない
- Web クライアントのセッションベースの名前とパスワードによる認証
- PINGスイープ
- PING スイープとは(Ping Sweep) | サイバー攻撃大辞典
- IPアドレスに対して順番にPINGを送信することで実際に存在するホストをチェックする行為
- PKI(Public Key Infrastructure, 公開鍵暗号基盤)
- 暗号化するときは相手の公開鍵を利用して暗号化、 復号には秘密鍵を利用
- IDPS
- 侵入検知システム - Wikipedia
- 英語の意味を覚えれば解答できる
- シグナチャベース=正規表現などで攻撃と考えられる表現を指定する
- ステートフルプロトコル解析=通信状態を「状態」を付与して追跡、正常なプロトコルで行われるDDoSなどは検知できない
- アノマリーベース=正常である場合を学習する
- IPS(Intrusion Prevention System)
- IDS(Intrusion Detection System)
- SSL/TLS
- SSLの後継がTLS、SSLは2021年時点では使用は禁止
- Transport Layer Security - Wikipedia
- 通信相手の認証・通信内容の暗号化による盗聴防止・改竄の検出が可能になる
- TLSは公開鍵証明書を使い通信相手の認証を行う
- リプレイ攻撃(盗聴したデータを認証サーバーに送信する)を回避するための仕組みがある
- TLS/SSLの既知の脆弱性も含めてチェックする
- メール
- S/MIME:S/MIME - Wikipedia
MIMEでカプセル化した電子メールの公開鍵方式による暗号化とデジタル署名に関する標準規格
- スパムメールのフィルタリング
- RADIUS(Remote Authentication Dial In User Service):ダイアルアップサービス向けの認証サービスを提供するサーバ
- DHCP(Dynamic Host Configuration Protocol):IPv4ネットワークにおけるネットワークの設定を自動化するためのプロトコル
- 静的フィルタリング:ネットワーク入門 PartⅢ | 演習で学ぶネットワーク
- フィルタリングテーブル:
- DNS:ドメイン名とIPアドレスの紐付けを行う
- 「DNSサーバーは応答していません」:Webサイト・サーバーのIPアドレス取得に失敗した状態
- DNSSEC(DNS Security Extensions)
- DNS Security Extensions(DNSSEC)の概要 | Google Cloud
- ドメイン名のルックアップに対するレスポンスを認証するステップを増やし、DNSへのリクエスト・レスポンス内容の改竄を防ぐ
- DNSキャッシュポイズニング=偽の情報をDNSサーバへ記憶させて誤ったページへの誘導を行う
- DNS では通信プロトコルとして主にUDPを使用、UDPはTCPと異なり通信前にデータの到達確認を行わない
- インターネット用語1分解説~DNS cache poisoning(DNSキャッシュポイズニング)とは~ - JPNIC
- キャッシュのクリア=
ipconfig /flushdns
- キャッシュには有効期限を設定できる
- カミンスキー型攻撃手法:https://jprs.jp/related-info/guide/009.pdf
- NAT・NAPT
- 共にグローバルIPアドレスとプライベートIPアドレスを対応づけるもので、外部からプライベートIPアドレスを確認することはできない
- NAT:グローバルIPアドレスとプライベートIPアドレスを1v1で変換
- NAPT:1対多のIPアドレス変換が可能になり、複数PCが同時にインターネットにアクセスできるようになる
- サイバーセキュリティ - Wikipedia
- 攻撃の手段と防御方法について覚える
- IPスプーフィング:別のIPアドレスへのなりすましをする 。送信元IPアドレスにLAN内のIPアドレスを指定したパケットを送り込むことで不正アクセスをする。DoS攻撃と同時に行われることが多い。
- クロスサイトスクリプティング:ユーザが値を決定できる変数値をそのまま表示するなどの脆弱性があるサイトに対して、悪意のあるスクリプトを実行する攻撃手法
- セッションハイジャック・ワームの実行・個人データの外部送信などを行う。
- ディレクトリサーバ:ディレクトリサービス | IT用語辞典 | 大塚商会
- ディジタル証明書
- OCSP:Online Certificate Status Protocol - Wikipedia
公開鍵証明書の失効状態を取得するための通信プロトコル
- 証明書失効リスト - Wikipedia、CRL
- 公開鍵証明書
- 公開鍵証明書 - Wikipedia
- ユーザー同士で暗号鍵を直接やりとりするのを回避して公開鍵を配布する場合に、認証局によって認証された公開鍵のみが有効な鍵として利用できる状態を作る
- OCSP:Online Certificate Status Protocol - Wikipedia
- プロキシ
- プロキシサーバの端末認証を利用することでシャドーITによる感染を防ぐ
- プロキシ - Wikipedia
- セキュリティの観点から「全てプロキシを経由して各使用者のパソコンなどのクライアントに届くようにする 」設定を行う
- IDS(Intrusion Detection System):侵入防止システム、IPアドレスのなりすましやポートスキャンの行動を検知して通知するなどの機能がある
- 侵入検知システム - Wikipedia
- IPS(Intrusion prevention system)は自動的に対象を駆除する
- 水飲み場型攻撃
- 攻撃対象となる組織のユーザーがアクセスするウェブサイトそのものを改竄する攻撃
- 水飲み場型攻撃 - Wikipedia
- ファイアウォール
- ファイアウォール - Wikipedia
- 内外の通信の監視と制限、パケットフィルタリング型・アプリケーションゲートウェイ型・サーキットレベルゲートウェイ型に分けられる
- WAF(Web Application Firewall)=ウェブアプリケーションに特化したもの
- CookieとJSON Web Token
- HTTPリクエストのヘッダに含めて送信される
- 生体認証
- 生体認証導入・運用の手引き - IPA 独立行政法人 情報処理推進機構
- 本人拒否率:FRR(False Rejection Rate)
- 他人受入率:FAR(False Acceptance Rate)
- パスワードの攻撃
- ブルートフォース
- リバースブルートフォース:特定のパスワードを様々なIDに対して使用してみる
- パスワードリスト:流出したパスワードをいろいろなサービスで試してみる、対策=サイトごとにパスワードを変えるなど
- レインボー:ハッシュ値の比較によりパスワードを見破る方法
- ソルト:パスワードに付与する文字列、ユーザーごとに変えるなどしてハッシュ値の比較による解析を難しくする
- WPA2 | IT用語辞典 | 大塚商会
- NAT・NAPTとIPアドレスって? | IT情報メディア「LIVRA」
- ブリッジ (ネットワーク機器) - Wikipedia
ネットワーク・通信
セキュリティの項目でネットワークと関係した問題もよく出るので、セキュリティが必須ならばネットワークも避けることができない感じがある。WEB関係のセキュリティ・通信も出ることがある。
用語
プロトコル
- POP3:メール受信用のプロトコル、ダウンロードしたデバイス上で未読既読を管理する
- IMAP4:メール受信用のプロトコル、メールサーバーで未読既読を管理する
- SMTP:メール送信用のプロトコル
- S/MIME:S/MIMEとは?メールへの電子署名と暗号化の仕組み|GMOグローバルサイン【公式】
- RADIUS - Wikipedia
ネットワーク資源の利用の可否の判断(認証)と、利用の事実の記録(アカウンティング)を、ネットワーク上のサーバコンピュータに一元化することを目的とした、IP上のプロトコル
- デバイスの認証+リソースに対するアクセス制御が可能になる
- TCP/IP - SNMPとは
- TCP/IPネットワークで接続された機器をネットワーク経由で監視・制御するためのプロトコル
- メール送信時に認証するプロトコル
- SMTP-AUTH:メールサーバへのメール送信時にユーザー認証を行うことで迷惑メールの送信や第三者の中継を阻止する
- POP before SMTPとは - IT用語辞典 e-Words
- SPF・DKIM:SPF, DKIMの特徴と違い | SendGridブログ
OSI参照モデル
- 第7層 アプリケーション層:具体的な通信サービス、ファイル転送、FTP・HTTP・HTTPSなど
- 第6層 プレゼンテーション層:データの表現方法、圧縮方式や文字コードなどの規定
- 第5層 セッション層:通信の開始から終了までの手順・接続が切れた場合の手順などを指定
- 第4層 トランスポート層:誤り訂正の方法や再送制御、UDPなど
- 第3層 ネットワーク層:ルーティング、IPv4/IPv6など
- 第2層 データリンク層:隣あうデバイス間の信号のやり取りを規定、Ethernetなど
- 第1層 物理層:コネクタの物理的な形状の規定など
ネットワーク・通信
- デフォルトゲートウェイ
- デフォルトゲートウェイ - Wikipedia
- 内部ネットワークと外部ネットワークを接続するためのノードとなる箇所を指す言葉、質問で「指定された領域のデフォルトゲートウェイはどこか」と聞かれたらその領域に入る箇所にある機器名を回答する。
- L2スイッチとL3スイッチとルーターの違い | ITSakura
- Dynamic Host Configuration Protocol - Wikipedia
ネットワーク管理プロトコルであり、コンピュータがネットワークに接続する際に必要な設定情報を自動的に割り当てるために使用
- ユニキャスト、マルチキャスト、ブロードキャストとは
- ブロードキャスト:1対不特定多数
- ユニキャスト:1対1
- DHCP
- DHCPサーバ機能
- Relay Agent:DHCPリレーエージェントとは
- VLAN
- VLANとは
- 構成目的は「ドメインを分割することで通信帯域を確保する」「用途に応じてLANセグメントを分離してアクセスを制限する」の二つが中心
- SMTP(Simple Mail Transfer Protocol):メールを送信するために使用するアプリケーション層のプロトコル、ポート番号25が使われることが多い。
- NTPサーバ
- HTTP通信
- HTTPリクエストメソッド
- GET: クライアントがサーバーからデータを取得するとき
- POST: クライアントがサーバーにデータを追加するとき
- PUT: クライアントがサーバーにデータを更新・追加の処理を依頼するとき
- DELETE: クライアントがサーバーからデータを削除するとき
- HTTPリクエストメソッド
- CSRF
- 情報処理推進機構:情報セキュリティ:脆弱性関連情報の取扱い:知っていますか?脆弱性 (ぜいじゃくせい)/3. CSRF (クロスサイト・リクエスト・フォージェリ)
- クロスサイトリクエストフォージェリ (CSRF) 対策 — Django v1.0 documentation
- 普段使用するフレームワークでの具体的な対策方法を覚えれば問題なく解ける
- ワンタイムトークン・ページトークンを使う / ログイン情報を確認する
- プロキシサーバー
- プロキシサーバーとは?使用上のメリットと4つの注意点
- リバースプロキシ:指定したサーバへのリクエストが必ず通過するように設置されたプロキシサーバ、アクセス集中時の負荷分散に利用される
IPアドレス・IPネットワーク
Classless Inter-Domain Routing - Wikipedia
Classless Inter-Domain Routing(CIDR、サイダー)は、インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構であり、ISPや組織にクラスA、B、Cを全部ではなく部分的に割り当てることでIPアドレスの浪費を防ぐ機構
- サブネットマスク
- ネットワークアドレス=サブネットマスクが1の部分
- ホストアドレス=サブネットマスクが0の部分
255.255.255.224
などの表記になる、224は256-32なので、下5桁が0になる
- デフォルトゲートウェイ=内部ネットワークと外部ネットワークを接続するためのノード
データベース
SQLにおける基本的な操作を覚えれば難しくない。 カーディナリティを選ぶ問題は、問題文で主キーが出てくる箇所の記述をよく読めば必ず解ける。
- 他の問題の図や解答がヒント(正しく正解できているかのチェック)に繋がることもある
- MySQLマニュアルの中の「3.6 一般的なクエリーの例」は全て使い方を覚えておく
- 図で回答する問題は、問題に含まれた図の表記法を守る
- 「〜の末日時点での合計」「〜までの集計」「〜よりあとの」といった文言は統合と不等号の表記が正しいかを必ずチェック
参考資料
www.slideshare.net
JOINを使用する場合はどのデータが残るかを問題を解く時にチェックする。
正規化の手順を必ず理解する、なぜその正規化がないと問題が起きるのか説明する問題も出る。
用語
- 出力
ORDER BY XX DESC
:Xを大きい順に、「de」なので大きいものから小さくDISTINCT
:重複を消すUNION ALL
:二つのテーブルを結合する時、重複は残す
- 結合
- →:1対多、記号は必ず説明があるので覚える必要なし
- 左外部結合・右外部結合:「左」「右」のみ全データを残して結合、反対側に該当データがない場合はNULLを結合
- 内部結合:両方のテーブルに存在する行のみが結果として表示される
- ON:X.列名 = Y.列名
- USING:結合する両テーブルに共通の列がある場合はONの代わりに指定できる
- WHERE
<>
:等しくないX IS NOT NULL
:NULLではないX = '文字列'
:文字列の比較時にはクオートで囲むBETWEEN X AND Y
:X~Yの間の値COALESCE(X, Y, Z)
:与えられた引数を左から評価してNULLでない最初の引数を返す列名 IN(X, Y, Z)
:列の値がX、Y、Zと一致する場合- ワイルドカード:
X IS LIKE '文字列_'
やX IS LIKE '文字列%'
で指定。%
は0文字以上の文字列を指している
- スーパーキー:テーブルの行を一意に特定できる属性の集合、主キー・候補キー・既約でないキー全てを含んでいる。
- 主キー:主キー - Wikipedia
PRIMARY KEY(列名)
- 候補キー:主キーになることができるキー
- 代理キー:候補キーのうち主キーとして選ばれなかったもの
- 外部キー:外部キー - Wikipedia
列名 型名 FOREIGN KEY REFERENCES 参照先テーブル名(参照先テーブル列名)
- 外部キー制約や
CASCADE
などの指定も覚えておく
- 既約:属性が一つでも欠けると一意に行を識別できなくなる属性の集合を指す言葉、極小と呼ぶ場合もある
SQL ステートメントの構文
ドキュメントなどで実際の使い方を確認する。ここではMySQLのマニュアルを参照。データ定義は CREATE TABLE
以外はほぼ出ないはずだけど、今後のために目を通しながら全体を理解する。
- UNION ALL・UNION:UNION ALLは重複部分を削除しない
- LEFT OUTER JOIN:LEFT (OUTER) JOIN (左外部結合)を使ってデータを取得する - JOIN (結合)を使いこなそう - SQL Server 入門
- データがない場所は指定がなければnull表記
:変数名
の表記:ホスト変数(プログラム変数)は手前にコロンを付ける