説明

暗号化機能内蔵ストレージシステム

【課題】複数のコントローラが一つのボリュームへのアクセスを許可されている環境において、データを書き込んだコントローラとデータを読み出したコントローラとが異なる場合であっても、データを正しく復号化することができる。
【解決手段】一つ以上のホスト計算機と、前記ホスト計算機と接続される複数のストレージ制御装置と、を備える計算機システムにおいて、前記ストレージ制御装置は、前記ホスト計算機からデータの書き込み要求を受信したとき、第1暗号鍵を用いて前記データを暗号化し、当該暗号化されたデータ及び当該第1暗号鍵を記憶装置に格納し、前記ホスト計算機から前記データの読み出し要求を受信したとき、前記記憶装置から前記暗号化されたデータ及び前記第1暗号鍵を読み出し、当該読み出された第1暗号鍵を用いて当該暗号化されたデータを復号化する。

【発明の詳細な説明】
【技術分野】
【0001】
本願明細書で開示される技術は、データを暗号化及び復号化するストレージシステムに関し、特に、暗号化及び復号化に用いる鍵の管理方法に関する。
【背景技術】
【0002】
近年、ストレージシステムに対するセキュリティ対策が急務となっている。その対策の一つに、データの暗号化技術がある(特許文献1参照)。データを暗号化する際、必ず暗号鍵が必要になるが、その暗号鍵(又はその暗号鍵に対応する復号用の鍵)を使用して復号化しない限り、正しくデータを復号化することができない。その結果、復号化されたデータは、ユーザやアプリケーションにとって全く無意味なビット列になってしまう。このように、暗号鍵を知らない者は暗号化されたデータを利用することができないため、暗号化されたデータのセキュリティが保護される。
【0003】
一方、ストレージシステムの仮想化技術が進展している。この技術によれば、複数に分散したストレージシステムを単一のストレージシステムイメージとして統一的に管理及び運用することができる。このため、システム管理者の負荷軽減だけではなく、性能のボトルネックとなっているストレージシステムの処理負荷軽減も期待できる。例えば、あるストレージシステムのコントローラにデータ処理の負荷が集中している場合、他のストレージシステムのコントローラにその処理を分散させることができる。
【特許文献1】特開2002−217887号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
以上のセキュリティ動向から、今後、ストレージシステムに対してデータの暗号化技術を適用することが考えられる。一方、ストレージシステムの仮想化技術の進展を鑑みると、ストレージシステムにデータの暗号化技術を単純に適用するだけでは課題が生じる。即ち、データ暗号化機能を備える複数のストレージシステムにおいて、データの暗号化及び復号化に必要な暗号鍵がストレージシステム間で異なる可能性がある。例えば、あるコントローラを経由して書き込まれたデータが、他のコントローラを経由して読み出される場合、それらの二つのコントローラが別の暗号鍵を使用していると、読み出されたデータが正しく復号化されない。
【課題を解決するための手段】
【0005】
本願で開示する代表的な発明は、一つ以上のホスト計算機と、前記ホスト計算機と第1ネットワークを介して接続される複数のストレージ制御装置と、を備える計算機システムにおいて、前記ホスト計算機は、前記第1ネットワークに接続される第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第2プロセッサと、前記第2プロセッサに接続される一つ以上の第2メモリと、を備え、前記第2プロセッサは、前記ホスト計算機からデータの書き込み要求を受信したとき、第1暗号鍵を用いて前記データを暗号化し、当該暗号化されたデータ及び当該第1暗号鍵を前記記憶装置に格納し、前記ホスト計算機から前記データの読み出し要求を受信したとき、前記記憶装置から前記暗号化されたデータ及び前記第1暗号鍵を読み出し、当該読み出された第1暗号鍵を用いて当該暗号化されたデータを復号化することを特徴とする。
【発明の効果】
【0006】
本発明の一実施形態によれば、複数のコントローラが一つのボリュームへのアクセスを許可されている環境において、データを書き込んだコントローラとデータを読み出したコントローラとが異なる場合であっても、データを正しく復号化することができる。
【発明を実施するための最良の形態】
【0007】
以下、本発明の実施の形態を図面を参照して説明する。
【0008】
図1Aは、本発明の第1の実施の形態の計算機システムの構成を示すブロック図である。
【0009】
図1Aの計算機システムは、ホストコンピュータ10A、ホストコンピュータ10B、ストレージ制御部15A、ストレージ制御部15B及び記憶装置20を備える。ホストコンピュータ10A及び10Bは、ストレージ制御部15A及び15Bとネットワーク(例えば、ストレージエリアネットワーク)を介して互いに接続される。ストレージ制御部15A及び15Bは、記憶装置20に接続される。
【0010】
以下の説明において、ホストコンピュータ10A及び10Bを特に区別する必要がない場合、これらを総称して、ホストコンピュータ10と記載する。同様に、ストレージ制御部15A及び15Bを特に区別する必要がない場合、これらを総称して、ストレージ制御部15と記載する。
【0011】
図1Aには、二つのホストコンピュータ10及び二つのストレージ制御部15を示すが、本実施の形態の計算機システムは、さらに多くのホストコンピュータ10及びストレージ制御部15を備えてもよい。
【0012】
ホストコンピュータ10は、例えば、データファイルをユーザに提供するファイルサーバ、又は、データベースサーバの機能を有する計算機である。本実施の形態のホストコンピュータ10は、相互に接続されたプロセッサ101、メモリ102及び一つ以上のI/F103を備える。
【0013】
プロセッサ101は、メモリ102に格納されたプログラム(例えば、アプリケーションプログラム)を実行することによって、ホストコンピュータ10の機能を実現する。
【0014】
メモリ102は、プロセッサ101によって実行されるプログラム等(図示省略)を格納する。
【0015】
I/F103は、ネットワークに接続され、そのネットワークを介してストレージ制御部15と通信するインタフェースである。
【0016】
ストレージ制御部15は、記憶装置20上のデータの記憶領域をホストコンピュータ10に提供する。言い換えると、ストレージ制御部15は、ホストコンピュータ10によって発行された要求に応じて、記憶装置20に対してデータを読み書きする。
【0017】
ストレージ制御部15A及び15Bは、ホストI/F制御部25、キャッシュメモリ45、制御メモリ50、ディスクI/F制御部55及びスイッチ40を備える。
【0018】
ホストI/F制御部25は、ストレージ制御部15をホストコンピュータ10A及び10Bと接続するためのインタフェースである。このインタフェースは、例えば、ファイバチャネル又はイーサネット(登録商標、以下同じ)であるが、本発明の実施の形態は、これらに限定されない。
【0019】
キャッシュメモリ45は、ホストコンピュータ10と記憶装置20との間で転送されるデータを一時的に記憶するための半導体メモリである。
【0020】
制御メモリ50は、ストレージ制御部15及び記憶装置20からなるストレージシステムが必要とする構成情報及び制御情報等を格納し管理するための半導体メモリである。本実施の形態の制御メモリ50は、少なくとも、ボリューム管理テーブル200を格納する。ボリューム管理テーブル200については、後で詳細に説明する(図2参照)。
【0021】
ディスクI/F制御部55は、記憶装置20と接続するためのインタフェースである。記憶装置20と接続するためのインタフェースは、例えば、ファイバチャネル又はSCSI(Small Computer System Interface)であるが、本発明の実施の形態は、これらに限定されない。
【0022】
記憶装置20は、ディスクアレイのように複数の磁気ディスクで構成される。しかし、本発明の実施の形態は、これに限定されない。例えば、記憶装置20は、半導体ディスク、半導体メモリ又はテープライブラリで構成されてもよい。また、記憶装置20は、ディスクアレイでなくてもよい。
【0023】
記憶装置20は、複数のボリュームを含む。各ボリュームは、記憶装置20の記憶領域を論理的に分割することによって生成された各領域である。ホストコンピュータ10及びホストコンピュータ上のアプリケーションプログラムは、一つのボリュームを一つのディスクと認識する。ボリュームのうち少なくとも一つは、データボリューム70であり、残りのボリュームのうち少なくとも一つは、鍵管理ボリューム75である。データボリューム70は、ホストコンピュータ10によって書き込まれたデータが格納される記憶領域である。鍵管理ボリューム75は、後述するように、暗号鍵が格納される記憶領域である。
【0024】
スイッチ(SW)40は、上述のホストI/F制御部25、キャッシュメモリ45、制御メモリ50、ディスクI/F制御部55を相互に接続し、これらの間のデータ通信を中継する。
【0025】
ホストI/F制御部25は、プロセッサ30、メモリ35及びバッファ(BUF)36を備える。
【0026】
プロセッサ30は、メモリ35に格納されたプログラムを実行する。
【0027】
メモリ35は、プロセッサ30によって実行されるプログラム等を格納する。メモリ35については、後で説明する(図1B参照)。
【0028】
ディスクI/F制御部55は、プロセッサ60及びメモリ65を備える。
【0029】
プロセッサ60は、メモリ65に格納されたプログラムを実行する。
【0030】
メモリ65は、プロセッサ60によって実行されるプログラム等を格納する。メモリ65については、後で説明する(図1C参照)。
【0031】
図1Bは、本発明の第1の実施の形態のホストI/F制御部25が備えるメモリ35の説明図である。
【0032】
メモリ35には、暗号処理モジュール87、I/O処理モジュール89、鍵処理モジュール91及び暗号鍵書き込みモジュール93が格納される。これらの各モジュールは、プロセッサ30によって実行されるプログラムである。
【0033】
暗号処理モジュール87は、ホストコンピュータ10から書き込み/読み出しを要求されたデータの暗号化及び復号化を実行する。さらに、暗号処理モジュール87は、暗号化及び復号化に必要な暗号鍵を生成する。具体的には、例えばホストコンピュータ10からデータを受け取った場合(ライトアクセス)、暗号処理モジュール87は、まず暗号鍵を生成し、受け取ったデータを生成した暗号鍵で暗号化する。その後、暗号処理モジュール87は、キャッシュメモリ45又は記憶装置20に暗号化したデータを格納することを、I/O処理モジュール89に対して指示する。
【0034】
I/O処理モジュール89は、ホストコンピュータ10の要求に応じて、ホストコンピュータと、キャッシュメモリ45又は記憶装置20との間のデータ転送を処理する。
【0035】
その他のモジュールの詳細については後述する。
【0036】
図1Cは、本発明の第1の実施の形態のディスクI/F制御部55が備えるメモリ65の説明図である。
【0037】
メモリ65には、I/O処理モジュール95、暗号鍵書き込みモジュール97及び鍵取得モジュール99が格納される。これらの各モジュールは、プロセッサ60によって実行されるプログラムである。
【0038】
I/O処理モジュール95は、キャッシュメモリ45と記憶装置20との間のデータ転送を処理する。
【0039】
その他のモジュールの詳細については後述する。
【0040】
図2は、本発明の第1の実施の形態のボリューム管理テーブル200の一例を示す説明図である。
【0041】
本実施の形態のボリューム管理テーブル200は、図1Aに示すように、制御メモリ50に格納される。しかし、ボリューム管理テーブル200は、プロセッサ30及びプロセッサ60がアクセスすることができる限り、どこに格納されてもよい。例えば、ボリューム管理テーブル200がメモリ35、メモリ65又はSW40内のメモリ(図示省略)に格納されてもよい。
【0042】
図2のボリューム管理テーブル200は、ボリューム番号(Vol#)201、アクセス許可ストレージ制御部202、アクセス許可ホストコンピュータ203、暗号鍵204及び状態205を含む。これらは、各ボリュームに対してアクセスを許可しているストレージ制御部15及びホストコンピュータ10、暗号処理に用いられる暗号鍵、並びに、ボリュームの状態を表すパラメータである。
【0043】
ボリューム番号201は、記憶装置20内のボリュームの識別子である。例えば、記憶装置20にn+1個のボリュームが存在する場合、ボリューム番号201として、「0」から「n」までの値が登録される(図2参照)。以下の説明において、ボリューム番号201が「0」であるボリュームを、「Vol#0」と記載する。他のボリューム番号201についても同様である。
【0044】
アクセス許可ストレージ制御部202には、各ボリュームにアクセスすることが出来るストレージ制御部15の識別子が登録される。図2の例において、Vol#1及びVol#nは、ストレージ制御部15A及び15Bからのアクセスを許可している。一方、Vol#0は、ストレージ制御部15Aのみからのアクセスを許可している。なお、本実施の形態において、ストレージ制御部15A及び15Bの識別子は、それぞれ、「15A」及び「15B」である。一方、ホストコンピュータ10A及び10Bの識別子は、それぞれ、「10A」及び「10B」である。
【0045】
アクセス許可ホストコンピュータ203には、各ボリュームにアクセスすることが出来るホストコンピュータ10の識別子が登録される。図2の例において、Vol#1は、ホストコンピュータ10A及び10Bからのアクセスを許可している。一方、Vol#0は、ホストコンピュータ10Aのみからのアクセスを許可している。
【0046】
なお、ホストコンピュータ10は、鍵管理ボリューム75にアクセスすることができない。このため、鍵管理ボリューム75に対応するアクセス許可ホストコンピュータ203の値は、空欄(「−」)となる。図2の例では、Vol#nが鍵管理ボリューム75である。
【0047】
暗号鍵204には、各ボリュームに格納されたデータの暗号鍵が登録される。暗号鍵204に登録された暗号鍵を用いた場合のみ、暗号処理モジュール87は、各ボリュームに格納されたデータを正常に復号化することができる。
【0048】
暗号鍵204の内容が仮に変わった場合、ボリュームに格納されたデータを正常に復号化することが出来ない。その結果、復号化されたデータは、ホストコンピュータ10又はアプリケーションプログラムにとって全く無意味なビット列となってしまう。例えば、図2の例では、Vol#0の暗号鍵204として「1234567812345678」が登録されている。この場合、「1234567812345678」以外の暗号鍵を用いてVol#0に格納されたデータを復号化すると、そのデータは正常に復号化されず、復号化されたデータは無意味なビット列となる。
【0049】
なお、後述するように、鍵管理ボリューム75には、暗号化された暗号鍵が格納される。その暗号鍵を暗号化するための暗号鍵は、ボリューム管理テーブル200によって管理されない。このため、鍵管理ボリューム75(図2の例では、Vol#n)に対応する暗号鍵204の値は、空欄(「−」)となる。以下の説明において、暗号鍵を暗号化又は復号化するための暗号鍵を鍵暗号用鍵と記載する。
【0050】
状態205には、ボリュームの状態を示す値が登録される。本実施の形態の状態205には、少なくとも、「非共有」、「共有」及び「鍵格納」のいずれかが登録される。「非共有」とは、ボリュームが一つのストレージ制御部のみからアクセスされる状態を示す。「共有」とは、ボリュームが複数のストレージ制御部からアクセスされる状態を示す。「鍵格納」とは、ボリュームに暗号鍵が格納された状態を示す。
【0051】
図2の例において、Vol#0は、ストレージ制御部15Aのみからアクセスされる(アクセス許可ストレージ制御部202参照)。このため、Vol#0に対応する状態205として「非共有」が登録される。Vol#1は、ストレージ制御部15A及び15Bからアクセスされる。このため、Vol#1に対応する状態205として「共有」が登録される。Vol#nは、暗号鍵204の値が「−」となっている。この場合、Vol#nは、データを格納せず、暗号鍵を格納する領域である鍵管理ボリューム75と判断される。その場合、Vol#nに対応する状態205の値は、「鍵格納」となる。
【0052】
次に、ホストコンピュータ10からアクセス要求を受けたストレージ制御部15が実行する処理について、図3及び図4を参照して説明する。
【0053】
図3及び図4に示す処理は、あるデータボリューム70に対するアクセス要求を、そのデータボリューム70に関するアクセス許可ストレージ制御部202として既に登録されているストレージ制御部15が受信した場合に、そのストレージ制御部15の各モジュールが実行する処理である。具体例として、図3及び図4は、ストレージ制御部15AがVol#0又はVol#1に対するアクセス要求を受信した場合の処理を示す。
【0054】
なお、前述のように、ストレージ制御部15の各モジュールは、プロセッサ30又はプロセッサ60によって実行されるプログラムである。したがって、図3及び図4の各ステップは、実際には、プロセッサ30又はプロセッサ60によって実行される。
【0055】
図3は、本発明の第1の実施の形態において、ホストコンピュータ10からのデータライト要求に対してストレージ制御部15が実行する処理を示すフローチャートである。
【0056】
最初のステップS300では、I/O処理モジュール89が、ホストコンピュータ10からデータライト要求を受信したか否かを判定する。
【0057】
ステップS300においてデータライト要求を受信していないと判定された場合、通常処理が実行される。通常処理とは、例えば、次回のアクセス要求を待つ処理等である。
【0058】
ステップS300においてデータライト要求を受信したと判定された場合、I/O処理モジュール89は、受信した要求の内容を参照して、どのボリュームに対する書き込みか、及び、どのくらいのデータ長か、等を解析し、キャッシュメモリ45上に必要な領域を確保する。そして、鍵処理モジュール91が、書き込み対象のボリュームの暗号鍵(Key1)を制御メモリ50のボリューム管理テーブル200(図2)から読み出し、メモリ35に格納する(S305)。
【0059】
ステップS315では、暗号処理モジュール87が、ステップS305でメモリ35に格納された暗号鍵Key1を読み出し、その暗号鍵Key1を使って、ホストコンピュータから受信したデータを暗号化する。そして、暗号処理モジュール87は、暗号化が完了したら、I/O処理モジュール89に完了を通知する。
【0060】
I/O処理モジュール89は、その通知を受け、暗号化されたデータをステップS300で確保されたキャッシュメモリ45の領域に格納する。最終的には、I/O処理モジュール95が、キャッシュメモリ45に格納されたデータを読み出して、そのデータをデータライト要求の対象のデータボリューム70に格納する(S320)。
【0061】
ステップS325において、鍵処理モジュール91は、データライト要求の対象のデータボリューム70が共有状態であるか否かを判定する。具体的には、鍵処理モジュール91は、制御メモリ50のボリューム管理テーブル200の状態205が「共有」であるか否かを判定する。データライト要求の対象のデータボリューム70がVol#0である場合、非共有状態であると判定され、そのデータボリューム70がVol#1である場合、共有状態であると判定される。
【0062】
ステップS325において、データライト要求の対象のデータボリューム70が非共有状態であると判定された場合、そのデータボリューム70は他のストレージ制御部15からアクセスされない。この場合、通常処理に戻る。
【0063】
一方、ステップS325において、データライト要求の対象のデータボリューム70が共有状態であると判定された場合、そのデータボリューム70は他のストレージ制御部15からアクセスされる。この場合、ステップS315でデータ暗号化に用いた暗号鍵Key1を他のストレージ制御部と共有する必要があるため、以下のステップが実行される。
【0064】
まず、ステップS330において、鍵処理モジュール91が暗号鍵Key1を鍵暗号用鍵KeyKで暗号化し、暗号鍵Key2を生成する。なお、本実施の形態では、鍵暗号用鍵KeyKはストレージ制御部内で生成される。
【0065】
次に、ステップS335において、暗号鍵書き込みモジュール93は、制御メモリ50のボリューム管理テーブル200を参照し、鍵管理ボリューム75(図2の例ではVol#n)に暗号鍵Key2を格納する。その後、通常処理が実行される。
【0066】
図4は、本発明の第1の実施の形態において、ホストコンピュータ10からのデータリード要求に対してストレージ制御部15が実行する処理を示すフローチャートである。
【0067】
図4において、図3と同様の部分については、詳細な説明を省略する。
【0068】
最初のステップS400では、I/O処理モジュール89が、ホストコンピュータ10からデータリード要求を受信したか否かを判定する。
【0069】
ステップS400においてデータリード要求を受信していないと判定された場合、通常処理が実行される。
【0070】
ステップS400においてデータリード要求を受信したと判定された場合、I/O処理モジュール89は、受信した要求の内容を参照して、どのボリュームに対する読み出しか、どのくらいのデータ長か、及び、キャッシュメモリ45上に要求されたデータが存在するか否か、等を判定する。
【0071】
次に、鍵処理モジュール91は、データリード要求の対象のデータボリューム70が共有状態であるか否かを判定する(S405)。具体的には、鍵処理モジュール91は、図3のステップS325と同様、制御メモリ50のボリューム管理テーブル200を参照する。その結果、そのデータボリューム70が共有状態であると判定された場合はステップS435へ、非共有状態であると判定された場合はステップS410へと進む。
【0072】
データリード要求の対象のデータボリューム70が非共有状態である場合、そのデータボリューム70は他のストレージ制御部15からアクセスされないため、暗号鍵を共有する必要がない。したがって、そのデータボリューム70の暗号鍵は、そのデータボリューム70にアクセスするストレージ制御部15内で管理される。よって、ステップS410では、鍵処理モジュール91が制御メモリ50のボリューム管理テーブル200からそのデータボリューム70の暗号鍵を読み出し、メモリ35に格納する。
【0073】
一方、データリード要求の対象のデータボリューム70が共有状態である場合、そのデータボリューム70は他のストレージ制御部からもアクセスされるため、複数のストレージ制御部15が暗号鍵を共有する必要がある。この場合、データリード要求を受信したストレージ制御部15で管理されているそのデータボリューム70の暗号鍵では正しく復号化されない可能性がある。このため、鍵取得モジュール99は、制御メモリ50のボリューム管理テーブル200を参照して、鍵管理ボリューム75(図2の例ではVol#n)から暗号化された暗号鍵(図3の例ではKey2)を読み出す(S435)。そして、鍵取得モジュール99は、読み出された暗号鍵Key2を、データリード要求の対象のデータボリューム70の暗号鍵204として、制御メモリ50に一旦格納する。
【0074】
鍵処理モジュール91は、ステップS435で登録された暗号鍵Key2を読み出し、鍵暗号用鍵を用いて暗号鍵Key2を元の暗号鍵Key1に復号化し、その暗号鍵Key1を再び制御メモリ50に格納する(S440)。具体的には、Key1が、データリード要求の対象のデータボリューム70に対応する暗号鍵204として、ボリューム管理テーブル200に登録される。
【0075】
なお、本実施の形態では、鍵管理ボリューム75から読み出された暗号鍵(Key2)及びその暗号鍵を鍵暗号用鍵を用いて復号化することによって取得された暗号鍵(Key1)が、ボリューム管理テーブル200に登録される。しかし、これらの暗号鍵は、ボリューム管理テーブル200に登録されなくてもよい。例えば、Key1を用いてデータボリューム70のデータが復号化された後、Key1及びKey2が制御メモリ50から削除されてもよい。この場合、暗号鍵が必要となるたびに、その暗号鍵が鍵管理ボリューム75から読み出され、その暗号鍵が鍵暗号用鍵を用いて復号化される。
【0076】
このように、暗号鍵をストレージ制御部15に残さないことによって、データの漏洩を防ぐことができる場合がある(詳細には、図8及び図9参照)。
【0077】
ステップS410又はステップS440が実行されると、I/O処理モジュール95は、次に、データリード要求の対象のデータを記憶装置20内の対象のデータボリューム70から読み出す(S420)。なお、要求されたデータがキャッシュメモリ45上に存在する場合、I/O処理モジュール95は、そのデータをキャッシュメモリ45から読み出す。
【0078】
次に、暗号処理モジュール87は、ステップS410又はS440で取得した暗号鍵を用いて、読み出されたデータを復号化する(S425)。
【0079】
次に、I/O処理モジュール89は、復号化されたデータをホストコンピュータ10に送信する(S430)。その後、通常処理が実行される。
【0080】
次に、本発明の第2の実施の形態について、図5A、図5B及び図6を参照して説明する。
【0081】
図5Aは、本発明の第2の実施の形態の計算機システムの構成を示すブロック図である。
【0082】
図5Aに示す計算機システムは、管理端末500がネットワーク502を介してストレージ制御部15に接続されている点、及び、管理端末500と通信するインタフェースを備える管理I/F525をストレージ制御部15が備えている点において図1Aに示す計算機システムと異なる。以下、図5Aと図1Aの相違点について説明する。図5Aと図1Aの共通点については説明を省略する。
【0083】
管理端末500は、ストレージシステムの構成変更、状態監視、及び、障害情報の収集を行う計算機である。本実施の形態の管理端末500は、相互に接続されたプロセッサ504、メモリ506及び管理I/F508を備える。
【0084】
プロセッサ504は、メモリ506に格納されたプログラムを実行することによって、管理端末500の機能を実現する。
【0085】
メモリ506は、プロセッサ504によって実行されるプログラム等を格納する。メモリ506については、後で説明する(図5B参照)。
【0086】
管理I/F508は、ネットワーク502に接続され、ネットワーク502を介してストレージ制御部15と通信するインタフェースである。
【0087】
一方、ストレージ制御部15の管理I/F525は、ネットワーク502に接続され、ネットワーク502を介して管理端末500と通信するインタフェースである。
【0088】
図5Bは、本発明の第2の実施の形態の管理端末500が備えるメモリ506の説明図である。
【0089】
メモリ506には、鍵生成モジュール510、通知モジュール515、鍵配信モジュール520及びボリューム管理テーブル522が格納される。なお、鍵生成モジュール510、通知モジュール515及び鍵配信モジュール520は、プロセッサ504によって実行されるプログラムである。
【0090】
鍵生成モジュール510は、ストレージ制御部15の暗号鍵書き込みモジュール93が記憶装置20の鍵管理ボリュームに暗号鍵を格納する際に用いる鍵暗号用鍵を生成する。
【0091】
鍵配信モジュール520は、鍵生成モジュール510が生成した鍵暗号用鍵をストレージ制御部へ配信する。
【0092】
ところで、鍵暗号用鍵をストレージ制御部15に配信する際に、ただ配信するだけではセキュリティの観点から望ましくない。それは、配信する必要のないストレージ制御部15に配信してしまうと、そのストレージ制御部15からデータが漏洩する可能性があるためである。このため、管理端末500のメモリ506には、ボリューム管理テーブル522が格納される。ボリューム管理テーブル522の内容は、ボリューム管理テーブル200と同様である。鍵配信モジュール520は、ボリューム管理テーブル522を参照して、適切なストレージ制御部15に鍵暗号用鍵を配信する。
【0093】
具体的には、鍵配信モジュール520は、アクセス許可ストレージ制御部202として登録されているストレージ制御部15に鍵暗号用鍵を配信(送信)する。例えば、ボリューム管理テーブル522の内容が図2ボリューム管理テーブル200と同じである場合、鍵配信モジュール520は、Vol#0に使用される鍵暗号用鍵をストレージ制御部15Aに配信し、Vol#1に使用される鍵暗号用鍵をストレージ制御部15A及び15Bに配信する。
【0094】
図6は、本発明の第2の実施の形態において管理端末500が鍵暗号用鍵を配信する処理の説明図である。
【0095】
図6は、図2で示したボリューム管理テーブル200のVol#0を例として説明する。図2において、ストレージ制御部15AのみがVol#0に対するアクセスを許可されている。このため、Vol#0の状態205は「非共有」となっている。ここで、新たにストレージ制御部15BがVol#0へのアクセスを許可され、Vol#0の状態205が「共有」になった場合について説明する。なお、図6において、既にアクセスを許可されていたストレージ制御部15Aを「既メンバ」、新たにアクセスを許可されるストレージ制御部15Bを「新メンバ」と記載する。
【0096】
なお、以下の説明において、管理端末500が実行する処理(管理端末500の各モジュールが実行する処理を含む)は、実際にはプロセッサ504によって実行される。また、ストレージ制御部15が実行する処理(ストレージ制御部15の各モジュールが実行する処理を含む)は、実際にはプロセッサ30又はプロセッサ60によって実行される。
【0097】
最初に、新メンバのストレージ制御部15BのI/O処理モジュール89は、ストレージ制御部15Bの構成情報を管理端末500に送信する(S605)。このとき送信される構成情報には、ストレージ制御部15Bがデータ暗号化機能を備えるという情報が含まれる。
【0098】
管理端末500は、新メンバのストレージ制御部15Bがデータ暗号化機能を備えているか否かを判定する(S600)。この判定のために、管理端末500は、ステップS605において送信された構成情報を参照する。
【0099】
ステップS600において、ストレージ制御部15Bがデータ暗号化機能を備えていないと判定された場合、何もせずに通常処理に戻る。
【0100】
一方、ステップS600において、ストレージ制御部15Bがデータ暗号化機能を備えていると判定された場合、鍵生成モジュール510が鍵暗号用鍵を生成する(S610)。
【0101】
次に、鍵配信モジュール520が、鍵生成モジュール510が生成した鍵暗号用鍵をストレージ制御部15Bに配信(送信)する(S615)。このとき、鍵配信モジュール520は、管理端末500のボリューム管理テーブル522を更新する。
【0102】
ストレージ制御部15Bの管理I/F525は、管理端末500から鍵暗号用鍵を受信する。暗号鍵書き込みモジュール93は、受信した鍵暗号用鍵を制御メモリ50に格納する(S625)。
【0103】
通知モジュール520は、Vol#0にアクセスするストレージ制御部15Bが追加されたこと、及び、鍵暗号用鍵が生成されたことを、ストレージ制御部15Aに対して通知する(S620)。このとき、鍵配信モジュール520は、生成された鍵暗号用鍵をストレージ制御部15Aにも送信する。
【0104】
鍵処理モジュール91は、ステップS620の通知を受信すると、受信した鍵暗号用鍵を用いて、Vol#0のデータに用いられる暗号鍵を暗号化する(S630)。
【0105】
次に、暗号鍵書き込みモジュール93が、暗号化された暗号鍵を、ボリューム管理テーブル200に基づいて鍵管理ボリューム75に格納する(S635)。
【0106】
その後、ホストコンピュータ10からデータライト要求又はデータリード要求を受信したストレージ制御部15は、図3又は図4に示す処理を実行する。例えば、データリード要求を受信したストレージ制御部15Bは、鍵管理ボリューム75から暗号化された暗号鍵を取得し(S640)、その暗号鍵を、鍵暗号用鍵を用いて復号化する(S645)。ステップS640及びS645は、それぞれ、図4のステップS435及びS440に相当する。
【0107】
このように、データボリューム70の暗号鍵を鍵管理ボリューム75に格納することによって、複数のストレージ制御部15がその暗号鍵を共有することができる。鍵管理ボリューム75に格納された暗号鍵は鍵暗号用鍵によって暗号化されており、その鍵暗号用鍵はデータボリューム70へのアクセスを許可されたストレージ制御部15のみに配信されるため、その暗号鍵が不正に使用されることによるデータの漏洩が防止される。
【0108】
次に、データボリューム70に対するストレージ制御部15のアクセスが禁止された場合に実行される処理について説明する。データボリューム70に対するアクセスを許可されていたストレージ制御部15が、ある時点をもってそのデータボリューム70へのアクセスを禁止されたとしても、そのデータボリューム70の暗号鍵自体がそのストレージ制御部15に残っていれば、その暗号鍵を使用してデータボリューム70のデータが復号化され、そのデータが外部に不正に漏洩する可能性がある。あるいは、そのデータボリューム70の暗号鍵が残っていなくても、その暗号鍵に使用される鍵暗号用鍵が残っていれば、鍵管理ボリューム75から暗号鍵が読み出されることによって、上記と同様にデータが漏洩する可能性がある。このようなデータ漏洩を防ぐ方法について、図7から図9を参照して説明する。
【0109】
図7は、本発明の第2の実施の形態において、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合に実行される処理の説明図である。
【0110】
図7に示す処理によれば、いずれかのストレージ制御部15がデータボリューム70へのアクセスを禁止されたときに、そのアクセスを禁止されたストレージ制御部15からの不正なデータ漏洩を防ぐため、異なる暗号鍵によってデータが再暗号化される。ストレージ制御部15等の構成は、図5A等に示す通りである。
【0111】
図7は、ボリューム管理テーブル200のVol#1を例として、アクセス許可ストレージ制御部202からストレージ制御部15Bを除外する場合(言い換えると、ストレージ制御部15Bに対して、それまで許可されていたVol#1へのアクセスを禁止する場合)について説明する。なお、以下の例では、図7の処理が開始された時点で、ボリューム管理テーブル522にボリューム管理テーブル200と同一の内容が登録されている。
【0112】
最初に、管理端末500は、ボリューム管理テーブル522において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外し(S700)、通知モジュール515が、除外したことの通知をストレージ制御部15Aに送信する(S705)。ストレージ制御部15A以外にVol#1へのアクセスを許可されているストレージ制御部15が存在する場合、そのストレージ制御部15にも上記の通知が送信される。
【0113】
ストレージ制御部15Aは、ステップS700と同様に、ボリューム管理テーブル200を更新する。具体的には、ストレージ制御部15Aは、ボリューム管理テーブル200において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する(S710)。
【0114】
ところで、ストレージ制御部15Bのボリューム管理テーブル200には、Vol#1に対応する暗号鍵204が残っている。このため、この暗号鍵が不正に使用されて、外部に不正にデータが漏洩する可能性がある。そこで、図7に示す処理では、Vol#1のデータのための暗号鍵が新たに生成され、その新しい暗号鍵でVol#1のデータが再暗号化される。これによって、ストレージ制御部15Bに残っている暗号鍵を用いてVol#1のデータを復号化しても、正常に復号化することができなくなる。すなわち、ストレージ制御部15Bに残っている暗号鍵によって外部に不正にデータが漏洩する可能性がなくなる。
【0115】
具体的には、ストレージ制御部15AのI/O処理モジュール89がVol#1のデータを記憶装置20(又はキャッシュメモリ40)から読み出し、そのデータを暗号処理モジュール87が現在の暗号鍵で復号化する(S712)。
【0116】
次に、暗号処理モジュール87が新たな暗号鍵を生成し、その新たな暗号鍵を用いてVol#1のデータを再び暗号化し、暗号化されたデータをI/O処理モジュール95がVol#1に格納する(S715)。
【0117】
その後、除外されたストレージ制御部15BがVol#1のデータを読み出した(S720)としても、ストレージ制御部15Bが持つ旧暗号鍵で復号化すると(S725)、復号化されたデータは、意味のない文字列となる。すなわち、ストレージ制御部15Bは、Vol#1のデータを正常に復号化することができない。
【0118】
このように、図7に示す処理を実行することによって、アクセスを禁止されたストレージ制御部15に残された暗号鍵によってデータが漏洩することが防止される。しかし、図7に示す処理によれば、データボリューム70に格納されたデータを全て復号化した後、新たな暗号鍵で再び暗号化する必要がある。このため、多大な処理時間及びハードウェア資源を消費することが予想される。そこで、より簡易な方法でデータの漏洩を防ぐ方法について、図8及び図9を参照して説明する。なお、図8及び図9の処理は、図4のステップS440において暗号鍵がボリューム管理テーブル200に登録されないことを前提としている。
【0119】
図8は、本発明の第2の実施の形態において、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合に実行される別の処理の説明図である。
【0120】
図7に示す処理と異なり、図8に示す処理によれば、ストレージ制御部15がデータボリューム70に対するアクセスを禁止されたとき、そのストレージ制御部15からの不正なデータ漏洩を防ぐため、管理端末500の鍵生成モジュール510が鍵暗号用鍵を再生成することによって、鍵暗号用鍵が変更される。ストレージ制御部15等の構成は、図5A等に示す通りである。
【0121】
図8は、図7と同様、ボリューム管理テーブル200のVol#1を例として、アクセス許可ストレージ制御部202からストレージ制御部15Bを除外する場合について説明する。
【0122】
最初に、管理端末500は、ボリューム管理テーブル522において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する(S800)。
【0123】
次に、鍵生成モジュール510がVol#1の鍵暗号用鍵を新たに生成する(S805)。
【0124】
そして、鍵配信モジュール520が新たに生成された鍵暗号用鍵をストレージ制御部15Aに送信する(S810)。ストレージ制御部15A以外にVol#1へのアクセスを許可されているストレージ制御部15が存在する場合、そのストレージ制御部15にも新たに生成された鍵暗号用鍵が送信される。
【0125】
ストレージ制御部15Aは、管理端末500から送信された鍵暗号用鍵を制御メモリ50に格納(S815)する。以下、図8の説明において、管理端末500から送信された鍵暗号用鍵を新鍵暗号用鍵、新鍵暗号用鍵が送信される前に使用されていた鍵暗号用鍵を旧鍵暗号用鍵と記載する。
【0126】
次に、ストレージ制御部15Aは、ステップS800と同様に、ボリューム管理テーブル200を更新する。具体的には、ストレージ制御部15Aは、ボリューム管理テーブル200において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する(S820)。
【0127】
次に、鍵処理モジュール91が、旧鍵暗号用鍵を用いて、Vol#1に使用される暗号鍵を復号化し、その暗号鍵を、新鍵暗号用鍵を用いて暗号化する(S822)。さらに、ステップS822において、暗号鍵書き込みモジュール93が、暗号化された暗号鍵をボリューム管理テーブル200に基づいて鍵管理ボリューム75に格納する。ボリューム管理テーブル200が図2に示す通りである場合、Vol#nが鍵管理ボリューム75である。このため、暗号鍵書き込みモジュール93は、暗号化された暗号鍵をVol#nに格納する。
【0128】
その後、除外されたストレージ制御部15Bは、Vol#1からデータを読み出し(S825)、さらに、Vol#1に使用される暗号鍵をVol#nから読み出すことができる。しかし、ストレージ制御部15Bは、Vol#1のための新暗号鍵を持っていないため、読み出された暗号鍵を正常に復号化することができない。すなわち、ストレージ制御部15Bが、Vol#nから読み出された暗号鍵を旧鍵暗号用鍵で復号化し(S830)、その復号化された暗号鍵を用いてVol#1のデータを復号化した場合、復号化されたデータは、意味のない文字列となる。結局、ストレージ制御部15Bは、Vol#1のデータを正常に復号化することができない。
【0129】
このように、鍵暗号用鍵を変更することによって、データボリューム70のデータを新たな暗号鍵によって暗号化しなくても、除外されたストレージ制御部15に残された暗号鍵によってデータが漏洩することを防ぐことができる。
【0130】
図9は、本発明の第2の実施の形態において、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合に実行される別の処理の説明図である。
【0131】
図7又は図8に示す処理と異なり、図9に示す処理によれば、ストレージ制御部15がデータボリューム70に対するアクセスを禁止されたとき、そのストレージ制御部15からの不正なデータ漏洩を防ぐため、鍵管理ボリューム75に格納された暗号鍵が別の鍵管理ボリューム75に移動される。ストレージ制御部15等の構成は、図5A等に示す通りである。
【0132】
図9は、図7及び図8と同様、ボリューム管理テーブル200のVol#1を例として、アクセス許可ストレージ制御部202からストレージ制御部15Bを除外する場合について説明する。
【0133】
最初に、管理端末500は、ボリューム管理テーブル522において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する(S900)。
【0134】
次に、管理端末500は、鍵管理ボリューム75の論理的な場所を変更する(S905)。具体的には、記憶装置20が複数の鍵管理ボリューム75を含む場合、管理端末500は、暗号鍵を別の鍵管理ボリューム75に移動することを決定してもよい。この決定に従って移動が実行された場合、暗号鍵は、移動先の鍵管理ボリューム75に新たに格納され、移動元の鍵管理ボリューム75から削除される。
【0135】
以下の説明において、移動先の鍵管理ボリューム75(すなわち、変更後の鍵管理ボリューム75)を「新鍵管理ボリューム75」、移動元の鍵管理ボリューム75(すなわち、変更前の鍵管理ボリューム75)を「旧鍵管理ボリューム75」と記載する。
【0136】
次に、通知モジュール515が、新鍵管理ボリューム75のボリューム番号201の通知をストレージ制御部15Aに送信する(S910)。例えば、暗号鍵がVol#nからVol#mに移動した場合、「m」が送信される。
【0137】
なお、ストレージ制御部15A以外にVol#1へのアクセスを許可されているストレージ制御部15が存在する場合、そのストレージ制御部15にも上記の通知が送信される。
【0138】
ストレージ制御部15Aは、ステップS900と同様に、ボリューム管理テーブル200を更新する(S915)。具体的には、ストレージ制御部15Aは、ボリューム管理テーブル200において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する。
【0139】
例えば、ストレージ制御部15Aが使用する暗号鍵がVol#nからVol#m(図示省略)に移動する場合、ストレージ制御部15Aのボリューム管理テーブル200において、Vol#nに対応するアクセス許可ストレージ制御部202から「15A」が削除される。ここで、mはn以外の自然数である。さらに、Vol#mに対応するアクセス許可ストレージ制御部202に「15A」が登録され、Vol#mに対応する状態205に「鍵格納」が登録される。
【0140】
次に、ステップS915の変更に伴い、ストレージ制御部15Aは、旧鍵管理ボリューム75(上記の例ではVol#n)に格納されている暗号鍵を新鍵管理ボリューム75(上記の例ではVol#m)へ移動する(S917)。具体的には、ストレージ制御部15Aは、Vol#1に対応する暗号鍵を旧鍵管理ボリューム75から削除し、新鍵管理ボリューム75に新たに格納する。
【0141】
その後も、除外されたストレージ制御部15Bは、旧鍵管理ボリューム75にアクセスすることができる(S920)。しかし、旧鍵管理ボリューム75からはVol#1の暗号鍵が削除されているため、ストレージ制御部15Bは、Vol#1の暗号鍵を取得することができない。ストレージ制御部15Bは、新鍵管理ボリュームのボリューム番号201を通知されていないため、新鍵管理ボリューム75にアクセスして暗号鍵を取得することもできない。これは、ストレージ制御部15BがVol#1のデータを正常に復号化することが出来ないことを意味する。
【0142】
このように、暗号鍵を別の鍵管理ボリューム75に移動することによって、データボリューム70のデータを新たな暗号鍵によって暗号化しなくても、除外されたストレージ制御部15に残された暗号鍵によってデータが漏洩することを防ぐことができる。
【0143】
上記の図9の処理によれば、Vol#1に対応する暗号鍵は、Vol#nからVol#mに移動する。一方、Vol#0に対応する暗号鍵は移動しないため、引き続きVol#nに格納される。このように、図9の処理によれば、異なる鍵管理ボリューム75(例えば、Vol#n及びVol#m)に、それぞれ、異なるデータボリューム70(例えば、Vol#0及びVol#1)に使用される暗号鍵が格納される場合がある。
【0144】
上記の図9では、鍵管理ボリューム75に格納された暗号鍵が別の鍵管理ボリューム75に移動するが、データボリューム70に格納されたデータが別のデータボリューム70に移動してもよい。以下、データを移動する処理について、ボリューム管理テーブル200のVol#1を例として、アクセス許可ストレージ制御部202からストレージ制御部15Bを除外する場合について説明する。
【0145】
図10は、本発明の第2の実施の形態において、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合に実行される別の処理の説明図である。
【0146】
最初に、管理端末500は、ボリューム管理テーブル522において、Vol#1に対応するアクセス許可ストレージ制御部202から「15B」を除外する(S1000)。
【0147】
次に、管理端末500は、データボリューム70の論理的な場所を変更する(S1005)。具体的には、例えば、管理端末500が記憶装置20に新たなデータボリューム70としてVol#2(図示省略)の作成を指示し、さらに、Vol#1に格納されたデータをVol#2に移動することを指示する。このようにしてデータボリューム70の論理的な場所が変更された結果、変更後のVol#2には変更前のVol#1に格納されていたデータが格納され、変更後のVol#1は空になる。空になったVol#1には新たに別のデータが格納されてもよいが、そのデータは、変更前のデータとは異なる暗号鍵で暗号化される。
【0148】
次に、通知モジュール515が、変更後のデータボリューム70の論理的な位置に関する通知をストレージ制御部15Aに送信する(S1010)。上記の例では、変更後のVol#2のボリューム番号201の値「2」が送信される。
【0149】
ストレージ制御部15Aは、上記の通知を受信すると、ボリューム管理テーブル200を更新する(S1015)。具体的には、ストレージ制御部15Aは、ボリューム管理テーブル200において、ボリューム番号201の値「1」に対応して登録されていたアクセス許可ストレージ制御部202、アクセス許可ホストコンピュータ203、暗号鍵204及び状態205の値を更新してボリューム番号201の値「2」に対応して登録する。
【0150】
図2の例では、ボリューム番号201の値「2」(図示省略)に対応するアクセス許可ストレージ制御部202、アクセス許可ホストコンピュータ203、暗号鍵204及び状態205として、それぞれ、「15A」、「10A、10B」、「ababababababababab」、「非共有」が登録される。さらに、ストレージ制御部15Aは、鍵管理ボリューム75から、Vol#1に対応する暗号鍵を削除する。具体的には、暗号鍵書き込みモジュール93がVol#1の暗号鍵を削除する。このとき、削除するのではなく、例えばゼロクリア、又は、全く関係の値を書き込んでもよい。
【0151】
さらに、ストレージ制御部15Aは、変更前のデータボリューム70について登録されていた暗号鍵をボリューム管理テーブル200から削除する。図2の例では、ボリューム番号201の値「1」に対応する暗号鍵204の値「ababababababababab」が削除される。
【0152】
以後、ストレージ制御部15Aは、ホスト10A等からデータボリューム70への読み出し要求を受信すると、変更後のデータボリューム70(例えば、Vol#2)からデータを読み出して、そのデータをボリューム管理テーブル200に登録された暗号鍵(例えば、「ababababababababab」)を用いて復号化する。その結果、ストレージ制御部15Aは、正常なデータを取得する。
【0153】
一方、ストレージ制御部15Bは、データが移動したことを通知されていない。このため、ストレージ制御部15Bは、ホスト10A等からデータボリューム70への読み出し要求を受信すると、変更前のデータボリューム70(例えば、Vol#1)からデータを読み出す(S1020)。しかし、Vol#1から読み出されたデータは、変更前の暗号鍵(例えば、「ababababababababab」)と対応しないため、復号化されたVol#1のデータは意味のないものとなる。
【0154】
また、ストレージ制御部15Bのボリューム管理テーブル200は更新されていない。すなわち、ストレージ制御部15Bのボリューム管理テーブル200には、変更後のデータボリューム70(例えば、Vol#2)のデータを復号化するために必要な暗号鍵(例えば、「ababababababababab」)が登録されていない。このため、仮にストレージ制御部15BがVol#2を対象とした読み出し要求を受信した場合、ストレージ制御部15BはVol#2のデータを正常に復号化することができない。
【0155】
このようにして、除外されたストレージ制御部15に残された暗号鍵によってデータが漏洩することを防ぐことができる。
【0156】
なお、本発明は上記の各実施の形態に限定されるものではなく、例えば、以下のようなことも可能である。
【0157】
上記の各実施の形態において、データ及び暗号鍵の暗号処理は、ホストI/F制御部25によって実行されていたが、最終的に記憶装置20上で暗号化されれば、ストレージ制御部15内の他の部分が暗号処理を実行してもよい。例えば、ディスクI/F制御部55が暗号処理を実行する場合、メモリ35上の暗号処理モジュール87及び鍵処理モジュール91がメモリ65に格納されていれば、上記の実施の形態を実現することができる。また、SW40が暗号処理を実行する場合、SW40上がプロセッサ(図示省略)及びメモリ(図示省略)を備え、そのメモリに暗号処理モジュール87及び鍵処理モジュール91が格納されていれば、上記の実施の形態を実現することができる。
【0158】
各実施の形態において、暗号鍵は、ホストコンピュータが発行したデータライト要求やデータリード要求の内容を元に生成されてもよい。
【0159】
各実施の形態において、ストレージ制御部15と記憶装置20は、ネットワークによって接続されてもよい。
【0160】
各実施の形態において、プログラムによって実現されていた機能の一部がハードウェアによって実現されてもよく、逆に、ハードウェアで実現されていた機能の一部がソフトウェアによって実現されてもよい。
【0161】
各実施の形態において、データを暗号化する鍵(暗号鍵)と復号化する鍵(復号鍵)を異なるものとしてもよい。例えば、いわゆる公開鍵を暗号鍵、いわゆる秘密鍵を復号鍵としてもよい。その場合、例えば、図2で示したボリューム管理テーブルに、「暗号鍵204」に加えて「復号鍵(図示省略)」を登録し、各々を管理することによって上記の実施の形態を実現することができる。
【0162】
各実施の形態において、同一の暗号処理モジュールがデータの暗号処理と暗号鍵の暗号処理を実行しても良い。
【0163】
以上の本発明の第1及び第2の実施の形態によれば、データボリューム70のデータを復号化するために使用される暗号鍵を鍵管理ボリューム75に格納することによって、複数のストレージ制御部15がその暗号鍵を共有することができる。その結果、複数のストレージ制御部15が一つのデータボリューム70へのアクセスを許可されている環境において、データを書き込んだストレージ制御部とデータを読み出したストレージ制御部とが異なる場合であっても、データを正しく復号化することができる。鍵管理ボリューム75に格納された暗号鍵は鍵暗号用鍵によって暗号化されており、その鍵暗号用鍵はデータボリューム70へのアクセスを許可されたストレージ制御部15のみに配信される。このため、鍵管理ボリューム75に格納された暗号鍵を不正に使用することによるデータの漏洩が防止される。
【0164】
また、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合、そのデータボリューム70のデータが新たな暗号鍵によって暗号化される。その結果、アクセスを禁止されたストレージ制御部15に残された暗号鍵によってデータが漏洩することが防止される。
【0165】
あるいは、ストレージ制御部15がデータボリューム70へのアクセスを禁止された場合、鍵暗号用鍵が変更され、又は、鍵暗号用鍵の格納場所が変更される。その結果、データが漏洩することが防止される。
【図面の簡単な説明】
【0166】
【図1A】本発明の第1の実施の形態の計算機システムの構成を示すブロック図である。
【図1B】本発明の第1の実施の形態のホストI/F制御部が備えるメモリの説明図である。
【図1C】本発明の第1の実施の形態のディスクI/F制御部が備えるメモリの説明図である。
【図2】本発明の第1の実施の形態のボリューム管理テーブルの一例を示す説明図である。
【図3】本発明の第1の実施の形態において、ホストコンピュータからのデータライト要求に対してストレージ制御部が実行する処理を示すフローチャートである。
【図4】本発明の第1の実施の形態において、ホストコンピュータからのデータリード要求に対してストレージ制御部が実行する処理を示すフローチャートである。
【図5A】本発明の第2の実施の形態の計算機システムの構成を示すブロック図である。
【図5B】本発明の第2の実施の形態の管理端末が備えるメモリの説明図である。
【図6】本発明の第2の実施の形態において管理端末が鍵暗号用鍵を配信する処理の説明図である。
【図7】本発明の第2の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される処理の説明図である。
【図8】本発明の第2の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【図9】本発明の第2の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【図10】本発明の第2の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【符号の説明】
【0167】
10A、10B ホストコンピュータ
15A、15B ストレージ制御部
20 記憶装置
25 ホストI/F制御部
30、60、101、504 プロセッサ
35、65、102、506 メモリ
40 SW
45 キャッシュメモリ
50 制御メモリ
55 ディスクI/F制御部
70 データボリューム
75 鍵管理ボリューム
87 暗号処理モジュール
89 I/O処理モジュール
91 鍵処理モジュール
93 暗号鍵書き込みモジュール
95 I/O処理モジュール
97 暗号鍵書き込みモジュール
99 鍵取得モジュール
103 インタフェース(I/F)
200、522 ボリューム管理テーブル
500 管理端末
502 ネットワーク
510 鍵生成モジュール
515 通知モジュール
520 鍵配信モジュール
525 管理I/F

【特許請求の範囲】
【請求項1】
一つ以上のホスト計算機と、前記ホスト計算機と第1ネットワークを介して接続される複数のストレージ制御装置と、を備える計算機システムにおいて、
前記ホスト計算機は、前記第1ネットワークに接続される第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第2プロセッサと、前記第2プロセッサに接続される一つ以上の第2メモリと、を備え、
前記第2プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第1暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータ及び当該第1暗号鍵を前記記憶装置に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記記憶装置から前記暗号化されたデータ及び前記第1暗号鍵を読み出し、
当該読み出された第1暗号鍵を用いて当該暗号化されたデータを復号化することを特徴とする計算機システム。
【請求項2】
前記第2プロセッサは、
第2暗号鍵を用いて前記第1暗号鍵を暗号化し、
当該暗号化された第1暗号鍵を前記記憶装置に格納し、
前記記憶装置から読み出された前記第1暗号鍵を、前記第2暗号鍵を用いて復号化し、
前記復号化された第1暗号鍵を用いて前記暗号化されたデータを復号化することを特徴とする請求項1に記載の計算機システム。
【請求項3】
前記記憶装置は、前記データを格納する複数のデータ記憶領域と、前記第1暗号鍵を格納する複数の鍵管理領域と、を含み、
前記各鍵管理領域は、それぞれ、異なる前記データ記憶領域に用いられる前記第1暗号鍵を格納することを特徴とする請求項1に記載の計算機システム。
【請求項4】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第3プロセッサは、前記第2暗号鍵を生成し、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報に基づいて、生成した前記第2暗号鍵を前記ストレージ制御装置に送信し、
少なくとも一つの前記ストレージ制御装置の前記第2プロセッサは、前記送信された第2暗号鍵を用いて前記第1暗号鍵を暗号化することを特徴とする請求項2に記載の計算機システム。
【請求項5】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置の前記第2プロセッサは、前記第2暗号鍵を用いて復号化された前記第1暗号鍵を用いて当該データ記憶領域のデータを復号化し、当該第1暗号鍵と異なる新たな第1暗号鍵を生成し、当該新たな第1暗号鍵を用いて前記復号化されたデータを暗号化することを特徴とする請求項2に記載の計算機システム。
【請求項6】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記第3プロセッサは、新たな前記第2暗号鍵を生成し、当該新たな第2暗号鍵を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置に送信し、
当該第2ストレージ制御装置の前記第2プロセッサは、当該新たな第2暗号鍵を用いて前記第1暗号鍵を暗号化することを特徴とする請求項2に記載の計算機システム。
【請求項7】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する複数の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記第3プロセッサは、当該データ記憶領域のために用いられる前記第1暗号鍵が格納される前記鍵管理領域を変更し、当該変更後の鍵管理領域を識別する情報を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置に送信し、
当該第2ストレージ制御装置の前記第2プロセッサは、当該第1暗号鍵を、当該変更後の鍵管理領域に移動することを特徴とする請求項2に記載の計算機システム。
【請求項8】
ホスト計算機と第1ネットワークを介して接続されるストレージ制御装置において、
前記ホスト計算機は、前記第1ネットワークに接続される第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第2プロセッサと、前記第2プロセッサに接続される一つ以上の第2メモリと、を備え、
前記第2プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第1暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータ及び当該第1暗号鍵を前記記憶装置に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記記憶装置から前記暗号化されたデータ及び前記第1暗号鍵を読み出し、
当該読み出された第1暗号鍵を用いて当該暗号化されたデータを復号化することを特徴とするストレージ制御装置。
【請求項9】
前記第2プロセッサは、
第2暗号鍵を用いて前記第1暗号鍵を暗号化し、
当該暗号化された第1暗号鍵を前記記憶装置に格納し、
前記記憶装置から読み出された前記第1暗号鍵を、前記第2暗号鍵を用いて復号化し、
前記復号化された第1暗号鍵を用いて前記暗号化されたデータを復号化することを特徴とする請求項8に記載のストレージ制御装置。
【請求項10】
前記記憶装置は、前記データを格納する複数のデータ記憶領域と、前記第1暗号鍵を格納する複数の鍵管理領域と、を含み、
前記第2プロセッサは、前記各鍵管理領域に、それぞれ、異なる前記データ記憶領域に用いられる前記第1暗号鍵を格納することを特徴とする請求項8に記載のストレージ制御装置。
【請求項11】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第2プロセッサは、前記管理計算機から送信された前記第2暗号鍵を用いて前記第1暗号鍵を暗号化することを特徴とする請求項9に記載のストレージ制御装置。
【請求項12】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置の前記第2プロセッサは、前記第2暗号鍵を用いて復号化された前記第1暗号鍵を用いて当該データ記憶領域のデータを復号化し、当該第1暗号鍵と異なる新たな第1暗号鍵を生成し、当該新たな第1暗号鍵を用いて前記復号化されたデータを暗号化することを特徴とする請求項9に記載のストレージ制御装置。
【請求項13】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置の前記第2プロセッサは、第2暗号鍵を用いて前記第1暗号鍵を復号化し、前記管理計算機から送信された新たな第2暗号鍵を用いて当該第1暗号鍵を暗号化することを特徴とする請求項9に記載のストレージ制御装置。
【請求項14】
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第1暗号鍵を格納する複数の鍵管理領域と、を含み、
前記ストレージ制御装置には、第2ネットワークを介して管理計算機が接続され、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置の前記第2プロセッサは、当該データ記憶領域のために用いられる第1暗号鍵を、前記管理計算機から送信された識別情報に該当する鍵管理領域に移動することを特徴とする請求項9に記載のストレージ制御装置。
【請求項15】
一つ以上のホスト計算機と、前記ホスト計算機と第1ネットワークを介して接続される複数のストレージ制御装置と、を備える計算機システムを管理する管理計算機において、
前記ホスト計算機は、前記第1ネットワークに接続される第1インタフェースと、前記第1インタフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第2プロセッサと、前記第2プロセッサに接続される一つ以上の第2メモリと、を備え、
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域を含み、
前記管理計算機は、前記第2ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記第3メモリは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスを許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第3プロセッサは、前記データ記憶領域に格納されたデータを復号化するための第1暗号鍵を暗号化するための第2暗号鍵を生成し、当該生成された前記第2暗号鍵を、当該データ記憶領域へのアクセスを許可された前記ストレージ制御装置に送信することを特徴とする管理計算機。
【請求項16】
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記第3プロセッサは、新たな前記第2暗号鍵を生成し、当該新たな第2暗号鍵を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置に送信することを特徴とする請求項15に記載の管理計算機。
【請求項17】
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第1ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記第3プロセッサは、当該データ記憶領域のために用いられる前記第1暗号鍵が格納される前記鍵管理領域を変更し、当該変更後の鍵管理領域を識別する情報を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第2ストレージ制御装置に送信することを特徴とする請求項15に記載の管理計算機。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−157049(P2007−157049A)
【公開日】平成19年6月21日(2007.6.21)
【国際特許分類】
【出願番号】特願2005−354806(P2005−354806)
【出願日】平成17年12月8日(2005.12.8)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】