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

【情報セキュリティ】鍵の受け渡し問題を解決!「公開鍵暗号方式」|情報処理問題1000本ノック

ネットワークを介して安全にデータを送るためには、暗号化が欠かせません。数ある暗号方式の中でも、一対の異なる鍵を使う「公開鍵暗号方式」の代表格をマスターしましょう。

1. 問題:暗号方式の分類

【 問題 】 次のうち、公開鍵暗号方式に分類されるアルゴリズムはどれでしょうか?

ア、DES   イ、AES   ウ、RC4   エ、RSA

2. 正解:暗号アルゴリズムに関する正解

正解: エ、RSA

3. 解説:ペアの鍵が織りなす高度な仕組み

公開鍵暗号方式は、データの暗号化と復号に「対(ペア)となる異なる鍵」を使用するのが最大の特徴です。

【図解:公開鍵暗号の仕組みとRSA】

■ RSAとは
・開発者3人の頭文字をとった名称です。非常に大きな数の「素因数分解」が困難であることを安全性の根拠にしています。

■ 2つの鍵の役割
公開鍵:誰にでも渡して良い鍵。受信者が送信者に渡し、データの「暗号化」に使われます。
秘密鍵:受信者本人だけが持つ鍵。暗号化されたデータの「復号」に使われます。

■ メリット
・共通鍵暗号のように「鍵をどうやって安全に相手に届けるか」という悩みが解消されます。
[ 選択肢(共通鍵暗号)の整理 ]
DES (Data Encryption Standard):かつての標準。現在は安全性が低下し、推奨されません。
AES (Advanced Encryption Standard):現在の世界標準。非常に高速で強固です。
RC4:かつて無線LAN(WEP)などで使われたストリーム暗号方式です。

1. 理解のコツ: 公開鍵は「開いた状態の南京錠」を配り歩くようなものです。誰でも箱に荷物を入れて鍵をかける(暗号化)ことはできますが、それを開けられるのは鍵(秘密鍵)を持っている自分だけ、と考えるとイメージしやすくなります。
2. 試験対策の視点: 「公開鍵=RSA、楕円曲線暗号」とセットで覚えましょう。また、公開鍵暗号は計算処理が重いため、実際の通信では「共通鍵を安全に送るため」だけに公開鍵を使い、その後のデータ本体は共通鍵で送る「ハイブリッド暗号方式」が一般的です。


4. まとめ

「素因数分解の難しさを利用した、ペアの鍵による暗号方式」。これがRSA(公開鍵暗号方式)です。デジタル署名などにも応用される、セキュリティの最重要トピックであることを押さえておきましょう。


PR

【情報セキュリティ】データの繋ぎ方で強固にする!「ブロック暗号のモード」|情報処理問題1000本ノック

AESなどのブロック暗号は、一度に処理できるデータ長(ブロック)が決まっています。長いメッセージを暗号化する際、どのようにブロックを繋いで処理していくかという「アルゴリズムの運用形態」を攻略しましょう。

■ 代表的な5つのブロック暗号モード

同じ鍵を使っても、モードによって暗号文の性質や安全性が大きく変わります。

モード特徴とセキュリティ上の性質
ECB
(Electronic Codebook)
各ブロックを独立して暗号化する最も単純な方式。
【弱点】 同じ平文ブロックからは同じ暗号文が出るため、パターンを推測されやすく現在は推奨されません。
CBC
(Cipher Block Chaining)
前のブロックの暗号文と、次の平文をXOR(排他的論理和)してから暗号化する。現在の主流の一つ。
・最初のブロックにはIV(初期化ベクトル)を使用します。
CFB
(Cipher Feedback)
前の暗号文ブロックを暗号アルゴリズムへの入力に戻す方式。
・ブロック暗号をストリーム暗号(逐次処理)のように利用できます。
OFB
(Output Feedback)
暗号アルゴリズムの出力を、次の入力にフィードバックする方式。
・伝送路でビットエラーが発生しても、そのエラーが後続に波及しない特徴があります。
CTR
(Counter)
ブロックごとにカウントアップする数値を暗号化し、平文とXORをとる方式。
【利点】 各ブロックを独立して計算できるため、並列処理が可能で非常に高速です。

エンジニアが押さえるべき重要ポイント

  • IV(初期化ベクトル)の役割:同じ鍵・同じ平文でも、毎回異なる暗号文を生成するために不可欠な「使い捨ての乱数」です(ECB以外で使用)。
  • パディング:データの末尾がブロック長に足りない場合、特定のルールでデータを埋める作業が必要です(CTRなど一部モードでは不要)。
  • 認証付き暗号 (AEAD):最近では暗号化と同時に改ざん検知も行うGCM(CTRモードの発展形)が広く普及しています。

※ECBは「そのまま並べるだけ」、CBCは「前の結果を次に繋ぐ数珠つなぎ」、CTRは「番号を振って並列処理」というイメージで整理すると、それぞれの特性(特に速度と安全性)の違いが見えてきます。


【知識:ネットワーク】波を数字に変える!「パルス符号変調(PCM)」|情報処理問題1000本ノック

私たちが普段使っている電話や音楽ストリーミングは、アナログ信号(音の波)をデジタル信号(0と1)に変換することで実現されています。その中核技術であるPCMの3ステップを攻略しましょう。

■ PCM(Pulse Code Modulation)の変換プロセス

アナログ波形をデジタル化する際には、以下の順序で処理が行われます。

1. 標本化(サンプリング / Sampling)

連続的なアナログ波形を、一定の時間間隔ごとに区切って、その時点の値を計測します。
※どれだけ細かく区切るかを「サンプリング周波数」と呼びます。

2. 量子化(Quantization)

標本化で得られた連続的な値を、あらかじめ決めた段階的な整数値(近似値)に当てはめます。
※この段階を細かくするほど、元の波形に近い「高音質」になりますが、データ量も増えます。

3. 符号化(コーディング / Coding)

量子化された数値を、「0」と「1」のバイナリ(2進数)データに変換します。これにより、コンピュータでの処理や通信路での伝送が可能になります。

■ 効率的な変調方式:デルタ変調

通常のPCMは各時点の値をそのまま送りますが、データ量を節約するための応用方式が存在します。

【デルタ変調(Delta Modulation)の特徴】

■ 仕組み
・値をそのまま送るのではなく、「一つ前の値と比較して、大きければ1、小さければ0」という「差分(変化)」のみを記録・伝送する方式です。

■ メリット
・各サンプルを1ビットで表現できるため、構成がシンプルになり、データ量を大幅に抑えることができます。

試験対策の重要ポイント:標本化定理

元の波形を正しく復元するためには、「再現したい最高周波数の2倍以上の速さ」でサンプリングする必要があります。例えば、人間の耳に聞こえる上限の20kHzを再現するために、CDは44.1kHzでサンプリングされています。

※PCMは「映画のフィルム(一瞬を切り取って繋げる)」、デルタ変調は「階段を1段上がるか下がるかだけを指示する」イメージで捉えると、仕組みの違いが理解しやすくなります。

【システム開発技術】二人一組で品質を高める!「ペアプログラミング」|情報処理問題1000本ノック

アジャイル開発(特にXP:エクストリームプログラミング)で推奨される手法の一つに、二人で1つのコードを書くスタイルがあります。その役割分担やメリットを攻略しましょう。

1. 問題:共同開発の手法

【 問題 】 システム開発において、2人のプログラマが1台のコンピュータを共有し、1人がコードを書き、もう1人がそれをチェックしながら共同で1つのプログラムを開発する手法はどれでしょうか?

ア、ペアプログラミング   イ、デュアルプログラミング   ウ、コード共有   エ、エクストリームプログラミング

2. 正解:開発手法に関する正解

正解: ア、ペアプログラミング

3. 解説:ドライバとナビゲータの連携

ペアプログラミング(Pair Programming)は、役割を分担することで、コードの品質向上と知識共有を同時に行う手法です。

【図解:ペアプログラミングの役割】

■ ドライバ (Driver)
・実際にキーボードを叩き、コードを入力する人。
・詳細な実装(タイピングや構文)に集中します。

■ ナビゲータ (Navigator)
・横でコードを読み、間違いを指摘したり、全体の設計方針を確認したりする人。
・一歩引いた視点で、次に書くべき内容や問題を考えます。

※定期的な交代
・役割は頻繁に入れ替えることで、集中力を維持し、偏りを防ぎます。
[ 主なメリット ]
品質向上:常に「リアルタイムのコードレビュー」が行われているため、バグが混入しにくい。
教育・共有:経験豊富な人と新人が組むことで、技術継承がスムーズに進む。
集中力:一人で悩む時間が減り、作業のリズムが生まれる。

1. 理解のコツ: 自動車のラリーをイメージしてください。運転する人(ドライバ)と、地図を見て指示を出す人(ナビゲータ)が協力してゴールを目指すのが、ペアプログラミングのスタイルです。
2. 試験対策の視点: 「2人1組」「1台のPC」「ドライバとナビゲータ」という単語があれば、迷わずペアプログラミングを選びましょう。また、選択肢(エ)の「エクストリームプログラミング(XP)」は、このペアプログラミングを含む「12のプラクティス」からなる開発フレームワーク全体の名前です。


4. まとめ

「二人で1つの画面を見て、協力して開発する」。これがペアプログラミングです。コミュニケーションコストはかかりますが、結果として手戻りが減り、チーム全体の技術力が向上する非常に強力なアプローチです。



【情報セキュリティ】人の心理を突く罠!「ソーシャルエンジニアリング」|情報処理問題1000本ノック

どれだけ強固なファイアウォールを設置しても、パスワードを口頭で教えてしまえば意味がありません。技術を使わずに情報を盗み出す「ソーシャルエンジニアリング」の代表的な手口を攻略しましょう。

1. 問題:技術的手段を用いない攻撃

【 問題 】 情報セキュリティにおいて、人間の心理的な隙や、ゴミ箱の中の書類、あるいは肩越しに操作を覗き見るといった物理的な手段を用いて、パスワードなどの機密情報を入手する手法の総称はどれでしょうか?

ア、ソーシャルエンジニアリング   イ、ブルートフォース攻撃   ウ、クロスサイトスクリプティング   エ、中間者攻撃

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

正解: ア、ソーシャルエンジニアリング

3. 解説:日常に潜む「盗み」の手口

ソーシャルエンジニアリングは、コンピュータの専門知識がなくても実行できてしまう、極めて古典的かつ強力な攻撃です。

【図解:代表的な3つの手法】

■ 1. ショルダーハッキング (Shoulder Surfing)
・ATMやPCの操作、スマホのパスコード入力を、文字通り「肩越しに覗き見る」行為。のぞき見防止フィルタなどの物理的な対策が有効です。

■ 2. なりすまし (Pretexting)
・システム管理者や清掃業者、取引先などを装って電話やメールをし、「トラブル対応のため」などの口実でパスワードを聞き出したり、不正な送金を要求したりする行為。

■ 3. スカベンジング (ゴミ箱あさり / Dumpster Diving)
・シュレッダーにかけていない廃棄書類や、メモ書きなどをゴミ箱から回収して情報を盗む行為。
[ 防御のポイント ]
物理的対策:離席時の画面ロック、シュレッダーの徹底、のぞき見防止フィルタ。
運用的対策:パスワードを電話やメールで絶対に伝えないルール作り。
教育:一人ひとりが「自分が狙われている」という意識を持つこと。

1. 理解のコツ: コンピュータを攻撃するのではなく、「人をだます」のがこの手法の本質です。「エンジニアリング(工学)」という言葉がつきますが、中身は非常にアナログな泥棒の技術に近いものです。
2. 試験対策の視点: 覗き見=ショルダーハッキング、ゴミ箱=スカベンジングというペアを覚えましょう。また、これらはISMS(情報セキュリティマネジメントシステム)の教育分野で頻出のトピックです。


4. まとめ

「人の心理や物理的な隙を突いて情報を盗む」。これがソーシャルエンジニアリングです。システムを鉄壁にするだけでなく、私たち自身の振る舞いやルールが、セキュリティの最後の砦(とりで)になります。



【マネジメント】並行作業で納期を縮める!「ファストトラッキング」|情報処理問題1000本ノック

プロジェクトの期限が迫ったとき、作業の順序を見直してスピードを上げる手法があります。リスクを伴いながらも期間を短縮する、その戦略的な進め方を攻略しましょう。

1. 問題:スケジュール短縮の技法

【 問題 】 プロジェクトの期間を短縮する技法のうち、本来は直列(先行工程の完了後)に行う予定だった複数の工程を、先行工程が完了する前に後続工程に着手させるなど、並行して進める手法を何と呼ぶでしょうか?

ア、クラッシング   イ、ファストトラッキング   ウ、クリティカルチェーン法   エ、リソース平準化

2. 正解:スケジュール管理に関する正解

正解: イ、ファストトラッキング(Fast Tracking)

3. 解説:順番を変えて「同時並行」で攻める

ファストトラッキングは、追加のコストを抑えつつ、作業の「オーバーラップ(重なり)」によって期間を短縮する手法です。

【図解:ファストトラッキングの仕組み】

■ 基本的な考え方
・通常:[設計]が終わってから→[開発]を始める。
・手法:[設計]が8割終わった段階で、[開発]を並行してスタートさせる。

■ メリットとデメリット
メリット:人員や予算を追加せずに期間を短縮できる。
デメリット:先行工程で変更があった場合、後続工程で大きな「手戻り(やり直し)」が発生するリスクが高まる。
[ クラッシングとの違い ]
クラッシング:人を増やして(コストをかけて)力技で早くする。
ファストトラッキング:順番を変えて(リスクを取って)並行して早くする。

1. 理解のコツ: 「ファスト(速い)」「トラック(経路)」の通り、最短経路を並走して駆け抜けるイメージです。「後続工程の前倒し」という表現が出てきたらこれを選びましょう。
2. 試験対策の視点: 「並行」「同時進行」「リスク増大」といった言葉がセットで出題されます。また、どの作業を並列にしても良いわけではなく、必ず「クリティカルパス」上の作業を対象にする必要があります。


4. まとめ

「工程を並行させて期間を短縮する」。これがファストトラッキングです。リソースに余裕がない状況で納期を死守するための有力な手段ですが、手戻りリスクを管理する高度なプロジェクト管理能力が求められます。


【企業経営】会社の信頼を背負う!取締役の「忠実義務」|情報処理問題1000本ノック

株式会社の舵取りを任された取締役には、自分の利益よりも会社の利益を優先して行動する重い責任があります。法務やコンプライアンスの基礎となるこの概念を攻略しましょう。

1. 問題:取締役が負うべき基本的義務

【 問題 】 会社法において、取締役は、法令、定款および株主総会の決議を遵守し、会社のために「忠実に」その職務を遂行しなければならないと定められています。この義務を何と呼ぶでしょうか?

ア、善管注意義務   イ、忠実義務   ウ、守秘義務   エ、説明義務

2. 正解:企業法務・ガバナンスに関する正解

正解: イ、忠実義務

3. 解説:利益相反を防ぎ、誠実に職務を果たす

忠実義務(ちゅうじつぎむ)は、取締役が「会社にとって最善の利益」を考えて行動することを求めるルールです。具体的には、以下のような行為を制限する根拠となります。

【図解:忠実義務が問われる代表例】

■ 競業避止義務
・会社の承認なく、自分の会社とライバル関係になるような商売を勝手に行ってはいけません。

■ 利益相反取引の制限
・「自分個人の持ち物を、不当に高い価格で会社に買わせる」といった、会社に損をさせて自分(または第三者)が儲かるような取引は禁止されます。

■ 誠実な判断
・自分の保身や特定の株主の利益のためではなく、会社全体の価値向上のために判断を下さなければなりません。
[ 善管注意義務との関係 ]
善管注意義務:プロの経営者として「通常期待される注意深さ」を持って仕事をする義務。
忠実義務:善管注意義務をより具体化し、「会社への忠誠心」を強調した義務。
※実務上は、両者は表裏一体のものとして扱われることが多いです。

1. 理解のコツ: 「私利私欲を捨て、会社のしもべとして誠実に働く」というイメージです。特にIT投資やM&Aなど、大きな金額が動く意思決定の際、取締役がこの義務を果たしているかが厳しく問われます。
2. 試験対策の視点: 「取締役の職務遂行」「会社法」「忠実」という単語がセットであれば、この用語が正解です。また、これに違反すると会社に対して損害賠償責任を負う可能性がある点も併せて押さえておきましょう。


4. まとめ

「会社のために誠実に、私利を交えず職務を果たす」。これが忠実義務です。コーポレートガバナンス(企業統治)を健全に保つための、最も根幹となる法的ルールです。

【企業経営】しなやかに回復する力!「ITレジリエンス」|情報処理問題1000本ノック

サイバー攻撃やシステム障害を「100%防ぐ」ことは困難です。そのため、被害に遭うことを前提とし、いかに素早く立ち直り、事業を継続するかという「回復力」が経営の最優先事項となっています。

1. 問題:システムと組織の回復力

【 問題 】 大規模なシステム障害やサイバー攻撃などの予期せぬ事態が発生した際に、その影響を最小限に抑え、迅速に本来の業務状態へと回復・適応できる能力を何と呼ぶでしょうか?

ア、ITガバナンス   イ、ITレジリエンス   ウ、ITポートフォリオ   エ、ITリテラシー

2. 正解:経営リスク管理に関する正解

正解: イ、ITレジリエンス(IT Resilience)

3. 解説:「防御」から「適応と回復」への転換

レジリエンス(Resilience)はもともと「弾力」や「復元力」を意味します。ITレジリエンスは、単なるセキュリティ対策を超えた経営体力を指します。

【図解:ITレジリエンスの3つの柱】

■ 1. 吸収(想定外への耐性)
・障害が発生しても、冗長化や分散処理によってサービスを完全に止めない力。

■ 2. 回復(迅速な復旧)
・バックアップからの高速なリストアや、自動復旧(セルフヒーリング)による立ち直りの速さ。

■ 3. 進化(学習と適応)
・障害の経験を糧に、二度と同じトラブルを起こさないようシステムや組織体制を強化する力。
[ BCPとの違い ]
BCP(事業継続計画)は、主に「手順や計画」という書面上の備えを指します。
ITレジリエンスは、それらを実行するための「システムの柔軟性」や「現場の対応力」といった実力を包括した概念です。

1. 理解のコツ: 「折れない心」ではなく「柳のようにしなって元に戻る」イメージです。どんなに堅牢な壁(防御)を作っても、いつかは突破されます。その時に「すぐに起き上がれるか」がレジリエンスの本質です。
2. 試験対策の視点: 「迅速な復旧」「適応能力」「回復力」というキーワードがあればITレジリエンスを指します。DXが進む中で、ITの停止が即・経営危機に直結するため、非常に注目されている用語です。


4. まとめ

「不測の事態でも、しなやかに立ち直り事業を続ける」。これがITレジリエンスです。最新のクラウド技術や自動化ツールを駆使し、トラブルを成長の糧に変えられる組織こそが、これからのデジタル社会を生き抜くことができます。



【アルゴリズム】バグを減らす設計の極意!「関数の参照透過性」|情報処理

プログラムの動作を予測しやすくし、テストや並列処理を容易にする「参照透過性」という概念があります。数学的な関数に近い、そのクリーンな性質を攻略しましょう。

1. 問題:関数の参照透過性の定義

【 問題 】 プログラミングにおける「関数の参照透過性」を説明したものとして、最も適切なものはどれでしょうか?

ア、関数が自分自身を再帰的に呼び出すことができる性質
イ、同じ引数に対しては常に同じ結果を返し、かつ外部の状態に影響を与えない性質
ウ、関数の引数として、別の関数を渡すことができる性質
エ、関数内部からグローバル変数に自由にアクセスし、書き換えができる性質

2. 正解:プログラミング理論に関する正解

正解: イ、同じ引数に対しては常に同じ結果を返し、かつ外部の状態に影響を与えない性質

3. 解説:「置き換え可能」であることの価値

参照透過性(Referential Transparency)とは、ある関数呼び出しを「その実行結果の値」に置き換えても、プログラムの意味が変わらないことを指します。

【図解:参照透過な関数(純粋関数)の条件】

■ 副作用がない (No Side Effects)
・関数の外にある変数を書き換えない。
・画面出力やファイル書き込みを行わない。

■ 入力のみに依存する
・現在時刻や乱数、外部ファイルの内容など、呼び出すたびに変わるものに依存しない。

■ 例: add(2, 3)
・いつどこで実行しても必ず「5」を返す。このため、コード中の `add(2, 3)` を直接 `5` と書いてもプログラムの結果は同じになる。
[ 参照透過性のメリット ]
メモ化が可能:一度計算した結果を再利用できるため、パフォーマンス向上に寄与する。
テストが容易:外部の状態を準備(モック化)する必要がなく、引数だけでテストが完結する。
スレッド安全:共有データを書き換えないため、マルチスレッド環境でも安全に動作する。

1. 理解のコツ: 「数学の関数($y = f(x)$)」をイメージしてください。数学では同じ $x$ を入れれば必ず同じ $y$ が出ますし、計算したからといってノートの別の場所の数字が変わることもありません。これが参照透過な状態です。
2. 試験対策の視点: 関数型プログラミングの文脈でよく出題されます。「副作用がない」「引数だけで結果が決まる」というフレーズがキーワードです。対照的な概念として「非純粋関数」もセットで覚えておきましょう。


4. まとめ

「同じ入力なら同じ出力、副作用なし」。これが関数の参照透過性です。全ての関数を参照透過にすることは難しいですが、可能な限りこの性質を持たせることで、堅牢でメンテナンスしやすいシステムを構築できます。


【データベース】表(リレーション)が満たすべき「4つの基本特性」|情報処理問題1000本ノック

リレーショナルデータベースにおいて、表(リレーション)は単なるデータの箱ではありません。数学的な「集合論」に基づいた厳格な特性を持っています。設計の基本となる4つのルールを攻略しましょう。

■ リレーショナルデータベース:表の重要な特性

効率的なデータ管理と矛盾のない操作を実現するために、RDBの表は以下の性質を備えています。

特性具体的な内容と意味
重複する行(組)の禁止 表の中に、全く同じ値を持つ行(タプル)が複数存在することはありません。
・各行を一意に識別するための「キー」の概念が必要な理由です。
行(組)の無順序性 行の並び順(上下)に意味はありません。データは順不同の「集合」として扱われます。
・特定の順番で取得したい場合は、必ず `ORDER BY` 句で指定します。
列(属性)の無順序性 列の並び順(左右)にも意味はありません。列は「名前」によって識別されます。
・「左から2番目の列」といった指定ではなく、列名でデータを操作します。
値の原子性(第一正規形) 全ての属性値はそれ以上分解できない単一の値(スカラ値)である必要があります。
・1つのセルに複数の値を詰め込む「繰り返し集合」は認められません。

試験対策の重要キーワード

  • リレーション(Relation):数学的な意味での「関係」。これがRDBにおける「表」の正体です。
  • タプル(Tuple):表における「行(組)」のこと。
  • アトリビュート(Attribute):表における「列(属性)」のこと。
  • 第一正規化:属性の原子性を確保し、繰り返し項目を排除するプロセスのことです。

※RDBが「集合論」に基づいていることを理解すると、なぜSQLで「何番目のデータ」という指定ができないのか、なぜ重複を嫌うのかといった理由が明確に見えてきます。