クイズの説明
Step 4で学んだ内容の理解度をチェックします。
- 全8問
- 合格ライン: 80%(7問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. AES-256-GCMの「GCM」が提供する機能として正しいものはどれですか?
- A) データの圧縮機能
- B) 暗号化と認証(改ざん検知)の両方
- C) 鍵の自動生成機能
- D) データの分割処理機能
答えを見る
正解: B
GCM(Galois/Counter Mode)はAEAD(Authenticated Encryption with Associated Data)の一種で、暗号化と認証(改ざん検知)の両方を提供します。認証タグ(Auth Tag)により、暗号文が改ざんされていないことを検証できます。
Q2. パスワードのハッシュ化にMD5やSHA-1を使用してはいけない理由として最も適切なものはどれですか?
- A) ハッシュ値が長すぎてデータベースに保存できないから
- B) 計算速度が速すぎてブルートフォース攻撃に弱いから
- C) ハッシュ値が可逆的で元のパスワードに戻せるから
- D) 衝突耐性がなくなったから
答えを見る
正解: B
MD5やSHA-1は汎用ハッシュ関数であり、高速に計算できるよう設計されています。パスワードハッシュには計算コストが意図的に高い(遅い)アルゴリズム(bcrypt, Argon2id, scrypt)を使用する必要があります。高速なハッシュはGPUで大量のパスワード候補を試行できるため、ブルートフォース攻撃に弱くなります。
Q3. エンベロープ暗号化の説明として正しいものはどれですか?
- A) データを二重に暗号化する方式
- B) DEK(データ暗号化キー)でデータを暗号化し、KEK(マスターキー)でDEKを暗号化する方式
- C) 公開鍵でデータを暗号化し、秘密鍵で復号する方式
- D) データをハッシュ化した後に暗号化する方式
答えを見る
正解: B
エンベロープ暗号化は、ランダムなDEK(Data Encryption Key)でデータを暗号化し、KEK(Key Encryption Key / マスターキー)でDEKを暗号化する二層構造です。大量データの暗号化に効率的で、鍵のローテーションも容易になります。
Q4. シークレット管理のアンチパターンとして最も危険なものはどれですか?
- A) 環境変数でシークレットを渡すこと
- B) APIキーをソースコードにハードコードしてGitにコミットすること
- C) シークレットの有効期限を設定すること
- D) シークレットを暗号化して保存すること
答えを見る
正解: B
APIキーなどのシークレットをソースコードにハードコードしてGitにコミットすることは、最も危険なアンチパターンです。Gitの履歴に永久に残り、公開リポジトリの場合は即座に漏洩します。シークレット管理ツール(Vault、AWS Secrets Manager等)を使用して管理すべきです。
Q5. データ分類でLevel 4(最高機密)に該当するデータはどれですか?
- A) 商品の価格情報
- B) ユーザーの表示名
- C) クレジットカード番号
- D) 公開ブログ記事
答えを見る
正解: C
クレジットカード番号はLevel 4(最高機密)に分類されます。PCI DSS(Payment Card Industry Data Security Standard)の対象であり、漏洩すると重大な経済的損害と法的責任が発生します。フィールドレベル暗号化とトークナイゼーションが必要です。
Q6. mTLS(mutual TLS)の特徴として正しいものはどれですか?
- A) サーバーのみが証明書を提示する
- B) クライアントとサーバーの両方が証明書を提示して互いに認証する
- C) 証明書の代わりにパスワードで認証する
- D) TLSの暗号化を無効にして高速化する
答えを見る
正解: B
mTLS(mutual TLS)は、通常のTLS(サーバーのみが証明書を提示)に加えて、クライアントも証明書を提示してサーバーに認証される方式です。マイクロサービス間の通信でゼロトラストを実現するために使用されます。
Q7. HSTSヘッダーの役割として正しいものはどれですか?
- A) クロスサイトスクリプティングを防止する
- B) ブラウザにHTTPSのみでの接続を強制する
- C) SQLインジェクションを防止する
- D) CORSポリシーを設定する
答えを見る
正解: B
HSTS(HTTP Strict Transport Security)は、ブラウザに対してHTTPSのみでの接続を強制するセキュリティヘッダーです。一度HSTSヘッダーを受信すると、指定された期間中はHTTPでのアクセスを自動的にHTTPSにアップグレードします。
Q8. シークレットのローテーションの目的として最も適切なものはどれですか?
- A) パフォーマンスを向上させるため
- B) 漏洩した場合の影響範囲を限定し、リスクを低減するため
- C) 暗号化アルゴリズムを最新版に更新するため
- D) データベースの容量を節約するため
答えを見る
正解: B
シークレットのローテーション(定期的な更新)の主な目的は、万が一シークレットが漏洩した場合の影響範囲を時間的に限定し、リスクを低減することです。古いシークレットは自動的に無効になるため、漏洩が発覚する前でも被害を最小化できます。
結果
7問以上正解の場合
合格です。おめでとうございます。
Step 4「データ保護と暗号化」を完了しました。 次は Step 5「セキュリティ運用とDevSecOps」に進みましょう。
6問以下の場合
もう少し復習しましょう。
間違えた問題の内容を、該当するセクションで復習してください:
| 問題 | 復習セクション |
|---|---|
| Q1, Q2 | step4_1 暗号化の基礎 |
| Q3 | step4_1 エンベロープ暗号化 |
| Q4 | step4_3 シークレット管理 |
| Q5 | step4_2 データの分類と保護 |
| Q6, Q7 | step4_4 通信の保護 |
| Q8 | step4_3 シークレットのローテーション |
次のステップへ
Step 5: セキュリティ運用とDevSecOps(4時間)
データ保護の設計を学んだ次は、SBOM、脆弱性管理、セキュリティテストの自動化など、継続的なセキュリティ運用を学びます。
推定所要時間: 30分