JP2015215727A - ストレージ制御装置およびプログラム - Google Patents

ストレージ制御装置およびプログラム Download PDF

Info

Publication number
JP2015215727A
JP2015215727A JP2014097629A JP2014097629A JP2015215727A JP 2015215727 A JP2015215727 A JP 2015215727A JP 2014097629 A JP2014097629 A JP 2014097629A JP 2014097629 A JP2014097629 A JP 2014097629A JP 2015215727 A JP2015215727 A JP 2015215727A
Authority
JP
Japan
Prior art keywords
program
processing program
data
control
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014097629A
Other languages
English (en)
Inventor
渉 飯塚
Wataru Iizuka
渉 飯塚
秀史 小林
Hideshi Kobayashi
秀史 小林
裕助 太田
Hirosuke Ota
裕助 太田
惇 猪頭
Jun Ito
惇 猪頭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014097629A priority Critical patent/JP2015215727A/ja
Priority to US14/690,798 priority patent/US20150324301A1/en
Publication of JP2015215727A publication Critical patent/JP2015215727A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】制御プログラムのデータ量を低減できる。
【解決手段】記憶部1aは、制御プログラム2を記憶する。制御プログラム2は、暗号処理プログラムX1と暗号処理プログラムX1の版数の情報3とを含む。演算部1bは、バックアップ時に、設定データ4を暗号化した暗号化データ4aと暗号化に用いられた暗号処理プログラムX1の第1の部分X11と版数の情報3とを不揮発性記憶媒体1cに格納する。演算部1bは、制御プログラム2を制御プログラム2aに更新後、不揮発性記憶媒体1cに格納された版数V1に対応する暗号処理プログラムX1の第2の部分X12を、制御プログラム2aから取得する。演算部1bは、第2の部分X12と不揮発性記憶媒体1cに格納された第1の部分X11とを用いて不揮発性記憶媒体1cに格納された暗号化データ4aの復号に用いられる暗号処理プログラムX1を生成する。
【選択図】図1

Description

本発明はストレージ制御装置およびプログラムに関する。
ユーザが利用するユーザデータ(例えば、ユーザの業務に用いられるデータなど)を記憶するストレージ装置が利用されている。ストレージ装置に対するデータアクセスは、ストレージ制御装置により制御される。ストレージ制御装置では、ストレージ装置の各種ハードウェアモジュールを制御する制御プログラムが利用されている。ハードウェアを制御する制御プログラムを、ファームウェア(Firmware)と呼ぶこともある。
例えば、ストレージ制御装置は、ファームウェアを実行し、ストレージ装置に対するデータアクセスの制御や冗長化されたハードウェアモジュールの動作制御を行う。ストレージ制御装置は、ストレージ装置の設定データを管理し、設定データに基づいてストレージ装置を制御することもある。ストレージ制御装置のファームウェアは、機能拡張や修正などのために、ファームウェアの提供元により更新され、配布されることがある。ストレージ制御装置のユーザは、配布されたファームウェアをストレージ制御装置に適用し、古いファームウェアを新しいファームウェアに交換できる。
ところで、データを暗号化することで、第三者によるデータの不正取得を防ぐことが考えられる。例えば、コンテンツを暗号化しておき、コンテンツを再生するプレイヤが、ネットワークを介してコンテンツに対応する復号化ソフトウェアを取得する提案がある。
また、電子メールの暗号化・復号を行うメール保護プログラムを暗号化した上で二分割し、一方を第1のプロセッサに、他方を第2のプロセッサに、それぞれ分けて保存する提案もある。この提案では、暗号化され二分割されたメール保護プログラムの一方は、第1,第2のプロセッサのうち復号化プログラムが実行される側に転送されて他方と合体されたのち復号化プログラムによって復号化される。
特開2007−25768号公報 特開2003−114853号公報
ストレージ制御装置の制御プログラム(例えば、ファームウェア)で扱われる設定データは、ストレージ装置の記憶領域にアクセスするための重要な情報を含み得る。そこで、設定データを暗号化/復号する暗号処理プログラムを制御プログラムに含め、設定データのバックアップ時に、暗号処理プログラムにより設定データを暗号化することで、ストレージ装置への不正アクセスに対するセキュリティを高めることが考えられる。暗号処理プログラムによる暗号処理の方法を更新していけば、セキュリティをより向上し得る。しかし、この場合、制御プログラムの配布方法が問題となる。
例えば、過去の暗号処理プログラムが更新後の制御プログラムで利用できなくなると、過去の暗号処理プログラムを用いて暗号化されたデータを復号できなくなる。一方、過去に配布された全ての暗号処理プログラムの全体を、制御プログラムに含めると、暗号処理プログラムの更新に伴って、制御プログラムのデータ量が増大するおそれがある。
1つの側面では、本発明は、制御プログラムのデータ量を低減できるストレージ制御装置およびプログラムを提供することを目的とする。
1つの態様では、ストレージ制御装置が提供される。このストレージ制御装置は、記憶部と演算部とを有する。記憶部は、データの暗号化および復号に用いられる暗号処理プログラムと暗号処理プログラムの版数の情報とを含みストレージ装置の制御に用いられる第1の制御プログラムを記憶する。演算部は、データのバックアップ時に、データを暗号化した暗号化データと暗号化に用いられた暗号処理プログラムの第1の部分と版数の情報とを不揮発性記憶媒体に格納し、第1の制御プログラムを第2の制御プログラムに更新した後、不揮発性記憶媒体から暗号化データを読み出す際に、不揮発性記憶媒体に格納された版数に対応する暗号処理プログラムの第2の部分を、第2の制御プログラムから取得し、取得した第2の部分と不揮発性記憶媒体に格納された第1の部分とを用いて不揮発性記憶媒体に格納された暗号化データの復号に用いられる暗号処理プログラムを生成する。
また、1つの態様では、ストレージ装置の制御に用いられるコンピュータによって実行されるプログラムが提供される。このプログラムは、コンピュータに、データの暗号化および復号に用いられる暗号処理プログラムと暗号処理プログラムの版数の情報とを含みストレージ装置の制御に用いられる第1の制御プログラムを取得し、データのバックアップ時に、データを暗号化した暗号化データと暗号化に用いられた暗号処理プログラムの第1の部分と版数の情報とを不揮発性記憶媒体に格納し、第1の制御プログラムを第2の制御プログラムに更新した後、不揮発性記憶媒体から暗号化データを読み出す際に、不揮発性記憶媒体に格納された版数に対応する暗号処理プログラムの第2の部分を、第2の制御プログラムから取得し、取得した第2の部分と不揮発性記憶媒体に格納された第1の部分とを用いて不揮発性記憶媒体に格納された暗号化データの復号に用いられる暗号処理プログラムを生成する、処理を実行させる。
1つの側面では、制御プログラムのデータ量を低減できる。
第1の実施の形態のストレージ制御装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 第2の実施の形態のストレージ装置のハードウェア例を示す図である。 第2の実施の形態のサーバのハードウェア例を示す図である。 第2の実施の形態の機能例を示す図である。 第2の実施の形態の管理テーブルの例を示す図である。 第2の実施の形態の断片テーブルの例を示す図である。 第2の実施の形態のプログラム断片の例を示す図である。 第2の実施の形態の暗号化の例を示すフローチャートである。 第2の実施の形態の復号の例を示すフローチャートである。 第2の実施の形態の暗号処理の具体例を示す図である。 ファームウェアの比較例を示す図である。 第3の実施の形態のテーブル例を示す図である。 第3の実施の形態の管理テーブルの作成例を示すフローチャートである。 第3の実施の形態の暗号化の例を示すフローチャートである。 第3の実施の形態の復号の例を示すフローチャートである。 第3の実施の形態の暗号処理プログラムの復元の具体例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ制御装置を示す図である。ストレージ制御装置1は、ストレージ装置(図示を省略)に対するデータアクセスやストレージ装置およびストレージ制御装置1が備えるハードウェアモジュールの動作を制御する。ストレージ装置は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などを複数備え、比較的大容量の記憶領域を利用可能とする。ストレージ制御装置1は、ストレージ装置に内蔵されることもあるし、ストレージ装置に外付けされることもある。
ストレージ制御装置1は、記憶部1a、演算部1bおよび不揮発性記憶媒体1cを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置である。
演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
不揮発性記憶媒体1cは、HDD、SSD、磁気テープおよび光学ディスクなどを含み得る。不揮発性記憶媒体1cは、ストレージ制御装置1に内蔵されてもよいし、ストレージ装置内に内蔵されてもよい。不揮発性記憶媒体1cは、ストレージ制御装置1またはストレージ装置から取り外し可能であり、データを記憶させた状態で個別に保管可能なもの(例えば、磁気テープや光学ディスクなど)でもよい。
記憶部1aは、制御プログラム2(第1の制御プログラム)および制御プログラム2の処理に用いられる設定データ4を記憶する。制御プログラム2は、ストレージ装置(ストレージ制御装置1を内蔵するストレージ装置またはストレージ制御装置1と外付けされたストレージ装置も含む)の制御に用いられるソフトウェアである。制御プログラム2は、ファームウェアと呼ばれるものでもよい。制御プログラム2は、ストレージ制御装置1が備えるフラッシュメモリなどの不揮発性記憶装置にも格納される。演算部1bは、当該不揮発性記憶装置から制御プログラム2を読み出して記憶部1aに格納し、実行できる。
制御プログラム2は、データの暗号化および復号に用いられる暗号処理プログラムX1と暗号処理プログラムX1の版数の情報3とを含む。例えば、版数の情報3は、版数V1を示している。暗号処理プログラムX1は、版数V1の暗号処理プログラムである。例えば、暗号処理プログラムX1は、設定データ4の暗号化および復号に用いられる。
演算部1bは、データのバックアップ時に、暗号化後のデータと暗号化に用いられた暗号処理プログラムの第1の部分と当該暗号処理プログラムの版数の情報とを不揮発性記憶媒体1cに格納する。例えば、演算部1bは、設定データ4のバックアップ時に、暗号処理プログラムX1を用いて設定データ4を暗号化し、暗号化データ4aを生成する。設定データ4のバックアップは、例えば、ストレージ制御装置1のシャットダウンのたびに発生し得る。ストレージ制御装置1を次回起動させるときに、設定データ4の設定内容を引き継げるからである。
暗号化データ4aは、設定データ4の暗号化後のデータである。演算部1bは、暗号化データ4aと暗号処理プログラムX1の第1の部分X11と暗号処理プログラムX1の版数の情報3とを不揮発性記憶媒体1cに格納する。暗号処理プログラムX1の第2の部分X12は、暗号処理プログラムX1から第1の部分X11を除去した残りの部分である。
演算部1bは、ストレージ制御装置1の動作制御に用いる制御プログラムを、制御プログラム2から制御プログラム2a(第2の制御プログラム)に更新する。すなわち、演算部1bは、制御プログラム2に代えて、制御プログラム2aを記憶部1aに格納し、実行する。制御プログラム2aは、制御プログラム2よりも新しい。このとき、不揮発性記憶媒体1cに記憶された暗号化データ4aから設定データ4を復号できれば、制御プログラムの更新前後でストレージ装置の設定を維持できる。
ここで、制御プログラム2aでは、過去の版数の暗号処理プログラムに対しては、暗号処理プログラムの一部(第2の部分)が、版数に対応付けて含まれているだけであり、過去の暗号処理プログラムの全体は含まれていない。例えば、制御プログラム2aは、過去の版数の情報3(版数V1を示す)に対して第2の部分X12を含む。制御プログラム2aは、過去の版数の情報3a(版数V2を示す)に対して第2の部分X22を含む。制御プログラム2aは、版数V1,V2よりも新しい版数(例えば、最新の版数)の暗号処理プログラムの全体を含んでもよい。演算部1bは、次のようにして暗号化データ4aを復号する。
演算部1bは、制御プログラム2を制御プログラム2aに更新した後、不揮発性記憶媒体1cからデータを読み出す際に、不揮発性記憶媒体1cに格納された版数に対応する暗号処理プログラムの第2の部分を、制御プログラム2aから取得する。例えば、不揮発性記憶媒体1cには、版数V1を示す情報3が格納されている。この場合、演算部1bは、版数V1に対応する第2の部分X12を、制御プログラム2aから検索し、取得する。
演算部1bは、取得した第2の部分と不揮発性記憶媒体1cに格納された第1の部分とを用いて不揮発性記憶媒体1cに格納されたデータの復号に用いられる暗号処理プログラムを生成する。例えば、演算部1bは、取得した第2の部分X12と不揮発性記憶媒体1cに格納された第1の部分X11とを用いて、暗号処理プログラムX1を生成する。暗号処理プログラムX1は、暗号化データ4aの復号に用いられる暗号処理プログラムである。演算部1bは、暗号処理プログラムX1を用いて暗号化データ4aを復号し、設定データ4を得る。
ストレージ制御装置1によれば、設定データ4のバックアップ時に、暗号化データ4aと暗号化に用いられた暗号処理プログラムX1の第1の部分X11と当該暗号処理プログラムX1の版数の情報3(版数V1)とが不揮発性記憶媒体1cに格納される。制御プログラム2を制御プログラム2aに更新した後、不揮発性記憶媒体1cから設定データ4を読み出す際に、不揮発性記憶媒体1cに格納された版数V1に対応する暗号処理プログラムX1の第2の部分X12が、制御プログラム2aから取得される。第2の部分X12と不揮発性記憶媒体1cに格納された第1の部分X11とを用いて不揮発性記憶媒体1cに格納された暗号化データ4aの復号に用いられる暗号処理プログラムX1が生成される。これにより、制御プログラムのデータ量を低減できる。
例えば、過去の版数V1に対応する暗号処理プログラムX1の全体や過去の版数V2に対応する暗号処理プログラムの全体を、制御プログラム2aに含めることも考えられる。しかし、この方法では、暗号処理プログラムの更改に伴って制御プログラムのデータ量が増大するおそれがある。また、暗号処理プログラムX1の全体を不揮発性記憶媒体1cに格納すると、不揮発性記憶媒体1cを第三者に取得されるだけで、暗号化データ4aを復号されるおそれがあり、セキュリティ性が低下する。
ストレージ制御装置1によれば、過去の暗号処理プログラムの一部だけを新しい制御プログラム2aに含めさえすれば、過去の暗号処理プログラムで暗号化されたデータ(例えば、暗号化データ4a)を、制御プログラム2aに更新した後も、復号可能である。このため、版数V1,V2などに対応する過去の暗号処理プログラムの全体を制御プログラム2aに含めるよりも、制御プログラム2aのデータサイズを小さくすることができる。
特に、第1の部分(例えば、第1の部分X11)のデータサイズを、第2の部分(例えば、第2の部分X12)のデータサイズよりも大きくすることがより好ましい。制御プログラム2aに含める第2の部分のデータサイズが小さいほど、制御プログラム2aのデータ量をより低減できるからである。
また、不揮発性記憶媒体1cに暗号処理プログラムX1の全体を格納しないので、不揮発性記憶媒体1cが第三者に取得されたとしても、暗号化データ4aが復号されて、設定データ4の内容を不正に取得される可能性を低減できる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、ストレージ装置100、サーバ200およびFW(FirmWare)配信サーバ300を含む。ストレージ装置100とサーバ200とは、SAS(Serial Attached SCSI)やファイバチャネル(FC:Fibre Channel)などのケーブルを用いて接続されている。このような接続構成をDAS(Direct Attached Storage)と呼ぶこともある。ただし、ストレージ装置100およびサーバ200をファイバチャネルやiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続してもよい。ストレージ装置100をNAS(Network Attached Storage)として用いることもできる。
ストレージ装置100およびサーバ200は、ネットワーク10に接続されている。ネットワーク10は、管理用のLAN(Local Area Network)である。ネットワーク10は、ネットワーク20に接続されている。ネットワーク20は、インターネットなどの広域ネットワークである。
ストレージ装置100は、サーバ200の処理に用いられるユーザデータを記憶する。ストレージ装置100は、ファームウェアを実行し、ストレージ装置100内のハードウェアモジュールの動作を制御する。ストレージ装置100は、ファームウェアの処理に用いられる設定データを暗号化してバックアップする機能を有している。
サーバ200は、ストレージ装置100に格納されたユーザデータにアクセスするサーバコンピュータである。
FW配信サーバ300は、ストレージ装置100で用いられるファームウェアを、ストレージ装置100またはサーバ200に配信するサーバコンピュータである。ファームウェアは、機能拡張やプログラム修正に応じて更新され得る。FW配信サーバ300は、ファームウェアが更新されると当該ファームウェアの配信を行う。以下の説明では、ファームウェアをFWと略記することがある。
図3は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置100は、CE(Controller Enclosure)101およびDE(Drive Enclosure)102,103を有する。CE101はCM(Controller Module)110,120を有する。CM110,120は、DE102,103に対するデータアクセスやストレージ装置100内のハードウェアモジュールの動作を制御するストレージ制御装置である。ストレージ装置100の場合、CM110,120(ストレージ制御装置)がストレージ装置100に内蔵されているといえる。なお、CE101をストレージ制御装置と考えてもよい。ただし、DE102,103を別個の筐体で用意し、CM110,120(あるいはCE101)に外付けしてもよい。
CM110,120はCE101内で冗長化されている。CM110内の各種のハードウェアモジュールもCM110内で冗長化されている。CM120についても同様である。
CM110は、プロセッサ111、RAM112、フラッシュメモリ113、CA(Channel Adaptor)114,115、NA(Network Adaptor)116およびEXP(EXPander)117,118を有する。
プロセッサ111は、CM110の情報処理を制御するプロセッサである。プロセッサ111は、マルチプロセッサであってもよい。プロセッサ111は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ111は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM112は、CM110の主記憶装置である。RAM112は、プロセッサ111に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。
フラッシュメモリ113は、CM110の補助記憶装置である。フラッシュメモリ113は、不揮発性の半導体メモリである。フラッシュメモリ113は、FWのプログラムなどを記憶する。
CA114,115は、サーバ200と通信する通信インタフェースである。CA114,115は冗長化されている。
NA116は、ネットワーク10を介してFW配信サーバ300と通信する通信インタフェースである。CM110は、複数個のNAを備えてもよい。
EXP117,118は、DE102,103にアクセスするための通信インタフェースである。EXP117は、DE102に接続されている。EXP118は、DE103に接続されている。
CM120も、CM110と同様のハードウェアを用いて実現できる。CM120もDE102,103に接続されている。また、CM120もサーバ200およびネットワーク10に接続される(ただし、図示を省略している)。
DE102,103は、複数のHDD(磁気ディスク装置)を収容し、複数のHDDを組み合わせた大容量の記憶領域を利用可能にする。DE102は、HDD102a,102b,102c,102dを有している。DE103は、HDD103a,103b,103c,103dを有している。DE102,103は、HDDの代わりに、または、HDDと併せて、SSDなどの他の不揮発性記憶媒体を備えてもよい。例えば、CM110,120は、DE102,103に内蔵された複数のHDDを用いてRAID(Redundant Array of Inexpensive Disks)と呼ばれる技術により、アクセス性能や耐障害性を確保した論理的な記憶領域を実現し得る。
図4は、第2の実施の形態のサーバのハードウェア例を示す図である。サーバ200は、プロセッサ201,RAM202,HDD203,HBA(Host Bus Adaptor)204、画像信号処理部205、入力信号処理部206、読み取り装置207および通信インタフェース208を有する。FW配信サーバ300もサーバ200と同様のハードウェアを用いて実現できる。
プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ201は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM202は、サーバ200の主記憶装置である。RAM202は、プロセッサ201に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM202は、プロセッサ201による処理に用いる各種データを記憶する。
HDD203は、サーバ200の補助記憶装置である。HDD203は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD203には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。サーバ200は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
HBA204は、ストレージ装置100に対するデータの書き込みやストレージ装置100からのデータの読み出しに用いられる通信インタフェースである。ストレージ装置100との通信には、例えば、SASやFCなどを用いることができる。
画像信号処理部205は、プロセッサ201からの命令に従って、サーバ200に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部206は、サーバ200に接続された入力デバイス12から入力信号を取得し、プロセッサ201に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
読み取り装置207は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置207は、例えば、プロセッサ201からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM202またはHDD203に格納する。更に、プロセッサ201は、記録媒体13から読み取ったプログラムやデータを、ストレージ装置100のRAM112やフラッシュメモリ113に格納するようストレージ装置100に指示することもできる。
通信インタフェース208は、ネットワーク10を介してFW配信サーバ300を含む他のコンピュータと通信を行う。
図5は、第2の実施の形態の機能例を示す図である。ストレージ装置100は、記憶部130、FW記憶部140、バックアップデータ記憶部150、ユーザデータ記憶部160および制御部170を有する。
記憶部130は、RAM112に確保された記憶領域として実現される。記憶部130は、ファームウェアのプログラムやファームウェアの処理に用いられる設定データを一時的に記憶する。ファームウェアは、設定データの暗号化および復号を行うための暗号処理プログラムを含む。ファームウェアは、暗号処理プログラムで用いられる鍵の情報なども含む。RAM112は、揮発性の記憶装置なのでストレージ装置100(または、CM110)がシャットダウン(電源オフ)されると、記憶部130に格納された情報は消去される。
FW記憶部140は、フラッシュメモリ113に確保された記憶領域として実現される。フラッシュメモリ113は、不揮発性の記憶装置なのでストレージ装置100(または、CM110)がシャットダウンされても、FW記憶部140に格納された情報は保持される。
FW記憶部140は、ファームウェアのプログラムを記憶する。例えば、プロセッサ111がFW記憶部140に記憶されたファームウェアのプログラムを読み出して、記憶部130に格納し、実行することで、ストレージ装置100上でファームウェアの機能が発揮される。
FW記憶部140に記憶された情報は書き換え可能である。ファームウェアが更新されると、更新後のファームウェアがFW記憶部140に格納される。ファームウェアの更新では、前述の暗号処理プログラムも更新され得る。更新後のファームウェアがFW記憶部140に格納された後に、ストレージ装置100(または、CM110)を再起動することで、記憶部130に格納されたファームウェアを更新前のものから更新後のものへ置き換えることができる。
バックアップデータ記憶部150は、DE102のHDDに確保された記憶領域として実現される。HDDは、不揮発性の記憶装置なのでストレージ装置100がシャットダウンされても、バックアップデータ記憶部150に格納された情報は保持される。
バックアップデータ記憶部150は、ファームウェアの処理に用いられる設定データを記憶する。ただし、後述するように設定データは暗号化されて、バックアップデータ記憶部150に格納される。例えば、ストレージ装置100(または、CM110)がシャットダウンされる際に、記憶部130に格納された設定データを暗号化して、バックアップデータ記憶部150に退避しておく。すると、ストレージ装置100(または、CM110)の次回起動時に、暗号化された設定データをバックアップデータ記憶部150から読み出せる。ファームウェアに含まれる暗号処理プログラムを用いて設定データを復号して利用すれば、シャットダウン前の設定を、再起動後も引き継げる。
ユーザデータ記憶部160は、DE102のHDDに確保された記憶領域として実現できる。ユーザデータ記憶部160は、ユーザの業務処理などに用いられるユーザデータを記憶する。DE103も同様にユーザデータ記憶部を有している。
制御部170は、ファームウェアの稼働状況の管理や、ファームウェアの更新を制御する。制御部170は、ファームウェアとは別個のプログラムがプロセッサ111によって実行されることで実現されてもよいし、ファームウェアの機能の一部として実現されてもよい。
制御部170は、ストレージ装置100やCM110がシャットダウンされる際に、記憶部130に格納された設定データをバックアップデータ記憶部150に退避させる。このとき、制御部170は、ファームウェアに含まれる暗号処理プログラムを用いて、設定データを暗号化した上で退避させる。
ここで、設定データは、DE102,DE103へのデータアクセスに用いられる情報を含んでいる。設定データが暗号化されていれば、バックアップデータ記憶部150に退避させた設定データの内容を参照することが困難になる。このため、設定データを暗号化することで、DE102,103に格納されたユーザデータに対する不正アクセスを抑制できる。
制御部170は、暗号化後の設定データの退避とともに、暗号化に用いた暗号処理プログラムの一部分(プログラム断片)を当該暗号処理プログラムの版数に対応付けてバックアップデータ記憶部150に退避させる。制御部170は、ストレージ装置100やCM110が起動すると、バックアップデータ記憶部150に記憶され、暗号化されている設定データを復号して、記憶部130に格納する。すると、シャットダウン前と同じ設定を引き継いで、ストレージ装置100を利用できる。暗号化された設定データの復号方法の詳細については、後述する。
サーバ200は、記憶部210およびFW適用部220を有する。記憶部210は、RAM202やHDD203に確保された記憶領域として実現される。記憶部210は、FW配信サーバ300から取得したストレージ装置100のファームウェアのプログラムを記憶する。FW適用部220は、最新版のファームウェアのプログラムをFW配信サーバ300から取得し、ストレージ装置100に適用する。ただし、ストレージ装置100が、最新版のファームウェアのプログラムを(サーバ200を介さずに)FW配信サーバ300から取得してもよい。
FW配信サーバ300は、記憶部310および配信部320を有する。記憶部310は、FW配信サーバ300が備えるRAMやHDDに確保された記憶領域として実現される。記憶部310は、ファームウェアのプログラムを記憶する。配信部320は、記憶部310に格納されたファームウェアのプログラムの配信を行う。
ここで、記憶部310に格納されたファームウェアは、歴代の暗号処理プログラムに対して次のような情報を含む。(1)最新の版数の暗号処理プログラムの全体。(2)最新よりも古い版数(過去の版数)の暗号処理プログラムの一部分(プログラム断片)。
なお、前述のように、制御部170は、プロセッサ111によって実行されるプログラムのモジュールであってもよい。また、CM120も、記憶部130、FW記憶部140、バックアップデータ記憶部150および制御部170と同様の機能を有し、CM110と同様の処理を行える。更に、FW適用部220は、プロセッサ201によって実行されるプログラムのモジュールであってもよい。配信部320は、FW配信サーバ300が備えるプロセッサによって実行されるプログラムのモジュールであってもよい。
図6は、第2の実施の形態の管理テーブルの例を示す図である。管理テーブル141は、ファームウェアのプログラムとともにFW配信サーバ300によって配信される情報である。管理テーブル141は、例えばファームウェアに組み込まれており、ファームウェアのプログラムとともにFW記憶部140に格納される。管理テーブル141は、版数、データサイズおよびプログラム断片の項目を含む。
版数の項目には、暗号処理プログラムの版数が登録される。データサイズの項目には、プログラム断片のサイズが登録される。プログラム断片の項目には、プログラム断片が登録される。プログラム断片は、例えば、バイナリ形式の暗号処理プログラムの一部分である。以下では、プログラム断片を示す場合に“プログラム断片A1”のように記載する。
例えば、管理テーブル141には、版数が“1.0”、データサイズが“a1バイト”、プログラム断片が“プログラム断片A1”という情報が登録されている。これは、管理テーブル141に、版数“1.0”に対応する暗号処理プログラムのプログラム断片A1が含まれており、プログラム断片A1のデータサイズがa1バイトであることを示している。
管理テーブル141には、最新版までの暗号処理プログラムに対して版数、データサイズおよびプログラム断片が登録されることになる。ただし、管理テーブル141には、最新版の暗号処理プログラムのプログラム断片の本体は登録されなくてもよい(最新版に関しては、少なくとも最新の版数と当該プログラム断片のデータサイズが登録されていればよい)。
図7は、第2の実施の形態の断片テーブルの例を示す図である。断片テーブル151は、制御部170によって生成され、バックアップデータ記憶部150に格納される。断片テーブル151は、版数、データサイズおよびプログラム断片の項目を含む。
版数の項目には、暗号化に用いられた暗号処理プログラムの版数が登録される。データサイズの項目には、プログラム断片のサイズが登録される。
例えば、断片テーブル151には、版数が“1.0”、データサイズが“a2バイト”、プログラム断片が“プログラム断片A2”という情報が登録されている。これは、断片テーブル151に、版数“1.0”に対応する暗号処理プログラムのプログラム断片A2が含まれており、プログラム断片A2のデータサイズがa2バイトであることを示している。
図8は、第2の実施の形態のプログラム断片の例を示す図である。図8(A)はプログラム断片A1の作成を例示している。図8(B)はプログラム断片A2の作成を例示している。プログラム断片A1は、暗号処理プログラムAの一部分である。また、プログラム断片A2は、暗号処理プログラムAに対してプログラム断片A1の部分を除いた残りの部分である。例えば、プログラム断片A1は、暗号処理プログラムAの先頭からa1バイト分の部分(前部分)である。プログラム断片A2は、残りのa2バイト分の部分(後ろ部分)である。この場合、プログラム断片A1の後方にプログラム断片A2を結合することで、暗号処理プログラムAを得ることができる。
プログラム断片A1は、配信部320により暗号処理プログラムAから作成され、記憶部310に格納された管理テーブルに登録される。配信部320は、最新版よりも古い他の暗号処理プログラムについても同様に、サイズと版数とに対応付けてプログラム断片を管理テーブルに登録する。管理テーブルは最新のファームウェアに含めて配布されることになる。
一方、プログラム断片A2は、制御部170により暗号処理プログラムAから作成され、断片テーブル151に登録される。このとき、プログラム断片A2のサイズa2を、プログラム断片A1のサイズa1よりも大きくする。ファームウェアに含まれる管理テーブルのデータサイズを抑え、配信するファームウェアのサイズをより低減するためである。なお、先頭側をプログラム断片A1としたが、先頭側をプログラム断片A2としてもよい。プログラム断片A2は、第1の実施の形態の第1の部分X11の一例である。プログラム断片A1は、第1の実施の形態の第2の部分X12の一例である。
図9は、第2の実施の形態の暗号化の例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)CM110は、シャットダウンを開始する。制御部170が、CM110のシャットダウンを制御してもよい。
(S12)制御部170は、現在実行中のファームウェアに含まれる最新版の暗号処理プログラムを用いて、記憶部130に格納された設定データを暗号化する。ここで、一例として、暗号化に用いられた暗号処理プログラムは、版数“1.0”の暗号処理プログラムAであるとする。また、暗号化後の設定データを暗号化データと呼ぶこととする。
(S13)制御部170は、バックアップデータ記憶部150に暗号化データを格納する(暗号化データの退避)。
(S14)制御部170は、暗号処理プログラムAを分割してプログラム断片A2を取得する。具体的には、制御部170は、管理テーブル141を参照して、プログラム断片A1のデータサイズ“a1バイト”を取得する。制御部170は、暗号処理プログラムAのうち、先頭のa1バイト分を除いた部分をプログラム断片A2とする。
(S15)制御部170は、暗号処理プログラムAの版数“1.0”、プログラム断片A2のデータサイズ“a2バイト”およびプログラム断片A2本体を、バックアップデータ記憶部150に格納された断片テーブル151に登録する。
(S16)CM110は、シャットダウンを完了する。なお、ファームウェアのプログラムを更新する場合、更新後のファームウェアのプログラムが、フラッシュメモリ113上のFW記憶部140に格納済みの状態で、シャットダウンが完了する。
このように、制御部170は、CM110のシャットダウン時(電源オフ時)に、RAM112上の設定データを暗号化し、フラッシュメモリ113上に退避させることで、バックアップを行う。このとき、制御部170は、設定データの暗号化に用いられた暗号処理プログラムAのプログラム断片A2を断片テーブル151に登録する。
図10は、第2の実施の形態の復号の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(S21)CM110は、起動を開始する。例えば、プロセッサ111により、フラッシュメモリ113から制御部170の機能を記述したプログラムやファームウェアのプログラムがRAM112上にロードされ、これらのプログラムが実行されることで、CM110上で制御部170やファームウェアの機能が発揮される。このとき、RAM112上から読み出されるファームウェアのプログラムが、前回シャットダウン時のファームウェアに対して更新されていることがある。その場合、暗号処理プログラムも更新されていることがある。
(S22)制御部170は、断片テーブル151から、プログラム断片の版数を取得する。例えば、制御部170は、プログラム断片A2の版数“1.0”を断片テーブル151から取得する。
(S23)制御部170は、ステップS22で取得した版数と同じ版数が管理テーブル141に存在するか否かを判定する。同じ版数が存在する場合、処理をステップS24に進める。同じ版数が存在しない場合、処理を終了する。ステップS22で取得した版数と同じ版数が管理テーブル141に存在しない場合は、バックアップデータ記憶部150に格納された暗号化データを復号できないことになる。この場合、制御部170は、ユーザにエラーを通知してもよい。
(S24)制御部170は、ステップS22で取得した版数が最新版であるか否かを判定する。最新版である場合、処理をステップS28に進める。最新版でない場合、処理をステップS25に進める。前述のように、ファームウェアには最新版の暗号処理プログラムの全体が含まれている。例えば、版数“1.0”が最新版であれば、RAM112上にロードされているファームウェアに暗号処理プログラムAの全体が含まれる。
(S25)制御部170は、ステップS22で取得した版数に対応するプログラム断片を管理テーブル141から取得する。管理テーブル141は、例えば、ファームウェアとともに記憶部130上にロードされている。版数“1.0”であれば、制御部170は、プログラム断片A1を管理テーブル141から取得する。
(S26)制御部170は、断片テーブル151からプログラム断片A2を取得する。
(S27)制御部170は、プログラム断片A1,A2を結合することで、暗号処理プログラムAを復元する。
(S28)制御部170は、暗号処理プログラムAを用いて、バックアップデータ記憶部150に格納された暗号化データを復号することで、設定データを取得する。
このようにして、制御部170は、暗号処理プログラムAを復元し、暗号化データを復号することで、設定データを取得する。制御部170は、取得した設定データを用いて、ストレージ装置100の制御を行える。
図11は、第2の実施の形態の暗号処理の具体例を示す図である。図11の例では、設定データC1およびファームウェアF1が記憶部130に格納されている。ファームウェアF1では、暗号処理プログラムAが最新版の暗号処理プログラムである。制御部170は、暗号処理プログラムAを用いて、設定データC1を暗号化し、暗号化データE1を生成する。制御部170は、暗号化データE1をバックアップデータ記憶部150(フラッシュメモリ113)に格納する。また、制御部170は、暗号処理プログラムAからプログラム断片A2を取得する。制御部170は、暗号処理プログラムAの版数“1.0”に対応付けて、プログラム断片A2をバックアップデータ記憶部150に格納する(ステップST1)。
その後、ファームウェアF1がファームウェアF2に交換される。ファームウェアF2では、暗号処理プログラムNが最新版である。ファームウェアF2は、暗号処理プログラムNの版数よりも古い版数に対して、暗号処理プログラムの一部分だけを保持する。例えば、版数“1.0”に対しては、プログラム断片A1だけを保持している。同様に、ファームウェアF2は、最新版よりも古いその他の版数に対し、各版数の暗号処理プログラムのプログラム断片B1,・・・,N1を含んでいる。なお、プログラム断片N1は、暗号処理プログラムNのプログラム断片である。
CM110は、記憶部130(RAM112)にファームウェアF2をロードして実行する。制御部170は、記憶部130に格納されたファームウェアF2の情報から、バックアップデータ記憶部150に格納されたプログラム断片A2の版数“1.0”に対応するプログラム断片A1を検索する。制御部170は、プログラム断片A1,A2を結合することで、暗号処理プログラムAを復元する(ステップST2)。
制御部170は、バックアップデータ記憶部150に記憶された暗号化データE1を、復元した暗号処理プログラムAを用いて復号することで、設定データC1を取得する(ステップST3)。なお、図11のステップST3では記憶部130のプログラム断片A1の図示を省略している。設定データC1は、ファームウェアF2の処理に利用される。ステップST3の復号後、制御部170は、暗号処理プログラムAを記憶部130から削除してよい。
図12は、ファームウェアの比較例を示す図である。図12(A)は、第2の実施の形態のストレージ装置100で利用されるファームウェアF2を例示している。図12(B)は、ファームウェアF2に対する比較例であるファームウェアFaを示している。ファームウェアF2は、最新版よりも古い版の暗号処理プログラムについて、各版の暗号処理プログラムの一部分のみを含む。ファームウェアFaは、全版数の暗号処理プログラムA,B,・・・,Nの全体を含んでいる。
第2の実施の形態のストレージ装置100によれば、ファームウェアのデータ量を低減できる。例えば、上記のように過去の各版数について暗号処理プログラムの全体を、新しいファームウェアに含めることも考えられる。しかし、この方法では、暗号処理プログラムの更改に伴ってファームウェアのデータ量が増大するおそれがある。
ストレージ装置100によれば、例えば、過去の暗号処理プログラムAに対し、プログラム断片A1だけを新しいファームウェアF2に含めさえすれば、ファームウェアF2に更新後も、暗号処理プログラムAにより暗号化された暗号化データE1を復号可能である。このため、過去の暗号処理プログラムの全体をファームウェアF2に含めるよりも、ファームウェアF2のデータサイズを小さくすることができる。
特に、ストレージ装置100側でバックアップ時に取得するプログラム断片(例えば、プログラム断片A2)のデータサイズを、ファームウェアに含めるプログラム断片(例えば、プログラム断片A1)のデータサイズよりも大きくする。言い換えれば、ファームウェアに含めるプログラム断片のデータサイズを、ストレージ装置100側でバックアップ時に取得するプログラム断片よりも小さくする。これにより、ファームウェアのデータ量をより低減できる。
また、DE102のHDDには暗号処理プログラムAの全体を格納しないので、仮に当該HDDが第三者に取得されたとしても、暗号化データが復号されて、設定データの内容を不正に取得される可能性を低減できる。
なお、上記の説明では、バックアップデータ記憶部150をDE102やDE103のHDD上に設けるものとしたが、フラッシュメモリ113上に設けてもよい。あるいは、磁気テープや光ディスクなどの可搬型の外部記憶媒体にバックアップデータ記憶部150を設けてもよい。例えば、ストレージ装置100に内蔵された磁気テープ装置や、ストレージ装置100またはサーバ200に接続された磁気テープ装置を利用可能なこともある。その場合、磁気テープ装置に挿入された磁気テープに、暗号化データE1や断片テーブル151を格納することもできる。
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、暗号処理プログラムを前部分と後ろ部分とに分けるものとした。第3の実施の形態では、暗号処理プログラムをより細かい所定サイズの単位(以下、ブロックと称する)に分ける機能を提供する。
ここで、第3の実施の形態の情報処理システムは、図2で示した第2の実施の形態の情報処理システムと同様である。また、第3の実施の形態の情報処理システムに含まれる装置や機能は、図2〜図5で示した第2の実施の形態の装置や機能と同様である。そこで、第3の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。ただし、管理テーブルおよび断片テーブルに登録される情報が、第2の実施の形態とは異なる。
図13は、第3の実施の形態のテーブル例を示す図である。管理テーブル142は、管理テーブル141に代えて、ファームウェアとともに配信部320により配信される。管理テーブル142は、版数毎に複数用意され、ファームウェアとともにFW記憶部140に格納される。
管理テーブル142は、版数、サイズ、整数、個数およびプログラム断片の情報を含む。版数の項目に登録される情報は、管理テーブル141と同様である。
サイズの項目には、1ブロックのサイズ(例えば、256キロバイト)が登録される。整数の項目には、整数が登録される。個数の項目には、暗号処理プログラムをブロック単位に分割した場合のブロックの個数が登録される。プログラム断片として、複数のブロックが登録される。
断片テーブル152は、断片テーブル151に代えて、バックアップデータ記憶部150に格納される。断片テーブル152は、版数およびプログラム断片の情報を含む。版数の項目に登録される情報は、断片テーブル151と同様である。プログラム断片として、複数のブロックが登録される。
ここで、管理テーブル142および断片テーブル152において、プログラム断片を登録する領域よりも前側の所定の領域は、版数、サイズ、整数、個数などの管理情報(分割の条件を示す情報)を格納する領域になっている。ただし、断片テーブル152では、データサイズ、整数および個数に相当する領域には、すべて“0”が挿入される。
例えば、暗号処理プログラムZを次のように分けることが考えられる。まず、暗号処理プログラムZをブロック単位に分割すると、ブロックZ1,Z2,Z3,・・・となる。そして、管理テーブル142に登録された版数m(mは整数)および整数nを用いて数列K={k1,k2,k3,・・・}を求める。ここで、ki=n×i+m(iは整数)である。また、管理テーブル142に登録されたブロックの個数αとして、ki≧αになる最小のkiが得られるまで、i=0,1,2,3,・・・のようにiを1ずつ増加させる。版数mが“1.1”などであれば、m=1のように小数点以下を切り捨てて整数化する(切り上げや四捨五入により整数化してもよい)。
例えば、m=3、n=10であれば、数列K={3,13,23,33,・・・}である。そして、配信部320は、暗号処理プログラムZのブロックZ1,Z2,Z3,・・・のうち、前からki番目のブロックを、プログラム断片Zaの要素として、管理テーブル142に格納する。例えば、m=3,n=10の例であれば、ブロックZ3,Z13,Z23,・・・が管理テーブル142に登録されることになる。
一方、この場合、制御部170は、ブロックZ3,Z13,Z23,・・・以外のブロックZ1,Z2,Z4,・・・を、プログラム断片Zbの要素として、断片テーブル152に登録する。制御部170は、プログラム断片ZbのブロックZ3,Z13,Z23,・・・に該当する部分(ブロックZ3の部分であれば、ブロックZ2,Z4の間の部分)に、ダミーデータ(例えば、“0”のみを並べたデータ)を上書きする。
すると、制御部170は、断片テーブル152に登録されたプログラム断片Zbのダミーデータが上書きされた部分(ダミー部分)に、管理テーブル142に登録された各ブロックを挿入することで、暗号処理プログラムZを復元できる。
次に、第3の実施の形態の処理手順を説明する。まず、FW配信サーバ300による管理テーブル142の作成手順を説明する。
図14は、第3の実施の形態の管理テーブルの作成例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。なお、FW配信サーバ300は、以下の手順を暗号処理プログラム毎に実行する。
(S31)配信部320は、記憶部310に格納された暗号処理プログラムZをブロック単位に分割する。ブロックのサイズは、予め与えられる。配信部320は、暗号処理プログラムZに対して、ブロックZ1,Z2,Z3,・・・を得る。
(S32)配信部320は、暗号処理プログラムZを分割して得た複数のブロックそれぞれに対し、記憶部310の上位アドレス側から番号を付与する。配信部320は、番号付けにより、ブロックの個数αを得ることができる。例えば、ブロックZ1に番号“1”を付与する。ブロックZ2に番号“2”を付与する。以降のブロックについても同様である。
(S33)配信部320は、小さい番号のブロックから順番に1つ取得する。暗号処理プログラムZに対して、ステップS33を最初に実行するならブロックZ1を取得する。次にステップS33を実行するときは、ブロックZ2を取得する。ここで、ステップS33で取得されたブロックを「着目するブロック」と称する。
(S34)配信部320は、着目するブロックの番号が数列K={k1,k2,k3,・・・}に含まれるか否かを判定する。配信部320は、前述のように、ki=n×i+m(i=0,1,2,3,・・・)の演算により、数列Kの各要素を求めることができる。着目するブロックの番号が数列Kに含まれる場合、処理をステップS35に進める。着目するブロックの番号が数列Kに含まれない場合、処理をステップS36に進める。
(S35)配信部320は、管理テーブルを作成して記憶部310に格納し、着目するブロックを登録する。
(S36)配信部320は、全てのブロックを処理済みであるか否かを判定する。全てのブロックを処理済みである場合、処理をステップS37に進める。全てのブロックを処理済みでない場合、処理をステップS33に進める。
(S37)配信部320は、記憶部310に格納された管理テーブルに、暗号処理プログラムZの版数、ブロックのサイズ、整数n、ブロックの個数αを登録する。
このようにして、配信部320は、最新版および旧版の暗号処理プログラム毎に管理テーブルを作成し、ファームウェアに含める。配信部320は、最新版の暗号処理プログラムの全体もファームウェアに含める。次に、ストレージ装置100による暗号化の手順を説明する。
図15は、第3の実施の形態の暗号化の例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S41)CM110は、シャットダウンを開始する。制御部170が、CM110のシャットダウンを制御してもよい。
(S42)制御部170は、現在実行中のファームウェアに含まれる最新版の暗号処理プログラムを用いて、記憶部130に格納された設定データを暗号化する。ここで、一例として、暗号化に用いられた暗号処理プログラムは暗号処理プログラムZであるとする。
(S43)制御部170は、バックアップデータ記憶部150に暗号化データを格納する(暗号化データの退避)。
(S44)制御部170は、記憶部130に格納された暗号処理プログラムZをブロック単位に分割する。ブロックのサイズとして、管理テーブルに登録されたサイズ(例えば、256キロバイト)を用いる。制御部170は、暗号処理プログラムZに対して、ブロックZ1,Z2,Z3,・・・を得る。
(S45)制御部170は、暗号処理プログラムZを分割して得た複数のブロックそれぞれに対し、記憶部130の上位アドレス側から番号を付与する。制御部170は、番号付けにより、ブロックの個数αを得ることができる。例えば、ブロックZ1に番号“1”を付与する。ブロックZ2に番号“2”を付与する。以降のブロックについても同様である。
(S46)制御部170は、数列K={k1,k2,k3,・・・}に含まれる番号のブロック部分にダミーデータ(すべて“0”)を上書きする。制御部170は、前述のように、ki=n×i+m(i=0,1,2,3,・・・)の演算により、数列Kの各要素を求めることができる。制御部170は、管理テーブルから整数nの値を取得する(暗号処理プログラムZの版数に対応付けられている)。
(S47)制御部170は、暗号処理プログラムZのうち数列Kに含まれる番号のブロック部分にダミーデータを書き込んだプログラム断片Zbを作成する。制御部170は、暗号処理プログラムZの版数に対応付けて、プログラム断片Zb本体を断片テーブル152に登録する。
(S48)CM110は、シャットダウンを完了する。なお、ファームウェアのプログラムを更新する場合、更新後のファームウェアのプログラムが、フラッシュメモリ113上のFW記憶部140に格納済みの状態で、シャットダウンが完了する。
このように、制御部170は、CM110のシャットダウン時(電源オフ時)に、RAM112上の設定データを暗号化して退避させることで、バックアップを行う。このとき、制御部170は、設定データの暗号化に用いられた暗号処理プログラムZのプログラム断片Zbを断片テーブル152に登録する。
図16は、第3の実施の形態の復号の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S51)CM110は、起動を開始する。例えば、プロセッサ111により、フラッシュメモリ113から制御部170の機能を記述したプログラムやファームウェアのプログラムがRAM112上にロードされ、これらのプログラムが実行されることで、CM110上で制御部170やファームウェアの機能が発揮される。このとき、RAM112上から読み出されるファームウェアのプログラムが、前回シャットダウン時のファームウェアに対して更新されていることがある。その場合、暗号処理プログラムも更新されていることがある。
(S52)制御部170は、断片テーブル152から、プログラム断片Zbに対応付けられた版数を取得する。例えば、制御部170は、プログラム断片Zbの版数を断片テーブル152から取得する。
(S53)制御部170は、ステップS52で取得した版数と同じ版数の管理テーブル142が存在するか否かを判定する。各版数に対応する管理テーブル142は、例えば、ファームウェアとともに記憶部130上にロードされている。存在する場合、処理をステップS54に進める。存在しない場合、処理を終了する。ステップS52で取得した版数と同じ版数の管理テーブル142が存在しない場合は、バックアップデータ記憶部150に格納された暗号化データを復号できないことになる。この場合、制御部170は、ユーザにエラーを通知してもよい。
(S54)制御部170は、ステップS52で取得した版数が最新版であるか否かを判定する。最新版である場合、処理をステップS60に進める。最新版でない場合、処理をステップS55に進める。前述のように、ファームウェアには最新版の暗号処理プログラムの全体が含まれている。暗号処理プログラムZの版数が最新版であれば、RAM112上にロードされているファームウェアに暗号処理プログラムZの全体が含まれる。
(S55)制御部170は、ステップS52で取得した版数に対応するブロックのサイズ、整数および個数の情報を、管理テーブル142から取得する。
(S56)制御部170は、断片テーブル152からプログラム断片Zbを取得し、RAM112上に展開する。
(S57)制御部170は、管理テーブル142のプログラム断片Zaの中からブロックを1つ取得する(記憶部130の上位アドレス側から順番に1つずつ取得する)。例えば、ステップS57を最初に実行するならブロックZ3を取得する。ステップS57を次に実行するときは、ブロックZ13を取得する。
(S58)制御部170は、RAM112上に展開したプログラム断片Zbのダミー部分にステップS57で取得したブロックを上書きする(上位アドレス側のダミー部分から順番に上書きしていく)。
(S59)制御部170は、管理テーブル142に登録された全てのブロックについて、プログラム断片Zbのダミー部分に上書きする処理を行ったか否かを判定する。全てのブロックを処理済み(ダミー部分に上書き済み)である場合、処理をステップS60に進める。全てのブロックを処理済みでない場合、処理をステップS57に進める。制御部170は、全てのブロックをプログラム断片Zbのダミー部分に上書きすることで、暗号処理プログラムZを得ることができる。
(S60)制御部170は、バックアップデータ記憶部150に記憶された暗号化データを、暗号処理プログラムZを用いて復号することで、設定データを取得する。
このようにして、暗号処理プログラムZを復元し、暗号化データを復号することで、設定データを取得する。制御部170は、取得した設定データを用いて、ストレージ装置100の制御を行える。
図17は、第3の実施の形態の暗号処理プログラムの復元の具体例を示す図である。プログラム断片Zbは、前述のように、暗号処理プログラムZのブロックZ3,Z13,Z23,・・・に相当する部分に、ダミーデータ(例えば、すべて0)が上書きされている。制御部170は、管理テーブル142からブロックZ3,Z13,Z23,・・・を取得して、プログラム断片Zbの各ダミー部分に上書きすることで、暗号処理プログラムZを得る。
なお、プログラム断片Zbにダミー部分を設けるものとしたが、ダミー部分を設けなくてもよい。その場合、プログラム断片Zbのダミー部分を詰めて、各ブロックを配置する(例えば、ブロックZ2の次に、ダミー部分ではなく、ブロックZ4を配置する)。すると、プログラム断片Zbのサイズを小さくすることができる。また、制御部170は、管理テーブル142に格納された情報を基に、プログラム断片Zbのうち、ブロックZ3,Z13,Z23,・・・を挿入する箇所を決定できる。
例えば、ブロックZ1の開始アドレス+ブロックサイズ×(k1−1)のアドレス位置がブロックZ3を挿入するRAM112上のアドレス位置である。ブロックZ4のアドレス位置は、1ブロックサイズ分後方にずれることになる。ブロックZ3の挿入後において、ブロックZ1の開始アドレス+ブロックサイズ×(k13−1)のアドレス位置がブロックZ13を挿入するアドレス位置である。以降のブロックについても同様である。
このように、ストレージ装置100は、プログラム断片Za,Zbを結合することで、暗号処理プログラムZを得ることができる。
第3の実施の形態のストレージ装置100によれば、第2の実施の形態と同様に、制御プログラムのデータ量を低減できる。また、第3の実施の形態では、暗号処理プログラムZから複数箇所を除去することでプログラム断片Za,Zbを作成する。このため、第2の実施の形態のように前方/後方部分に分けるよりも、管理テーブル142のブロックのサイズや整数の情報なしに、プログラム断片Za,Zbから暗号処理プログラムZを復元することを難しくすることができる。このため、仮に、プログラム断片Za,Zbが不正に取得されたとしても、管理テーブル142のブロックのサイズや整数の情報が取得されなければ、暗号処理プログラムZが不正に復元される可能性を低減できる。
なお、上記の説明では、バックアップデータ記憶部150をDE102やDE103のHDD上に設けるものとしたが、フラッシュメモリ113上に設けてもよい。あるいは、バックアップデータ記憶部150を磁気テープに設けてもよい。例えば、ストレージ装置100に内蔵された磁気テープ装置や、ストレージ装置100またはサーバ200に接続された磁気テープ装置を利用可能なこともある。その場合、磁気テープ装置に挿入された磁気テープに、暗号化データや断片テーブル152を格納することもできる。
また、第1の実施の形態の情報処理は、演算部1bとして用いられるプロセッサに、プログラムを実行させることで実現できる。第2,第3の実施の形態の情報処理は、プロセッサ111にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体13として例示したものなど)に記録できる。プロセッサとRAMとを有するCM110,120もコンピュータの一例といえる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、フラッシュメモリ113などの記憶装置に格納し(インストールし)、当該記憶装置からRAM112にプログラムを読み込んで実行してもよい。
1 ストレージ制御装置
1a 記憶部
1b 演算部
1c 不揮発性記憶媒体
2,2a 制御プログラム
3,3a 版数の情報
4 設定データ
4a 暗号化データ
X1 暗号処理プログラム
X11 第1の部分
X12,X22 第2の部分

Claims (6)

  1. データの暗号化および復号に用いられる暗号処理プログラムと前記暗号処理プログラムの版数の情報とを含みストレージ装置の制御に用いられる第1の制御プログラムを記憶する記憶部と、
    前記データのバックアップ時に、前記データを暗号化した暗号化データと暗号化に用いられた前記暗号処理プログラムの第1の部分と前記版数の情報とを不揮発性記憶媒体に格納し、
    前記第1の制御プログラムを第2の制御プログラムに更新した後、前記不揮発性記憶媒体から前記暗号化データを読み出す際に、前記不揮発性記憶媒体に格納された前記版数に対応する前記暗号処理プログラムの第2の部分を、前記第2の制御プログラムから取得し、
    取得した前記第2の部分と前記不揮発性記憶媒体に格納された前記第1の部分とを用いて前記不揮発性記憶媒体に格納された前記暗号化データの復号に用いられる前記暗号処理プログラムを生成する、演算部と、
    を有するストレージ制御装置。
  2. 前記演算部は、前記第2の部分のサイズよりも大きいサイズである前記第1の部分を前記暗号処理プログラムから取得し、前記不揮発性記憶媒体に格納する、請求項1記載のストレージ制御装置。
  3. 前記演算部は、前記第1の制御プログラムに含まれる前記暗号処理プログラムを用いて、前記第1および前記第2の制御プログラムの処理に用いられる設定データの暗号化および復号を行う、請求項1または2記載のストレージ制御装置。
  4. 前記演算部は、前記第1の制御プログラムに含まれる版数毎の所定の条件に基づいて前記暗号処理プログラムから前記第1の部分を取得し、また、前記第2の制御プログラムに含まれる版数毎の前記条件に基づいて前記第1および前記第2の部分を結合することで前記暗号処理プログラムを生成する、請求項1乃至3の何れか1項に記載のストレージ制御装置。
  5. 前記演算部は、自装置の稼働停止時に、前記暗号処理プログラムから前記第1の部分を取得して前記不揮発性記憶媒体に格納し、また、前記第2の制御プログラムに更新した後の自装置の稼働再開時に、前記第2の制御プログラムを参照して前記暗号処理プログラムの生成を行う、請求項1乃至4の何れか1項に記載のストレージ制御装置。
  6. ストレージ装置の制御に用いられるコンピュータに、
    データの暗号化および復号に用いられる暗号処理プログラムと前記暗号処理プログラムの版数の情報とを含み前記ストレージ装置の制御に用いられる第1の制御プログラムを取得し、
    前記データのバックアップ時に、前記データを暗号化した暗号化データと暗号化に用いられた前記暗号処理プログラムの第1の部分と前記版数の情報とを不揮発性記憶媒体に格納し、
    前記第1の制御プログラムを第2の制御プログラムに更新した後、前記不揮発性記憶媒体から前記暗号化データを読み出す際に、前記不揮発性記憶媒体に格納された前記版数に対応する前記暗号処理プログラムの第2の部分を、前記第2の制御プログラムから取得し、
    取得した前記第2の部分と前記不揮発性記憶媒体に格納された前記第1の部分とを用いて前記不揮発性記憶媒体に格納された前記暗号化データの復号に用いられる前記暗号処理プログラムを生成する、
    処理を実行させるプログラム。
JP2014097629A 2014-05-09 2014-05-09 ストレージ制御装置およびプログラム Pending JP2015215727A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014097629A JP2015215727A (ja) 2014-05-09 2014-05-09 ストレージ制御装置およびプログラム
US14/690,798 US20150324301A1 (en) 2014-05-09 2015-04-20 Storage control apparatus and computer-readable storage medium storing computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014097629A JP2015215727A (ja) 2014-05-09 2014-05-09 ストレージ制御装置およびプログラム

Publications (1)

Publication Number Publication Date
JP2015215727A true JP2015215727A (ja) 2015-12-03

Family

ID=54367958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014097629A Pending JP2015215727A (ja) 2014-05-09 2014-05-09 ストレージ制御装置およびプログラム

Country Status (2)

Country Link
US (1) US20150324301A1 (ja)
JP (1) JP2015215727A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262135B1 (en) * 2016-12-13 2019-04-16 Symantec Corporation Systems and methods for detecting and addressing suspicious file restore activities
US10289844B2 (en) * 2017-01-19 2019-05-14 International Business Machines Corporation Protecting backup files from malware
JP2020087293A (ja) * 2018-11-30 2020-06-04 キヤノン株式会社 情報処理装置および情報処理装置の制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537567A (en) * 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
JP4085028B2 (ja) * 2003-06-26 2008-04-30 株式会社リコー 可搬型情報記録媒体,データ記録方法,データ再生方法、およびデータ記録プログラムならびにデータ再生プログラム
JP5090066B2 (ja) * 2006-06-08 2012-12-05 パナソニック株式会社 データ格納装置、管理サーバ、集積回路、データ更新システム、家電機器、データ更新方法、暗号化方法、および、暗復号鍵生成方法
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8555059B2 (en) * 2010-04-16 2013-10-08 Microsoft Corporation Secure local update of content management software

Also Published As

Publication number Publication date
US20150324301A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
US9792450B2 (en) Preserving redundancy in data deduplication systems by encryption
US8117168B1 (en) Methods and systems for creating and managing backups using virtual disks
JP5640845B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US9053075B2 (en) Storage control device and method for controlling storages
US8489893B2 (en) Encryption key rotation messages written and observed by storage controllers via storage media
US10303395B2 (en) Storage apparatus
JP6064608B2 (ja) ストレージ装置、バックアッププログラム、およびバックアップ方法
US8423505B2 (en) Catalog reorganization apparatus and method
US8977865B2 (en) Data encryption conversion for independent agents
JP2009205333A (ja) 計算機システム、ストレージ装置及びデータ管理方法
JP2011175642A (ja) 前進および後退デルタを利用するデータの復元
JP5007248B2 (ja) スナップショットを管理する記憶制御装置及び方法
JPWO2008149458A1 (ja) 暗号化装置、暗号化方法および暗号化プログラム
JP2007034487A (ja) 情報処理装置及びその制御方法、コンピュータプログラム
JP2015215727A (ja) ストレージ制御装置およびプログラム
EP2998903B1 (en) System and method for robust full-drive encryption
JP2008226167A (ja) データ配布システム及びデータ配布プログラム
US8458134B2 (en) Near continuous space-efficient data protection
US11403182B2 (en) Method and system for any-point in time recovery within traditional storage system via a continuous data protection interceptor
RU2580014C2 (ru) Система и способ изменения маски зашифрованной области при возникновении сбоя в компьютерной системе
JP2011197928A (ja) ストレージ装置、及び、暗号鍵の変更方法
JP5974620B2 (ja) バックアップ方法、プログラムおよびバックアップ装置
JP6142510B2 (ja) 情報格納制御装置及びその制御方法、並びにコンピュータ・プログラム
CN116048881A (zh) 一种实现分区处理的方法、计算机存储介质及终端