(57)【要約】【課題】本発明の記憶制御装置は、ホストと記憶制御装置とで暗号処理がそれぞれ実行されるのを防止して、ホストや記憶制御装置の性能が低下するのを抑制する。【解決手段】ユーザは、上位装置６からのデータの種類（暗号データか平文データか）やデータの重要度等を考慮して、各記憶装置４の暗号化に関する属性を予め設定する。ユーザの運用ポリシーは、設定部５を介して、設定情報管理部２Ｄに登録される。上位装置５から受信したデータが暗号データの場合、記憶制御装置１は暗号処理を行わずに、そのまま記憶装置４に記憶させる。受信データが平文データの場合、記憶制御装置１は暗号処理を行って暗号データに変換し、記憶装置４に記憶させる。【選択図】図１
2008077366.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からの要求に応じてデータを読み書きする記憶制御装置であって、
前記上位装置から受信したデータを記憶するための記憶装置と、
前記記憶装置へのデータ入出力を制御するためのコントローラとを備え、
前記コントローラは、
前記上位装置から受信した前記データの暗号化に関する設定情報を管理するための設定情報管理部と、
前記設定情報管理部により管理されている前記設定情報に基づいて、前記上位装置から受信した前記データを暗号化して前記記憶装置に記憶させるか否かを決定するための暗号化制御部と、
前記暗号化制御部により前記データの暗号化が決定された場合には、当該データを暗号化する暗号処理部と、
を備えた記憶制御装置。
【請求項２】
前記記憶装置は、一つまたは複数の物理的な記憶ドライブの有する物理的な記憶領域上に設けられた論理的記憶装置として構成される請求項１に記載の記憶制御装置。
【請求項３】
前記上位装置は、当該上位装置の内部でデータを暗号化してから前記コントローラに送信する暗号化機能を備えている請求項１に記載の記憶制御装置。
【請求項４】
前記上位装置は複数設けられており、当該上位装置の内部でデータを暗号化してから前記コントローラに送信する暗号化機能を備えた上位装置と、前記暗号化機能を備えていない上位装置とが混在する請求項１に記載の記憶制御装置。
【請求項５】
前記暗号化制御部は、前記上位装置から受信した前記データが暗号化されているか否かを判別する判別機能を備えている請求項１に記載の記憶制御装置。
【請求項６】
前記暗号化制御部は、前記上位装置から受信した前記データを解析することにより、当該データが暗号化されているか否かを判別する判別機能を備えており、前記上位装置から受信した前記データが既に暗号化されている場合は、当該データをそのまま前記記憶装置に記憶させ、前記上位装置から受信した前記データが暗号化されていない場合は、当該データを前記暗号処理部によって暗号化してから前記記憶装置に記憶させる請求項１に記載の記憶制御装置。
【請求項７】
前記設定情報管理部より管理される前記設定情報には、暗号化対象の情報が含まれている請求項１に記載の記憶制御装置。
【請求項８】
前記暗号化対象は、前記上位装置単位である請求項７に記載の記憶制御装置。
【請求項９】
前記暗号化対象は、前記上位装置に設けられているアプリケーションプログラム単位である請求項７に記載の記憶制御装置。
【請求項１０】
前記暗号化対象は、前記上位装置に設けられているオペレーティングシステム単位である請求項７に記載の記憶制御装置。
【請求項１１】
前記設定情報管理部により管理される前記設定情報には、前記暗号処理部による暗号化を実行する暗号化対象の情報と、当該暗号化対象に関して前記暗号処理部による暗号化を行うか否かを指定する指定情報とが含まれており、前記暗号化対象の情報及び前記指定情報は、ユーザによって設定可能となっている請求項１に記載の記憶制御装置。
【請求項１２】
前記設定情報管理部により管理される前記設定情報の内容を変更するための設定部が前記コントローラに接続されている請求項１１に記載の記憶制御装置。
【請求項１３】
前記記憶装置内に設けられている制御部は、入力されたデータを暗号化するための暗号化回路を備えており、
前記暗号処理部は、前記記憶装置内の前記暗号化回路を用いて、前記上位装置から受信した前記データを暗号化させる請求項１に記載の記憶制御装置。
【請求項１４】
前記記憶装置には、入力されたデータを暗号化するための暗号化回路を備える記憶装置と前記暗号化回路を備えない記憶装置とが混在して設けられており、
前記コントローラは、前記上位装置から受信した前記データの書込先として指定された記憶装置が前記暗号化回路を備えていない場合には、前記暗号化回路を備えている別の記憶装置を書込先として選択し、
前記暗号処理部は、前記別の記憶装置の前記暗号化回路を用いて、前記上位装置から受信した前記データを暗号化させる請求項１に記載の記憶制御装置。
【請求項１５】
前記記憶装置には、入力されたデータを暗号化するための暗号化回路を備える記憶装置と前記暗号化回路を備えない記憶装置とが混在して設けられており、
前記コントローラは、前記上位装置から受信した前記データの書込先として指定された記憶装置が前記暗号化回路を備えていない場合には、前記上位装置から受信した前記データを前記暗号処理部によって暗号化し、前記指定された記憶装置に記憶させ、
前記指定された記憶装置が前記暗号化回路を備えている場合には、前記暗号処理部は、前記指定された記憶装置の有する前記暗号化回路を用いて、前記上位装置から受信したデータを暗号化させる請求項１に記載の記憶制御装置。
【請求項１６】
前記コントローラは、ファイルの管理を行うためのファイル管理部を備えており、
前記ファイル管理部は、前記上位装置から受信した前記データをファイル単位で暗号化するファイル暗号化制御部を備え、
前記ファイル暗号化制御部は、前記設定情報管理部により管理されている前記設定情報に基づいて、前記上位装置から受信した前記データを前記ファイル単位で暗号化し、前記記憶装置に記憶させる請求項１に記載の記憶制御装置。
【請求項１７】
前記コントローラは、他の記憶制御装置にも接続されており、
前記記憶装置に記憶されているデータを前記他の記憶制御装置に転送する場合、前記記憶装置に記憶されている前記データが暗号化されているときは、当該データを復号化することなくそのまま前記他の記憶制御装置に転送させ、前記記憶装置に記憶されている前記データが暗号化されていないときは、当該データを暗号化してから前記他の記憶制御装置に転送させる請求項１に記載の記憶制御装置。
【請求項１８】
上位装置及び管理端末とそれぞれ接続された記憶制御装置であって、
前記上位装置から受信したデータを記憶するための記憶装置と、
前記記憶装置へのデータ入出力を制御するためのコントローラとを備え、
前記コントローラは、
前記上位装置との間の通信を制御するための上位通信部と、
前記記憶装置との間の通信を制御するための下位通信部と、
前記管理端末を介して予め設定されたデータの暗号化に関する設定情報を管理するための管理テーブルと、
前記管理テーブルにより管理されている前記設定情報に基づいて、前記上位装置から前記上位通信部を介して受信したデータを暗号化するか否かを決定し、かつ、前記上位装置から要求されたデータを復号化するか否かを決定するための暗号化制御部と、
前記暗号化制御部により前記データの暗号化が決定された場合には、当該データを暗号化する暗号処理部と、
前記暗号化制御部により前記データの復号化が決定された場合には、当該データを復号化する復号処理部と、
を備えた記憶制御装置。
【請求項１９】
上位装置からの要求に応じてデータを読み書きする記憶制御装置内の暗号化機能を制御する方法であって、
データの暗号化を行う暗号化対象を管理テーブルに予め登録するステップと、
前記上位装置からデータを受信するステップと、
前記管理テーブルを用いることにより、前記上位装置から受信した前記データが前記暗号化対象に関わるデータであるか否かを判定するステップと、
前記上位装置から受信した前記データが前記暗号化対象に関わるデータであると判定された場合には、当該データの暗号化を決定するステップと、
前記暗号化が決定されたデータを暗号化するステップと、
前記暗号化されたデータを記憶装置に記憶させるステップと、
前記上位装置から受信した前記データが前記暗号化対象に関わらないデータであると判定された場合には、当該データをそのまま前記記憶装置に記憶させるステップと、
を備えた記憶制御装置の暗号化機能制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置の暗号化機能を制御する方法に関する。
【背景技術】
【０００２】
企業等の組織では、多量のデータを管理するために、ホストコンピュータ（以下「ホスト」）とは別に構成された記憶制御装置を用いている。このような記憶制御装置は、例えば、ハードディスクドライブ等の記憶装置を多数内蔵しており、大容量の記憶領域をホストに提供する。
【０００３】
記憶制御装置には、例えば、個人の住所及び氏名等の個人情報や信用状態に関する情報等のような各種の重要な情報が記憶される。従って、重要情報を秘密に管理して、不正なアクセス等を防止するための技術が求められている。
【０００４】
データを保護するために、暗号化技術を用いる場合がある。ホストの内部でデータを暗号化して、この暗号化されたデータを記憶制御装置に送信して記憶させることにより、暗号化されたデータの第三者による不正な使用を防止することができる。
【０００５】
しかし、ホストの内部でデータを暗号化すると、ホストのデータ処理負荷が大きくなってしまい、ホスト上で動作しているアプリケーションプログラムの性能等にも悪影響を与えることになる。そこで、記憶制御装置の内部でデータの暗号化を行うことができるようにした技術が提案されている（特許文献１）。
【特許文献１】特開２００５−３２２２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前記文献に記載の従来技術では、ホストとの通信を制御するチャネルインターフェースの内部において、ホストに接続されるホストインターフェースと転送制御部との間に暗号処理部を設ける。ホストから受信したデータは、暗号処理部によって暗号化されてから、ハードディスクドライブに書き込まれる。従来技術では、データの暗号化を記憶制御装置の内部で行うことにより、ホストの処理負荷を軽減可能である。しかし、従来技術では、ホストから受信したデータの全てを画一的に記憶制御装置内で暗号化する。従って、ホスト内で既に暗号化されているデータを受信した場合でも、この暗号化されたデータについて記憶制御装置内で再び暗号化が行われてしまう。つまり、ホストと記憶制御装置のそれぞれで暗号化するためのデータ処理が実行されるため、ストレージシステム全体としてみると、重複した無駄な暗号化が行われることになる。
【０００７】
既にホスト内で暗号化されているデータを記憶制御装置内で再度暗号化することは、記憶制御装置の性能低下を招く。暗号化のためのデータ処理を行うことにより、記憶制御装置のデータ処理負荷が増大するため、応答性能等が低下する。さらに、ホストが、記憶制御装置内で暗号化されたデータの読出しを記憶制御装置に要求した場合、記憶制御装置は、暗号化されたデータを復号化してからホストに送信しなければならない。従って、従来技術では、ホストからライトコマンドを発行された場合及びリードコマンドを発行された場合の双方について、記憶制御装置の性能低下を招く可能性がある。
【０００８】
ホストに搭載されるOS（Operating System）やアプリケーションプログラムには、暗号化機能を備えるものと備えないものとが混在している可能性がある。一方のOSやアプリケーションプログラムはデータを暗号化して記憶制御装置に送信することができるが、他方のOSやアプリケーションプログラムはデータを暗号化するための機能を備えていない場合がある。
【０００９】
従って、複数のホストによって共有される記憶制御装置の場合は、従来技術のように、ホストやOS等の種類を問わずに、記憶制御装置内で一律にデータを暗号化する方が、フェイルセーフであるとも言える。しかし、ホストがデータを暗号化するための機能を備えている場合、上述のように、重複した暗号化が記憶制御装置内で実行されるため、ホスト及び記憶制御装置のデータ処理負荷が無駄に増大し、ホストや記憶制御装置の性能低下を招く可能性があり、ユーザの使い勝手が低下する。
【００１０】
そこで、本発明の目的は、上位装置から受信したデータを必要に応じて個別的に暗号化することにより、無駄な暗号化が行われるのを防止して、性能低下を抑制できるようにした記憶制御装置及び記憶制御装置の暗号化機能制御方法を提供することにある。本発明の他の目的は、ユーザが暗号化の対象となるデータを予め設定することにより、使い勝手と安全性とを両立できるようにした記憶制御装置及び記憶制御装置の暗号化機能制御方法を提供することにある。本発明のさらなる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１１】
上記課題を解決すべく、本発明の一つの観点に従う記憶制御装置は、上位装置からの要求に応じてデータを読み書きする記憶制御装置であって、上位装置から受信したデータを記憶するための記憶装置と、記憶装置へのデータ入出力を制御するためのコントローラとを備え、コントローラは、上位装置から受信したデータの暗号化に関する設定情報を管理するための設定情報管理部と、設定情報管理部により管理されている設定情報に基づいて、上位装置から受信したデータを暗号化して記憶装置に記憶させるか否かを決定するための暗号化制御部と、暗号化制御部によりデータの暗号化が決定された場合には、当該データを暗号化する暗号処理部と、を備える。
【００１２】
本発明の実施形態では、記憶装置は、一つまたは複数の物理的な記憶ドライブの有する物理的な記憶領域上に設けられた論理的記憶装置として構成される。
【００１３】
本発明の実施形態では、上位装置は、当該上位装置の内部でデータを暗号化してからコントローラに送信する暗号化機能を備えている。
【００１４】
本発明の実施形態では、上位装置は複数設けられており、当該上位装置の内部でデータを暗号化してからコントローラに送信する暗号化機能を備えた上位装置と、暗号化機能を備えていない上位装置とが混在する。
【００１５】
本発明の実施形態では、暗号化制御部は、上位装置から受信したデータが暗号化されているか否かを判別する判別機能を備えている。
【００１６】
本発明の実施形態では、暗号化制御部は、上位装置から受信したデータを解析することにより、当該データが暗号化されているか否かを判別する判別機能を備えており、上位装置から受信したデータが既に暗号化されている場合は、当該データをそのまま記憶装置に記憶させ、上位装置から受信したデータが暗号化されていない場合は、当該データを暗号処理部によって暗号化してから記憶装置に記憶させる。
【００１７】
本発明の実施形態では、設定情報管理部より管理される設定情報には、暗号化対象の情報が含まれている。
【００１８】
本発明の実施形態では、暗号化対象は、上位装置単位である。
【００１９】
本発明の実施形態では、暗号化対象は、上位装置に設けられているアプリケーションプログラム単位である。
【００２０】
本発明の実施形態では、暗号化対象は、上位装置に設けられているオペレーティングシステム単位である。
【００２１】
本発明の実施形態では、設定情報管理部により管理される設定情報には、暗号処理部による暗号化を実行する暗号化対象の情報と、当該暗号化対象に関して暗号処理部による暗号化を行うか否かを指定する指定情報とが含まれており、暗号化対象の情報及び指定情報は、ユーザによって設定可能となっている。
【００２２】
本発明の実施形態では、設定情報管理部により管理される設定情報の内容を変更するための設定部がコントローラに接続されている。
【００２３】
本発明の実施形態では、記憶装置内に設けられている制御部は、入力されたデータを暗号化するための暗号化回路を備えており、暗号処理部は、記憶装置内の暗号化回路を用いて、上位装置から受信したデータを暗号化させる。
【００２４】
本発明の実施形態では、記憶装置には、入力されたデータを暗号化するための暗号化回路を備える記憶装置と暗号化回路を備えない記憶装置とが混在して設けられており、コントローラは、上位装置から受信したデータの書込先として指定された記憶装置が暗号化回路を備えていない場合には、暗号化回路を備えている別の記憶装置を書込先として選択し、暗号処理部は、別の記憶装置の暗号化回路を用いて、上位装置から受信したデータを暗号化させる。
【００２５】
本発明の実施形態では、記憶装置には、入力されたデータを暗号化するための暗号化回路を備える記憶装置と暗号化回路を備えない記憶装置とが混在して設けられており、コントローラは、上位装置から受信したデータの書込先として指定された記憶装置が暗号化回路を備えていない場合には、上位装置から受信したデータを暗号処理部によって暗号化し、指定された記憶装置に記憶させ、指定された記憶装置が暗号化回路を備えている場合には、暗号処理部は、指定された記憶装置の有する暗号化回路を用いて、上位装置から受信したデータを暗号化させる。
【００２６】
本発明の実施形態では、コントローラは、ファイルの管理を行うためのファイル管理部を備えており、ファイル管理部は、上位装置から受信したデータをファイル単位で暗号化するファイル暗号化制御部を備え、ファイル暗号化制御部は、設定情報管理部により管理されている設定情報に基づいて、上位装置から受信したデータをファイル単位で暗号化し、記憶装置に記憶させる。
【００２７】
本発明の実施形態では、コントローラは、他の記憶制御装置にも接続されており、記憶装置に記憶されているデータを他の記憶制御装置に転送する場合、記憶装置に記憶されているデータが暗号化されているときは、当該データを復号化することなくそのまま他の記憶制御装置に転送させ、記憶装置に記憶されているデータが暗号化されていないときは、当該データを暗号化してから他の記憶制御装置に転送させる。
【００２８】
本発明の他の観点に従う、上位装置及び管理端末とそれぞれ接続された記憶制御装置は、上位装置から受信したデータを記憶するための記憶装置と、記憶装置へのデータ入出力を制御するためのコントローラとを備え、コントローラは、上位装置との間の通信を制御するための上位通信部と、記憶装置との間の通信を制御するための下位通信部と、管理端末を介して予め設定されたデータの暗号化に関する設定情報を管理するための管理テーブルと、管理テーブルにより管理されている設定情報に基づいて、上位装置から上位通信部を介して受信したデータを暗号化するか否かを決定し、かつ、上位装置から要求されたデータを復号化するか否かを決定するための暗号化制御部と、暗号化制御部によりデータの暗号化が決定された場合には、当該データを暗号化する暗号処理部と、暗号化制御部によりデータの復号化が決定された場合には、当該データを復号化する復号処理部と、を備える。
【００２９】
本発明のさらに別の観点に従う、上位装置からの要求に応じてデータを読み書きする記憶制御装置内の暗号化機能を制御する方法は、データの暗号化を行う暗号化対象を管理テーブルに予め登録するステップと、上位装置からデータを受信するステップと、管理テーブルを用いることにより、上位装置から受信したデータが暗号化対象に関わるデータであるか否かを判定するステップと、上位装置から受信したデータが暗号化対象に関わるデータであると判定された場合には、当該データの暗号化を決定するステップと、暗号化が決定されたデータを暗号化するステップと、暗号化されたデータを記憶装置に記憶させるステップと、上位装置から受信したデータが暗号化対象に関わらないデータであると判定された場合には、当該データをそのまま記憶装置に記憶させるステップと、を備える。
【００３０】
本発明の構成要素は、その全部または一部をコンピュータプログラムとして構成できる場合がある。このコンピュータプログラムは、記録媒体に固定して譲渡等することができるほかに、インターネット等の通信ネットワークを介して伝送することもできる。
【発明を実施するための最良の形態】
【００３１】
以下、図面に基づき、本発明の実施の形態を説明する。図１は、本実施形態の全体概念を示す説明図である。本実施形態のストレージシステムは、それぞれ後述するように、例えば、少なくとも一つの記憶制御装置１と、少なくとも一つの上位装置６と、少なくとも一つの設定部５を備えている。
【００３２】
上位装置６について説明する。説明の都合上、図１には上位装置６を一つだけ示しているが、実際には複数の上位装置６を記憶制御装置１に接続できる。上位装置６は、例えば、サーバコンピュータやメインフレームマシン等のようなコンピュータ装置として構成される。上位装置６は、後述する実施例のホスト５００に対応する。上位装置６は、データを暗号化する機能を備えている。以下の説明では、暗号化されたデータを暗号データと、暗号化されていない通常のデータを通常データまたは平文データ（plain data）と、表現する場合がある。データの暗号化機能は、例えば、OSが備えている場合がある。あるいは、上位装置６上で動作するアプリケーションプログラムがデータ暗号化機能を備えている場合もある。さらに、上位装置６内に設けられた専用の暗号化装置あるいは上位装置６に接続された専用の暗号化装置で、データの暗号化が行われる場合もある。
【００３３】
上位装置６は、例えば、SAN（Storage Area Network）やインターネット等の通信ネットワークを介して、記憶制御装置１に接続されている。なお、SANの場合、例えば、FCP（Fibre Channel Protocol）、iSCSI（internet Small Computer System Interface）等の技術を用いることができる。
【００３４】
記憶制御装置１の構成を説明する。記憶制御装置１は、後述する実施例の記憶制御装置１００に対応する。記憶制御装置１は、例えば、コントローラ２及び記憶装置搭載部３とを備えて構成される。
【００３５】
コントローラ２は、記憶制御装置１の全体動作を制御するものである。コントローラ２は、上位装置６から受信したライトコマンドに応じて、上位装置６から受信したデータを記憶装置４に書き込ませる。また、コントローラ２は、上位装置６から受信したリードコマンドに応じて、上位装置６から要求されたデータを記憶装置４から読出し、読み出したデータを上位装置６に送信する。以下の説明では、上位装置６から書込みを要求されたデータをライトデータと、上位装置６から読出しを要求されたデータをリードデータと、表現する場合がある。そして、後述のように、コントローラ２は、必要に応じて、ライトデータを暗号化して記憶装置４に書き込ませたり、記憶装置４から読み出した暗号データを復号化して平文データに変換することもできる。
【００３６】
コントローラ２は、例えば、上位通信部２Ａと、下位通信部２Ｂと、暗号化制御部２Ｃと、設定情報管理部２Ｄと、暗号処理部２Ｅ及び復号処理部２Ｆとを備えて構成することができる。
【００３７】
上位通信部２Ａは、上位装置６との間の通信を制御するものである。下位通信部２Ｂは、記憶装置搭載部３の有する各記憶装置４との間の通信を制御するものである。上位通信部２Ａ及び下位通信部２Ｂは、それぞれ固有のプロセッサ及びローカルメモリを備えたコンピュータ装置として構成することができる。
【００３８】
暗号化制御部２Ｃは、記憶制御装置１００内で実施される暗号化及び復号化をそれぞれ制御するものである。暗号化制御部２Ｃは、設定情報管理部２Ｄに記憶されている設定情報に基づいて、上位装置６から受信したライトデータを暗号化するか否か、及び、記憶装置４から読み出したリードデータを復号化するか否かを、それぞれ決定する。
【００３９】
設定情報管理部２Ｄは、暗号化に関する設定情報を記憶し、管理する。設定情報は、記憶制御装置１にLAN（Local Area Network）等を介して接続された設定部５から登録することができる。ユーザは、ストレージシステムの運用ポリシー等に基づいて、どのようなデータを暗号化するか等について予め定めておくことができる。ユーザは、設定部５を用いることにより、運用ポリシーの反映された設定情報を設定情報管理部２Ｄに予め記憶させることができる。設定情報には、例えば、暗号化を行う対象の単位、記憶制御装置１内で暗号化を行うか否かの指定、データを暗号化した場合の記憶先アドレス等を含めることができる。
【００４０】
暗号処理部２Ｅは、暗号化制御部２Ｃによって暗号化が必要であると判定されたデータを暗号化するものである。復号処理部２Ｆは、暗号化制御部２Ｃによって復号化が必要であると判定されたデータを復号化するものである。
【００４１】
記憶装置搭載部３は、複数の記憶装置４を備えている。記憶装置搭載部３は、コントローラ２と同一の筐体内に設けられる場合もあるし、または、コントローラ２とは別の筐体内に設けられる場合もある。
【００４２】
記憶装置４は、例えば、書換可能な不揮発性の記憶装置として構成される。記憶装置４としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々の記憶装置を利用可能である。
【００４３】
記憶装置４としてハードディスクデバイスを用いる場合、例えば、FC（Fibre Channel）ディスク、SCSI（Small Computer System Interface）ディスク、SATAディスク、ATA（AT Attachment）ディスク、SAS（Serial Attached SCSI）ディスク等の種々のハードディスクデバイスを用いることができる。
【００４４】
記憶装置４として半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM（Ferroelectric Random Access Memory）、MRAM（Magnetoresistive Random Access Memory）、相変化メモリ（Ovonic Unified Memory）、RRAM（Resistance RAM）」等の種々のメモリデバイスを利用可能である。
【００４５】
記憶装置４は、暗号化及び復号化を行うことができる制御回路４Ａを備えている。図１中では、暗号処理及び復号処理をそれぞれ実行可能な回路として、制御回路４Ａを示してある。つまり、図１に示す記憶装置搭載部３には、暗号処理等の可能な制御回路４Ａを有する記憶装置４（＃１，＃２）と、制御回路４Ａを有していない記憶装置４（＃３）とが混在して設けられている。記憶装置４（＃３）には、暗号処理及び復号処理の機能を備えない通常の制御回路が設けられている（不図示）。
【００４６】
記憶装置４には、平文データまたは暗号データが記憶される。左側に示す一つの記憶装置４（＃１）は、暗号データを記憶するための暗号化記憶領域として使用されており、暗号データのみが記憶されている。右側に示す他の一つの記憶装置４（＃３）は、平文データを記憶するための非暗号化記憶領域（または、通常記憶領域と表現してもよい。）として使用されており、平文データのみが記憶されている。真ん中に示す別の一つの記憶装置４（＃２）は、暗号データ及び平文データの両方を記憶する混在記憶領域として使用されている。
【００４７】
なお、図１中では、３つの記憶装置４を示しているが、実際には、各記憶装置４は、それぞれ一つまたは複数の物理的な記憶装置から構成される。後述の実施例で述べるように、複数の物理的な記憶装置の有する記憶領域を仮想化し、この仮想化された物理領域（RAIDグループ）に論理的な記憶領域（論理ボリューム）を設けることができる。図１中の記憶装置４は、論理ボリュームを示している。
【００４８】
次に、設定情報を設定する方法について説明する。第１の例として、上位装置６から送信される全てのデータが上位装置６内で暗号化されている場合、記憶制御装置１内で重複した暗号化を行う必要はない。既に暗号化されているデータをさらに暗号化することは、記憶制御装置１の性能低下を招く可能性がある。
【００４９】
この場合、ユーザは、暗号化機能を備えた上位装置６について、この上位装置６により利用されている記憶装置４を、非暗号化記憶領域として設定する。これにより、非暗号化領域に設定された記憶装置４には、上位装置６から受信した暗号データがそのまま記憶される。図１中に符号Ｒ３で示すように、上位装置６から受信した暗号データは、そのまま記憶装置４に転送される。上位装置６が、非暗号化領域に設定された記憶装置４からのデータ読出しを要求した場合、記憶制御装置１は、その記憶装置４に記憶されている暗号データを読み出して、上位装置６に送信する。暗号データの復号化は、上位装置６内で行われる。
【００５０】
第１の例の場合、データを暗号化する処理は、上位装置６でのみ実行される。従って、上位装置６からは暗号データが送信されるため、通信経路上で暗号データが盗聴されて不正に使用される可能性を大幅に低減することができ、さらに、記憶制御装置１の性能低下を防止することができる。
【００５１】
第２の例として、上位装置６内で暗号化が行われず、平文データが送信される場合を検討する。ユーザが、セキュリティ性の向上を希望する場合、その平文データを送信する上位装置６により使用されている記憶装置４を、暗号化記憶領域として設定する。暗号化記憶領域として設定された記憶装置４には、記憶制御装置１内で暗号化されたデータが書き込まれる。つまり、記憶制御装置１は、上位装置６から受信した平文データを記憶制御装置１内で暗号化して、記憶装置４に記憶させる。図１中に符号Ｒ１で示すように、上位装置６から受信されたデータは、暗号処理部２Ｅを介して暗号化された後に、記憶装置４に転送される。なお、暗号処理部２Ｅは、記憶装置４の制御回路４Ａの有する暗号化機能を制御することもできる。これにより、暗号処理部２Ｅは、制御回路４Ａによってデータを暗号化させることができ、コントローラ２の負担を軽減させることもできる。上位装置６がデータの読出しを要求した場合、記憶制御装置１は、記憶装置４から暗号データを読み出し、読み出した暗号データを記憶制御装置１内で復号化する。そして、記憶制御装置１は、平文データを上位装置６に送信する。
【００５２】
第２の例の場合、上位装置６はデータの暗号化及び復号化を行う必要がないため、上位装置６の負荷を軽減することができる。さらに、記憶制御装置１は、上位装置６から受信した平文データを記憶制御装置１の内部で暗号化して記憶するため、セキュリティ性を保持することができる。
【００５３】
但し、第２の例の場合、通信経路上の平文データが第三者に盗聴されるのを防止するために、上位装置６と記憶制御装置１との間で、例えば、”IP Security”等のセキュリティ機能を有する通信プロトコルを使用するのが好ましい。もしも、上位装置６と記憶制御装置１とが直接的に接続されており、インターネット等のような不特定多数のユーザで共用される通信ネットワークから分離されている場合、セキュリティ機能を備えない通信プロトコルを用いて、上位装置６から記憶制御装置１に平文データを送信してもよい。
【００５４】
第３の例として、第２の例において、ユーザがセキュリティ性の向上を希望しない場合を検討する。即ち、ユーザが、上位装置６から送信される平文データを暗号化して記憶制御装置１内に保存する必要性が無いと判断した場合である。この場合、その上位装置６により使用される記憶装置４は、非暗号化記憶領域として設定される。これにより、上位装置６から受信した平文データは、平文データのままで記憶装置４に書き込まれる。
【００５５】
第３の例の場合、上位装置６及び記憶制御装置１の性能低下を防止できる。重要度の低いデータについては、平文データとして上位装置６から記憶制御装置１に送信し、平文データのままで記憶制御装置１内に保存することにより、ストレージシステムの負担を軽減することができる。
【００５６】
第４の例として、第１の例において、ユーザが、より一層のセキュリティ性向上を希望する場合を検討する。この場合、ユーザは、暗号データを送信する上位装置６により使用されている記憶装置４を、暗号化記憶領域に設定する。これにより、記憶制御装置１は、上位装置６から受信した暗号データを、記憶制御装置１内部でさらに暗号化し、記憶装置４に記憶させる。
【００５７】
第４の例の場合、上位装置６から送信された暗号データは、記憶制御装置１の内部でも暗号化されて保存される。従って、上位装置６及び記憶制御装置１の負担は増加するが、二重の暗号処理が施されることによりセキュリティ性が向上する。これにより、万が一、上位装置６内で使用される暗号鍵が第三者に盗まれた場合でも、記憶制御装置１内の二重に暗号化されたデータが不正に読み出されて使用されるのを防止することができる。
【００５８】
なお、上述のように、記憶制御装置１内で暗号化されたデータを上位装置６に送信する場合は、符号Ｒ２で示すように、復号処理部２Ｆによって暗号データを平文データに変換させる。記憶装置４の制御回路４Ａによってデータが暗号化された場合は、制御回路４Ａで暗号データを復号させる。なお、記憶装置４の内部でデータが暗号化された場合でも、その暗号化に使用された暗号鍵を復号処理部２Ｆが取得することにより、復号処理部２Ｆで復号化することもできる。
【００５９】
このように、ユーザは、例えば、上位装置６から送信されるデータの種類（暗号データか平文データか）、データの重要度や価値、セキュリティの強度等を考慮して、各記憶装置４の暗号化に関する属性を予め設定することができる。このようなユーザの運用ポリシーは、コンピュータ装置として構成可能な設定部５を介して、設定情報管理部２Ｄに登録することができる。
【００６０】
暗号化制御部２Ｃ内に、判別部２Ｃ１を設けることもできる。判別部２Ｃ１は、上位装置６から受信したデータが暗号化されているか否かを判別する。例えば、判別部２Ｃ１は、上位装置６から受信したデータの一部（ヘッダ等）を解析することにより、暗号データであるか平文データであるかを判定する。
【００６１】
判別部２Ｃ１によって平文データであると判定された場合、記憶制御装置１は、平文データを暗号化して記憶装置４に記憶させることができる。上位装置６が暗号化機能を備えている場合でも、その暗号化機能は制限されており、一部のファイルを暗号化できないことがある。例えば、システムファイル等のような特定のファイルに関するデータを暗号化できない場合がある。
【００６２】
一部のデータが暗号化されずに平文データとして上位装置６から記憶制御装置１に送信された場合、記憶制御装置１は、この平文データを検出し、暗号化することができる。即ち、前記第１の例では、上位装置６から暗号データが送信されるという前提の下で、その上位装置６により使用される記憶装置４を非暗号化記憶領域に設定する。しかし、上述のように、一部のデータについては、暗号化されずに平文のままで記憶制御装置１に送信される可能性がある。この場合、暗号化されていない平文データは、判別部２Ｃ１により検出される。記憶制御装置１は、検出された平文データを記憶制御装置１内で暗号化し、非暗号化記憶領域として設定された記憶装置４に書き込むことができる。なお、平文データであると検出された場合に、この平文データを暗号化せずにそのまま記憶装置４に書き込むこともできる。
【００６３】
このように構成される本実施形態によれば、データの種別等に応じて適切な暗号化を行うことができ、重複した暗号処理等が行われるのを防止して、記憶制御装置１の性能劣化を抑制できる。また、暗号化に関するユーザの運用ポリシーに基づいて、暗号処理を行うか否かを制御できるため、ユーザの使い勝手も向上する。以下、本実施形態を詳細に説明する。
【実施例１】
【００６４】
図２は、本実施例によるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、記憶制御装置１００と、通信ネットワークを介して記憶制御装置１００に接続されたホスト５００とを備えて構成される。先に図１との対応関係を示すと、記憶制御装置１００は図１中の記憶制御装置１に、ホスト５００は図１中の上位装置６に、管理端末４００は図１中の設定部５に、それぞれ対応する。また、コントローラ２００は図１中のコントローラ２に、記憶装置搭載部３００は図１中の記憶装置搭載部３に、それぞれ対応する。さらに、暗号化判定テーブル２５４は図１中の設定情報管理部２Ｄに、暗号化／復号化判定部２６１は図１中の暗号化制御部２Ｃに、暗号処理部２６２は図１中の暗号処理部２Ｅに、復号処理部２６３は図１中の復号処理部２Ｆに、ホストインターフェース２１０は図１中の上位通信部２Ａに、バックエンドコントローラ２２０は図１中の下位通信部２Ｂに、記憶装置３３０Ａ，３３０Ｂは図１中の記憶装置４に、それぞれ対応する。
【００６５】
ホスト５００の構成を説明する。ホスト５００は、例えば、通信インターフェース（図中「I/F」と略記）５１０と、OS５２０と、アプリケーションプログラム５３０とを備えている。ホスト５００は、通信インターフェースからSAN等の通信ネットワークCNを介して、記憶制御装置１００にアクセスする。アプリケーションプログラム５３０がファイルの操作等のデータ処理を行うと、このデータ処理に応じたコマンドがホスト５００から発行される。コマンドとしては、データの書込みを要求するライトコマンド、データの読出しを要求するリードコマンド等を挙げることができる。
【００６６】
OS５２０，アプリケーションプログラム５３０は、それぞれ暗号化機能を備えている場合と、備えていない場合とがある。暗号化機能を備えているOS５２０やアプリケーションプログラム５３０は、データを暗号化してから記憶制御装置１００に送信することができる。暗号化機能を備えていないOS５２０やアプリケーションプログラム５３０は、暗号化されていない平文データ（通常データ）を記憶制御装置１００に送信する。なお、データを暗号化するための専用の装置をホスト５００に内蔵したり、または、ホスト５００に接続することもできる。
【００６７】
管理端末４００の構成を説明する。管理端末４００は、コンピュータ装置として構成されており、LAN等の通信ネットワークを介して記憶制御装置１００に接続される。管理端末４００は、ストレージ管理ソフトウェア４１０を備えている。ストレージ管理ソフトウェア４１０は、記憶制御装置１００の構成や設定状態等を管理したり、記憶制御装置１００の各種情報を取得して表示させるためのプログラムである。ユーザは、ストレージ管理ソフトウェア４１０が提供する管理画面を操作することにより、暗号化に関する種々の設定を行うことができる。管理画面の一例については図３と共に後述する。
【００６８】
記憶制御装置１００の構成を説明する。記憶制御装置１００は、例えば、コントローラ２００と、記憶装置搭載部３００とに大別される。コントローラ２００は、記憶制御装置１００の動作を制御するものである。記憶装置搭載部３００は、複数の記憶装置３３０Ａ，３３０Ｂを備えている。
【００６９】
コントローラ２００の構成を説明する。コントローラ２００は、例えば、ホストインターフェース２１０と、バックエンドコントローラ２２０と、データ転送制御回路（図中「DCTL」と略記）２３０と、プロセッサ（図中「MPU」と略記）２４０と、キャッシュメモリ２５０と、メモリ２６０と、ブリッジ２７０と、暗号化回路２８０と、LANインターフェース２９０とを備えて構成される。
【００７０】
ホストインターフェース２１０は、ホスト５００との間の通信を制御する。ホスト５００から発行された各種コマンドやデータは、ホストインターフェース２１０によって受信される。記憶装置３３０Ａ，３３０Ｂから読み出されたデータやコマンドの処理完了を告げる通知は、ホストインターフェース２１０からホスト５００に送信される。
【００７１】
バックエンドコントローラ２２０は、各記憶装置３３０Ａ，３３０Ｂとの間の通信を制御する。バックエンドコントローラ２２０は、論理ブロックアドレス（LBA）と記憶装置３３０Ａ，３３０Ｂの物理的なアドレスとの変換操作等を行う。
【００７２】
データ転送制御回路２３０は、コントローラ２００内のデータ転送を制御するための回路である。データ転送制御回路２３０は、ホストインターフェース２１０とキャッシュメモリ２５０との間のデータ転送や、バックエンドコントローラ２２０とキャッシュメモリ２５０との間のデータ転送を制御する。
【００７３】
プロセッサ２４０は、一つまたは複数のプロセッサコアを備えている。プロセッサ２４０は、メモリ２６０に記憶されたプログラムを読み込んで実行することにより、後述する各種の機能をそれぞれ実現する。
【００７４】
キャッシュメモリ２５０は、ホスト５００から受信したデータやホスト５００により読み出されたデータを記憶する。キャッシュメモリ２５０には、ライトデータやリードデータのユーザデータのほかに、記憶制御装置１００内で行われる暗号化に関する各種の情報も記憶されている。暗号化に関する情報とは、暗号鍵２５１，暗号データアドレス管理テーブル２５２，ＬＵ（Logical Unit）管理テーブル２５３，暗号化判定テーブル２５４である。暗号鍵２５１は、記憶制御装置１００内でデータを暗号化したり、暗号化されたデータを平文データに戻すために使用される。テーブル２５２，２５３，２５４については、別図と共に後述する。
【００７５】
メモリ２６０は、プログラムや制御用の情報を記憶するものである。メモリ２６０には、例えば、暗号化／復号化判定部２６１，暗号処理部２６２，復号処理部２６３，暗号鍵生成部２６４，ＬＵ設定部２６５という各種の機能をそれぞれ実現するためのプログラムが記憶される。なお、これら各機能を実現するためのプログラムの全部または一部は、記憶制御装置１００の起動時に、記憶装置３３０Ａ，３３０Ｂからメモリ２６０に転送させるようにしてもよい。
【００７６】
暗号化／復号化判定部２６１は、ホスト５００から受信したライトデータを暗号化するか否か、及び、ホスト５００から要求されたデータを復号化するか否かを判定するための機能である。
【００７７】
暗号処理部２６２は、暗号化／復号化判定部２６１で暗号化が決定されたデータについて、暗号化回路２８０を用いて、暗号処理を行う。同様に、復号処理部２６３は、暗号化／復号化判定部２６１で復号化の決定されたデータについて、暗号化回路２８０を用いて、復号処理を行う。暗号鍵生成部２６４は、暗号処理や復号処理に使用するための暗号鍵を生成する。ＬＵ設定部２６５は、記憶装置３３０Ａ，３３０Ｂを生成したり、記憶装置３３０Ａ，３３０Ｂに暗号化の属性（暗号化記憶領域か非暗号化記憶領域化の区別）を設定したり、記憶装置３３０Ａ，３３０Ｂとホスト５００との接続関係等を設定するための機能である。これらの設定は、ユーザが管理端末４００を介して行う。
【００７８】
ブリッジ２７０は、プロセッサ２４０とメモリ２６０とを接続する。また、プロセッサ２４０は、ブリッジ２７０を介してデータ転送制御回路２３０に接続される。
【００７９】
暗号化回路２８０は、平文データを暗号化したり、暗号データを復号化するための回路である。暗号化回路２８０は、暗号処理部２６２により制御される。暗号化回路２８０は、例えば、図示のように、データ転送制御回路２３０とバックエンドコントローラ２２０との間に設けることができる。これに代えて、例えば、データ転送制御回路２３０とホストインターフェース２１０との間に暗号化回路２８０を設ける構成、または、データ転送制御回路２３０内に暗号化回路２８０を設ける構成でもよい。LANインターフェース２９０は、管理端末４００との通信を行うものである。
【００８０】
記憶装置搭載部３００の構成を説明する。記憶装置搭載部３００は、複数の記憶装置３３０Ａ，３３０Ｂを備えている。一方の記憶装置３３０Ａには、非暗号化記憶領域の属性が設定されており、平文データを記憶する。他方の記憶装置３３０Ｂには、暗号化記憶領域の属性が設定されており、暗号データを記憶する。なお、特に区別する場合を除いて、以下の説明では、記憶装置３３０Ａ，３３０Ｂを記憶装置３３０と表現する。
【００８１】
記憶装置３３０の構成を説明する。まず、一つまたは複数の物理的な記憶装置３１０からRAIDグループ３２０が構成される。以下、論理的な記憶装置３３０との混同を防止するために、物理的な記憶装置３１０をディスクドライブ３１０と表現し、論理的な記憶装置３３０をＬＵまたは論理ボリュームと表現する。また、暗号化記憶領域に設定されているＬＵ３３０を、図中では暗号化ＬＵと表現する場合がある。なお、ディスクドライブ３１０は、例えば、ハードディスクドライブとして構成される。これに限らず、半導体メモリ装置等から構成してもよい。
【００８２】
複数のディスクドライブ３１０がそれぞれ有する物理的な記憶領域をグループ化することにより、RAIDグループ３２０が構築される。このRAIDグループ３２０の記憶領域にＬＵ３３０を設けることができる。
【００８３】
なお、上述のハードウェア構成は一例であって、本発明は上記構成に限定されない。ホスト５００からのコマンドに応じてＬＵ３３０Ａ，３３０Ｂにデータを読み書きすることができ、管理端末４００からの指示に基づいて暗号化に関する設定情報を更新することができ、記憶制御装置１００の内部でデータを暗号化したり復号化することのできる構成を備えていればよい。
【００８４】
図３は、管理端末４００に表示される設定画面Ｇ１の例を示す説明図である。ユーザは、設定画面Ｇ１を呼び出すことにより、暗号化に関する種々の設定を行う。即ち、設定画面Ｇ１は、暗号化判定テーブル２５４及びＬＵ管理テーブル２５３をそれぞれ設定するためのユーザインタフェースとなっている。
【００８５】
設定画面Ｇ１には、例えば、複数の設定項目Ｇ１１〜Ｇ１５と、ボタンＧ１６，Ｇ１７とが含まれている。各設定項目には、それぞれの名称が表示されており、ユーザは、その項目に設定する値を入力または選択する。
【００８６】
ＬＵＮ設定項目Ｇ１１では、設定対象のＬＵ３３０の番号（LUN：Logical Unit Number）を設定する。ホスト設定項目Ｇ１２では、Ｇ１１で設定されたＬＵ３３０に関連づけられるホスト５００の番号を設定する。ここでは、各ホスト５００には、それぞれ識別するための番号が予め設定されているものとする。ホスト番号に代えて、各ホスト５００に予め設定されたニックネーム等を用いてもよい。
【００８７】
暗号化単位設定項目Ｇ１３では、暗号化する対象の単位を設定する。暗号化の単位としては、例えば、ホスト単位、OS単位、アプリケーションプログラム単位等を挙げることができる。図３中の「AP」はアプリケーションプログラムの略である。
【００８８】
RAIDグループ設定項目Ｇ１４では、Ｇ１１で設定されたＬＵ３３０を設けるRAIDグループ３２０の番号を設定する。ユーザは、例えば、RAIDグループ３２０の空き容量やRAIDグループ３２０を構成するディスクドライブ３１０の性能等に基づいて、いずれか一つのRAIDグループ３２０を選択する。暗号化機能の動作設定項目Ｇ１５では、Ｇ１１で設定されたＬＵ３３０を暗号化記憶領域として使用するか否かを設定する。項目Ｇ１５に「ON」を設定すると、Ｇ１１で設定されたＬＵ３３０は暗号化記憶領域として使用される。項目Ｇ１５に「OFF」を設定すると、Ｇ１１で設定されたＬＵ３３０は非暗号化記憶領域として使用される。
【００８９】
各設定項目Ｇ１１〜Ｇ１５について設定を完了した場合、ユーザは、確定ボタンＧ１６を操作する。これにより、各設定項目Ｇ１１〜Ｇ１５で設定された値がテーブル２５３，２５４に反映される。一方、入力した設定値を取り消したい場合、ユーザは、キャンセルボタンＧ１７を操作する。
【００９０】
なお、上述した設定項目を増減させてもよい。即ち、記憶制御装置１００に設定すべき条件に応じて、図３に示す項目以外の項目を追加することもできるし、図３に示す項目から一部を取り除くこともできる。また、グラフィカルユーザインターフェースに代えて、例えば、コマンドラインから設定値を入力するユーザインターフェース等の他のユーザインターフェースを採用してもよい。
【００９１】
図４は、暗号化判定テーブル２５４の例を示す説明図である。
【００９２】
暗号化判定テーブル２５４は、ホスト５００から受領したデータを記憶制御装置１００内で暗号化するか否かを判定するための情報を記憶する。この暗号化判定テーブル２５４は、例えば、ホスト識別情報（ホスト＃）２５４１と、受信データの種別２５４２と、ストレージの暗号化機能の使用の有無２５４３と、暗号化する単位２５４４とを対応付けて管理する。
【００９３】
ホスト識別情報２５４１とは、ストレージシステム内に含まれる各ホスト５００をそれぞれ識別するための情報である。ホスト識別情報としては、例えば、各ホスト５００に予め設定された番号、WWN（World Wide Name）、IPアドレス等を用いる。ストレージシステム内で各ホスト５００を一意に特定できる情報であればよい。
【００９４】
受信データの種別２５４２とは、ホスト５００から受信されるデータが暗号化されているか否かを示す情報である。ホスト５００から受信されるデータが暗号化されている場合は「暗号データ」と設定され、ホスト５００から受信されるデータが暗号化されていない場合は「平文データ」と設定される。なお、ホスト５００から受信されるデータが暗号データであるか否かを判別できれば良い。従って、例えば、暗号データの場合に「１」、平文データの場合に「０」を設定する等のように、任意の値を用いることができる。
【００９５】
ストレージの暗号化機能２５４３とは、記憶制御装置１００が有する暗号化機能を作動させるか否かを示す情報である。図４中では、記憶制御装置１００を「ストレージ」と簡略化して表現している。記憶制御装置１００内でデータの暗号処理を行う場合は、「ON」と設定される。記憶制御装置１００内でデータの暗号処理を行わない場合は、「OFF」と設定される。記憶制御装置１００内の暗号化機能を使用するか否かを判別可能であるなら、任意の値を使用することができる。
【００９６】
暗号化単位２５４４とは、記憶制御装置１００内でデータを暗号化する際の実行単位を示す情報である。暗号化単位は、予め設定されている値の中からユーザが選択する。暗号化単位としては、例えば、「ホスト」、「アプリケーションプログラム」等の値が予め用意されている。暗号化単位として「ホスト」が設定されている場合、記憶制御装置１００は、その設定されたホスト５００から受信した全てのデータを記憶制御装置１００内で暗号化する。暗号化単位として「アプリケーションプログラム」の名称が設定されている場合、記憶制御装置１００は、その設定されたアプリケーションプログラム５３０に関して受信したデータを記憶制御装置１００内で暗号化する。
【００９７】
なお、記憶制御装置１００内で暗号処理を行う単位は、上述した「ホスト」や「アプリケーションプログラム」に限定されない。記憶制御装置１００のコントローラ２００が識別可能な単位であれば良い。例えば、後述の実施例のように、ファイル単位で暗号処理を行うか否かを制御することも可能である。
【００９８】
図５は、ＬＵ管理テーブル２５３の例を示す説明図である。ＬＵ管理テーブル２５３には、各ＬＵ３３０を管理するための情報が記憶される。ＬＵ管理テーブル２５３は、例えば、ホスト識別情報２５３１と、LUN２５３２と、ＬＵ暗号化の有無２５３と、RAIDグループ識別情報２５３４とを対応付けて管理する。
【００９９】
ホスト識別情報２５３１は、上述したホスト識別情報２５４１と同様である。LUN（Logical Unit Number）２５３２とは、ホスト識別情報２５３１で特定されるホスト５００に割り当てられるＬＵ３３０を指定するための情報である。ＬＵ暗号化２５３３とは、LUNで指定されたＬＵ３３０を暗号化記憶領域として使用するか否かを設定するための情報である。「ON」が設定されたＬＵ３３０は、暗号化記憶領域として使用され、このＬＵ３３０を対象とするデータは、記憶制御装置１００内で暗号化されてから、そのＬＵ３３０に書き込まれる。「OFF」が設定されたＬＵ３３０は、非暗号化記憶領域として使用され、そのＬＵ３３０を対象とするデータは、記憶制御装置１００内で暗号化されることなく、受信したときの状態でそのまま記憶される。
【０１００】
RAIDグループ識別情報２５３４とは、LUN２５３２で指定されるＬＵ３３０の属するRAIDグループ３２０を指定する情報である。ユーザは、例えば、RAIDグループ３２０の特性や空き容量等に基づいて好ましいRAIDグループ３２０を選択し、ＬＵ３３０を生成する。生成されたＬＵ３３０は、特定のホスト５００に対応付けられて、そのホスト５００との間の通信経路が定義される。
【０１０１】
このように、ＬＵ管理テーブル２５３は、記憶制御装置１００内の記憶領域について、暗号処理を行う領域（暗号化記憶領域）と、暗号処理を行わない領域（非暗号化記憶領域）とに分けて管理することができる。
【０１０２】
図６は、暗号データアドレス管理テーブル２５２の例を示す説明図である。暗号データアドレス管理テーブル２５２には、記憶制御装置１００内で暗号化されたデータの記憶先を管理するための情報が記憶されている。暗号データアドレス管理テーブル２５２は、例えば、スタートLBA２５２１と、LUN２５２２と、サイズ２５２３と、RAIDグループ２５２４とを対応付けて管理する。
【０１０３】
スタートLBA２５２１とは、暗号データの書き込まれた先頭アドレスを示す情報であり、LBA（Logical Block Address）の値として設定される。LUN２５２２とは、暗号データの書込み先のＬＵ３３０を特定する情報である。サイズ２５２３とは、書き込まれた暗号データのサイズを示す情報である。RAIDグループ２５２４とは、書込先のＬＵ３３０が属するRAIDグループ３２０を示す情報である。
【０１０４】
なお、他のテーブルについても同様であるが、本発明の目的を達成できるのであれば、各テーブルの構成は図示するもの以外の構成でもよい。
【０１０５】
図７は、ホスト５００から発行されたライトコマンドを処理するためのフローチャートを示す。以下の各フローチャートでも同様であるが、各フローチャートは、処理の概要を示すもので、実際のコンピュータプログラムとは相違する場合がある。なお、以下の説明では、ステップを「Ｓ」と略記する。
【０１０６】
記憶制御装置１００は、ホスト５００からライトコマンドを受信すると（Ｓ１０）、キャッシュメモリ２５０にライトデータを記憶させる（Ｓ１１）。そして、記憶制御装置１００は、ライトデータをキャッシュメモリ２５０に記憶させた時点で、ホスト５００にライトコマンドの処理が完了した旨を報告する（Ｓ１２）。
【０１０７】
記憶制御装置１００は、ホスト５００から受信したライトデータを暗号化するか否かについて判断する（Ｓ１３）。この暗号化を行うか否かの判定処理Ｓ１３の詳細は、図９と共に後述する。
【０１０８】
記憶制御装置１００は、Ｓ１３の判定結果に基づいて、ライトデータの暗号化が必要であるか否かを判定する（Ｓ１４）。ライトデータの暗号化が必要であると判定した場合（S14:YES）、記憶制御装置は、暗号処理を実行する（Ｓ１５）。暗号処理の詳細は、図１１と共に後述する。なお、ライトデータをキャッシュメモリ２５０に記憶させるよりも前に、ライトデータを暗号化するか否かについて判断する構成でもよい。即ち、Ｓ１３をＳ１１の前に実行することもできる。
【０１０９】
記憶制御装置１００は、記憶制御装置１００の内部でライトデータを暗号化した後、この暗号化されたライトデータを、書込先のＬＵ３３０を構成するディスクドライブ３１０に記憶させる（Ｓ１６）。
【０１１０】
これに対し、ライトデータの暗号化が不要であると判定した場合（S14:NO）、記憶制御装置１００は、暗号処理を行うことなく、ライトデータを書込先のＬＵ３３０を構成するディスクドライブ３１０に記憶させる。
【０１１１】
なお、ライトデータをディスクドライブ３１０に書き込んだ時点で、ホスト５００にライトコマンドの処理完了を通知する構成でもよい。また、暗号化されたライトデータをディスクドライブ３１０に書き込む処理（ディステージ処理とも呼ばれる）は、記憶制御装置１００の負荷が比較的少ない時期に行うことができる。
【０１１２】
図８は、ホスト５００から発行されたリードコマンドを処理するためのフローチャートである。記憶制御装置１００は、ホスト５００からリードコマンドを受信すると（Ｓ２０）、リード対象のデータを記憶制御装置１００内で復号化する必要があるか否かについて判定する（Ｓ２１）。この復号化が必要か否かを判断するための処理Ｓ２１については、図１２と共に後述する。
【０１１３】
記憶制御装置１００は、ホスト５００から要求されたデータを、読出し先として指定されたＬＵ３３０読み出す（Ｓ２２）。記憶制御装置１００は、Ｓ２１の判定結果に基づいて、読み出されたデータを復号化するか否かを判断する（Ｓ２３）。
【０１１４】
読み出されたデータの復号化が必要であると判定された場合（S23:YES）、記憶制御装置１００は、復号化処理を実行する（Ｓ２４）。復号処理については、図１３と共に後述する。そして、記憶制御装置１００は、復号化されたデータをホスト５００に送信する（Ｓ２５）。
【０１１５】
なお、復号処理の対象は、記憶制御装置１００内で暗号化されたデータである。従って、ホスト５００から読出しを要求されたデータが、ホスト５００及び記憶制御装置１００のそれぞれにおいて暗号化されている場合、記憶制御装置１００内での復号処理を実行しても、依然として暗号データのままである。ホスト５００によって暗号化されたデータは、ホスト５００によって復号化される。
【０１１６】
図９は、暗号化判定処理の第１例を示すフローチャートである。本処理は、図７中のＳ１３に対応する。本処理は、各ホスト５００によって使用されるＬＵ３３０毎に、予め暗号化記憶領域として使用するか否かが決定されている場合に適用される。上述のように、ユーザは、ホスト５００とＬＵ３３０との対応付けに関して、暗号処理を行うか否かを事前に設定することができる。
【０１１７】
記憶制御装置１００は、ライトコマンドに基づいて、ライトデータの書込先アドレスを取得する（Ｓ３０）。記憶制御装置１００は、暗号化判定テーブル２５４から、ライトデータの暗号化に関する設定情報を取得する（Ｓ３１）。続いて、記憶制御装置１００は、ＬＵ管理テーブル２５３から、書込先として指定されたＬＵ３３０の暗号化に関する情報を取得する（Ｓ３２）。さらに、記憶制御装置１００は、ライトコマンドを発行したホスト５００がどのホストであるかを確認する（Ｓ３３）。
【０１１８】
そして、記憶制御装置１００は、Ｓ３１，Ｓ３２，Ｓ３３で得た情報に基づいて、ライトデータを暗号化するか否かを判断し、本処理を終了する（Ｓ３４）。
【０１１９】
具体的には、例えば、ライトコマンドを発行したホスト５００全体について、記憶制御装置１００内の暗号化機能を使用する旨が予め設定されている場合、そのホスト５００から受信したライトデータの暗号化が必要であると判定される。また、例えば、暗号化単位がアプリケーションプログラムの場合、ライトデータを作成したアプリケーションプログラム５３０に関して記憶制御装置１００内で暗号処理を行う旨が事前に設定されているときは、そのライトデータの暗号化が必要であると判定される。さらに、例えば、ライトデータの書込先ＬＵ３３０について、暗号化記憶領域として使用する旨が予め設定されている場合、そのＬＵ３３０に書き込まれるライトデータについては暗号化が必要であると判定される。
【０１２０】
図１０は、暗号化判定処理の第２例を示すフローチャートである。本処理は、図７中のＳ１３に対応する別の例である。本処理では、以下に述べる通り、記憶制御装置１００は、ホスト５００から受信したライトデータが暗号化されているか否かを判別する。
【０１２１】
本処理のＳ４０〜Ｓ４３は、図９中のＳ３０〜Ｓ３３と同一であるため、重複した説明を省略する。本実施例では、記憶制御装置１００は、ライトコマンドの発行元であるホスト５００を確認した後（Ｓ４３）、ライトデータのヘッダ部分を読込み（Ｓ４４）、暗号化されたデータであるか否かを判定する（Ｓ４５）。記憶制御装置１００は、例えば、ヘッダのビット列のパターンを解析等することにより、そのライトデータが暗号化されているか否かを判断する。
【０１２２】
ライトデータが暗号化されていると判定された場合（S45:YES）、記憶制御装置１００は、暗号化フラグをONに設定する（Ｓ４６）。暗号化フラグとは、そのライトデータがホスト５００によって暗号化されているデータであるか否かを示す情報である。暗号化フラグがONに設定されている場合、ライトデータは暗号データであることを示す。暗号化フラグがOFFの場合、ライトデータは平文データであることを示す。
【０１２３】
記憶制御装置１００は、暗号化フラグの値と暗号化判定テーブル２５４の設定内容とに基づいて、ライトデータの暗号化が必要であるか否かを判定する（Ｓ４７）。上述のように、暗号化判定テーブル２５４には、暗号化を行う単位毎に、暗号化するか否かの暗号化に関する運用ポリシーが、ユーザによって予め設定されている。
【０１２４】
例えば、あるホスト（またはアプリケーションプログラム等）について、平文データを受信したときは、記憶制御装置１００内の暗号化機能を使用する旨のポリシーが登録されていると仮定する。この場合、記憶制御装置１００は、受信したライトデータが平文データであると判定すると、そのライトデータの暗号処理が必要であると判定する。受信したライトデータが暗号データであると判定した場合、記憶制御装置１００は、そのライトデータの暗号処理は不要であると判定する。
【０１２５】
図１１は、図７中のＳ１５で示す暗号処理のフローチャートである。記憶制御装置１００は、ライトデータを取得し（Ｓ５０）、さらに、キャッシュメモリ２５０に記憶されている暗号鍵２５１を取得する（Ｓ５１）。記憶制御装置１００は、暗号鍵２５１を用いてライトデータを暗号化する（Ｓ５２）。
【０１２６】
記憶制御装置１００は、ライトデータの書込先アドレスに基づいて、書込先のＬＵ３３０が暗号化記憶領域として設定されているか否かを判定する（Ｓ５３）。書込先のＬＵ３３０が暗号化記憶領域に設定されている場合（S50:YES）、記憶制御装置１００は、本処理を終了する。
【０１２７】
これに対し、書込先のＬＵ３３０が非暗号化記憶領域として設定されている場合（S50:NO）、記憶制御装置１００は、暗号化されたライトデータのスタートLBA２５２１やサイズ２５２３等を暗号データアドレス管理テーブル２５２に登録する（Ｓ５４）。このように、記憶制御装置１００は、非暗号化記憶領域に設定されているＬＵ３３０に、記憶制御装置１００内で暗号化したデータを記憶させる場合に、その暗号化されたデータの記憶先に関する情報をテーブル２５２に書き込んで管理する。
【０１２８】
例えば、重複した暗号処理を防止するポリシーが設定されている場合、ホスト５００から受信した暗号データは、そのままの状態でＬＵ３３０に記憶される。しかし、ホスト５００内の暗号化機能に制限があり、一部のデータを暗号化できない場合もある。この場合、ホスト５００からは、暗号データと平文データとが混在して送信される。図１０の処理で説明したように、記憶制御装置１００は、ライトデータのヘッダを解析することにより、平文データを発見することができる。記憶制御装置１００は、発見された平文データを記憶制御装置１００内で暗号化し、ＬＵ３３０に記憶させる。このとき、記憶制御装置１００内で暗号化されたデータの位置をテーブル２５２に記憶させる。これにより、ホスト５００から読出しを要求された際に、記憶制御装置１００内で暗号化されたデータを、記憶制御装置１００内で復号化して、ホスト５００に送信することができる。
【０１２９】
図１２は、図８中のＳ２１で示す復号化判定処理のフローチャートである。記憶制御装置１００は、リードコマンドに基づいて、ホスト５００から読出しを要求されたデータの読出し先アドレスを取得する（Ｓ６０）。
【０１３０】
記憶制御装置１００は、暗号化判定テーブル２５４から暗号化に関する設定情報を取得する（Ｓ６１）。続いて、記憶制御装置１００は、ＬＵ管理テーブル２５３から読込先のＬＵ３３０の暗号化に関する情報を取得し（Ｓ６２）、読込先のＬＵ３３０が暗号化記憶領域であるかを確認する（Ｓ６３）。さらに、記憶制御装置１００は、リードコマンドの発行元がいずれのホスト５００であるかを確認する（Ｓ６４）。
【０１３１】
記憶制御装置１００は、読込先のＬＵ３３０が暗号化記憶領域であるか否かを判定する（Ｓ６５）。読込先のＬＵ３３０が暗号化記憶領域である場合（S65:YES）、記憶制御装置１００は、復号化フラグをONに設定する（Ｓ６６）。復号化フラグとは、データの復号化を行うか否かを示す情報である。復号処理を行うべきデータには、復号化フラグがONに設定される。復号処理を行う必要がないデータには、復号化フラグがOFFに設定される（Ｓ６７）。
【０１３２】
最後に、記憶制御装置１００は、復号化フラグの値に基づいて、復号処理を実施すべきか否かを判定し（Ｓ６８）、本処理を終了する。即ち、記憶制御装置１００は、記憶制御装置１００内で暗号化されたデータについては、記憶制御装置１００内で復号化することを決定する。
【０１３３】
図１３は、図８中のＳ２４で示す復号処理のフローチャートである。記憶制御装置１００は、ホスト５００からのリードコマンドを取得し（Ｓ７０）、次に、読出しを要求された暗号データの暗号化に使用された暗号鍵２５１をキャッシュメモリ２５０から取得する（Ｓ７１）。
【０１３４】
記憶制御装置１００は、読込先のＬＵ３３０が暗号化記憶領域に設定されているか否かを判定する（Ｓ７２）。読込先のＬＵ３３０が非暗号化記憶領域に設定されている場合（S72:NO）、記憶制御装置１００は、暗号データアドレス管理テーブル２５２から、読出し対象のデータが記憶されているアドレス等を取得し、このアドレス等に基づいて、ホスト５００から要求されたデータを読み出す（Ｓ７３）。読込先のＬＵ３３０が暗号化記憶領域の場合（S72:YES）、Ｓ７３はスキップされる。そして、記憶制御装置１００は、Ｓ７１で取得した暗号鍵２５１を用いて、ＬＵ３３０から読み込んだ暗号データを復号化し（Ｓ７４）、本処理を終了する。
【０１３５】
図１４は、管理端末４００から記憶制御装置１００に暗号化に関する設定値を登録するための処理を示すフローチャートである。ユーザは、管理端末４００のストレージ管理ソフトウェア４１０を起動させ、ＬＵ３３０に関して各種情報を設定するための画面を呼び出す（Ｓ８０）。
【０１３６】
最初に、ユーザは、ＬＵ３３０について、暗号化記憶領域として使用するか否かを設定する（Ｓ８１）。次に、ユーザは、ホスト５００とＬＵ３３０との通信経路を設定して（Ｓ８２）、ホスト５００にＬＵ３３０を割り当てる。Ｓ８１及びＳ８２の設定内容は、ＬＵ管理テーブル２５３に登録される。
【０１３７】
さらに、ユーザは、図３に示すような設定画面を呼び出して、ホスト５００から受信するデータの種別、記憶制御装置１００内の暗号化機能を利用するか否か、暗号化する単位について、暗号化判定テーブル２５４を設定する（Ｓ８３）。最後に、ユーザは、ストレージ管理ソフトウェア４１０の機能を用いて、暗号鍵２５１を生成し、生成した暗号鍵２５１をキャッシュメモリ２５０に記憶させる（Ｓ８４）。
【０１３８】
以上が本実施例による記憶制御装置１００の動作である。ところで、上述のように、ホスト５００は、さまざまな単位で暗号化機能を有することがある。例えば、OS５２０やアプリケーションプログラム５３０、または、データベースが暗号化機能を備えている場合がある。
【０１３９】
例えば、データ暗号化を目的とするアプリケーションプログラム５３０の場合、ファイルシステムの特定のフォルダやファイルが暗号化の対象に設定され、暗号化の必要のないフォルダやファイルについては暗号化の対象外として設定され、これら設定の通りに稼働する。本実施例においては、ホスト５００が備える暗号化機能の種類や単位などについては制限しない。
【０１４０】
ホスト５００が暗号化機能を備えるか否かについては、ユーザの情報システムの運用環境や運用ポリシー等によって異なる。また、記憶制御装置１００が暗号化機能を備えている場合でも、暗号化によってデータを保護可能な範囲が、ホスト５００と記憶制御装置１００とでは異なる可能性がある。従って、ホスト５００側と記憶制御装置１００側で重複して暗号化機能を運用するケースも想定される。データの重要性や機密性の観点から、暗号化が不要であれば、暗号化機能を備えない構成や、あるいは暗号化機能は備えるが使用しないという運用が想定される。
【０１４１】
一般に、ソフトウェアによる暗号化は、ホスト５００のハードウェア性能によって処理速度が変わり、CPUに加わる負荷も大きくなる。従って、低スペックのホスト５００で暗号処理を行う場合には、特にホスト５００の性能低下につながる。ホスト５００のスペックにかかわらず、ホスト５００が暗号処理を担当する場合は、暗号処理の負荷が増大する。このため、アプリケーションプログラム５３０の処理性能が低下し、業務効率の低下を招く結果となる。従って、性能面を考えると、記憶制御装置１００内で暗号処理を担当する方が効率的である。
【０１４２】
一方、ホスト５００内で暗号化することにより、ホスト５００からは暗号データが外部に送信されることになる。従って、盗聴等の脅威からデータを保護することができ、安全性の観点では、ホスト５００内で暗号化する方が優れている。
【０１４３】
このように、ストレージシステムまたは情報システムにおいて、どこで誰が暗号化するのかは、データの性質や運用ポリシー等により相違する。
【０１４４】
そして、本実施例では、ホスト５００から受信するデータが暗号データあるか平文データであるかに応じて、記憶制御装置１００内で暗号処理を実行するか否かを制御できるように構成した。これにより、ホスト５００から受信した暗号データを記憶制御装置１００内でさらに暗号化する事態を防止することができる。従って、記憶制御装置１００の性能が低下するのを抑制できる。
【０１４５】
また、本実施例では、ユーザは、暗号化に関するポリシーを事前に設定することができ、記憶制御装置１００は、ユーザにより設定されたポリシーに基づいて、暗号化機能を制御する構成とした。これにより、ユーザは、例えば、ホスト５００からの暗号データをそのままＬＵ３３０に記憶させたり、ホスト５００からの暗号データを記憶制御装置１００内でさらに暗号化してからＬＵ３３０に記憶させたり、ホスト５００からの平文データを記憶制御装置１００内で暗号化してからＬＵ３３０に記憶させたり、ホスト５００からの平文データをそのままＬＵ３３０に記憶させたりすることができる。従って、ユーザの希望に応じて柔軟に運用することができ、使い勝手が向上する。
【実施例２】
【０１４６】
図１５〜図１７に基づいて、本発明の第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に相当する。以下の説明では、重複した説明を省略し、特徴部分を中心に説明する。本実施例では、NAS（Network Attached Storage）機能を備えた記憶制御装置１００Ａにおいて、暗号化機能の作動を制御する。
【０１４７】
図１５は、本実施例による記憶制御装置１００Ａを含むストレージシステムの全体構成を示す説明図である。本実施例による記憶制御装置１００Ａは、ファイルを管理するNAS６００を備えている。NAS６００に接続されたホスト５００は、ファイル単位で記憶制御装置１００Ａにアクセスし、ファイルデータを入出力することができる。
【０１４８】
ところで、ある種のOS５２０は、暗号化機能を備えていない場合がある。また、アプリケーションプログラム５３０が暗号化機能を備えている場合でも、暗号化可能な範囲に制限があり、暗号化できないデータが存在する場合がある。
【０１４９】
さらに、ユーザも、重要なデータについては暗号化して保存し、重要ではないデータについては平文データのままで保存したいと考える場合がある。ユーザは、特定のファイルやフォルダについての暗号化を希望することがある。もしも、OS５２０やアプリケーションプログラム５３０の有する暗号化機能が、このようなユーザの要求に対応できない場合でも、記憶制御装置１００Ａ内の暗号化機能を用いることにより、ホスト５００から受信したデータを記憶制御装置１００Ａ内で暗号処理して保存することができる。この点については、前記実施例で述べた通りである。
【０１５０】
図１６は、NAS６００の機能等を模式的に示す説明図である。本実施例では、記憶制御装置１００ＡにNAS６００を設けているため、記憶制御装置１００Ａ内の暗号化機能をファイル単位で作動させることができる。例えば、ホスト５００によって暗号化されたファイルデータについては、記憶制御装置１００Ａ内で暗号処理することなく、そのままＬＵ３３０に記憶させることができる。また、ホスト５００側では暗号化できないファイルデータについては、ユーザの希望に応じて、記憶制御装置１００Ａ内で暗号処理してからＬＵ３３０に記憶させることができる。NAS６００は、ホスト５００から受信したデータを暗号化するか否かについて判断する。
【０１５１】
NAS６００は、例えば、ファイルの暗号化を制御するための制御部６１０と、ファイルの暗号化に関する情報を管理するためのテーブル６２０とを備える。管理テーブル６２０は、NAS６００が担当するデータのメタデータを管理する。メタデータには、例えば、ファイルデータを記憶制御装置１００Ａ内のどの記憶領域に記憶させたか、ファイルデータを暗号化して記憶させたか等の情報が含まれる。
【０１５２】
暗号化に関する制御部６１０は、管理テーブル６２０によって管理されているメタデータを用いることにより、ホスト５００から読出しを要求されたファイルデータがどこにどのような状態で記憶されているかを確認することができる。ホスト５００から要求されたファイルデータを、NAS６００を介して暗号化している場合、NAS６００は、要求された暗号データを復号化させてから、ホスト５００に送信する。
【０１５３】
これにより、図１６に示すように、本実施例では、暗号化機能を備えないOS５２０及びアプリケーションプログラム５３０（図中「アプリケーションプログラム１」）から受信した平文のファイルデータを、NAS６００を介して暗号化することができる。NAS６００を用いて暗号化されたファイルデータは、暗号化記憶領域として設定されたＬＵ３３０に記憶される。
【０１５４】
一方、暗号化機能を有するアプリケーションプログラム５３０（図中「アプリケーションプログラム２」）から暗号化されたファイルデータを受信した場合、NAS６００は、この暗号化されたファイルデータを暗号処理することなく、そのままＬＵ３３０に記憶させる。
【０１５５】
NAS６００は、コントローラ２００内の暗号処理部２６２及び復号処理部２６３等を利用して、ファイルデータの暗号処理及び復号処理を行うことができる。これに限らず、NAS６００内に、暗号処理部及び復号処理部を設ける構成でもよい。
【０１５６】
図１７は、本実施例による暗号化の制御方法を示すフローチャートである。NAS６００は、ホスト５００からファイルデータを受信すると（Ｓ９０）、このファイルデータが暗号化されているか否かを判定する（Ｓ９１）。例えば、NAS６００は、ファイルデータのヘッダ部分を解析することにより、そのファイルデータが暗号データであるか平文データであるかを判別可能である。
【０１５７】
Ｓ９０で受信したファイルデータが暗号化されていると判定された場合（S91:YES）、NAS６００は、ファイルデータを暗号処理することなく、そのままの状態でＬＵ３３０に記憶させる（Ｓ９２）。これに対し、Ｓ９０で受信したファイルデータが平文データであると判定された場合（S91:NO）、NAS６００は、ファイルデータを暗号化させてから、ＬＵ３３０に記憶させる（Ｓ９３）。
【０１５８】
そして、NAS６００は、管理テーブル６２０を更新させる（Ｓ９４）。この管理テーブル６２０は、図１７の下側に示すように、例えば、ファイル名６２１と、暗号化の有無を示す識別情報６２２と、記憶先のスタートLBA６２３と、LUN６２４と、サイズ６２５と、RAIDグループ６２６等を管理する。管理テーブル６２０は、NAS６００が担当するファイルデータについて、その記憶場所、暗号化の有無等を管理可能な構成であればよく、管理項目は図１７に示すものに限定されない。
【０１５９】
なお、前記フローチャートでは、ホスト５００から受信したファイルデータが暗号化されている場合はそのままで、ホスト５００から受信したファイルデータが暗号化されていない場合は暗号処理をしてから、ＬＵ３３０に記憶させる場合を述べた。しかし、前記実施例で述べたように、NAS６００は、ユーザにより設定されるポリシーに従って、暗号処理をするか否か決定することができる。
【０１６０】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、記憶制御装置１００Ａ内でファイル単位の暗号化を制御することができ、使い勝手が向上する。
【実施例３】
【０１６１】
図１８〜図２０に基づいて本発明の第３実施例を説明する。本実施例では、ディスクドライブ３１０の有する暗号化機能を用いて、ホスト５００から受信したデータを暗号化したり復号化させる。
【０１６２】
図１８は、本実施例による記憶制御装置１００Ｂを含むストレージシステムの構成を示す説明図である。本実施例の記憶制御装置１００Ｂは、そのコントローラ２００内に、ディスクドライブ３１０の有する暗号化機能を制御するための制御部２６６を備える。前記第１実施例と比べると、本実施例では、ディスクドライブ３１０内の暗号化機能を利用するため、コントローラ２００内で暗号鍵を管理する必要はない。従って、暗号鍵生成部２６４，暗号鍵２５１は、取り除かれている。
【０１６３】
図１９は、コントローラ２００及びディスクドライブ３１０の機能を抜粋して示す説明図である。ディスクドライブ３１０の制御回路３１１は、暗号化回路３１１１と、復号化回路３１１２とを備えている。暗号化回路３１１１は、ディスクドライブ３１０に入力されたデータを暗号化する回路である。復号化回路３１１２は、ディスクドライブ３１０から出力されるデータを復号化する回路である。
【０１６４】
ホスト５００から受信したデータを暗号化するか否かは、前記第１実施例と同様に、暗号化／復号化判定部２６１によって決定される。暗号化する場合、暗号化／復号化判定部２６１は、暗号処理部２６２にデータの暗号化を指示する。復号化する場合、暗号化／復号化判定部２６１は、復号処理部２６３にデータの復号化を指示する。
【０１６５】
ドライブ内暗号化機能制御部２６６は、暗号処理部２６２からの指示に応じて、ディスクドライブ３１０内の暗号化機能を有効に設定し、ディスクドライブ３１０に入力されるデータをディスクドライブ３１０内で暗号化させる。一方、暗号化の必要がないと暗号化／復号化判定部２６１で判断された場合、制御部２６６は、ディスクドライブ内の暗号化機能を無効に設定し、ディスクドライブ３１０に入力されるデータを暗号化させることなく、そのまま記憶させる。
【０１６６】
復号処理部２６３は、ディスクドライブ３１０内の暗号化機能を用いて、ディスクドライブ３１０に記憶されている暗号データを復号化させて出力させることができる。これに限らず、復号処理部２６３は、ディスクドライブ３１０内の暗号化に使用された暗号鍵をディスクドライブ３１０から取得することにより、コントローラ２００内で暗号データを復号化することもできる。
【０１６７】
なお、本実施例ではディスクドライブ３１０内の暗号化機能を利用するため、基本的に、暗号鍵はディスクドライブ３１０内に記憶される。しかし、これに限らず、暗号鍵をコントローラ２００内や管理端末４００内に保存させる構成でもよい。
【０１６８】
図２０は、ディスクドライブ３１０内の暗号化機能を用いて、ホスト５００から受信したデータを暗号化する場合の動作を示すフローチャートである。記憶制御装置１００Ｂは、RAIDグループ管理テーブル７００を参照し（Ｓ１００）、書込先のＬＵ３３０が属するRAIDグループ３２０が暗号化機能を備えているか否かを判定する（Ｓ１０１）。
【０１６９】
図２０の下側に示すRAIDグループ管理テーブル７００は、記憶制御装置１００の有する各RAIDグループ３２０を管理するためのものである。この管理テーブル７００は、例えば、RAIDグループ番号７１０と、LUNリスト７２０と、合計サイズ７３０と、空きサイズ７４０と、ドライブ番号リスト７５０と、暗号化機能の有無を示す識別情報７６０とを対応付けて管理する。
【０１７０】
RAIDグループ番号７１０は、各RAIDグループ３２０をそれぞれ識別するための情報である。LUNリスト７２０とは、そのRAIDグループ３２０に設けられているＬＵ３３０を特定するための情報である。合計サイズ７３０とは、そのRAIDグループ３２０の有する全記憶領域のサイズを示す。空きサイズ７４０とは、そのRAIDグループ３２０の有する未使用の記憶領域のサイズを示す。ドライブ番号リスト７５０とは、そのRAIDグループ３２０を構成するディスクドライブ３１０を特定するための情報である。暗号化機能の有無を示す情報７６０は、そのRAIDグループ３２０を構成する各ディスクドライブ３１０が暗号化機能を備えているか否かを示す情報である。
【０１７１】
フローチャートの説明に戻る。記憶制御装置１００Ｂは、書込先ＬＵ３３０に関するディスクドライブ３１０が暗号化機能を備えていると判定した場合（S101:YES）、そのディスクドライブ３１０の暗号化機能を有効（ON）に設定させる（Ｓ１０２）。記憶制御装置１００Ｂは、そのディスクドライブ３１０にデータを転送する（Ｓ１０３）。これにより、ディスクドライブ３１０は、入力されたデータをディスクドライブ３１０内で暗号化し、記憶する。
【０１７２】
これに対し、書込先のＬＵ３３０に関するディスクドライブ３１０が暗号化機能を備えていないと判定された場合（S101:NO）、記憶制御装置１００Ｂは、暗号化機能を備えたディスクドライブ３１０から構成される別のRAIDグループ３２０が存在するか否かを検索する（Ｓ１０４）。
【０１７３】
記憶制御装置１００Ｂは、所定サイズ以上の空きサイズを有するRAIDグループ３２０が存在するか否かを判定する（Ｓ１０５）。所定サイズとは、書込先のＬＵ３３０のサイズ以上のサイズであることを意味する。
【０１７４】
所定サイズ以上の空きサイズを備えており、かつ、ディスクドライブ３１０が暗号化機能を有するRAIDグループ３２０が発見された場合（S105:YES）、記憶制御装置１００Ｂは、以下に述べるように、書込み対象のＬＵ３３０の設置場所を暗号化機能を有するRAIDグループ３２０に移動させる。以下の説明では、最初の書込み対象のＬＵ３３０を構成するディスクドライブ３１０（暗号化機能を備えないディスクドライブである）をコピー元ドライブと、コピー元ドライブからのデータがコピーされるディスクドライブ３１０をコピー先ドライブと、それぞれ表現する。コピー先ドライブは、暗号化機能を内蔵している。
【０１７５】
記憶制御装置１００Ｂは、ホスト５００から受信したライトデータをコピー元ドライブに書き込んだ後（Ｓ１０６）、コピー先ドライブの有する暗号化機能を有効に設定させる（Ｓ１０７）。そして、記憶制御装置１００Ｂは、コピー元ドライブに記憶されているデータをコピー先ドライブに転送させる（Ｓ１０８）。コピー先ドライブは、コピー元ドライブから入力されたデータを暗号化しながら、記憶していく。
【０１７６】
所定サイズ以上の空きサイズを有し、かつ、ディスクドライブ３１０が暗号化機能を備えているるRAIDグループ３２０が発見されなかった場合（S105:NO）、記憶制御装置１００Ｂは、ホスト５００から受信したライトデータをコントローラ２００内で暗号化し、書込先のＬＵ３３０に記憶させる（Ｓ１０９）。
【０１７７】
なお、Ｓ１０１でNOと判定された場合に、Ｓ１０８に移行する構成でもよい。即ち、暗号化機能を備えないディスクドライブ３１０から暗号化機能を備えるディスクドライブ３１０にデータをコピーさせるのではなく、コントローラ２００内で暗号化させてディスクドライブ３１０に書き込む構成でもよい。
【０１７８】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、ディスクドライブ３１０の有する暗号化機能を利用するため、コントローラ２００の暗号化に関する負荷を軽減することができ、コントローラ２００の性能低下を抑制することができる。
【実施例４】
【０１７９】
図２１，図２２に基づいて、本発明の第４実施例を説明する。本実施例では、複数の記憶制御装置１００（１），１００（２）間でデータを転送する場合に、そのデータを暗号化するか否かを制御する。
【０１８０】
図２１は、本実施例に係る記憶制御装置１００（１），１００（２）を含んだストレージシステムを模式的に示す説明図である。各記憶制御装置１００（１），１００（２）は、前記第１実施例で述べた記憶制御装置１００と同様の構成を備えている。
【０１８１】
例えば、ＬＵ３３０のバックアップを作成する場合や、ＬＵ３３０の複製を作成する場合等のように、の第１記憶制御装置１００（１）内のデータを、第２記憶制御装置１００（２）に転送する場合がある。
【０１８２】
図中では、非暗号化記憶領域に設定されているＬＵ３３０を「通常ＬＵ」と、暗号化記憶領域に設定されているＬＵ３３０を「暗号ＬＵ」と、それぞれ示している。
【０１８３】
例えば、本実施例では、第１記憶制御装置１００（１）内の通常ＬＵ３３０Ａ（１）に記憶されている平文データを、第１記憶制御装置１００（１）内で暗号化してから、第２記憶制御装置１００（２）に転送することができる。第２記憶制御装置１００（２）は、第１記憶制御装置１００（１）から受信した暗号データを、暗号処理することなく、そのまま通常ＬＵ３３０Ａ（２）に記憶させる。
【０１８４】
また、例えば、第１記憶制御装置１００（１）は、暗号ＬＵ３３０Ｂ（１）に記憶されている暗号データを、第２記憶制御装置１００（２）に転送することもできる。この場合も、第２記憶制御装置１００（２）は、第１記憶制御装置１００（１）から受信した暗号データを、暗号処理することなく、そのまま通常ＬＵ３３０Ｂ（２）に記憶させることができる。
【０１８５】
つまり、転送元である第１記憶制御装置１００（１）から転送先である第２記憶制御装置１００（２）にデータを転送する場合、転送対象のデータが暗号化されている場合は、暗号データのままで転送する。第１記憶制御装置１００（１）は、転送対象の暗号データを復号化しない。これにより、記憶制御装置１００（１），１００（２）間でデータを送受信する場合の機密性を維持することができ、かつ、重複した暗号化が行われるのを防止することができる。
【０１８６】
図２２は、本実施例による記憶制御装置間のデータ転送処理の概要を示すフローチャートである。まず、転送元の第１記憶制御装置１００（１）は、第２記憶制御装置１００（２）にデータを転送するか否かを判定する（Ｓ１１０）。例えば、第１記憶制御装置１００（１）内のＬＵ３３０について、バックアップの作成やリモートコピー等の指示が与えられたか否かを判定する。
【０１８７】
第１記憶制御装置１００（１）内のデータを第２記憶制御装置１００（２）に転送すべき旨が決定されると（S110:YES）、第１記憶制御装置１００（１）は、コピー元のデータが暗号化されているか否かを判定する（Ｓ１１１）。
【０１８８】
コピー元のデータが暗号化されていると判定された場合（S111:YES）、第１記憶制御装置１００（１）は、コピー元のデータをそのままの状態で、即ち、暗号データのままで第２記憶制御装置１００（２）に送信させる（Ｓ１１２）。
【０１８９】
コピー元のデータが暗号化されていない場合（S111:NO）、第１記憶制御装置１００（１）は、コピー元のデータを平文データのままで第２記憶制御装置１００（２）に送信するか否かを判定する（Ｓ１１３）。第１記憶制御装置１００（１）から第２記憶制御装置１００（２）に、コピー元のデータを暗号データとして送信するか、それとも平文データのままで送信するかは、第１実施例で述べたように、ユーザが事前に設定したポリシーに従う。
【０１９０】
暗号データとして送信すべきと決定した場合（S113:YES）、第１記憶制御装置１００（１）は、コピー元のデータを第１記憶制御装置１００（１）内で暗号化してから、第２記憶制御装置１００（２）に送信させる（Ｓ１１４）。
【０１９１】
平文データとして送信すべきと決定した場合（S113:NO）、第１記憶制御装置１００（１）は、コピー元のデータをそのまま第２記憶制御装置１００（２）に送信させる（Ｓ１１５）。
【０１９２】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、複数の記憶制御装置１００（１），１００（２）間でデータを転送する場合に、ユーザの設定したポリシーに従って、転送データの暗号化を制御することができ、無駄な暗号処理が行われるのを防止したり、使い勝手を高めることができる。
【０１９３】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１９４】
【図１】本発明の実施形態の概念を示す説明図である。
【図２】第１実施例に係る記憶制御装置を備えるストレージシステムの全体構成を示す説明図である。
【図３】データの暗号化に関する設定を行うための画面例を示す説明図である。
【図４】暗号化判定テーブルを示す説明図である。
【図５】ＬＵ管理テーブルを示す説明図である。
【図６】暗号データアドレス管理テーブルを示す説明図である。
【図７】ライトコマンドの処理方法を示すフローチャートである。
【図８】リードコマンドの処理方法を示すフローチャートである。
【図９】暗号化判定処理を示すフローチャートである。
【図１０】暗号化判定処理の別例を示すフローチャートである。
【図１１】暗号処理を示すフローチャートである。
【図１２】復号化判定処理を示すフローチャートである。
【図１３】復号処理を示すフローチャートである。
【図１４】暗号化に関する設定を行うための処理を示すフローチャートである。
【図１５】第２実施例に係る記憶制御装置を備えるストレージシステムの全体構成を示す説明図である。
【図１６】NASによる暗号処理の制御方法を模式的に示す説明図である。
【図１７】NASによる暗号化の制御方法を示すフローチャートである。
【図１８】第３実施例に係る記憶制御装置を備えるストレージシステムの全体構成を示す説明図である。
【図１９】コントローラと記憶部の構成を部分的に抜き出して示す説明図である。
【図２０】ディスクドライブが内蔵する暗号化機能を用いてデータを暗号処理する場合のフローチャートである。
【図２１】第４実施例に係る記憶制御装置を備えるストレージシステムの全体構成を示す説明図である。
【図２２】複数の記憶制御装置間でデータを転送する場合の暗号処理の制御方法を示すフローチャートである。
【符号の説明】
【０１９５】
１…記憶制御装置、２…コントローラ、２Ａ…上位通信部、２Ｂ…下位通信部、２Ｃ…暗号化制御部、２Ｃ１…判別部、２Ｄ…設定情報管理部、２Ｅ…暗号処理部、２Ｆ…復号処理部、３…記憶装置搭載部、４…記憶装置、４Ａ…制御回路、５…設定部、６…上位装置、CN…通信ネットワーク、１００，１００Ａ，１００Ｂ，１００（１），１００（２）…記憶制御装置、２００…コントローラ、２１０…ホストインターフェース、２２０…バックエンドコントローラ、２３０…データ転送制御回路、２４０…プロセッサ、２５０…キャッシュメモリ、２５１…暗号鍵、２５２…暗号データアドレス管理テーブル、２５３…ＬＵ管理テーブル、２５４…暗号化判定テーブル、２６０…メモリ、２６１…暗号化／復号化判定部、２６２…暗号処理部、２６３…復号処理部、２６４…暗号鍵生成部、２６５…ＬＵ設定部、２６６…ドライブ内暗号化機能制御部、２７０…ブリッジ、２８０…暗号化回路、２９０…LANインターフェース、３００…記憶装置搭載部、３１０…ディスクドライブ、３１１…制御回路、３１１１…暗号化回路、３１１２…復号化回路、３２０…RAIDグループ、３３０，３３０Ａ，３３０Ｂ…論理ボリューム（LU）、４００…管理端末、４１０…ストレージ管理ソフトウェア、５００…ホスト、５１０…インターフェース、５２０…OS、５３０…アプリケーションプログラム、６００…NAS、６１０…ファイル暗号化制御部、６２０…ファイル暗号化管理テーブル、７００…RAIDグループ管理テーブル
【図１】
2008077366.tif 000003
【図２】
2008077366.tif 000004
【図３】
2008077366.tif 000005
【図４】
2008077366.tif 000006
【図５】
2008077366.tif 000007
【図６】
2008077366.tif 000008
【図７】
2008077366.tif 000009
【図８】
2008077366.tif 000010
【図９】
2008077366.tif 000011
【図１０】
2008077366.tif 000012
【図１１】
2008077366.tif 000013
【図１２】
2008077366.tif 000014
【図１３】
2008077366.tif 000015
【図１４】
2008077366.tif 000016
【図１５】
2008077366.tif 000017
【図１６】
2008077366.tif 000018
【図１７】
2008077366.tif 000019
【図１８】
2008077366.tif 000020
【図１９】
2008077366.tif 000021
【図２０】
2008077366.tif 000022
【図２１】
2008077366.tif 000023
【図２２】
2008077366.tif 000024