データ暗号化の設計【情報処理安全確保支援士試験 平成29年度 秋期 午後2 問2 設問3】

情報処理安全確保支援士試験 平成29年度 秋期 午後2 問2 設問3

問2 データ暗号化の設計に関する次の記述を読んで、設問1〜4に答えよ。

(略)

〔暗号方式の検討

(略)

f:id:aolaniengineer:20200320182844p:plain

(略)

(2)Hサーバに対する負荷分散

 Hクライアントは、、複数のHサーバにAPI-Xの実行要求を振り分ける負荷分散機能をもっている。負荷分散機能の概要は次のとおりである。

・Hクライアントに、複数のHサーバのIPアドレス又はホスト名を登録する。

Hクライアントは、登録されたHサーバのうち稼働しているHサーバに、ラウンドロビン方式でAPI-Xの実行要求を送信する。

(略)

f:id:aolaniengineer:20200321164243p:plain

(略)

〔DBサーバ及びHSMサーバの構成設計

 X社は、K2システムのサーバ構成について、Y社に次の要件で設計を依頼した。

・DBサーバをアクティブ・スタンバイの2台構成にする。

・災害対策として、製品DのDBレプリケーション機能を用いて、X社データセンタのDBからバックアップセンタのDBに、定期的にデータをコピーする。

・HSMサーバは、K2システム以外のシステムのDBサーバを含めた全DBサーバからも共有できるようにする。

 Y社が設計したK2システムのサーバ構成を図4に示す。

f:id:aolaniengineer:20200322050155p:plain

 Y社は、K2システムにおけるDB及び表領域の作成手順を次のように設計した。

(ⅰ)HSMサーバ1だけを稼働させ、他のHSMサーバは停止させておく。

(ⅱ)DBサーバ1だけを稼働させ、他のDBサーバは停止させておく。

(ⅲ)製品D-1上で、DBαを作成する。

(ⅸ)製品D-1上で、DBβを作成する。

(ⅴ)製品D-1上で、DBαに対応する表領域1を作成する。

(ⅵ)製品D-1上で、DBβに対応する表領域2を作成する。

(ⅶ)全てのHSMサーバ及び全てのDBサーバを停止させる。

(ⅷ)鍵ストアファイル1を、鍵ストアファイル2及び鍵ストアファイル3にコピーする。

(以下、省略)

DB及び表領域の作成手順中、(ⅰ)の代わりにHSMサーバ1とHSMサーバ2の両方を稼働させておいた場合、(ⅱ)から(ⅷ)までのどの手順がエラーとなるか。一つ選び、記号で答えよ。また、エラーが発生するAPI-Xのコマンド及びAPI-Xのエラーの原因を、それぞれ35字以内で述べよ。なお、コマンドについては図3の形式、図3中の用語、及び図4中の用語を用い、鍵はどのDBのものかも記述すること。ここで、最初のAPI-Xの実行要求は、Hサーバ1に送信される。:(ⅴ)/暗号化(DBαのDBデータ鍵、DBαのDBマスタ鍵ID)/DBαのDBマスタ鍵が鍵ストアファイル2に存在しないこと

(ⅰ)〜(ⅷ)の手順を図3「K2システムのDB暗号方式におけるDBの初期化処理の概要」に沿ってトレースしてみましょう。

(ⅰ)HSMサーバ1だけを稼働させ、他のHSMサーバは停止させておく。

HSMサーバ1とHSMサーバ2の両方を稼働させます。

(ⅱ)DBサーバ1だけを稼働させ、他のDBサーバは停止させておく。

特に問題なさそうです。

(ⅲ)製品D-1上で、DBαを作成する。

  1. 業務アプリケーション管理者から製品D-1にDB作成コマンドを送信する。
  2. 製品D-1からHクライアント1に鍵生成コマンドを送信する。
  3. Hクライアント1からラウンドロビンで選ばれたHサーバ1に、鍵生成(データ鍵ID)コマンドを送信する。
  4. Hサーバ1は製品H-1に鍵生成(データ鍵ID)コマンドを送信する。
  5. 製品H-1はDBαのデータ鍵を生成し、マスタ鍵によるデータ鍵の暗号化を行い、データ鍵IDとともに鍵ストアファイル1に保存する。
  6. 製品H-1からHサーバ1、Hクライアント1を介して製品D-1にデータ鍵IDを送信する。
  7. 製品D-1はデータ鍵IDをマスタ鍵IDとして保存する。

ここも特に問題なさそうです。DBαのデータ鍵は、製品H-1の鍵ストアファイル1に保存されました。

(ⅸ)製品D-1上で、DBβを作成する。

  1. 業務アプリケーション管理者から製品D-1にDB作成コマンドを送信する。
  2. 製品D-1からHクライアント1に鍵生成コマンドを送信する。
  3. Hクライアント1からラウンドロビンで選ばれたHサーバ2に、鍵生成(データ鍵ID)コマンドを送信する。
  4. Hサーバ2は製品H-2に鍵生成(データ鍵ID)コマンドを送信する。
  5. 製品H-2はDBβのデータ鍵を生成し、マスタ鍵によるデータ鍵の暗号化を行い、データ鍵IDとともに鍵ストアファイル2に保存する。
  6. 製品H-2からHサーバ2、Hクライアント1を介して製品D-1にデータ鍵IDを送信する。
  7. 製品D-1はデータ鍵IDをマスタ鍵IDとして保存する。

ここも特に問題なさそうです。DBβのデータ鍵は、製品H-2の鍵ストアファイル2に保存されました。

(ⅴ)製品D-1上で、DBαに対応する表領域1を作成する。

  1. 業務アプリケーション管理者から製品D-1に表領域作成コマンドを送信する。
  2. 製品D-1からHクライアント1に乱数生成コマンドを送信する。
  3. Hクライアント1からラウンドロビンで選ばれたHサーバ1に、乱数生成コマンドを送信する。
  4. Hサーバ1は製品H-1に乱数生成コマンドを送信する。
  5. 製品H-1は乱数を生成し、Hサーバ1、Hクライアント1を介して製品D-1に乱数を送信する。
  6. 製品D-1は乱数をDBデータ鍵として保持する。
  7. 製品D-1はHクライアント1に暗号化(DBデータ鍵、DBマスタ鍵ID)コマンドを送信する。
  8. Hクライアント1からラウンドロビンで選ばれたHサーバ2に、暗号化(DBデータ鍵、DBマスタ鍵ID)コマンドを送信する。
  9. Hサーバ2は製品H-2に暗号化(DBデータ鍵、DBマスタ鍵ID)コマンドを送信する。

ここは問題になりそうです。

この処理はDBαに関する処理ですが、製品H-2の鍵ストアファイル2にはDBαのDBデータ鍵は保存されていません。DBαのDBデータ鍵は製品H-1の鍵ストアファイル1に保存されています。

したがって、ここでエラーが発生します。

回答は、DBデータ鍵とするかDBマスタ鍵とするか、又はそれぞれ鍵IDとするか悩みどころです。ただ重要なのはDBαとDBβの処理が、ラウンドロビンによりHサーバが振り分けられていることですので、そこがポイントとして記載されていればOKかと思われます。

 Y社は、DB暗号方式において、Hクライアント及びHサーバの仕様では複数システムのDBサーバから1台のHSMサーバを共有することはできないとX社に伝えた。そこで、X社が開発元のQ社に問い合わせたところ、Q社からは、来月リリースされる新しいバージョンのHクライアント及びHサーバに次の機能を追加するという回答を得た。

・Hクライアントを一意に識別する識別子(以下、HクライアントIDという)を設定し、Hサーバに鍵生成を要求する際に従来のデータ鍵IDにHクライアントIDを付け加えて送信する。

・Hサーバは、Hクライアントから送信された鍵生成要求を処理する際、HクライアントIDと従来のデータ鍵IDを結合した、新たなデータ鍵IDをパラメタとして、鍵生成のAPI-Xを呼び出す。Hクライアントは、新たなデータ鍵IDをDBマスタ鍵として製品Dに返す。

 複数の業務システムのDBサーバが1台のHSMサーバを共有する場合の構成を、図5に示す。

f:id:aolaniengineer:20200322052033p:plain

【出典:情報処理安全確保支援士試験 平成29年度 秋期 午後2問2(一部、加工あり)】

Hクライアントにおいて、HクライアントIDをデータ鍵IDに付け加える機能がなかった場合、特定の条件においてDB作成がエラーになる。その条件を40字以内で述べよ。:複数のHクライアントが送信したデータ鍵IDが重複した場合

あるパラメータ(ここではデータ鍵ID)に、別のパラメータ(ここではHクライアントID)を追加するということは、元のパラメータだけでは一意(ユニーク)にすることができずに、パラメータを追加した組み合わせでユニークになるということです。

したがって、データ鍵IDが重複する場合にDB作成がエラーとなるということを回答すればいいでしょう。

図3で、データ鍵IDを生成するのはHクライアントであり、Hクライアントが複数存在する場合、データ鍵IDが重複することは考えられます。重複したデータ鍵IDにより、製品HにおいてDB作成エラーとなると想定できますが、それをHクライアントに通知し、データ鍵IDの再生成を行う処理でも対応可能なのかなと思ってしまいます。