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

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

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

(略)

〔暗号方式の検討

 X社には、危たい化した暗号技術を使っているシステムがK1システム以外にも複数あった。そこで、Y社からの指摘を踏まえ、X社は、暗号技術を含む暗号方式の社内標準について検討した。その結果、契約情報を業務アプリケーションではなくDBMSで暗号化してDBに保管する方式(以下、DB暗号方式という)を社内標準として、X社の全システムに適用することにした。DB暗号方式の設計に当たって、X社は次のシステム標準と要件を定義した。

システム標準1 業務アプリケーションはJavaで開発する。

システム標準2 DBMSには、暗号化機能及びDBレプリケーション機能がある製品Dを採用する。

要件1 製品DのDBに保管される情報を暗号化及び復号する機能(以下、表領域暗号化機能という)を用いて、DBに保管される契約情報を暗号化する。

要件2 契約情報の暗号化及び復号に用いる鍵を、暗号モジュールを用いて保護する。

 暗号モジュールとは、暗号化、復号、乱数生成、鍵管理などの機能を提供するハードウェア又はソフトウェアのことである。NISTが定めた(c:FIPS)140-2は、暗号モジュールに求められるセキュリティ要件を定義したものである。

c:FIPS

FIPS(Federal Information Processing Standards)とは、米国のNIST(National Institute of Standards and Technology、国立標準技術研究所)が定めた情報・通信機器が満たすべき技術標準を定めた規格です。

FIPSの規格のうち、他国の標準にも影響を与えるのが暗号・セキュリティ関連の規格であり、FIPS 46(DES)、FIPS 140(暗号モジュール)、FIPS 197(AES)などがあります。

FIPS 140の最新版が、2001年5月に発表されたFIPS 140-2です。セキュリティレベルの低いものから、Level1からLevel4まであります。

 X社は、暗号モジュールに、Q社の製品Hを採用した。また、X社は、複数のサーバからネットワーク経由で1台の製品Hの機能を利用するために、Q社が提供しているソフトウェア製品であるHクライアントとHサーバも採用した。

 製品Hは、(c:FIPS)140-2 Level 4の要件を満たすハードウェアの暗号モジュールであり、サーバに取り付けられるPCI Expressカードである。製品Hは、製品Hを取り付けたサーバ(以下、HSMサーバという)上で稼働するプログラム(以下、ローカルプログラムという)に対して独自のAPI(以下、API-Xという)を提供し、ローカルプログラムからAPI-Xを呼び出すことで、暗号化、復号、乱数生成、データの暗号化及び復号に使用する鍵(以下、データ鍵という)の生成、データ鍵の保管、並びに保管したデータ鍵の削除を行う。また、製品Hは、製品H、及び製品Hに保管するマスタ鍵を管理するプログラム(以下、ユーティリティプログラムという)を導入した専用の管理端末に対して、製品H自身に対する管理インタフェースを提供する。

HSM(Hardware Security Module)とは、暗号処理及び鍵管理デバイスが備えるべき特性を定義した、国際規格などの認定を取得しているデバイスのことです。

 K2システムにおける契約情報の暗号化機能の概要を図2に示す。図2において、Hサーバはローカルプログラムに該当する。

f:id:aolaniengineer:20200320182844p:plain

 製品Hの仕様は次のとおりである。

仕様1 初期化

 管理端末上でユーティリティプログラムを起動し、製品H経由で鍵ストアファイルを作成した後、マスタ鍵を生成し、製品Hを利用可能な状態にする。

・マスタ鍵は、3人の鍵管理者が別々に管理端末から入力した256ビットの値(以下、部分鍵という)の排他的論理和によって生成され、製品Hのメモリ内に保持される。製品Hのメモリは、製品Hの内蔵バッテリによって駆動する。

・部分鍵は、管理端末に接続されたICカードリーダ/ライタを用いて、別々のICカードに保管することができる。その際、鍵管理者は6桁のPINを入力し、かつ、部分鍵を記録したICカードを別々に保管する必要がある。

・ICカードから部分鍵を読み出す際は、PINの入力が必要になる。

製品Hの仕様1の効果を、1人の鍵管理者が三つの部分鍵を入力し、3枚のICカードに保管して管理する場合と比べて、25字以内で述べよ。:単独の鍵管理者ではマスタ鍵を復元できない。

マスタ鍵は、3つの部分鍵を用いて生成され、メモリ内に保持されるとあります。こうすることでマスタ鍵の安全性を担保するのですが、部分鍵の管理をわざわざ3人の鍵管理者に分けているのはなぜでしょう。

それは、鍵管理者による不正行為を防ぐためです。

入力した部分鍵は3人の鍵管理者がお互いに教え合わないかぎり分からないため、そこから生成されるマスタ鍵を知ることができません。

ICカードに記録される部分鍵は、何を実施した場合にどのような目的のために必要か。場合と目的をそれぞれ15字以内で述べよ。:製品Hを交換した場合/マスタ鍵を復元するため

マスタ鍵の生成の基となる部分鍵ですが、生成した後は不要になるように思えます。

通常であれば、一度マスタ鍵が生成されればその後の部分鍵の出番はありません。

ただし、マスタ鍵はメモリ上に保存され、特定のファイルなどに登録されるものではありません。これは、マスタ鍵をハードウェア間で移動することができないということで、製品Hを交換した場合、改めて部分鍵からマスタ鍵を生成する必要があります。

仕様2 乱数の生成

 ローカルプログラムから乱数を生成するAPI-Xを呼び出すと、製品Hが乱数を生成し、API-Xの出力値として返す。

仕様3 鍵の生成

・ローカルプログラムが、データ鍵の識別子(以下、データ鍵IDという)をパラメタに設定して、データ鍵生成のAPI-Xを呼び出すと、製品Hがデータ鍵を生成する。

・生成されたデータ鍵は、製品Hにおいてマスタ鍵で暗号化され、データ鍵IDとともに鍵ストアファイルに保管される。

・既に鍵ストアファイルに存在しているデータ鍵IDを指定してデータ鍵を生成しようとすると、API-Xの処理結果はエラーとなる。

仕様4 暗号化又は復号

・ローカルプログラムが、データ鍵ID、及び、暗号化又は復号を行うデータを、パラメタに設定して、暗号化又は復号のAPI-Xを呼び出す。

・製品Hは、鍵ストアファイルから暗号化されたデータ鍵を読み出してマスタ鍵で復号し、復号されたデータ鍵でデータの暗号化又は復号を行った後、暗号化又は復号されたデータを、API-Xの出力値として返す。データの暗号化又は復号は製品H内で行われ、復号されたデータ鍵は、製品H内だけに存在する。

・鍵ストアファイルに存在しないデータ鍵IDを指定して暗号化又は復号を行おうとすると、API-Xの処理結果はエラーとなる。

仕様5 マスタ鍵のゼロ化

 製品Hには、内蔵バッテリで駆動するセンサが内蔵されている。①センサが次のいずれかを検知すると、製品Hは、メモリ上に保持されていたマスタ鍵をゼロ化するとともに、自身を使用不能で、かつ、元に戻せない状態にする

(a)電気的短絡(ショート)の発生などによる規定の範囲を超える電源電圧の発生

(b)製品Hのカバーのこじ開け又は損傷

 内蔵バッテリが切れそうな場合、製品HはHSMサーバを介して警告メッセージを出力し、早期のバッテリ交換を促す。内蔵バッテリの交換手順として、(a)の発生を回避する手順が提供されている。

①によって実現される暗号モジュールの性質を、7字以内で答えよ。:耐タンパ性

耐タンパ性のタンパ(tamper)とは改ざんという意味で、不正な攻撃や解析に対して機密データの読み取りを防ぐ能力のことです。

X社の運用規定で、製品Hを運搬する場合、必ず静電気防止シートで覆うように定めた。これは、静電気防止シートで覆わなかった場合に発生し得る不都合な事象を想定し、配慮したものである。その事象及びその事象によって実行される製品Hの機能を、それぞれ40字以内で述べよ。:静電気の放電による規定の範囲を超える電源電圧の発生/事象をセンサが検知し、製品H自身を使用不能で戻せない状態にする。

静電気が発生すると、放電する時に高い電圧の電流が流れます。これはセンサによる(a)の規定の範囲を超える電源電圧の発生に該当する事象です。

 HクライアントとHサーバを用いると、HSMサーバとは別のサーバで稼働するプログラム(以下、リモートプログラムという)からネットワークを介して製品Hを利用できる。Hクライアントは、リモートプログラムが稼働するサーバに導入され、リモートプログラムに対してPKCS#11のAPIを提供する。HサーバはHSMサーバに導入され、TLS通信を介してHクライアントに製品Hの機能を提供する。

PKCS#11とは、米国のRSAセキュリティ社が定めたPKCS(Public-Key Cryptography Standards)の11番目の規格で、暗号トークンへの汎用インタフェースを定義するAPIについての基準です。

 HクライアントとHサーバの仕様は次のとおりである。

(1)API-Xの実行要求

・リモートプログラムがHクライアントを呼び出すと、Hクライアントは、受け取ったPKCS#11のAPI呼出しをAPI-Xの実行要求に変換して、Hサーバに送信する。

・API-Xの実行要求を受信したHサーバは、API-Xを呼び出し、その実行結果を応答としてHクライアントに返す。ただし、鍵生成の場合、Hクライアントは、内部でデータ鍵IDを0から順番に採番してHサーバにAPI-Xの実行要求を送信し、鍵生成が成功した場合にデータ鍵IDをAPI-Xの出力値としてリモートプログラムに返す。鍵生成が失敗した場合、Hクライアントはリモートプログラムにエラーを返す。

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

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

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

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

 製品Dの表領域暗号化機能には、PKCS#11のAPIを提供する暗号モジュールが必要である。製品Dの表領域暗号化機能の仕様は次のとおりである。

仕様A DBを作成する際、表領域暗号化の設定が有効になっていると、製品DはPKCS#11のAPIを用いてDBマスタ鍵を生成する。この際、DBマスタ鍵及びDBマスタ鍵の識別子(以下、DBマスタ鍵IDという)が暗号モジュール内に保存され、DBマスタ鍵IDがAPIの出力として製品Dに返される。製品Dは、DBマスタ鍵IDを設定ファイルに保存し、同時にメモリ上に保持する。

仕様B 表領域を作成する際、表領域暗号化の設定が有効になっていると、製品DはPKCS#11のAPIを用いて乱数を生成する。生成された乱数は、データの暗号化鍵・復号鍵(以下、DBデータ鍵という)として、製品Dのメモリ上に保持される。同時に、製品DはPKCS#11のAPIを用いてDBデータ鍵をDBマスタ鍵で暗号化する。暗号化されたDBデータ鍵は、表領域の一部としてディスクに書き込まれる。

仕様C データをディスクに書き込む際、製品Dは、保持しているDBデータ鍵でデータを暗号化した後、ディスクに書き込む。

仕様D ディスクからデータを読み込む際、製品Dは、ディスク上からデータを読み込んだ後、読み込まれた暗号化データを、保持しているDBデータ鍵で復号する。

仕様E 製品Dは、停止する際、メモリ上に保持しているDBデータ鍵をゼロ化する。

 K2システムのDB暗号方式では、製品Dの表領域暗号化機能に必要な暗号モジュールとして製品Hが用いられる。また、製品Dの表領域暗号化機能の仕様におけるDBマスタ鍵及びDBマスタ鍵IDが、それぞれ、製品Hの仕様におけるデータ鍵及びデータ鍵IDに該当する。

 K2システムのDB暗号方式におけるDBの初期化処理の概要を、図3に示す。図3中では、製品Dの表領域暗号化機能の仕様のうち、仕様Aと仕様Bを記載している。

f:id:aolaniengineer:20200321164243p:plain

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