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

【情報セキュリティ】マネーロンダリングや不正を防ぐ砦!「KYC」|情報処理問題1000本ノック

ネットで銀行口座を作ったり、暗号資産の取引所のアカウントを開設するとき、免許証の画像を送ったりスマホで顔を撮影したりしますよね。あの「本当に実在する本人かどうかを厳格に確かめる手続き」を指す「KYC」について攻略しましょう。

1. 【 問題 】:ビジネス法務・セキュリティ(本人確認手続き)

【 問題 】 銀行などの金融機関における口座開設や、特定のネットサービスへの新規登録などの際、サービスの申し込みをしてきた相手が架空の人物やなりすましではなく、実在する本人であることを証明するために、公的な身分証明書などを用いて実施する「顧客身元確認」の手続きを何と呼ぶでしょうか?

① AML(Anti-Money Laundering)
② KYC(Know Your Customer)
③ MFA(Multi-Factor Authentication)
④ NDA(Non-Disclosure Agreement)

2. 正解:

正解: ② KYC(Know Your Customer)

3. 解説:「あなたのお客様を知る」という不正防止の基本

KYCは「Know Your Customer(顧客を知る)」の略称です。直訳すると少しフランクに聞こえますが、ビジネスや法律の世界では「厳格な本人確認手続き」を指す専門用語として定着しています。犯罪グループが偽名で口座を作って詐欺の振込先に使ったり、テロ資金の送金に悪用したりするのを防ぐために、企業や金融機関に義務付けられている非常に重要なプロセスです。

【間違いやすいビジネス・セキュリティ用語の特徴】 ← ココが試験のポイント!

略称正式名称と意味特徴・主な目的
① AML Anti-Money Laundering(アンチマネーロンダリング) 犯罪で得た資金の出所を隠す「資金洗浄」を防ぐための規制や対策全体のこと。
KYC Know Your Customer(ノー・ユア・カスタマー) 公的証明書等を使って、取引相手が実在する本人かを確認する具体的な手続き。
③ MFA Multi-Factor Authentication(多要素認証) ログイン時などに、パスワード+生体認証など複数の要素を組み合わせる認証技術。
④ NDA Non-Disclosure Agreement(秘密保持契約) 取引によって知り得た秘密情報を外部に漏らさないことを誓う、企業間の契約。

1. 理解のコツ: 「レンタルビデオ店の入会」を想像してください。
・お店で会員証を作るとき、「私は佐藤です」と口頭で言うだけではカードは作れません。必ず「免許証や保険証(公的証明書)」を提示して、店員さんが名前と住所をメモしますよね。これがKYC(本人確認)の最も身近な例です。
・これがネットの世界(FinTechやオンラインサービス)になると、郵送でやり取りする代わりに、スマホのカメラでマイナンバーカードを読み取ったり、自分の顔を右や左に傾けて撮影したりしてシステム的に本人確認を行います。これを電子的なKYCという意味で「eKYC(electronic KYC)」と呼び、現在のデジタルビジネスに欠かせないインフラ技術となっています。

2. 試験対策の視点: 午前試験のストラテジ系(ビジネス法務やFinTech関連)やセキュリティ分野では、問題文の中に「実在する本人かを確認」「顧客の身元確認」「公的証明書による確認」という記述があれば、迷わずKYC(またはeKYC)を選んでください。
選択肢によく並ぶ「① AML(マネーロンダリング対策)」は、KYCを実施する大きな『目的』の1つです。「資金洗浄を防ぐための枠組みはどれか」と聞かれたらAMLが正解になりますが、「そのために行う本人確認の手続き自体」を聞かれた場合はKYCが正解になります。この関係性を整理して覚えておくことで、引っ掛け問題に惑わされなくなります。


4. まとめ

「架空の人物へのなりすましや犯罪利用を防ぐため、公的証明書などを用いて取引相手の氏名・住所・実在性を厳格に確かめる手続き」。これがKYCです。近年トレンドの「eKYC」という言葉や、目的である「AML(マネーロンダリング防止)」とセットで正しく理解しておきましょう!


PR

【企業経営】デザイナーの思考法でビジネスの革新を起こす!「デザイン思考」|情報処理問題1000本ノック

「スペックは高いのに、なぜか売れない……」そんなビジネスの行き詰まりを打破するために、多くの企業が導入しているのが「デザイン思考」です。単に見栄えを良くするデザインではなく、ユーザーの本質的なニーズから課題を解決する経営メソッドを攻略しましょう。

1. 【 問題 】:企業経営・経営戦略(イノベーション手法)

【 問題 】 製品やシステムの見栄えを整えるといった狭義のデザインにとどまらず、デザイナーが思考・デザインする際に用いるプロセスや手法を、ビジネスにおける問題解決や新規事業開発、企業経営などに活用する考え方を何と呼ぶでしょうか?

① デザイン思考(デザインシンキング)
② リーンスタートアップ
③ クリティカルシンキング(批判的思考)
④ 経営システム工学

2. 正解:

正解: ① デザイン思考(デザインシンキング)

3. 解説:ユーザーへの「共感」からイノベーションを導く

デザイン思考は、従来の「技術的に作れるから作る(技術プッシュ)」や「市場データを分析して作る(データドリブン)」とは異なり、徹底的に「人間(ユーザー)を中心に据えて考える」手法です。ユーザー自身も気づいていないような潜在的な欲求(インサイト)を見つけ出し、アイデアを素早くプロトタイプ(試作品)にして検証を繰り返すことで、イノベーション(革新的な価値)を生み出します。

【デザイン思考の代表的な5つのステップ】 ← ココが試験のポイント!

ステッププロセスの内容ビジネスにおけるアプローチ
1. 共感 (Empathize) ターゲットを観察・インタビューする ユーザーが言葉にできない不満や行動の理由を探る
2. 定義 (Define) ユーザーの本質的な課題を明確にする 「本当に解決すべき問題は何か」を突き止める
3. 概念化 (Ideate) ブレインストーミングなどで枠に囚われずアイデアを出す 実現可能性を一旦無視し、質より量で解決策を出す
4. 試作 (Prototype) 低コストで簡単な試作品を素早く作る 時間をかけず、目に見える形にして検証の準備をする
5. テスト (Test) 試作品をユーザーに使ってもらいフィードバックを得る 失敗から学び、何度も前のステップへ戻ってブラッシュアップする

1. 理解のコツ: 「新しい調理器具の開発」を例に考えてみましょう。
・従来のビジネス思考(ロジカルシンキング)では、「市場データを分析すると、時短調理のニーズが20%伸びている。だから、10秒早くお湯が沸く高機能な電気ケトルを開発しよう」と、過去のデータや技術から引き算・足し算で考えます。
・一方でデザイン思考では、実際にスープを作る人の台所に張り付き、その一挙一動を観察(共感)します。すると、「お湯が沸く速度」ではなく、「ケトルが重くてお湯を注ぐときに手がプルプルして、スープをこぼしそうになっている」という隠れた課題(定義)に気づきます。そこから「驚くほど軽くて注ぎやすいヤカン(試作・テスト)」を形にしていきます。このように、「データに現れない人間の行動や感情」を出発点にしてビジネスを組み立て直すのがデザイン思考の真髄です。

2. 試験対策の視点: 午前試験のマネジメントやストラテジ分野(企業経営)では、問題文の中に「デザインに利用するメソッド(考え方)をビジネスに応用」「人間中心」「プロトタイプとテストの反復」といったフレーズが含まれていれば、迷わずデザイン思考を選択してください。選択肢にある「②リーンスタートアップ」も素早い試作を行う手法ですが、あちらは「実用最小限の製品(MVP)を市場に投入してビジネスモデルの構築を図る起業手法」であり、「デザイナーの思考アプローチの応用」という文脈であればデザイン思考が正解となります。記述式の午後試験(ITストラテジストなど)でも、DX(デジタルトランスフォーメーション)推進や新規サービス立案の鍵となるキーワードとして非常によく使われます。


4. まとめ

「製品の外見だけでなく、デザイナーが用いる問題解決のプロセスをビジネスの戦略や経営に応用し、ユーザー視点の本質的な課題を見つけ出すアプローチ」。これがデザイン思考です。激変する市場環境において、前例のない新しい価値(イノベーション)を生み出すための必須の経営フレームワークとしてしっかりと押さえておきましょう!



【情報セキュリティ】ハッシュ化された値を一瞬で逆引き!「レインボーテーブル攻撃」|情報処理問題1000本ノック

セキュリティのためにパスワードを暗号(ハッシュ化)して保存していても、そのハッシュ値を盗まれると、特殊な「逆引き辞書」を使って一瞬で元のパスワードが暴かれてしまう危険があります。この強力な解読手法「レインボーテーブル攻撃」を攻略しましょう。

1. 【 問題 】:パスワード解読手法(レインボーテーブル攻撃)

【 問題 】 不正アクセスなどによってシステムから流出した、ハッシュ化(復元不可能な一方通行の暗号化)されたパスワードを解読する手法の一つです。想定される平文のパスワードと、それをハッシュ化した値の対応関係を、あらかじめ大量に計算して特殊な構造のリスト(表)にまとめておき、それを用いてハッシュ値から元のパスワードを高速に逆引きして割り出す攻撃手法を何と呼ぶでしょうか?

① ディクショナリ攻撃(辞書攻撃)
② パス・ザ・ハッシュ攻撃(Pass-the-Hash)
③ ブルートフォース攻撃(総当たり攻撃)
④ レインボーテーブル攻撃

2. 正解:

正解: ④ レインボーテーブル攻撃

3. 解説:「事前に計算しておく」ことで本番の解読速度を極限まで高める

レインボーテーブル攻撃は、ハッシュ関数の「同じ文字からは必ず同じハッシュ値が生成される」という特性を突いた攻撃です。ハッシュ化されたデータは理論上は元に戻せませんが、攻撃者はあらかじめ「文字」から「ハッシュ値」を計算した膨大な辞書(これをレインボーテーブルと呼びます)を用意しておくことで、盗んだハッシュ値をその辞書と照合し、一瞬で元のパスワード(平文)を特定します。

【間違いやすいパスワード解読手法の特徴】 ← ココが試験のポイント!

攻撃名アプローチの特徴主な対策
① ディクショナリ攻撃 辞書にある単語(password、admin等)をその場でハッシュ化して試す 複雑なパスワードの設定
② パス・ザ・ハッシュ ハッシュ値を解読せず、ハッシュ値そのものを認証サーバーに送りつけて突破する 認証プロトコルの強化
レインボーテーブル攻撃 あらかじめ膨大な「平文とハッシュ値のペア」を計算・表にしておき、一瞬で逆引きする ソルト(Salt)の追加 / ストレッチング

1. 理解のコツ: 「暗号文と辞書」に例えてみましょう。
・システムに保存されている「ハッシュ値」は、元の文字が分からないようにグチャグチャにされた暗号文です。泥棒がその場で「文字を組み替えてハッシュ化して、目の前の暗号文と同じになるか試す」のが③の総当たりや①の辞書攻撃です。これだと本番の計算に莫大な時間がかかります。
・一方でレインボーテーブル攻撃は、泥棒が家にいる間に、あらかじめ「あらゆる文字」をグチャグチャの暗号文に変換した『本物の文字 ⇔ 暗号文』の巨大な対応表(辞書)を先に作ってパソコンに保存しておきます。そして、いざシステムからハッシュ値を盗んだら、その表を使って「このハッシュ値に対応する元の文字はこれだ!」とページをめくるだけで一瞬で答えを見つけ出します。この『本番前にあらかじめ作っておく巨大な逆引き表』を使うのが、レインボーテーブル攻撃の恐ろしさです。

2. 試験対策の視点: 午前試験の問題文で「あらかじめ計算してまとめた」「ハッシュ値から元のパスワードを逆引き(高速に解読)」という表現があれば、一発でレインボーテーブル攻撃だと見抜いてください。
また、試験ではこの攻撃の**「対策」**がセットで非常によく狙われます。この攻撃を防ぐための最も効果的な技術は「ソルト(Salt:塩)」の追加です。ユーザーが入力したパスワードの後ろに、システム側が自動生成したランダムな文字列(ソルト)をくっつけてからハッシュ化することで、同じパスワードであっても全く異なるハッシュ値になります。これにより、攻撃者があらかじめ用意していたレインボーテーブル(逆引き表)を完全に無効化することができます。


4. まとめ

「平文のパスワードとハッシュ値の対応関係をあらかじめ大量に計算してデータ化(表に)しておき、流出したハッシュ値から元のパスワードを高速に割り出す攻撃」。これがレインボーテーブル攻撃です。対策である「ソルトの付加」というキーワードとセットで、強固に記憶に定着させておきましょう!

【情報セキュリティ】パスワードの使い回しを狙う!「クレデンシャル・スタッフィング」|情報処理問題1000本ノック

「パスワードを使い回さないでください」とどのサービスでも口酸っぱく言われるのは、この攻撃が恐ろしく強力だからです。どこか1箇所から漏洩したログイン情報を使い、別の有名サービスへ「当てずっぽうではなく、本物のリスト」でログインを試みるサイバー攻撃「クレデンシャル・スタッフィング」を攻略しましょう。

1. 【 問題 】:情報セキュリティ(サイバー攻撃手法)

【 問題 】 別のWebサイトや企業から流出したユーザーのID(メールアドレス)とパスワードのリストを入手し、自動化ツールなどを用いて他の無関係なWebサイト(ECサイトやSNSなど)に次々と入力することで、不正ログインを試みる攻撃手法を何と呼ぶでしょうか?

① ブルートフォース攻撃(総当たり攻撃)
② リバースブルートフォース攻撃(逆総当たり攻撃)
③ クレデンシャル・スタッフィング(アカウントリスト攻撃)
④ パスワードスプレー攻撃

2. 正解:

正解: ③ クレデンシャル・スタッフィング(アカウントリスト攻撃)

3. 解説:本物の「漏洩リスト」で攻めるため、防御が難しい

クレデンシャル・スタッフィングは、日本語で「アカウントリスト攻撃」とも呼ばれます。文字通り、すでにどこかで漏れている本物の「アカウントリスト(認証情報)」をシステムに詰め込む(スタッフィングする)攻撃です。攻撃者はユーザーが複数のサイトで同じIDとパスワードを使い回している確率が高いことを知っているため、あらかじめツールを使って数万〜数百万件のリストを高速で自動入力し、不正ログインを成功させます。

【間違いやすいパスワード攻撃の特徴】 ← ココが試験のポイント!

攻撃名アプローチの特徴対策(防御側)
① ブルートフォース攻撃 1つのIDに対し、パスワードを「aaaa」「aaab」と総当たりする アカウントロック(回数制限)
② リバースブルートフォース 「Password123」などの定番パスワードを固定し、IDを総当たりする 同上 / 推測されにくいパスワード
クレデンシャル・スタッフィング 他所で「流出した本物のIDとパスワードのペア」を試す パスワード使い回し防止 / 多要素認証
④ パスワードスプレー 多数のIDに対し、1〜2個の定番パスワードを時間を空けて試す アカウントロックの回避を狙う攻撃

1. 理解のコツ: 空き巣の犯行を想像してください。
・ブルートフォース攻撃は、1つの家の鍵穴に、手当たり次第に作った1万本の合鍵をガチャガチャと試し続ける泥棒です。怪しすぎてすぐに警察(アカウントロック)に通報されます。
・これに対してクレデンシャル・スタッフィングは、「A町で盗んだ本物の鍵の束」を持って、別のB町にある家々の鍵穴に次々と差し込んでいく泥棒です。本物の鍵を使っているため、一発でガチャリと開いてしまいます。防犯カメラ(システム)から見ても、「一発で正しい鍵を開けて入ってきた、ただの住人」に見えるため、不正な攻撃だと見破るのが非常に難しいという凶悪な特徴があります。

2. 試験対策の視点: 午前試験では、「別のWebサイトから流出した〜」「リストを用いて〜」という文言があれば、迷わずクレデンシャル・スタッフィング(またはアカウントリスト攻撃)を選んでください。他の総当たり攻撃(ブルートフォース)との最大の違いは、「すでに流出した実在の組み合わせリストを使っている点」です。
また、対策についてもよく問われます。システム側での「同一IPからの連続ログイン試行の遮断」や「WAFによる機械的アクセスの検知」はもちろんですが、根本的な解決策はユーザー側に「パスワードの使い回しをやめさせること」、およびシステム側で「多要素認証(MFA)を必須にすること」です。仮にパスワードが合致しても、スマホへのワンタイムパスワード通知などで最後の砦を守ることができます。


4. まとめ

「他のサイトから流出した実際のIDとパスワードのリストを使って、別のサイトへのログインを自動で試みる攻撃」。これがクレデンシャル・スタッフィング(アカウントリスト攻撃)です。防御側からは正規のログインに見えやすいため、多要素認証(MFA)の導入やパスワード使い回し防止といった根本対策がセットで狙われる重要キーワードです。

【アルゴリズム】その場その場の最良を選んで突き進む!「貪欲法」|情報処理問題1000本ノック

迷路を解くとき、全体のマップを見ずに「とりあえず今、一番ゴールに近づけそうな道」を毎回選んで進む手法があります。このように、各ステップでその時点で最適なものを選び続けるアルゴリズムの設計手法「貪欲法(グリーディアルゴリズム)」を攻略しましょう。

1. 【 問題 】:アルゴリズムの設計手法(貪欲法)

【 問題 】 最適化問題を解くためのアルゴリズムの設計手法のうち、将来の計画や全体の影響を考慮せず、各ステップにおいて「その時点で最も有利(最良)」と判断される選択を繰り返すことで、最終的な解に到達しようとする手法を何と呼ぶでしょうか?

① 動的計画法(ダイナミック プログラミング)
② 貪欲法(グリーディアルゴリズム)
③ 分割統治法(ディバイド アンド コンカー)
④ 全探索法(ブルートフォースアタック)

2. 正解:

正解: ② 貪欲法(グリーディアルゴリズム)

3. 解説:遠い将来より「いま目の前のトク」を優先する

貪欲法(どんよくほう)は、問題をいくつかのステップに分割し、それぞれの段階で「局所的な最適解」を貪欲(グリーディ)に選び続ける手法です。計算量が非常に少なく、素早くそれなりの解(近似解)を導き出せるのが大きなメリットです。ただし、目先の最良を選び続けた結果、最終的な合計(全体最適)がベストになるとは限らないという弱点もあります。

【よくある4つの設計手法の比較】 ← ココが試験のポイント!

手法名アプローチの特徴代表的な応用例
① 動的計画法 問題を小さな部分問題に分け、計算結果を記録して再利用する ナップサック問題、最長共通部分列
貪欲法 各ステップで「その時点で最良」な選択を繰り返す お釣りの硬貨枚数の最小化、ダイクストラ法
③ 分割統治法 問題を小さく分解してそれぞれを解き、最後に組み合わせる マージソート、クイックソート
④ 全探索法 可能性のあるすべてのパターンを力任せに調べる パスワードの総当たり、暗号解読

1. 理解のコツ: 「レジでお釣りを渡すときの硬貨の選び方」を想像してください。
480円のお釣りを渡すとき、私たちは無意識に「その時点で使える一番大きな硬貨」を貪欲に選びます。
・まず、480円以下で最大の「500円」は使えないので、次に大きい「100円」を4枚選びます(残り80円)。
・残り80円から、最大の「500円」「100円」は無理なので「50円」を1枚選びます(残り30円)。
・残り30円から、「10円」を3枚選びます(残り0円)。
これで合計8枚という「最も枚数が少ない正しい組み合わせ」に一発でたどり着けます。このように、日本の硬貨(500, 100, 50, 10, 5, 1)のような絶妙なバランスのシステムでは、貪欲法で常に100点満点の正解(最適解)が出せます。
しかし、もし「1円、4円、6円」という特殊な硬貨しかない国で「8円」のお釣りを作る場合、貪欲法だと「まず最大の6円を1枚、残りは1円を2枚」で合計3枚になりますが、本当の正解は「4円を2枚」の合計2枚です。このように、条件によっては100点満点にならないこともあるのが貪欲法の特徴です。

2. 試験対策の視点: 午前試験では、「その時点で最良のものを〜」というフレーズが出たら確実に貪欲法(または決定論的アプローチ、ヒューリスティック)を選びましょう。また、ネットワークの最短経路を求める「ダイクストラ法」や、最小全域木を求める「プリム法」「クラスカル法」のベースになっている思想もこの貪欲法です。午後試験では、アルゴリズムの穴埋め問題として「今一番コストが小さい要素をソートして取り出す処理」などを選ばせる形でよく登場します。


4. まとめ

「将来への影響は一切考えず、各ステップにおいてその時点で最も有利な選択を積み重ねて解を導く手法」。これが貪欲法です。完ペキな正解(最適解)にならないこともあるけれど、とにかく早くてシンプルな答えが出せる実用的なアルゴリズムとして覚えておきましょう!


【システム開発技術】複雑な条件の組み合わせを網羅する!「ディシジョンテーブル・テスト」|情報処理問題1000本ノック

「条件AがYesで、条件BがNoで、条件CがYesのときの処理は……?」と、条件が複雑に絡み合うシステムのテストを頭の中だけで考えると、必ず考慮漏れ(バグ)が発生します。論理的な組み合わせを1枚の表に叩き込んで整理する「ディシジョンテーブル・テスト」を攻略しましょう。

1. 【 問題 】:テストデザイン技法(ディシジョンテーブル・テスト)

【 問題 】 ソフトウェアテストにおいて、システムに与えられる複数の「テスト条件(入力や状態)」と、それらの組み合わせによって引き起こされる「動作(出力や結果)」の関係を2次元の表形式(マトリクス)で整理し、テストケースを設計する技法を何と呼ぶでしょうか?

① ディシジョンテーブル・テスト(決定表テスト)
② 同値分割法(イクイバレンス パーティショニング)
③ 境界値分析(バウンダリー バリュー アナリシス)
④ 状態遷移テスト(ステート トランジション テスト)

2. 正解:

正解: ① ディシジョンテーブル・テスト(決定表テスト)

3. 解説:論理の迷子を防ぐ「条件と結果のクロス表」

システムの仕様が「◯◯かつ××、または△△のときはエラー、ただし――」のように複雑な場合、テストケースの抜け漏れが起きやすくなります。ディシジョンテーブル・テストは、これらを「条件」と「動作」に分解し、すべての組み合わせ(Y: Yes / N: No)を列ごとに網羅する設計手法です。1つの列(ルール)がそのまま1つのテストケースになります。


【ディシジョンテーブルの基本構成例】 ← ココが試験のポイント!

要素(構成パーツ)ルール1ルール2ルール3ルール4
条件部 条件1:会員であるか? Y Y N N
条件2:クーポンがあるか? Y N Y N
動作部 動作1:20%割引を適用 X
動作2:通常料金で計算 X X X

※ 表の「Y/N」の組み合わせの列(ルール1〜4)が, そのまま漏れのないテストケースになります。
※ ②、③、④は組み合わせではなく、単一のデータ範囲やシステムの「状態の変化」に着目する技法です。

1. 理解のコツ: 「遊園地の割引サービス」を想像してください。
・「WEB会員」かつ「雨の日クーポン持参」なら【半額】
・「WEB会員」だけど「クーポンなし」なら【10%オフ】
・「非会員」だけど「クーポンあり」なら【5%オフ】
・「どちらもなし」なら【通常料金】
このようなルールを、条件(会員か?クーポンか?)と動作(半額か?10%か?)に分けて格子状に並べたのがディシジョンテーブル(決定表)です。これを作れば、「あ、非会員でクーポンがあるパターンのテストを忘れてた!」というミスが100%防げます。複雑な条件を『見える化』して、機械的にテストケースを弾き出すのが最大のメリットです。
2. 試験対策の視点: 午前試験では、「組み合わせテストに用いる表はどれか」という直球問題でよく出ます。選択肢の中に「ディシジョンテーブル」または「決定表」があれば即答できます。 また、午後試験(アルゴリズムやソフトウェア開発分野)では、実際に仕様書からこの表を完成させたり、表の「不可能な組み合わせ(例:12歳未満かつ車の免許保有など)」を省いてテストケースを削減(圧縮)させる実践的な問題が出題されます。「条件部」「動作部」「ルール」という用語と、表の読み方を確実にマスターしておきましょう。


4. まとめ

「複数の条件とそれに応じた動作の関係をマトリクス(表)形式で整理し、条件の組み合わせに抜け漏れがないようにテストケースを設計する技法」。これがディシジョンテーブル・テストです。ロジックが複雑なビジネスロジックの検証に欠かせない必須テクニックとして、しっかり覚えておきましょう!


【開発技術】両方の視点からバグを狙い撃つ!「グレーボックステスト」|情報処理問題1000本ノック

ソフトウェアテストには、中身を見ない「黒」と、中身をすべて見る「白」があります。しかし、実際の現場では、その両方の知識を賢く組み合わせた「グレー(灰色)」なテスト手法が極めて有効です。今回は「グレーボックステスト」の概念を攻略しましょう。

1. 【 問題 】:ソフトウェアテスト手法(グレーボックステスト)

【 問題 】 ソフトウェアのテスト手法のうち、「グレーボックステスト(Gray-box Testing)」の説明として、最も適切なものはどれでしょうか?

① プログラムの内部構造やソースコードの論理的な記述には一切関知せず、システムの「入力」と「出力」だけに着目して、仕様書通りの機能が動作するかを検証する。
② プログラムの内部構造(ソースコードの制御構造やルート)が正しく作られているかに着目し、すべての命令や分岐が少なくとも1回は実行されるようにテストケースを作成して検証する。
③ 基本的には外部仕様に基づいて機能の検証(ブラックボックステスト)を行いながらも、プログラムの内部構造やデータベース設計などの知識も参考にし、よりバグが混入しやすい箇所を狙って効率的にテストケースを作成して検証する。
④ 開発者以外の第三者(ユーザーや専門のテスター)が、あらかじめ作成されたテスト仕様書を使わずに、自身の経験や直感に基づいてシステムを自由に操作し、予期せぬ不具合を発見する。

2. 正解:

正解: ③ 基本的には外部仕様に基づいて機能の検証(ブラックボックステスト)を行いながらも、プログラムの内部構造やデータベース設計などの知識も参考にし、よりバグが混入しやすい箇所を狙って効率的にテストケースを作成して検証する。

3. 解説:「外側の機能」を「内側の知識」で攻める

ソフトウェアテストの基本は、プログラムの中身を見ないブラックボックステスト(選択肢①)と、ソースコードの網羅性を重視するホワイトボックステスト(選択肢②)に分かれます。しかし、これらを完全に切り離すのではなく、ユーザー視点での機能テストをしつつも「このシステムは裏側でこういうデータベース連携をしているから、ここでこんな値を入力したらエラーが起きやすいはずだ」と内部構造の知識を味方につけてテストを行うのがグレーボックステストです。

【ブラック・ホワイト・グレーの3大テスト比較】 ← ココが試験のポイント!

テスト手法中身(ソースコードなど)の知識テストケースを作る基準主な実施フェーズ
ブラックボックス 全く見ない(不要) 外部仕様書、要求定義書 システムテスト、受入テスト
ホワイトボックス 完全にオープン(必須) ソースコードの論理構造(分岐等) 単体テスト(ユニットテスト)
グレーボックス 限定的に参考にする 外部仕様 + 内部構造への理解 結合テスト、システムテスト

※ ④は「アドホックテスト(探索的テスト)」の説明です。

1. 理解のコツ: 「家電の修理・点検」に例えてみましょう。
・①のブラックボックスは、「説明書を読みながら、ボタンを順番に押して画面が正しく動くかだけをチェックする」一般ユーザーのようなテストです。
・②のホワイトボックスは、「製品のフタを開けて、基盤の回路図を見ながら電流が隅々まで流れているかをチェックする」設計者のようなテストです。
・これらに対して③のグレーボックスは、フタを閉じた状態でボタン操作(ブラックボックス)をするのですが、テストする人は回路の構造を知っているため、「この製品は、ボタンAとボタンBをほぼ同時に連打すると、内部の処理チップに負荷がかかってフリーズしやすい仕様だったな。よし、そこを重点的にいじってみよう」と、内部知識(ホワイトボックス)を活かして意地悪なテストを行います。これがグレーボックスの賢いアプローチです。
2. 試験対策の視点: 試験問題で「グレーボックステスト」が出題される場合、問題文には必ず「仕様(ブラックボックス)」と「内部構造・コード設計(ホワイトボックス)」のハイブリッド(混合)であることを示す表現が登場します。「中身を知っているテスターが、外側から効率的に攻める手法」というニュアンスを掴んでおけば、選択肢を瞬時に見分けることができます。特に結合テストの段階でWebアプリケーションのセキュリティ脆弱性(SQLインジェクションなど)をテストする手法としても非常によく引き合いに出されます。


4. まとめ

「ブラックボックステストのようにシステムの機能や仕様をベースにテストを行いながらも、ホワイトボックステストのようにプログラムの内部構造やデータの流れに関する知識を参考にすることで、より効率的かつ的確にテストケースを設計する手法」。これがグレーボックステストです。テストのコストを抑えつつ、品質をグッと引き上げる実践的なアプローチとしてしっかり覚えておきましょう!


【情報セキュリティ】「いつもと違う」を機械学習で見抜く!「UEBA」|情報処理問題1000本ノック

巧妙化するサイバー攻撃や内部不正は、正規のIDとパスワードを使って「一見正常なアクセス」として行われるため、従来のセキュリティ製品では見破れません。ユーザーや機器の日常的な行動を学習し、その異常性から脅威を検知する「UEBA」の仕組みを攻略しましょう。

1. 【 問題 】:セキュリティ監視技術(UEBA)

【 問題 】 組織のネットワーク内におけるセキュリティ対策技術のうち、「UEBA(User and Entity Behavior Analytics)」の説明として、最も適切なものはどれでしょうか?

① あらかじめ定義された「攻撃のパターン(シグネチャ)」のデータベースと、実際の通信内容を照合することによって、既知のサイバー攻撃を検知・遮断する。
② ユーザー(User)やサーバー・端末などの機器(Entity)の日常的な行動パターンを収集・分析して正常な状態の基準を構築し、機械学習などを利用してそこから逸脱した異常な行動を検出する。
③ 従業員が利用しているPCなどの端末(エンドポイント)のログをリアルタイムに監視し、マルウェアの感染を検知した際に遠隔から端末をネットワークから隔離する。
④ 外部からのサイバー攻撃の標的となる未修正の脆弱性をあらかじめ洗い出すために、既知の攻撃手法を模倣した疑似攻撃をシステムに対して実際に仕掛ける。

2. 正解:

正解: ② ユーザー(User)やサーバー・端末などの機器(Entity)の日常的な行動パターンを収集・ basin分析して正常な状態の基準を構築し、機械学習などを利用してそこから逸脱した異常な行動を検出する。

3. 解説:「犯人の型」ではなく「普段の姿」を覚える

これまでの多くのセキュリティ対策は、「ウイルスや攻撃のルール(シグネチャ)」を登録しておき、それに一致するものを悪とみなす方法(ルールベース)でした。しかし、この方法では「盗まれた本人のアカウント」を使った内部不正や、未知の攻撃には対応できません。そこで登場したのがUEBAです。攻撃の型を覚えるのではなく、ユーザーやPCが「普段どんな動きをしているか」を機械学習で学習(ベースライン化)し、そこから外れた「いつもと違う怪しい動き」を検知します。

【従来型セキュリティとUEBAの決定的な違い】 ← ココが試験のポイント!

対策のアプローチ検知の仕組み監視の対象得意なこと/防げる脅威
従来型(IDS/IPS等) 「悪意ある通信」のパターン一致(シグネチャ) ネットワーク通信全体 既知のマルウェアや、定番のサイバー攻撃の遮断。
UEBA 「普段の行動」からの逸脱(プロファイル・機械学習) ユーザー(User)および機器(Entity:サーバー・端末) 正規IDを悪用した内部不正、アカウント乗っ取り、未知の攻撃の検知。

※ ③は EDR(Endpoint Detection and Response)の説明です。
※ ④は ペネトレーションテスト(侵入実験)の説明です。

1. 理解のコツ: 「オフィスの警備員さん」に例えてみましょう。
・①の従来型は、「不審者のブラックリスト(手配書)」を持って立っている警備員です。手配書に載っていない人や、社員証(正規ID)を持った人はそのまま通してしまいます。
・これに対して②のUEBAは、社員全員の顔と普段の行動を完璧に覚えている、超ベテランの警備員です。たとえ本物の社員証を持った人が入ってきても、「普段は経理部で定時に帰るはずのAさんが、なぜか深夜2時に、一度も入ったことがない開発部のサーバー室にアクセスして、大量のデータをダウンロードしている。これは絶対に何かがおかしい!」と、その『行動の不自然さ』から異変を察知します。これがUEBAの機械学習による行動分析です。
2. 試験対策の視点: 安全確保支援士などの午前試験で「UEBA」を問う問題が出たら、アルファベットの意味をそのままヒントにしてください。UはUser(人)、EはEntity(機器やファイルなどのモノ)、BはBehavior(行動)、AはAnalytics(分析)です。問題文の中に「行動パターン」「プロファイリング」「機械学習」「普段と異なる」「異常な行動」といったフレーズがあれば、一発でUEBAを特定できます。また、SIEMと連携して動作するソリューションとしてもよく長文問題の事例に出てくるため、その役割を正確に押さえておきましょう。


4. まとめ

「既知の攻撃パターンに頼るのではなく、ユーザーや機器の日常的な行動を機械学習で学習し、そこから逸脱した『いつもと違う不自然な動き』から脅威や内部不正をあぶり出す技術」。これがUEBAです。ゼロトラスト環境における「継続的な監視」の要となるトレンド技術ですので、他のログ監視技術と区別して覚えておきましょう!


【情報セキュリティ】状況に応じて権限をリアルタイムに変える!「動的アクセス制御」|情報処理問題1000本ノック

「一度認証をパスすれば、どこからでも全てのデータにアクセスできる」という時代は終わりました。アクセス環境やデバイスの状態をリアルタイムに監視し、状況に応じて権限を変化させる「動的アクセス制御(動的認可)」の仕組みを攻略しましょう。

1. 【 問題 】:アクセス制御技術(動的アクセス制御)

【 問題 】 情報システムにおけるアクセス制御(認可)の仕組みのうち、「動的アクセス制御(Dynamic Access Control)」の説明として、最も適切なものはどれでしょうか?

① 社員や管理者といった組織内の「役割(ロール)」に基づいて権限を割り当て、ユーザーがどの役割に属しているかによってアクセス可否を決定する。
② データの所有者が、自身の判断で他のユーザーに対してそのデータへの読み書き権限を任意に付与したり剥奪したりする。
③ アクセスを要求してきたユーザーの場所(IPアドレス)、日時、使用デバイスのOSバージョンやセキュリティ状態などの「コンテキスト(状況情報)」をリアルタイムに評価し、アクセスの可否や権限の強さをその都度変化させる。
④ ユーザー名やパスワードの認証に加えて、指紋や顔認証などの生体情報を組み合わせることで、強固な本人確認を行う。

2. 正解:

正解: ③ アクセスを要求してきたユーザーの場所(IPアドレス)、日時、使用デバイスのOSバージョンやセキュリティ状態などの「コンテキスト(状況情報)」をリアルタイムに評価し、アクセスの可否や権限の強さをその都度変化させる。

3. 解説:「いつ、どこから、どんな状態で」を見極める

従来のアクセス制御の多くは、あらかじめ設定されたユーザー情報や役職に基づいて権限が決まる「静的」なものでした。しかし、リモートワークやクラウド利用が当たり前になった現代では、それだけではセキュリティを守りきれません。そこで登場したのが動的アクセス制御です。アクセスを試みた『その瞬間』の周囲の状況(コンテキスト)を総合的に判断して、権限をコントロールします。

【静的アクセス制御と動的アクセス制御の比較】 ← ココが試験のポイント!

制御のタイプ主な判断基準メリット弱点・リスク
ロールベース(静的) ユーザーの「役職」や「所属」 初期設定や管理がシンプル アカウントが乗っ取られたり、社外の危険な端末からアクセスされたりしても防げない。
動的アクセス制御 場所、時間、端末の状態、接続経路など(リアルタイム) 「社外からのアクセス時は重要データの閲覧を禁止する」「OSが古い端末は拒否する」といった柔軟な防御が可能。 評価システムが複雑になり、設計・運用の負荷が高まる。

※ ②は「任意アクセス制御(DAC: Discretionary Access Control)」の説明です(同じDACという略称ですが、動的アクセス制御とは全く別物なので混同に注意してください)。
※ ④は「多要素認証(MFA)」の説明であり、アクセス制御(認可)ではなく、本人確認(認証)の技術です。

1. 理解のコツ: 「オフィスのセキュリティゲート」に例えてみましょう。
・①の静的アクセス制御(ロールベース)は、「ゴールドカードの社員証を持っていれば、夜中だろうが、どれだけ怪しい格好をしていようが、いつでも重要書類室に入れる」というルールです。
・これに対して③の動的アクセス制御は、たとえゴールドカードを持っていても、「夜中の2時に、なぜか海外のIPアドレスから、しかもウイルス対策ソフトがOFFになっているパソコンでアクセスしてきたから、今は怪しいと判断して閲覧をブロックする(あるいは追加の認証を求める)」という、臨機応変なガードマンのような動きをします。この『状況を見てその都度判断を変える』のが、動的(ダイナミック)たる所以です。
2. 試験対策の視点: 近年の情報処理安全確保支援士などの試験では、「ゼロトラスト(何も信頼しない)」というセキュリティ思想がトレンドとなっています。このゼロトラストを実現するための具体的な技術として、この動的アクセス制御や「ABAC(属性ベースアクセス制御)」が非常によく狙われます。問題文の中に「コンテキスト」「リアルタイムに評価」「デバイスのセキュリティ状態」「場所や時間に応じて」といったフレーズがあれば、動的アクセス制御のサインです。他のアクセス方式との言葉の定義の違いをクリアにしておきましょう。


4. まとめ

「ユーザーの役職などの固定情報だけでなく、アクセス環境(場所・時間・端末の安全性など)のコンテキストをリアルタイムに評価し、アクセスの可否や認可レベルを動的に変更するセキュリティ技術」。これが動的アクセス制御です。現代の境界防御に頼らない最先端のセキュリティを支える重要キーワードとして、しっかり記憶に刻んでおきましょう!


【アルゴリズム】現実的な時間で合格点を見つけ出す!「ヒューリスティック」|情報処理問題1000本ノック

すべてのパターンを計算すると宇宙が滅びるほどの時間がかかってしまう難問に対し、経験則や直感的なアプローチを用いて「そこそこ正しく、実用的な答え」を瞬時に導き出す「ヒューリスティック(近似アルゴリズム)」を攻略しましょう。

1. 【 問題 】:難関問題へのアプローチ(ヒューリスティック)

【 問題 】 コンピュータで解くアルゴリズムにおいて、巡回セールスマン問題に代表される「NP困難問題」など、問題の規模が大きくなると現実的な時間内に厳密解(理論上100%正しい最適な答え)を求めることが実質的に不可能になるものがあります。このような問題に対し、計算時間を大幅に短縮する代わりに、必ずしも最適とは限らないものの、実用的に十分な精度を持つ「近似解」を経験則や直感的なルールに基づいて導き出す手法を何と呼ぶでしょうか?

① 動的計画法(ダイナミック プログラミング)
② 力まかせ探索(ブルートフォース探索)
③ 分枝限定法(ブランチ アンド バウンド)
④ ヒューリスティック(近似アルゴリズム)

2. 正解:

正解: ④ ヒューリスティック(近似アルゴリズム)

3. 解説:完璧さを捨てて「スピード」を取る知恵

アルゴリズムの世界には、データの数が少し増えただけで計算量が爆発的に増えてしまい(指数関数的・階乗的な増加)、最新のコンピュータを何年動かしても解けない問題(NP困難問題など)が存在します。そこで登場するのがヒューリスティックです。これは完璧な正解を保証しない代わりに、「現実的な時間内で、十分実用的な答えを見つける」というトレードオフの思想に基づいています。

【厳密解を求める手法とヒューリスティックの比較】 ← ココが試験のポイント!

手法・アプローチ得られる答え計算時間(問題が大規模なとき)特徴
力まかせ探索 100%正しい厳密解 膨大(計算量爆発でフリーズ) すべての組み合わせを泥臭く全探索する。
動的計画法 100%正しい厳密解 問題によっては高速(制限あり) 問題を小さな部分問題に分割し、結果を再利用する。
ヒューリスティック 実用的な近似解 圧倒的に短い(一瞬〜数秒) 「近いところから順に選ぶ」などの経験則で解く。

※ ③ 分枝限定法は、全探索の途中で「これ以上探しても無駄」と分かったルートを途中で切り落とす(枝刈り)ことで、厳密解を求める時間を短縮する手法です。

1. 理解のコツ: 「旅行の荷造り(ナップサック問題)」に例えてみましょう。
・カバンに荷物を詰めるとき、持っていくものの組み合わせは数千、数万通りあります。重さや価値をすべて計算して「最も価値が高くなる組み合わせ(厳密解)」を計算しようとすると、出発の時間を過ぎてしまいます(これが②の全探索)。
・そこで私たちは無意識に「とりあえず、絶対に使う大事なもの(スマホや財布)を先に詰め、空いたスペースに小さくて軽いものを適当に詰め込もう」というルールで荷造りをしますよね。これがヒューリスティック(選択肢④)です。この方法なら、1秒で「そこそこ大満足な荷造り(近似解)」が完成します。完璧ではないけれど、実生活でもコンピュータの世界でも、この『割り切り』がめちゃくちゃ重要なのです。
2. 試験対策の視点: 午前試験の問題文に「NP困難問題」「厳密解を求めるのが困難」「近似解」「経験則」というキーワードが並んでいたら、迷わずヒューリスティックを選んでください。 また、午後試験や高度試験のアルゴリズム問題では、具体的に「巡回セールスマン問題に対し、一番近い都市を順番に選んでいくヒューリスティック手法(貪欲法の一種)を採用する」といった形で、長文問題のロジックとして組み込まれることがよくあります。「完璧な答えを諦めて、現実的なスピードを手に入れるための技術なんだ」という目的を理解しておくことが、応用問題を解く鍵になります。


4. まとめ

「計算量が爆発するような難問に対し、100%の最適解を求めることを諦め、経験則や簡単なルールを用いて、実用的な時間内に合格点となる近似解を導き出す手法」。これがヒューリスティックです。現代のAI(人工知能)の探索技術や、経路ナビゲーションシステムの裏側でも大活躍している超重要概念としてインプットしておきましょう!