こんにちはちゅーりーです。
2024年春の情報処理安全確保支援士試験に午後試験85点(上位3%)で合格しました。2023年秋試験であえなく不合格となり、春の試験も自信が全く持てない出来でしたがまさかの高得点での合格にびっくりです。

正直、まだ実感わかないです・・
ちゅーりーは市販のテキストや問題集・IPAの過去問にももちろん取り組みましたが、それ以外に暗記事項をまとめたノートを作成し何度も何度も書いて覚えました。
この記事ではちゅーりーが情報処理安全確保支援士試験に合格した際に作成したまとめノートについて紹介します。テキストや問題集、IPA資料などから得た情報が多いためほとんどの人が「もう知ってるよ!」と思われるかもしれませんが、今後受験される方に少しでも助けになればと思い記事を書きました。
【注意】
この内容は午後試験対策ですがもちろんテスト内容、暗記事項を全て網羅しているわけではありません。あくまでちゅーりーが学習を進めてきたなかで「暗記した方が良いな」、「これは出そうだな」と思ったポイントを書き連ねているだけなのでその点ご容赦ください。
詳細な学習ログやテキスト等の教材については下2つの記事を見ていただけると嬉しいです。


まとめノート
ここからはまとめノートの内容を紹介します。ひたすら文章や単語を書き殴って記憶しましょう。
カテゴリごとに整理されておらずバラバラなのはご容赦ください。
相手はさすがの高度情報処理試験、受験生の細かな記憶の隙をついてきます。あれ?どうだったかな・・と思ったら相手の思うツボ。キーワードは知らない人に説明できるレベルを目指し、あいまいな状態にしないようにしましょう。

ちゅーりーは書いて覚えるタイプ・・

へー・・(興味なし)
暗号方式
共通鍵暗号方式はAESやCamellia、K-Chiher-2、公開鍵暗号方式はRSAやECC、DSA。とりあえず名前は覚えておこう。ブロック暗号方式(ECB、CBC、CTR)あたりの名前と特徴も押さえよう。DES、RC4は危殆化だ。
CRYPTREC
“CRYPTREC(クリプトレック)”は支援士受験生としてもちろん書けないとダメ。ちなみに結構改廃があって、XTSやChaCha20-Poly1305(認証付き暗号モード)などが追加されています。出題頻度は低いと思いますが午前Ⅱで役に立つかも。

ChaCha20-Poly・・かわいい名前のすごい奴・・

何なんだ・・・
デジタル署名
メッセージをハッシュ化(MD=メッセージダイジェスト)して送信者の秘密鍵で暗号化したもの。受信者が送信者の公開鍵で複合し自らハッシュ化したメッセージと比較することでメッセージの完全性(改ざんがない)、真正性(なりすましがない)を保証する。
また、回答として”秘密鍵“というキーワードが問われることは多いので、丁寧に覚えていきましょう。
(例えば「デジタル署名に対する”秘密鍵“が漏洩しないことが重要である」、「”秘密鍵“が漏洩しても悪用されないよう複雑なパスフレーズを設定する」)

公開鍵、鍵ペア、などとも誤回答しやすいです
デジタル証明書
最初はデジタル署名と混同して訳が分かりませんでした。PKI(公開鍵)暗号基盤を象徴するすごい奴。
簡単に言うと「デジタル証明書は公開鍵の正当性を証明するもの」です。鍵ペアとCSRで認証局に申請することで発行されます。デジタル証明書には公開鍵の情報と認証局のデジタル署名が。
デジタル署名を公開鍵で検証=対応する秘密鍵で署名されていることがわかり、改ざんもなさそう。さらに公開鍵を認証局のデジタル証明書で検証することで、正当なもの(なりすましがない)ことも確認できる。
このようにデジタル署名とデジタル証明書は切っても切れない仲と言えるでしょう。
ちなみに認証局のデジタル署名はさらに上位の認証局のデジタル証明書(公開鍵)で検証しますが、ルート認証局までずらーッとデジタル署名⇔デジタル証明書の列が並ぶことになります。これを「証明書チェーン」と言い、この検証を「証明書パスの検証」と言います。

最初は理解できずかなり混乱しました

図に書き出してイメージをつかむしかないね
アクセス制御
とりあえずDAC(任意)、MAC(強制)、RBAC(ロールベース)の3つの言葉と意味を押さえておこう。MACはメッセージ認証コードと混同しないように。これも午前Ⅱ向きの内容かも。
AAAフレームワーク
Authrization(認証)、Autentication(認可)、Accounting(アカウンティング)の3つ。本人であることを認証し、必要な権限を認可し、記録する。認証フローなどでも役立つ基本的な考え方なので頭に入れておこう。

「認証」と「認可」は違います!
認証技術
ここからは各種認証技術(フロー)です。フロー図は空で書けるようになろう。そのためには登場人物(クライアントや認証サーバなど)や処理内容、やりとりするパラメータ(公開鍵証明書、アサーション情報、シークレットなど)とタイミング(事前、処理中)などを覚える必要がある。
また、各認証フローの特徴も「文章で」説明できるように。この記事では主に文章の方を記載します。
FIDO
「認証情報に含まれるデジタル署名とオリジンの一致をFIDOサーバが行う仕組み」。UAF、U2F、FIDO2 /Webauthnなどの種類がありCTAPは要素技術。

CTAP、TKIP、ISAKMP・・・

Webauthnとかキーワードは覚えておこう
SAML
「アサーション情報を他ドメインに転送する仕組み」。SPがアサーションを検証し、なりすましや改ざんがないことを確認する。SSO(シングルサインオン)に使用されることが多い。事前にSPとIdpでやり取りしておく情報(リダイレクト用URLや公開鍵)もチェック。
OAuth 2.0
「リソースを権限委譲する仕組み」。認証は行わず認可のみ行う。CSRFを防ぐstateパラメタは押さえておこう。
OIDC
「簡単に言うとOAuthに認証機能を付けたもの」。認可コードフロー、インプリシットフロー、ハイブリッドフローがある。IDトークン、アクセストークン、リフレッシュトークンは誰が誰に発行するのか調べておこう。
何故リソースを直接渡さずトークンを介すのか?それは認証と認可の処理を分けるため。トークンが流出するとリプレイ攻撃を受けてしまう。そのためトークンには認可する権限と有効期限を設定する
stateパラメタ、nonce、PKCE(ピクシー)もチェック。トークンはJSON WEB形式。
Kerberos認証
「WindowsのAD(アクティブディレクトリ)でも使われる認証・認可の仕組み」、チケットを発行するのが特徴。出題される可能性は低いと判断し、レルム、プリンシパル、KDC、AS、TGS、TGT、STなど構成・役割と単語だけ書いて覚えました。ゴールデンチケット、シルバーチケット、名前だけ聞くとなんだか夢があります。

合格へのゴールデンチケットが欲しい!!

この場合攻撃の名前なんだけどね・・
デジタル証明書(X.509証明書)
.509なのでテンゴク(0をO)と覚えました。発行者、Subject (CNなど)、SAN、シリアル番号、CAのデジタル署名、公開鍵、暗号アルゴリズム…など項目と何がセットされるかを押さえよう。CNにはFQDNやipアドレス、メールアドレス(S/MIME証明書)が入ることがある。
模試とか過去問ではやけに”サブジェクト(subject)“について問われる気がしました。

合格して天国へ!

えっ・・・どこ行くの・・・
デジタル証明書のエラー
httpsによるWEBサーバへのアクセスでは下記のケースでブラウザに警告が表示される。
2023年秋試験で悔しい想いをしたので暗記です。ちなみにHSTSはブラウザにhttpsによる接続を強制するものです(これも秋試験で答えられませんでした)。httpによるアクセスはTLSが有効になっていないのでそもそもサーバー証明書の検証が行われません。
・失効している。
・有効期限が切れている。
・信頼する認証局(CA)が発行したものではない。
・証明書のサーバ名がアクセス先と異なる。
ドメインフロンティング攻撃への対処
ドメインフロンティング攻撃は本来様々な通信層で異なるドメイン名を使用してインターネット上の検問をかいくぐる攻撃です。
IPAの過去問だとCDN(コンテンツデリバリーネットワーク=WEBサイト負荷軽減の仕組み)が悪用され利用者を不正なサイトへ誘導していました。その対策は「TLSの接続先サーバ名とhostの値を比較する」。
攻撃手法とその対策(主にWEB)
XSSに対してhttpレスポンスヘッダのX-Frame-Optionsを指定、CSRFに対してセキュリティトークンを使用する、SQLインジェクションにはサニタイジングとバインド機構。など、攻撃に対する対応先は対比して覚えておこう。
テキストやIPAのドキュメントを読んでおくのが手っ取り早いです。
「安全なウェブサイトの作り方」
「セキュアプログラミング講座」
TLS1.2と1.3
24年の春季試験では出ませんでしたが、次は怪しいと考えています。
TLS1.3ではハンドシェイクが簡素化、高速化(0-RTT)され「前方秘匿性」のある鍵交換アルゴリズムのみ使用されます。ネットで変更点を調べておこう。
IPv6
午前Ⅱ対策(過去問)のみでほとんど勉強しませんでした。今後は主流になっていきますし、IPv4とv6を相互に接続させるサービスもあります。でも細かく出るとしたらネスペかなあ・・・
httpリクエストヘッダ/レスポンスヘッダ
代表的なパラメータとセットされる可能性のある値、効果は暗記です。こちらにはパラメータ名と概要のみ記載しています。
Httpリクエストヘッダ
・Referer 接続元のURL、Getメソッドだとキー値など情報漏洩につながる。
・Host 接続先のホスト名。
・Cookie Cookie値、セッションIDなどがセットされる。
・UserAgent 利用するブラウザやバージョンなど。
・X-Forwarded-For プロキシNAT前のIPアドレス。
・Authorization APIキーなど。
Httpレスポンスヘッダ
・XSTS ブラウザに次回からhttpsによる接続を強制する。URLを書き換えるのはブラウザ!
・X-Frame-Options 読み込むコンテンツを制限するセキュリティ機能。
・Content-Security-Policy 読み込むコンテンツを制限するセキュリティ機能。こっちがメジャー。
・Location リダイレクト先を指定。
・Set Cookie Cookieに値をセットして送り返す。Cookieの属性も覚えておこう。
・www-Autentication 認証が必要。
・Cache-Control キャッシュ有効期限などについて指定。

2024年春試験ではCache-Contorlが出題されました
Same Originポリシー
「異なるオリジン(のオブジェクト)にリソースを送信しないブラウザのセキュリティ機能」もともとブラウザに機能として備わっているものです。

お弁当屋さんみたいだけど、なんかかっこいい名前・・・

なんかおなかすいたな・・
DNS Over TLS
「スタブリゾルバとフルサービスリゾルバの通信を暗号化する」。スタブリゾルバはクライアントPCです。
DNSSEC
「権威DNSがレコードにデジタル署名を行い、問合せ元がデジタル署名を検証することでレコードの真正性と完全性を担保する」。本気で理解しようとすると結構複雑な仕組みなので大変。

DNSキャッシュポイズニング対策として有効です
Cookieの属性
ユーザーのセッションIDなどを保存するCookie。属性とパラメタがあるので代表的なものを暗記しておこう。余裕があれば記述方法も調べておくと役に立つかも。
Expires = XX
Max-age = XX
Http only
Secure
Domain = ~.jp
Path = /~
Samesite

2024年春試験ではSamesite属性が出題されました!
メール送信のフロー
EHELLO → MAILFROM → RCPTTO → DATA → QUIT
【START TLS の場合】
EHELLO → (START TLS → AUTH LOGIN → ID/PASS ※ここからTLSで暗号化) → MAILFROM → RCPTTO → DATA → QUIT ※START TLSでもポート番号は変わらない。
DHCPのフロー
DHCP DISCOVER → DHCP OFFIER → DHCP REQUEST → DHCP ACK
DISCOVERは宛先不明なのでブロードキャスト通信です。
S/MIME
「ハイブリッド暗号とデジタル署名でメールの機密性、完全性と真正性を守る仕組み」だ。鍵の管理が分かりづらいので各登場人物に必要な鍵の種類とフローを理解しておこう。SMTPSはサーバ上では平文だが、S/MIMEはEndToEndで暗号化だ。よって鍵をセットする場所が異なる(SMTPSはサーバ、S/MIMEはクライアント)。

マイムマイム・・・

しょうもないな・・
ディレクトリトラバーサル
PHPのプログラムなどで入力値にたいしてBaseName()関数でファイル名だけを取得します。
それはなぜか?「../などが入力され意図しないパスが生成されるため」。
SQLインジェクション
WEBサイトで特殊文字をテキストボックスに入力したらSQLエラーが表示された、ということは、特殊文字を含んだSQLが生成されているのでサニタイジング(エスケープ処理)していない。「SQLインジェクションの脆弱性あり」となるらしい。
TLSって一言でいうと?
こちらはネスペの問題から。TLSってどういうもの?という質問「暗号化とメッセージ認証の仕組み」。改めて聞かれるとなかなかスッと出てこないですね。
SSL-VPNの種類
こちらもネスペから。リバースプロキシ、ポートフォワーディング、L2フォワーディング。こちらも聞かれるとスッと出てこないです。

ネスペにもセキュリティ関連でいい問題がありました

基本や応用にも基礎理解のためにいい問題があるね
ipアドレス
ネットワーク部をプレフィックス、ホスト部をサフィックスという。
一対一をユニキャスト、一対多をマルチキャスト、一対全をブロードキャストという。

ガチ文系はこういうキーワードが苦手なんだよな・・
ポートスキャン
TCP SYN スキャンはステルススキャンという。コネクションを確立しないので発覚しづらい。
UDPスキャンもセッション張らないので同様。
タイムスタンプ
タイムスタンプトークンは「その時点での存在証明とその時点からの完全性証明」を行う。
送信ドメイン認証
DNSのTXTレコードの記述方法は確認しておこう。もしかしたら書けと言われるかも。複数のIPアドレスを設定する場合についてもチェック!
SPF
「エンベロープFROMドメインのDNSに登録されたIPアドレスとSMTP接続元のIPアドレスの一致を確認する」。DNSにTXTレコードの登録が必要です。
DKIM
「メールヘッダとボディにデジタル署名を付与し、送信ドメインのDNSから公開鍵証明書を取得し正当性を検証する」。デジタル署名はDKIMシグネチャヘッダのdタグにセットされる。
DMARC
DMARC認証とは「ヘッダーFROMのドメインがSPFまたはDKIMで認証されたドメインと同一またはサブドメインであること」。
ヘッダーFROMは簡単に詐称できます、DMARC認証はその対策となるものです。

残念ながら送信ドメイン認証は2024年春試験には出ませんでした・・

ヤマ張ってたのに・・
Preparestatement・・
javaでSql実行する時のあいつ。あんまり出ないだろうけど過去頻出したのでプレースホルダとかの書き方を覚えておこう。レースコンディションも含めて素直な問題は今後出題されなそう。
CSRF対策トークンの使い方
「更新処理などを行う直前のレスポンスにCSRF対策トークンを埋め込み、リクエストで返されたトークンと比較して一致すれば更新処理を行う」。最初の起点はリクエストではなくレスポンスです。
XSS(反射型、格納型、DOM)、CSRF、SSRFは今後もWEB開発系で出題が見込めます。前述の通り各攻撃の特徴と代表的な対策は覚えておこう。
DNSレコード
A、AAAA、CNAME、MX、TXT、NSなど代表的なレコードと意味、書き方を覚えておく。ドメインを記載する際の最後の「.」に注意。
構成とバージョン情報
使用されているソフトウェアなどの種類とバージョンを押さえておけば、「脆弱性が発見された際の影響範囲の特定を迅速化」できる。「収集すべき脆弱性の情報も絞り込める」。平常時のリソース(メモリ/CPU)利用状況を保存しておくのは「異常発見のための閾値として使用する」。

マネジメント系の問題ですね
リスクベース認証
「IPアドレスなどからわかる地理的情報をもとに普段と異なる環境からのログインを検知したら追加の検証を行う」。

そろり・・そろり・・・

あ!普段と違うおやつ食べてる!
その他
Linuxのコマンド
curlなど基本的なコマンドは覚えるとして、出題があやしいのはsuとsudoか。軽はずみにsu(rootへのスイッチ)を許しちゃダメ。sudoで必要なコマンドのみオプション指定して実行させよう。
セキュアプログラミング
ノー勉では不安があるため過去問とテキスト・問題集に載っているもののみ学習しました。正直なところ普段プログラミングしていない人間が付け焼刃で勉強しても、切羽詰まった本試験では太刀打ちできません。あとから解説を見れば何とか理解できても、初見でプログラミングのミスや脆弱性に気が付けるはずもなく・・。

割り切った対策を取りました
セキュアプログラミングガチ問題は避け、WEBセキュリティなどの問題で一部JavaやScriptを問われたときに取りこぼさないことが目的です。勉強するならばオススメはJava。根拠は出題が多いと感じただけでそこまでありません(すみません)。
漢字
脆弱性、脅威、傍受、詐取、窃取、輻輳あたりは書けるようにしておきました。「複」数、「復」号も字が違うのでうっかり忘れないように。誤字脱字はもしかしたら減点されるかも。
まとめノートの内容は以上です。これから情報処理安全確保支援士試験に挑まれる方、頑張ってください!!心より幸運をお祈りしております。

夢に向かい諦めずコツコツ頑張ろう!

言語化と知識の定着化が重要だね!
GLMOW!!
コメント