忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【情報セキュリティ】しらばっくれを許さない!「否認防止」|情報処理問題1000本ノック

「そんな操作はしていない」「メールは送っていない」といった主張を、客観的な証拠で退ける。取引の安全を守る「否認防止」を攻略しましょう。

1. 【 問題 】:セキュリティ特性「否認防止」

【 問題 】 情報セキュリティの要素の中で、実際にシステムで行った操作や取引に対して、「そんなことはやっていない」と後から主張(否定)することを防ぐ特性はどれでしょうか?

① 真正性(Authenticity)
② 否認防止(Non-repudiation)
③ 責任追跡性(Accountability)
④ 信頼性(Reliability)

2. 正解:セキュリティ管理に関する正解

正解: ② 否認防止(Non-repudiation)

3. 解説:デジタルな「証拠」の確立

否認防止とは、後からその事実を覆せないように、第三者にも有効な証拠を残しておくことです。

【図解:否認防止を支える3つの盾】

■ デジタル署名
・「誰が書いたか」を証明し、改ざんも検知します。本人の印鑑のような役割です。

■ タイムスタンプ
・「いつ、そのデータが存在したか」を証明します。郵便の消印のような役割です。

■ ログの保護
・操作記録そのものが書き換えられないよう厳重に管理することで、「証拠そのものの正当性」を担保します。
[ 真正性と否認防止の違い ]
真正性:今操作している人が「間違いなく本人である」こと(ログイン時の認証など)。
否認防止:過去に行った操作を「やっていないと言わせない」こと(署名の検証など)。

1. 理解のコツ: 重要な契約書に「実印」を押し、さらに「公証役場」で日付を入れてもらうようなイメージです。これがあれば、後で「私はそんな契約結んでいない!」と言い張っても通用しませんよね。
2. 試験対策の視点: 「事後に否定することを防止する」「デジタル署名の役割」というキーワードが出たら否認防止です。DS検定や情報処理試験では、CIAにこれらを加えた「7要素」の定義がよく問われます。


4. 実戦4択クイズ(DS検定形式)

問:デジタル署名を用いて、送信者が「確かにそのメッセージを送信した」ことを第三者が検証できるようにすることで実現されるセキュリティ特性はどれか。

① 機密性   ② 可用性   ③ 否認防止   ④ 効率性

【 正解: ③ 】

解説: デジタル署名の大きな役割の一つが「否認防止」です。送信者の公開鍵で署名を検証できるため、送信者は後から「送っていない」としらばっくれることができません。


5. まとめ

「操作の事実を客観的に証明し、否定させない」。これが否認防止です。オンラインバンキングや電子契約など、顔の見えないやり取りが当たり前の現代社会において、システムの信頼性を支える不可欠な要素です。


PR

【情報セキュリティ】閲覧者のブラウザを乗っ取る!「XSS」の全貌|情報処理問題1000本ノック

攻撃の矛先はサーバーではなく、サイトを見に来た「あなた」。ブラウザという身近な場所で起こる深刻な被害を攻略しましょう。

1. 【 問題 】:XSS(クロスサイトスクリプティング)の被害

【 問題 】 Webアプリケーションの脆弱性を利用し、閲覧者のブラウザ上で不正なスクリプトを実行させる「クロスサイトスクリプティング(XSS)」によって引き起こされる被害として、適切なものはどれでしょうか?

① 閲覧者のブラウザに保存されているクッキー(セッション情報)が盗まれる
② 閲覧者のブラウザ上で、偽の入力フォームが表示され情報が入力させられる
③ 閲覧者の権限を利用して、Webサイト上で意図しない操作を行わされる
④ 上記のすべて

2. 正解:Webセキュリティに関する正解

正解: ④ 上記のすべて

3. 解説:なぜ「すべての被害」が起こるのか?

XSSの本質は、攻撃者が用意した「悪意のあるJavaScript」を、被害者のブラウザに「そのサイトの正規のプログラム」だと思い込ませて実行させることにあります。

【図解:被害のバリエーション】

■ クッキー(Cookie)の奪取
・ログイン状態を管理するセッションIDが盗まれ、攻撃者にアカウントを乗っ取られます。

■ 画面の改ざん(フィッシング)
・正規のサイトの一部を書き換えて「エラーです。再度パスワードを入力してください」といった偽のフォームを出し、情報を盗みます。

■ 意図しない操作の強制
・被害者が気づかないうちに、掲示板への書き込みや商品購入などのリクエストを勝手に送信させます。
[ 防御の決定打 ]
エスケープ処理(サニタイジング)<script>などのタグを、単なる文字列(&lt;script&gt;)として表示するように変換します。これが最も根本的な対策です。

1. 理解のコツ: サイトそのものが毒されているのではなく、サイトを訪れた人の「目の前の画面」に毒を盛る攻撃です。したがって、被害者は常に「そのサイトを見ている一般ユーザー」になります。
2. 試験対策の視点: 「ブラウザ上で実行」「JavaScript」「Cookie奪取」ときたらXSSです。OSコマンドインジェクション(サーバー攻撃)やSQLインジェクション(DB攻撃)と、「どこが攻撃対象か」を比較して覚えると完璧です。


4. まとめ

「閲覧者のブラウザを操作し、Cookieを奪ったり偽画面を出したりする」。これがクロスサイトスクリプティング(XSS)です。Webサイトを運営する側は、ユーザーを守るために徹底したエスケープ処理を実装する責任があります。


【情報セキュリティ】サーバーを操り人形にする!「OSコマンドインジェクション」|情報処理問題1000本ノック

Webアプリの入力欄からOSへの直接命令を送り込む攻撃。サーバーが「踏み台」にされるリスクもある、最恐クラスの脆弱性を攻略しましょう。

1. 【 問題 】:OSコマンドインジェクション

【 問題 】 Webアプリケーションにおいて、OSのシェルを呼び出す際の実装に不備がある場合、攻撃者によって不正なOSのコマンドが実行されることがあります。その結果、Webサーバー内部の情報の漏えいや、別のサーバーへの攻撃の踏み台を招く攻撃手法はどれでしょうか?

① SQLインジェクション
② OSコマンドインジェクション
③ クロスサイトスクリプティング(XSS)
④ ディレクトリトラバーサル

2. 正解:Webセキュリティに関する正解

正解: ② OSコマンドインジェクション

3. 解説:コマンドの「継ぎ足し」による乗っ取り

プログラムが想定している「正しい入力」の後に、特殊な記号(;|)を使って「悪意のある命令」を継ぎ足す手法です。

【図解:被害が全方位に及ぶ理由】

■ 深刻な被害例
1. 機密性の破壊:サーバー内の設定ファイルやパスワードファイルを閲覧・奪取される。
2. 攻撃の踏み台:乗っ取ったサーバーから他の組織へ攻撃を仕掛け、犯人に仕立て上げられる。
3. 制御の奪取:ファイルの削除、マルウェアの設置、OS自体のシャットダウンなど。

★ OSの制御権を直接狙われるため、Webアプリ内だけでなく、サーバー全体が危険にさらされます。
[ 対策のポイント ]
根本的解決:OSのシェルを呼び出す関数(system, exec等)を使わない実装にする。
保険的対策:シェルにとって特別な意味を持つ文字(`;` `&` `|` `>`等)を無害化(サニタイジング)する。

1. 理解のコツ: 役所に「住所変更届」を出したとき、住所の欄に「あと、金庫の鍵も開けておいて」という命令を書き込まれ、職員(OS)がそれをそのまま実行してしまうような事態です。
2. 試験対策の視点: 「シェルの呼び出し」「不正なOSコマンド」「踏み台」というキーワードが出たら、この用語が正解です。SQLインジェクションが「DBの操作」であるのに対し、こちらは「OSそのものの操作」である点に注目しましょう。


4. まとめ

「プログラムの隙間からOSへの命令を流し込む」。これがOSコマンドインジェクションです。一度許してしまうとシステムが完全に支配される恐れがあるため、開発段階での徹底的な対策が求められます。


【情報セキュリティ】守りの三本柱!「CIA」|情報処理問題1000本ノック

文字だけで覚えると忘れやすいセキュリティ用語も、インパクトのある略称とセットで整理すれば、驚くほどスッと頭に入ります。情報セキュリティの基本中の基本である「3要素(CIA)」を攻略しましょう。

1. 問題:セキュリティの3要素

【 問題 】 情報セキュリティの3要素(CIA)に当てはまらないものは、次のうちどれでしょうか?

① 機密性 (Confidentiality)
② 完全性 (Integrity)
③ 可用性 (Availability)
④ 効率性 (Efficiency)

2. 正解:セキュリティ管理に関する正解

正解: ④ 効率性 (Efficiency)

3. 解説:アメリカの機関と同じ?「CIA」の正体

セキュリティの世界には「CIA」という超重要な3要素があります。アメリカの中央情報局(CIA)と同じ略称なので、セットで覚えるのが合格への近道です!

【 3要素の頭文字と意味 】

1. Confidentiality(機密性)
 → 許可された人だけが見れる「秘密」を守る

2. Integrity(完全性)
 → 改ざんされず「正確(完璧)」な状態を保つ

3. Availability(可用性)
 → 必要な時に「いつでも(Available)」使える
[ 実例でチェック! ]
機密性(C)の欠如:情報漏洩、パスワード流出
完全性(I)の欠如:Webサイトの改ざん、データの破壊
可用性(A)の欠如:システムダウン、DoS攻撃によるサービス停止

1. 理解のコツ: 銀行のキャッシュカードをイメージしてください。「暗証番号が他人にバレない(機密性)」、「預金残高が勝手に書き換えられない(完全性)」、「ATMに行けばいつでも引き出せる(可用性)」。この3つが揃って初めて安全といえます。
2. 試験対策の視点: 「効率性」や「信頼性」といった言葉がひっかけとして登場しますが、CIAには含まれません。また、最近ではこれに「真正性」「責任追跡性」「否認防止」「信頼性」を加えた「7要素」として出題されることもあります。


4. 実戦4択クイズ(DS検定・情報処理試験形式)

問:システム障害やサイバー攻撃によって、サービスが停止して使えなくなってしまうことは、セキュリティ3要素のどれが損なわれた状態か。

① 機密性   ② 完全性   ③ 可用性   ④ 効率性

【 正解: ③ 】

解説: 「いつでも使えること」を指すのが「可用性(アベイラビリティ)」です。システムがダウンして使えなくなることは、この可用性が損なわれた状態を指します。


5. まとめ

「機密性・完全性・可用性」。この3つの頭文字をとったCIAは、あらゆるセキュリティ対策の出発点です。どの対策が、どの要素を守るためのものなのかを意識して学習を進めましょう。


【データ構造】積み上げる動作!スタックの「プッシュ」|情報処理問題1000本ノック

スタック構造において、データを格納する基本アクションを正しく理解しましょう。

1. 問題:スタックへの追加操作

【 問題 】 データ構造の一つである「スタック(stack)」において、新しいオブジェクト(データ)をデータ構造の末尾(一番上)に追加する操作を何と呼ぶでしょうか?

① プッシュ(Push)   ② ポップ(Pop)   ③ プット(Put)   ④ ゲット(Get)

2. 正解:データ構造の操作に関する正解

正解: ① プッシュ(Push)

3. 解説:スタック(積まれた本)の世界

スタックは「積み重ね」を意味します。新しいデータを置くときは、常に既存のデータの上に重ねていきます。

【図解:プッシュ操作のイメージ】

■ プッシュ(Push = 押し込む)
・空の箱に下から順番にデータを詰めていくイメージです。
・最後に追加したデータが、常に「一番上(TOP)」に位置します。

■ 特徴
・データを追加する場所を選ぶことはできません。常に「末尾(一番上)」への追加となります。
[ 現場での使われ方 ]
★ プログラムが関数を呼び出す際、現在の処理の状態を一時的に保存するためにスタックが使われます。これを「スタックに積む」や「プッシュする」と表現します。

1. 理解のコツ: 筒状の容器にテニスボールを押し込んでいく様子を想像してください。ボールを入れる動作が「プッシュ」です。最初に入れたボールは底に沈み、後から入れたボールが取り出しやすい位置に来ます。
2. 試験対策の視点: 「LIFO(Last-In First-Out:後入れ先出し)」という言葉とセットで、「プッシュした順序の逆でポップされる」というデータの流れを把握しておくことが重要です。


4. まとめ

「スタックにデータを追加する操作」。これがプッシュ(Push)です。取り出しの「ポップ」と対になる、コンピュータ科学における最も基礎的な操作の一つです。

【データ構造】最後に入れたものを最初に出す!「スタック」|情報処理問題1000本ノック

データの出し入れに制限を設けることで、処理の順序を効率的に管理する「スタック」。プログラミングやCPUの処理でも多用されるこの構造を攻略しましょう。

1. 問題:スタックからの取り出し操作

【 問題 】 データ構造の一つである「スタック(stack)」において、スタックの先頭(最後に入れた場所)からオブジェクトを取り出す操作を何と呼ぶでしょうか?

① プッシュ(Push)   ② ポップ(Pop)   ③ プット(Put)   ④ ゲット(Get)

2. 正解:データ構造の操作に関する正解

正解: ② ポップ(Pop)

3. 解説:LIFO(後入れ先出し)の仕組み

スタックは、データの入り口と出口が同じ場所にあるデータ構造です。この性質を「LIFO(Last-In, First-Out)」と呼びます。

【図解:スタックの2大操作】

■ プッシュ(Push)
・データをスタックの「一番上」に積み上げる(挿入する)操作。

■ ポップ(Pop)
・スタックの「一番上」にあるデータを一つ取り出す操作。

★ 性質:後入れ先出し(LIFO)
・1番目に入れたデータは、2番目・3番目のデータが取り出されるまで、絶対に取り出すことができません。
[ 比較して覚えたい:キュー(Queue) ]
キュー:入り口と出口が反対側にある構造(レジの行列と同じ)。
FIFO (First-In, First-Out):最初に入れたものが最初に出てくる。この時の操作は「エンキュー(入れる)」「デキュー(出す)」と呼びます。

1. 理解のコツ: 机の上に積み上げられた本をイメージしてください。新しく置くときは「一番上(プッシュ)」に置き、読むために取るときも「一番上(ポップ)」から取りますよね。一番下の本を取ろうとすると崩れてしまいます。
2. 試験対策の視点: 「LIFO(後入れ先出し)」という言葉とセットで出題されます。また、関数の呼び出し履歴(コールスタック)や、数式の逆ポーランド記法などの計算問題でも、このポップ操作が鍵となります。


4. まとめ

「スタックの先頭からデータを取り出す操作」。これがポップ(Pop)です。入れるときはプッシュ、出すときはポップ。この一対の動きが、複雑なプログラムの実行順序を支えています。


【ネットワーク】一本道を独占!「回線交換方式」|情報処理問題1000本ノック

インターネットで主流の「小分けにして送る」方式とは対極にある、一度繋がったらその道を独占できる通信の仕組みを攻略しましょう。

1. 問題:通信路を占有する通信方式

【 問題 】 通信ネットワークにおいて、通信を行うユーザ間にエンドエンド(端から端まで)の物理的な伝送路をあらかじめ設定し、設定完了後に実際の通信を行う方式を何と呼ぶでしょうか?

① パケット交換   ② 回線交換   ③ フレームリレー   ④ ATM(非同期転送モード)

2. 正解:通信プロトコル・方式に関する正解

正解: ② 回線交換(Circuit Switching)

3. 解説:専用の「通り道」を確保する

回線交換は、主にアナログ電話などで使われてきた方式です。一度繋がると、その通信が終わるまで他の人はその道を通れません。

【図解:回線交換のメリットとデメリット】

■ メリット
品質が安定:帯域を占有するため、他のユーザーの通信量に左右されず、遅延もほぼ一定です。
リアルタイム性に強い:電話のように途切れてはいけない通信に向いています。

■ デメリット
効率が悪い:通信をしていない時間(無言の時間など)も回線を占有し続けるため、資源の無駄が生じます。
「話中」がある:回線がいっぱいのときは、新しく繋ぐことができません。
[ 対比して覚えたい:パケット交換 ]
パケット交換:データを細切れ(パケット)にして、複数のユーザーで一本の回線を共有する方式。インターネットの基本です。効率は良いですが、混雑すると遅延が発生します。

1. 理解のコツ: 回線交換は「線路を一台の専用列車が走り抜ける」イメージ。パケット交換は「一般道をたくさんのトラックが荷物を小分けにして走る」イメージです。
2. 試験対策の視点: 「占有」「あらかじめ設定(コネクション確立)」「物理的(または論理的)な伝送路の確保」という言葉があれば回線交換です。逆に「共有」「蓄積」「小分け」といった言葉があればパケット交換を指します。


4. まとめ

「通信路を占有し、端から端まで一本の道を確保する」。これが回線交換方式です。データの効率よりも、通信の安定性やリアルタイム性が最優先される場面で活躍する技術です。


【ネットワーク】システムの生存確認!「ハートビート」|情報処理問題1000本ノック

心臓の鼓動(Heartbeat)のように、一定の間隔で信号を送ることで、相手が正常に動いているかを遠隔で監視する仕組みを攻略しましょう。

1. 問題:稼働状況の確認手法

【 問題 】 ネットワークに接続されたコンピュータやソフトウェアが、外部に対して「自分は正常に稼働している」ことを知らせるために、一定の間隔で送信する信号のことを何と呼ぶでしょうか?

ア、ハンドシェイク   イ、ハートビート   ウ、キープアライブ   エ、ポーリング

2. 正解:可用性管理に関する正解

正解: イ、ハートビート(Heartbeat)

3. 解説:沈黙は「異常」のサイン

ハートビートは、特に冗長化(二重化)されたシステムにおいて、相方の故障を検知するために非常に重要です。

【図解:ハートビートの役割と仕組み】

■ 生存確認の流れ
・稼働中のサーバーが、監視役の装置へ定期的に「トントン(生きてるよ)」と短いパケットを送ります。
・信号が途切れた(一定時間届かない)場合、監視役は「あいつは死んだ(故障した)」と判断します。

■ 活用例:フェイルオーバー
・メイン機からのハートビートが途絶えた瞬間、待機していたサブ機が「自分の出番だ!」と判断して処理を引き継ぎます。
[ 紛らわしい用語との違い ]
キープアライブ:通信セッションを維持するために送る信号。ほぼ同じ意味で使われることもありますが、ハートビートはより「システムの死活監視(OSやアプリが生きてるか)」の文脈で使われます。
ポーリング:監視側が「生きてる?」と毎回聞きに行くこと。ハートビートは基本、自分から「生きてるよ!」と発信するスタイルです。

1. 理解のコツ: 登山のパーティで、先頭の人が後ろの人に向かって「おーい!」と声を出し続けるようなものです。声(信号)が聞こえなくなったら、何かトラブルがあったとすぐにわかります。
2. 試験対策の視点: 「一定間隔で送信」「正常稼働の通知」「死活監視」という言葉がキーワードです。高可用性(HA)クラスター構成の話題とセットで登場することが多い用語です。


4. まとめ

「ネットワーク上で稼働状況を知らせるために送る信号」。これがハートビートです。システムが沈黙した瞬間に異常を検知し、素早く切り替える。そんな「止まらないシステム」を支える心臓の鼓動です。


【システム構成】サービスを止めずに進化させる!「ローリングアップデート」|情報処理問題1000本ノック

システム全体を一時停止させる「計画停止」は、現代の24時間365日稼働するサービスでは許容されないことが増えています。無停止で新バージョンへ切り替える手法を攻略しましょう。

1. 問題:稼働継続とアップデートの両立

【 問題 】 複数のサーバーやノードで構成されるシステムにおいて、稼働中のノードを一つ、あるいは数個ずつ順番に新しいバージョンへと入れ替えていく手法を何と呼ぶでしょうか?

ア、一斉アップデート   イ、ブルーグリーンデプロイメント   ウ、ローリングアップデート   エ、カナリアリリース

2. 正解:リリース管理に関する正解

正解: ウ、ローリングアップデート(Rolling Update)

3. 解説:サービスを維持しながら「波」のように更新する

「Rolling」という名の通り、車輪が転がるように次々と対象をスライドさせて更新していきます。

【図解:ローリングアップデートの手順】

■ 手順
1. 全4台のうち、まず1台を切り離してアップデートし、復帰させる。
2. 残りの旧バージョンが動いている間に、次の1台をアップデートする。
3. これを繰り返し、最終的にすべてのノードを新バージョンに置き換える。

■ メリット
システム停止が不要:常に一部のノードが稼働しているため、ユーザーはサービスを使い続けられます。
リソース効率が良い:予備のサーバー群を丸ごと用意する必要がなく、既存のリソース内で完結できます。
[ 比較して覚えたい:ブルーグリーンデプロイメント ]
ブルーグリーン:現行環境(Blue)と同じ規模の新しい環境(Green)を丸ごと用意し、ロードバランサーの向きを一気に切り替える手法。瞬時に切り替わりますが、2倍のリソースが必要になります。

1. 理解のコツ: 4人組のアイドルグループが、一人ずつ順番に舞台裏で着替えてステージに戻るようなイメージです。常に誰かが歌っている(サービスが動いている)ため、ライブ(システム)を止める必要がありません。
2. 試験対策の視点: 「順番に」「一部ずつ」「システム停止を避ける」というフレーズが特徴です。クラウドやマイクロサービスの運用において、最も一般的なデプロイ方法の一つとして頻出します。


4. まとめ

「複数のノードを順番に更新し、サービスを維持する」。これがローリングアップデートです。ユーザーに不便を強いることなく、常に最新の機能やセキュリティパッチを適用し続けるための、止まらないシステム運営の基本技術です。

【データベース】処理能力のバロメーター!「QPS」|情報処理問題1000本ノック

データベースの性能を測る際、単に「速い」ではなく数値で客観的に評価するための重要な指標を攻略しましょう。

1. 問題:データベースの性能指標

【 問題 】 データベースシステムにおいて、1秒間に実行(処理)されるクエリの回数を示す指標を何と呼ぶでしょうか?

ア、Latency   イ、Throughput   ウ、QPS   エ、IOPS

2. 正解:パフォーマンス管理に関する正解

正解: ウ、QPS(Queries Per Second)

3. 解説:秒間の「さばき」の量

QPSは、そのデータベースがどれほど「忙しさ」に耐えられるか、あるいはどれほど効率的にリクエストを処理しているかを示す単位です。

【図解:QPSと関連指標の整理】

■ QPS (Queries Per Second)
・意味:1秒あたりのクエリ(検索・更新など)実行数。
・用途:DBの負荷状況の把握や、性能テストの結果測定。

■ レイテンシ (Latency) との違い
QPSは「量(スループット)」:1秒間に何件こなせるか。
レイテンシは「時間」:1つのクエリを投げてから結果が返るまでに何ミリ秒かかるか。
※レイテンシが短ければ、通常QPSは向上します。
[ セットで覚えたい周辺用語 ]
TPS (Transactions Per Second):1秒あたりの「トランザクション」処理数。複数のクエリをまとめた1つの業務単位で数える場合に使い、QPSよりも厳格な負荷指標となります。
IOPS (Input/Output Operations Per Second):ストレージが1秒間に読み書きできる回数。DBの性能のボトルネックを調べる際によく登場します。

1. 理解のコツ: ラーメン屋さんの厨房をイメージしてください。「1時間に何杯のラーメンを作れるか」がQPSです。「注文してからラーメンが出てくるまでの時間」がレイテンシです。
2. 試験対策の視点: 「1秒あたりの」「クエリ数」という言葉があればQPSです。システムのサイジング(どのくらいのスペックのサーバーを買うか)を検討する際の基準値として出題されます。


4. まとめ

「1秒間に処理されるクエリの数」。これがQPSです。この数値が高いほど、そのデータベースは多くのリクエストを同時にさばく能力があることを意味します。Webサービスの成長に合わせて、常に注視すべき健康診断の数値のようなものです。