IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特許-ストレージ装置 図1
  • 特許-ストレージ装置 図2
  • 特許-ストレージ装置 図3
  • 特許-ストレージ装置 図4
  • 特許-ストレージ装置 図5
  • 特許-ストレージ装置 図6
  • 特許-ストレージ装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-01
(45)【発行日】2023-09-11
(54)【発明の名称】ストレージ装置
(51)【国際特許分類】
   G06F 21/57 20130101AFI20230904BHJP
   G06F 3/08 20060101ALI20230904BHJP
   G06F 13/10 20060101ALI20230904BHJP
   G06F 21/79 20130101ALI20230904BHJP
【FI】
G06F21/57 320
G06F3/08 H
G06F13/10 330Z
G06F21/79
【請求項の数】 10
(21)【出願番号】P 2019147505
(22)【出願日】2019-08-09
(65)【公開番号】P2021028763
(43)【公開日】2021-02-25
【審査請求日】2022-03-09
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】二木 隼平
(72)【発明者】
【氏名】梅澤 健太郎
【審査官】吉田 歩
(56)【参考文献】
【文献】米国特許出願公開第2019/0073478(US,A1)
【文献】特開2016-118879(JP,A)
【文献】特開平09-330272(JP,A)
【文献】特開2015-036847(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 3/08
G06F 13/10
G06F 21/79
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
ホストからのコマンドに基づき、前記不揮発性メモリへのデータの書き込みおよび前記不揮発性メモリからのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、少なくとも1つのプロセッサを含み、
前記不揮発性メモリは、前記コマンドに基づくデータの書き込みおよび読み出しの制御を前記少なくとも1つのプロセッサが行うための通常動作用ファームウェアと、前記通常動作用ファームウェアを復旧するためのリカバリー用ファームウェアとを格納し、
前記通常動作用ファームウェアおよび前記リカバリー用ファームウェアが暗号化され、
前記リカバリー用ファームウェアは、前記通常動作用ファームウェアよりも暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化されて、前記不揮発性メモリに格納されている、
ストレージ装置。
【請求項2】
前記少なくとも1つのプロセッサは、前記通常動作用ファームウェアおよび前記リカバリー用ファームウェアの信頼性を検証する機能を有する第1プロセッサを含み、
前記不揮発性メモリには、前記第1プロセッサのみがアクセス可能な第1領域が設定され、
前記リカバリー用ファームウェアは、前記第1領域に格納されており、
前記通常動作用ファームウェアは、前記不揮発性メモリの前記第1領域以外の第2領域に格納されている、
請求項1に記載のストレージ装置。
【請求項3】
前記リカバリー用ファームウェアによって前記通常動作用ファームウェアが復旧された場合において前記通常動作用ファームウェアによって使用されるべきデータが、前記第1領域に格納されている請求項に記載のストレージ装置。
【請求項4】
前記リカバリー用ファームウェアは、正規の前記通常動作用ファームウェアを前記ホストから取得する処理と、前記不揮発性メモリの前記第2領域に格納されている前記通常動作用ファームウェアを、前記ホストから取得した正規の前記通常動作用ファームウェアに更新する処理と、を前記第1プロセッサに実行させるためのプログラムである請求項に記載のストレージ装置。
【請求項5】
不揮発性メモリと、
ホストからのコマンドに基づき、前記不揮発性メモリへのデータの書き込みおよび前記不揮発性メモリからのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、プロセッサを含み、
前記不揮発性メモリは、前記コマンドに基づくデータの書き込みおよび読み出しの制御を前記プロセッサが行うための通常動作用ファームウェアと、前記通常動作用ファームウェアを復旧するためのリカバリー用ファームウェアとを格納し、
前記コントローラは、前記通常動作用ファームウェアと前記リカバリー用ファームウェアの信頼性を検証する機能を有する第1プロセッサと、前記通常動作用ファームウェアを実行する第2プロセッサとを有し、前記第1プロセッサは前記不揮発性メモリの第1領域にはアクセス可能であるが、前記第2プロセッサは前記第1領域にはアクセスできず、かつ、前記リカバリー用ファームウェアは前記第1領域に格納され、前記通常動作用ファームウェアは前記不揮発性メモリの前記第1領域とは異なる第2領域に格納され、
前記通常動作用ファームウェアおよび前記リカバリー用ファームウェアが暗号化され、
前記リカバリー用ファームウェアは、前記通常動作用ファームウェアよりも暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化されて前記不揮発性メモリに格納されている、
ストレージ装置。
【請求項6】
前記リカバリー用ファームウェアによって前記通常動作用ファームウェアが復旧された場合において前記通常動作用ファームウェアによって使用されるべきデータが、前記第1領域に格納されている請求項に記載のストレージ装置。
【請求項7】
前記リカバリー用ファームウェアは、正規の前記通常動作用ファームウェアを前記ホストから取得する処理と、前記不揮発性メモリの前記第2領域に格納されている前記通常動作用ファームウェアを、前記ホストから取得した正規の前記通常動作用ファームウェアに更新する処理と、を前記第1プロセッサに実行させるためのプログラムである請求項に記載のストレージ装置。
【請求項8】
第1不揮発性メモリと、
プログラムを含むデータを前記第1不揮発性メモリよりも高い信頼性が担保された状態で格納するための第2不揮発性メモリと、
ホストからのコマンドに基づき、前記第1不揮発性メモリへのデータの書き込みおよび前記第1不揮発性メモリからのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、プロセッサを含み、
前記コマンドに基づくデータの書き込みおよび読み出しの制御を前記プロセッサが行うための通常動作用ファームウェアが、前記第1不揮発性メモリに格納されており、
前記通常動作用ファームウェアを復旧するためのリカバリー用ファームウェアが、前記第2不揮発性メモリに格納され、
前記コントローラは、前記通常動作用ファームウェアと前記リカバリー用ファームウェアの信頼性を検証する機能を有する第1プロセッサと、前記通常動作用ファームウェアを実行する第2プロセッサとを有し、前記第1プロセッサは前記第2不揮発性メモリにはアクセス可能であるが、前記第2プロセッサは前記第2不揮発性メモリにはアクセスできず、かつ、前記リカバリー用ファームウェアは前記第2不揮発性メモリに格納され、前記通常動作用ファームウェアは前記第1不揮発性メモリに格納され、
前記通常動作用ファームウェアおよび前記リカバリー用ファームウェアが暗号化され、
前記リカバリー用ファームウェアは、前記通常動作用ファームウェアよりも暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化されて前記第2不揮発性メモリに格納されている、
ストレージ装置。
【請求項9】
前記リカバリー用ファームウェアによって前記通常動作用ファームウェアが復旧された場合において前記通常動作用ファームウェアによって使用されるべきデータが、前記第1不揮発性メモリに格納されている請求項に記載のストレージ装置。
【請求項10】
前記リカバリー用ファームウェアは、正規の前記通常動作用ファームウェアを前記ホストから取得する処理と、前記第2不揮発性メモリに格納されている前記通常動作用ファームウェアを、前記ホストから取得した正規の前記通常動作用ファームウェアに更新する処理と、を前記第1プロセッサに実行させるためのプログラムである請求項に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ストレージ装置に関する。
【背景技術】
【0002】
近年、HDD(Hard Disk Drive)やSSD(Solid State Drive)などといった様々なストレージ装置が広く普及している。この種のストレージ装置は、データの書き込みやデータの読み出しなどの処理を、ファームウェアなどと称されるプログラムで示される手順で実行する。従って、ファームウェアが改ざんされると、ストレージ装置は、不正な動作を行ってしまう。また、ストレージ装置の動作に影響を及ぼすデータが改ざんされた場合も同様である。そのため、ファームウェアを含むプログラムやデータの信頼性を検証するセキュリティ機能を搭載するストレージ装置が登場するに至っている。起動時などにファームウェアの信頼性を検証するセキュリティ機能は、セキュアブート機能などと称されている。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許第8490189号明細書
【文献】特開2015-55898号公報
【文献】米国特許出願公開第2018/0157839号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
セキュアブート機能を搭載するストレージ装置において、ファームウェアが改ざんされてしまった場合、そのセキュアブート機能によって、ストレージ装置の起動が抑止されることになる。したがって、ストレージ装置を復旧するためには、製造元などへストレージ装置を預けて復旧を依頼する必要があった。
【0005】
改ざんされたファームウェアを、ファームウェアを復旧するためのリカバリー用ファームウェアに書き換えることでストレージ装置を復旧する機能が、ストレージ装置自体に搭載されているならば、製造元などへストレージ装置を預けて復旧を依頼することを不要にできる。しかしながら、リカバリー用ファームウェアも同様に改ざんされてしまった場合には、ユーザの手元でストレージ装置を復旧することは、もはや不可能となってしまう。
【0006】
本発明が解決しようとする課題は、ファームウェアについて高いレベルで信頼性が担保されたリカバリーを可能とするストレージ装置を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、ストレージ装置は、不揮発性メモリと、コントローラと、を具備する。前記コントローラは、ホストからのコマンドに基づき、前記不揮発性メモリへのデータの書き込みおよび前記不揮発性メモリからのデータの読み出しを制御する。前記コントローラは、少なくとも1つのプロセッサを含む。前記不揮発性メモリは、前記コマンドに基づくデータの書き込みおよび読み出しの制御を前記少なくとも1つのプロセッサが行うための通常動作用ファームウェアと、前記通常動作用ファームウェアを復旧するためのリカバリー用ファームウェアとを格納する。前記通常動作用ファームウェアおよび前記リカバリー用ファームウェアは暗号化されている。前記リカバリー用ファームウェアは、前記通常動作用ファームウェアよりも暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化されて、前記不揮発性メモリに格納されている。
【図面の簡単な説明】
【0008】
図1】第1実施形態のストレージ装置の一構成例を示す図。
図2】第1実施形態のストレージ装置のファームウェアのリカバリーに関する機能ブロックを示す図。
図3】第1実施形態のストレージ装置のファームウェアのリカバリーに関する動作手順を示すフローチャート。
図4】第2実施形態のストレージ装置のファームウェアのリカバリーに関する機能ブロックを示す図。
図5】第3実施形態のストレージ装置の一構成例を示す図。
図6】第3実施形態のストレージ装置のファームウェアのリカバリーに関する機能ブロックを示す図。
図7】第4実施形態のストレージ装置のファームウェアのリカバリーに関する機能ブロックを示す図。
【発明を実施するための形態】
【0009】
以下、実施の形態について、図面を参照して説明する。
【0010】
(第1実施形態)
まず、第1実施形態について説明する。
【0011】
図1は、本実施形態のストレージ装置1の一構成例を示す図である。
【0012】
ストレージ装置1は、PCIe(登録商標)などのインタフェースを介して接続されるホスト2からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト2へ送信する。ストレージ装置1が受信するコマンドには、データの書き込みを要求するライトコマンドや、データの読み出しを要求するリードコマンドなどが存在する。また、ストレージ装置1は、記憶領域上に区画を設けるためのコマンドなどといった様々な制御コマンドを受信し得る。
【0013】
ストレージ装置1は、たとえばSoC(System On a Chip)として構成されるコントローラ10と、たとえばDRAMである揮発性メモリ20と、たとえばフラッシュメモリである不揮発性メモリ30とを有する。
【0014】
コントローラ10は、揮発性メモリ20をデータの一時的な格納領域として利用しながら、不揮発性メモリ30へのデータの書き込み処理および不揮発性メモリ30からのデータの読み出し処理を実行する。つまり、コントローラ10は、ホスト2からのコマンドに基づき、不揮発性メモリ30を制御する。コントローラ10は、Security CPU11を含む複数のCPU(11,12-1,12-2)を有する。
【0015】
Security CPU11に内蔵されるメモリに格納されている情報へのアクセス手段は限られており、その情報の信頼性が保証される。従って、Security CPU11は一般的なCPUと比較してセキュリティ強度の高いCPUである。ここでは、コントローラ10が、このSecurity CPU11のほか、2つの一般的なCPU(CPU-A12-1,CPU-B12-2)を有していることを想定する。信頼性を保証することは、デジタル署名での検証によってプログラムの発行者を保証することを含む。なお、信頼性の保証には、完全性の保証が含まれる。つまり、信頼性を検証することには、完全性を検証することが含まれる。コントローラ10は、CPU-A12-1とCPU-B12-2とが協働して、不揮発性メモリ30へのデータの書き込み処理や不揮発性メモリ30からのデータの読み出し処理を実行する。あるいは、CPU-A12-1とCPU-B12-2とが、各々、不揮発性メモリ30へのデータの書き込み処理や不揮発性メモリ30からのデータの読み出し処理を実行する。以下、一般的なCPUであるCPU-A12-1とCPU-B12-2とを、CPU12と総称することがある。
【0016】
Security CPU11、CPU-A12-1およびCPU-B12-2は、不揮発性メモリ30に格納されている各々のファームウェア(後述する通常動作用Security CPU FW31,通常動作用CPU-A FW32-1,通常動作用CPU-B FW32-2)によって示される手順で処理を実行していく。具体的には、Security CPU11、CPU-A12-1およびCPU-B12-2は、各々のファームウェアを不揮発性メモリ30から揮発性メモリ20へたとえばモジュール単位で適宜にロードして実行する。Security CPU11内には、各々のファームウェアの信頼性を検証するためのセキュリティ保証データが格納されている。Security CPU11は、たとえばストレージ装置1の起動時、このセキュリティ保証データを用いて、各々のファームウェアの信頼性を検証する。つまり、本ストレージ装置1は、セキュアブート機能を有している。Security CPU11内に格納されるセキュリティ保証データは、Security CPU11からでしかアクセスできず、セキュリティ保証データを改ざんするためには、Security CPU11を不正に動作させなければならないので、まず、Security CPU11のファームウェアを改ざんする必要がある。しかし、Security CPU11のファームウェアの改ざんは、たとえばストレージ装置1の起動時における信頼性の検証によって検知される。従って、Security CPU11内のセキュリティ保証データは、その信頼性が保証されるので、信頼性の起点(Root of Trust)として扱うことができる。セキュリティ保証データとしては、特定の情報に限定されず、検証鍵やMAC値などといった様々な情報を適用し得る。
【0017】
以上のような構成を持つ本ストレージ装置1は、改ざんされたファームウェアをリカバリーする機能を有する。図2は、本ストレージ装置1のファームウェアのリカバリーに関する機能ブロックを示す図である。
【0018】
Security CPU11は、検知部111と、リカバリー判定部112と、リカバリー実行部113とを有する。これらの各部は、Security CPU11のみがアクセス可能であり、かつ、読み出しのみが可能であるメモリに格納されている等により、その信頼性が高いレベルで担保されているプログラムを当該Security CPU11が実行することによって実現される。あるいは、このプログラム自体が、セキュリティ保証データ114の1つとして、Security CPU11内に格納されていてもよい。
【0019】
また、不揮発性メモリ30は、第1に、Security CPU11のためのファームウェアである通常動作用Security CPU FW31と、CPU-A12-1のためのファームウェアである通常動作用CPU-A FW32-1と、CPU-B12-2のためのファームウェアである通常動作用CPU-B FW32-2とを格納している。また、不揮発性メモリ30は、第2に、通常動作用Security CPU FW31を復旧するためのファームウェアであるリカバリー用Security CPU FW33と、通常動作用CPU-A FW32-1を復旧するためのファームウェアであるリカバリー用CPU-A FW34-1と、通常動作用CPU-B FW32-2を復旧するためのファームウェアであるリカバリー用CPU-B FW34-2とを格納している。
【0020】
前者の通常動作用Security CPU FW31、通常動作用CPU-A FW32-1および通常動作用CPU-B FW32-2と、後者のリカバリー用Security CPU FW33、リカバリー用CPU-A FW34-1およびリカバリー用CPU-B FW34-2とのうち、少なくとも後者のリカバリー用Security CPU FW33、リカバリー用CPU-A FW34-1およびリカバリー用CPU-B FW34-2は、暗号化された状態で不揮発性メモリ30に格納されている。つまり、本ストレージ装置1は、プログラムやデータを暗号化し、また、暗号化されているプログラムやデータを復号する暗号化機能のうちの少なくとも復号に関する機能を有している。また、詳細については後述するが、後者のリカバリー用Security CPU FW33、リカバリー用CPU-A FW34-1およびリカバリー用CPU-B FW34-2は、前者の通常動作用Security CPU FW31、通常動作用CPU-A FW32-1および通常動作用CPU-B FW32-2と比較して、暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化されている。つまり、高い信頼性が担保された状態で不揮発性メモリ30に格納されている。通常動作用ファームウェア(31,32-1,32-2)およびリカバリー用ファームウェア(33,34-1,34-2)は、さらに、本ストレージ装置1が圧縮されたプログラムやデータを伸長する機能を有しているならば、圧縮された状態で不揮発性メモリ30に格納されていてもよい。
【0021】
検知部111は、ストレージ装置1の動作中における通常動作用ファームウェアの改ざんを検知するためのモジュールであり、ストレージ装置1の異常動作、より詳しくは、Security CPU11、CPU-A12-1またはCPU-B12-2の異常動作を検知する。なお、ストレージ装置1の停止中における通常動作用ファームウェアの改ざんは、ストレージ装置1の起動時において前述のセキュアブート機能によって検知される。異常動作を検知する方法については、特定の方法に限定されず、既知の様々な方法を適用し得る。
【0022】
リカバリー判定部112は、ストレージ装置1の異常動作が検知された場合、当該ストレージ装置1を通常動作用ファームウェアのリカバリーによって回復させることが可能か否かを判定する。この判定は、たとえば、検出された異常動作がハードウェア障害を原因とするものか否かを調べ、ハードウェア障害を原因とするものでない場合、通常動作用ファームウェアのリカバリーによって回復させることが可能と判定するといったものであってもよい。また、Security CPU11内に格納されているセキュリティ保証データを用いて通常動作用Security CPU FW31、通常動作用CPU-A FW32-1および通常動作用CPU-B FW32-2の信頼性を検証し、改ざんが検出された場合、通常動作用ファームウェアのリカバリーによって回復させることが可能と判定するといったものであってもよい。
【0023】
リカバリー実行部113は、異常動作が検知されたストレージ装置1を、通常動作用ファームウェアのリカバリーによって回復させることが可能と判定された場合、通常動作用ファームウェアのリカバリーを実行する。たとえば、CPU-A12-1の異常動作が検知部111によって検知された場合であって、通常動作用CPU-A FW32-1のリカバリーによって当該CPU-A12-1を回復させることが可能とリカバリー判定部112によって判定された場合、リカバリー実行部113は、通常動作用CPU-A FW32-1をリカバリー用CPU-A FW34-1に書き換えて、ストレージ装置1を再起動する処理を実行する。なお、通常動作用ファームウェアのリカバリーによって回復させることが不可能と判定された場合には、リカバリー判定部112によって、ホスト2へのエラーの通知が行われる。ホスト2へエラーを通知した場合、リカバリー判定部112は、ストレージ装置1を停止させるようにしてもよい。
【0024】
また、リカバリー実行部113は、ストレージ装置1の起動時、前述のセキュアブート機能によって、たとえば、通常動作用CPU-A FW32-1の改ざんが検出された場合も、通常動作用CPU-A FW32-1をリカバリー用CPU-A FW34-1に書き換えて、ストレージ装置1を再起動する処理を実行する。
【0025】
なお、リカバリー用ファームウェア(33,34-1,34-2)は、いわゆるバックアップとして通常動作用ファームウェア(31,32-1,32-2)と同じものが用意されてもよいし、ホスト2から正規の通常動作用ファームウェアを取得する等の通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものであってもよい。ファームウェアを復旧するとは、たとえば改ざんされたファームウェアを正規のファームウェアに書き換えて改ざん前の状態に戻すことである。
【0026】
ところで、たとえば、改ざんされた通常動作用CPU-A FW32-1をリカバリー用CPU-A FW34-1によって復旧しようとしても、リカバリー用CPU-A FW34-1も同様に改ざんされてしまっている場合、ストレージ装置1の再起動時に作動するセキュアブート機能によって、ストレージ装置1の起動が抑止される。つまり、本ストレージ装置1でのリカバリーはもはや不可能であり、製造元などへストレージ装置を預けて復旧を依頼しなければならない。
【0027】
そこで、本ストレージ装置1は、リカバリー用ファームウェア(33,34-1,34-2)について、通常動作用ファームウェア(31,32-1,32-2)と比較して、高い信頼性が担保された状態で不揮発性メモリ30に格納する。また、本ストレージ装置1は、通常動作用ファームウェアをリカバリー用ファームウェアに書き換えるにあたり、Security CPU11内に格納されているセキュリティ保証データ114を用いて、リカバリー用ファームウェアの信頼性を検証する。
【0028】
リカバリー用ファームウェアを通常動作用ファームウェアと比較して高い信頼性が担保された状態で不揮発性メモリ30に格納することについては、前述したように、暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化することによって実現する。たとえば共通鍵暗号方式で暗号化が行われる場合、復号のための共通鍵(暗号鍵)がセキュリティ保証データ114としてSecurity CPU11内に格納される。本ストレージ装置1の暗号化機能を司るモジュールは、セキュリティ保証データ114としてSecurity CPU11内に格納されている暗号鍵を示す情報をパラメータとして受け取り、その情報で示される暗号鍵を用いて、指示されたプログラムまたはデータの復号を実行する。また、暗号化機能を司るモジュールが複数のアルゴリズムに対応する場合、アルゴリズムの指定もパラメータによって受け付ける。
【0029】
リカバリー実行部113は、たとえば、通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に書き換える場合、まず、リカバリー用ファームウェア34-1の不揮発性メモリ30からの読み出しを実行する(図2:a1)。前述したように、リカバリー用ファームウェア34-1は、暗号化されて不揮発性メモリ30に格納されている。リカバリー実行部113は、暗号化機能を司るモジュールに対して、不揮発性メモリ30から読み出されるリカバリー用ファームウェア34-1の復号を指示する。リカバリー実行部113は、復号後のリカバリー用ファームウェア34-1を揮発性メモリ20へ格納する(図2:a2)。なお、リカバリー実行部113は、暗号化されているリカバリー用ファームウェア34-1を揮発性メモリ20へ格納した後、暗号化機能を司るモジュールに対して、その復号を指示するようにしてもよい。図2において示される揮発性メモリ20上のリカバリー用ファームウェアは、復号後のリカバリー用ファームウェアである。
【0030】
次に、リカバリー実行部113は、Security CPU11内に格納されているセキュリティ保証データ114を用いて、揮発性メモリ20に格納したリカバリー用ファームウェア34-1の信頼性を検証する(図2:a3)。検証が成功した場合、リカバリー実行部113は、不揮発性メモリ30上の通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に更新し(図2:a4)、ストレージ装置1を再起動する。検証が失敗した場合には、リカバリー実行部113は、ホスト2へエラーを通知する。ホスト2へエラーを通知した場合、リカバリー実行部113は、ストレージ装置1を停止させるようにしてもよい。
【0031】
なお、リカバリー実行部113は、暗号化されている状態のリカバリー用ファームウェアについて、Security CPU11内に格納されているセキュリティ保証データ114を用いた信頼性の検証を実行し、検証が成功した場合に、暗号化機能を司るモジュールに対して、その復号を指示するようにしてもよい。
【0032】
リカバリー用ファームウェアを通常動作用ファームウェアよりも高い信頼性が担保された状態で不揮発性メモリ30に格納することで、本ストレージ装置1は、製造元などへストレージ装置を預けてファームウェアの復旧を依頼するといった復旧作業のためのコストを削減することができ、よって、可用性を向上させることができる。
【0033】
リカバリー用ファームウェアが、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものであった場合、リカバリー実行部113によって再起動されたストレージ装置1は、たとえば以下のような手順で動作する。
【0034】
まず、ストレージ装置1は、セキュアブート機能によって、リカバリー用ファームウェアの信頼性を検証する。リカバリー用ファームウェアは、高い信頼性が担保された状態で不揮発性メモリ30に格納されているので、この検証は成功し、ストレージ装置1は、リカバリー用ファームウェアで示される手順に沿った動作を開始する。
【0035】
ストレージ装置1は、通常動作用ファームウェアをホスト2から取得する。たとえば、ストレージ装置1とホスト2とを接続するインタフェースが、ホスト2側のメモリにストレージ装置1側からアクセスすることをサポートしているならば、ホスト2側のメモリから通常動作用ファームウェアを読み出すことによって取得してもよい。あるいは、ホスト2に対して、通常動作用ファームウェアの転送を要求するコマンドを送信することによって取得してもよい。または、ストレージ装置1は、ファームウェアの更新が必要であることを示すメッセージなどをホスト2へ送信するだけでもよく、以降、ホスト2主導の下、通常動作用ファームウェアの更新を行ってもよい。
【0036】
ストレージ装置1は、リカバリー用ファームウェアに書き換えられている状態の不揮発性メモリ30上のファームウェアを、ホスト2から取得した通常動作用ファームウェアに再び書き換える。この書き換え後、ストレージ装置1は再起動する。
【0037】
なお、通常動作用ファームウェアをホスト2から取得する際、この通常動作用ファームウェアの信頼性を検証するための情報や、暗号化を解くための暗号鍵を共に取得し、セキュリティ保証データとして改めてSecurity CPU11内に格納するようにしてもよい。
【0038】
図3は、本実施形態のストレージ装置1のファームウェアのリカバリーに関する動作手順を示すフローチャートである。
【0039】
検知部111は、ストレージ装置1(Security CPU11、CPU-A12-1またはCPU-B12-2)の異常動作を検知する(S11)。異常動作が検知された場合(S11:YES)、リカバリー判定部112は、異常動作の原因を判定する(S12)。たとえば、その異常動作がハードウェア障害を原因とするものか否かを判定する。リカバリー判定部112は、異常動作の原因の判定結果に基づき、ファームウェア(通常動作用Security CPU FW31、CPU-A12-1またはCPU-B12-2)の更新による復旧は可能か否かを判定する(S13)。
【0040】
ファームウェアの更新による復旧は可能と判定された場合(S13:YES)、リカバリー実行部113は、リカバリー用ファームウェア(リカバリー用Security CPU FW33、リカバリー用CPU-A FW34-1またはリカバリー用CPU-B FW34-2)を不揮発性メモリ30から読み出し、揮発性メモリ20に格納する(S14)。リカバリー実行部113は、Security CPU11内に格納されているセキュリティ保証データを用いて、リカバリー用ファームウェアの信頼性を検証する(S15)。
【0041】
検証が成功した場合(S16:YES)、リカバリー実行部113は、不揮発性メモリ30上の通常動作用ファームウェアをリカバリー用ファームウェアに更新し(S17)、ストレージ装置1を再起動する(S18)。
【0042】
一方、リカバリー判定部112によって、異常動作が検知されたストレージ装置1をファームウェアのリカバリーによって回復させることは不可能と判定された場合(S13:NO)、または、リカバリー実行部113によるリカバリー用ファームウェアの信頼性の検証が失敗した場合(S16:NO)、リカバリー判定部112またはリカバリー実行部113からホスト2に対してエラーが通知される(S19)。
【0043】
以上のように、リカバリー用ファームウェアを通常動作用ファームウェアよりも高い信頼性が担保された状態で不揮発性メモリ30に格納する本ストレージ装置1は、ファームウェアについて高いレベルで信頼性が担保されたリカバリーを可能とする。
【0044】
(第2実施形態)
次に、第2実施形態について説明する。
【0045】
図4は、本実施形態のストレージ装置1のファームウェアのリカバリーに関する機能ブロックを示す図である。本実施形態のストレージ装置1も、第1実施形態と同様、コントローラ10、揮発性メモリ20および不揮発性メモリ30を有する。ここでは、第1実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明を省略する。
【0046】
本実施形態のストレージ装置1においては、不揮発性メモリ30上に、アクセス権限がSecurity CPU11に限定される区画が設定され、この区画にリカバリー用ファームウェア(33,34-1,34-2)が格納される。ここで、アクセス権限がSecurity CPU11に限定されるとは、Security CPU11のみがアクセス可能またはSecurity CPU11からの指示でのみアクセス可能であることを意味する。Security CPU11からの指示でのみアクセス可能とは、たとえば、CPU-A12-1やCPU-B12-2は、Security CPU11の制御下においてのみアクセス可能であることを意味する。
【0047】
アクセス権限がSecurity CPU11に限定される区画の設定は、たとえばストレージ装置1の製造過程で行われ、かつ、その区画は、制御コマンドを含む外部からのコマンドの対象となり得ない区画として設けられる。
【0048】
ここでは、アクセス権限がSecurity CPU11に限定される区画内の領域を高セキュリティ領域30Aと称し、不揮発性メモリ30上の当該区画以外の領域を通常領域30Bと称する。たとえば、CPU-A12-1のための通常動作用CPU-A FW32-1は、CPU-A12-1がアクセス可能な通常領域30Bに格納される。つまり、通常動作用ファームウェア(31,32-1,32-2)は、通常領域30Bに格納される。
【0049】
このように、本実施形態のストレージ装置1は、アクセス権限がSecurity CPU11に限定される区画内の領域である高セキュリティ領域30Aにリカバリー用ファームウェアを格納することで、通常動作用ファームウェアと比較して高い信頼性が担保された状態で不揮発性メモリ30に格納することを実現する。
【0050】
なお、本実施形態のストレージ装置1においても、リカバリー用ファームウェアを高セキュリティ領域30Aに格納するにあたり、さらに、通常動作用ファームウェアを通常領域30Bに格納する場合と比較して、暗号強度の高いアルゴリズムまたは鍵長の大きな暗号鍵を用いて暗号化するようにしてもよい。
【0051】
本実施形態のストレージ装置1におけるリカバリー実行部113は、たとえば、通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に書き換える場合、そのリカバリー用ファームウェア34-1を、不揮発性メモリ30の高セキュリティ領域30Aから読み出す(図4:b1)。以降、リカバリー実行部113は、第1実施形態と同様の手順で処理を実行する。つまり、リカバリー実行部113は、読み出されたリカバリー用ファームウェア34-1を揮発性メモリ20へ格納し(図4:b2)、Security CPU11内に格納されているセキュリティ保証データ114を用いて、揮発性メモリ20に格納したリカバリー用ファームウェア34-1の信頼性を検証する(図4:b3)。
【0052】
検証が成功した場合、リカバリー実行部113は、不揮発性メモリ30上の通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に更新し(図4:b4)、本ストレージ装置1を再起動する。検証が失敗した場合には、リカバリー実行部113は、ホスト2へエラーを通知する。ホスト2へエラーを通知した場合、リカバリー実行部113は、ストレージ装置1を停止させるようにしてもよい。
【0053】
以上のように、アクセス権限がSecurity CPU11に限定される区画内の領域である高セキュリティ領域30Aにリカバリー用ファームウェアを格納することで、通常動作用ファームウェアと比較して高い信頼性が担保された状態で不揮発性メモリ30に格納する本実施形態のストレージ装置1においても、第1実施形態と同様、たとえば製造元などへストレージ装置を預けてファームウェアの復旧を依頼するといった復旧作業のためのコストを削減することができ、よって、可用性を向上させることができる。
【0054】
つまり、本ストレージ装置1も、ファームウェアについて高いレベルで信頼性が担保されたリカバリーを可能とする。
【0055】
(第3実施形態)
次に、第3実施形態について説明する。
【0056】
図5は、本実施形態のストレージ装置1の一構成例を示す図である。
【0057】
本実施形態のストレージ装置1は、第1実施形態や第2実施形態と比較して、マスクROMなどである読み出し専用メモリ40をさらに有する。また、この読み出し専用メモリ40は、そのアクセス権限が、Security CPU11に限定されている。ここで、アクセス権限がSecurity CPU11に限定されるとは、Security CPU11のみがアクセス可能またはSecurity CPU11からの指示でのみアクセス可能であることを意味する。Security CPU11からの指示でのみアクセス可能とは、たとえば、CPU-A12-1やCPU-B12-2は、Security CPU11の制御下においてのみアクセス可能であることを意味する。なお、ここでも、第1実施形態や第2実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明を省略する。
【0058】
図6は、本実施形態のストレージ装置1のファームウェアのリカバリーに関する機能ブロックを示す図である。
【0059】
本実施形態のストレージ装置1においては、アクセス権限がSecurity CPU11に限定される読み出し専用メモリ40に、リカバリー用ファームウェア(33,34-1,34-2)を格納する。つまり、本実施形態のストレージ装置1は、アクセス権限がSecurity CPU11に限定される読み出し専用メモリ40をリカバリー用ファームウェアの格納場所とすることで、リカバリー用ファームウェアを、通常動作用ファームウェアと比較して高い信頼性が担保された状態で格納することを実現する。
【0060】
なお、第1実施形態や第2実施形態のように、リカバリー用ファームウェアを大容量の不揮発性メモリ30に格納する場合には、第1実施形態の説明で述べたように、当該リカバリー用ファームウェアは、いわゆるバックアップとして通常動作用ファームウェアと同じものが用意されてもよいし、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものであってもよい。一方、リカバリー用ファームウェアを高い信頼性が担保された状態で格納することを目的として、読み出し専用メモリ40を新設する場合には、コストを抑えるために、当該読み出し専用メモリ40の容量を極力小さくすることが求められる。たとえば500Kバイト程度に収めることが好ましい。この点を考慮して、本実施形態のストレージ装置1においては、リカバリー用ファームウェアを、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものとする。つまり、読み出し専用メモリ40の容量は、通常動作用ファームウェアを格納するために必要な容量よりも格段に小さい容量でよい。
【0061】
本実施形態のストレージ装置1におけるリカバリー実行部113は、たとえば、通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に書き換える場合、そのリカバリー用ファームウェア34-1を、アクセス権限がSecurity CPU11に限定される読み出し専用メモリ40から読み出す(図6:c1)。以降、リカバリー実行部113は、第1実施形態や第2実施形態と同様の手順で処理を実行する。つまり、リカバリー実行部113は、読み出されたリカバリー用ファームウェア34-1を揮発性メモリ20へ格納し(図6:c2)、Security CPU11内に格納されているセキュリティ保証データ114を用いて、揮発性メモリ20に格納したリカバリー用ファームウェア34-1の信頼性を検証する(図6:c3)。
【0062】
検証が成功した場合、リカバリー実行部113は、不揮発性メモリ30上の通常動作用ファームウェア32-1をリカバリー用ファームウェア34-1に更新し(図6:c4)、本ストレージ装置1を再起動する。検証が失敗した場合には、リカバリー実行部113は、ホスト2へエラーを通知する。ホスト2へエラーを通知した場合、リカバリー実行部113は、ストレージ装置1を停止させるようにしてもよい。
【0063】
本実施形態のストレージ装置1においては、前述したように、リカバリー用ファームウェアが、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものであることを想定している。そのため、リカバリー用ファームウェア34-1の信頼性の検証が成功し、通常動作用ファームウェア32-1がリカバリー用ファームウェア34-1に書き換えられて再起動されたストレージ装置1は、第1実施形態の説明でも述べたように、たとえば以下のような手順で動作する。
【0064】
まず、ストレージ装置1は、セキュアブート機能によって、リカバリー用ファームウェアの信頼性を検証する。アクセス権限がSecurity CPU11に限定される読み出し専用メモリ40から読み出されたリカバリー用ファームウェアの検証は成功し、ストレージ装置1は、リカバリー用ファームウェアで示される手順に沿った動作を開始する。
【0065】
ストレージ装置1は、通常動作用ファームウェアをホスト2から取得し、リカバリー用ファームウェアに書き換えられている状態の不揮発性メモリ30上のファームウェアを、ホスト2から取得した通常動作用ファームウェアに再び書き換える。この書き換え後、ストレージ装置1は、再起動する。
【0066】
以上のように、アクセス権限がSecurity CPU11に限定される読み出し専用メモリ40をリカバリー用ファームウェアの格納場所とすることで、リカバリー用ファームウェアを、通常動作用ファームウェアと比較して高い信頼性が担保された状態で格納する本実施形態のストレージ装置1においても、第1実施形態や第2実施形態と同様、製造元などへストレージ装置を預けてファームウェアの復旧を依頼するといった復旧作業のためのコストを削減することができ、よって、可用性を向上させることができる。
【0067】
つまり、本ストレージ装置1も、ファームウェアについて高いレベルで信頼性が担保されたリカバリーを可能とする。
【0068】
ところで、以上では、リカバリー用ファームウェアを格納する記憶素子として、アクセス権限がSecurity CPU11に限定される、マスクROMなどである読み出し専用メモリ40をさらに有する例を説明した。つまり、書き換え不可の記憶素子を格納場所とすることで、リカバリー用ファームウェアを、不揮発性メモリ30に格納する通常動作用ファームウェアと比較して高い信頼性が担保された状態で格納することを実現する例について説明した。この一変形例として、読み出し専用メモリ40に代えて、NOR型フラッシュメモリなどの書き込みも可能な記憶素子を適用する例を説明する。
【0069】
当該一変形例においては、リカバリー用ファームウェアを格納する記憶素子として、NOR型フラッシュメモリがコントローラ10に外付けされているものと想定する。また、このNOR型フラッシュメモリのアクセス権限は、Security CPU11に限定されている。そして、書き込みが可能なNOR型フラッシュメモリをリカバリー用ファームウェアの格納場所とする当該一変形例においては、NOR型フラッシュメモリに格納されているリカバリー用ファームウェアの信頼性を検証するための検証データを、たとえば、電気的に素子特性を不可逆的に変更させることによってデータを記憶するフューズ素子(eFuse)に格納する。eFuseは、コントローラ10内に設けられてもよいし、コントローラ10の外部に設けられてもよい。検証データは、たとえばハッシュ値である。
【0070】
リカバリー実行部113は、NOR型フラッシュメモリからリカバリー用ファームウェアを読み出し、不揮発性メモリ30上の通常動作用ファームウェアを当該読み出したリカバリー用ファームウェアに書き換えるにあたり、eFuseに記録されている検証データを用いて当該読み出したリカバリー用ファームウェアの信頼性を検証する。リカバリー実行部113は、この検証が成功した場合、不揮発性メモリ30上の通常動作用ファームウェアをリカバリー用ファームウェアに書き換える。このように、当該一変形例においても、リカバリー用ファームウェアを、通常動作用ファームウェアと比較して高い信頼性が担保された状態で格納することが実現される。
【0071】
当該一変形例においては、マスクROMなどである読み出し専用メモリ40の場合と比較して、ストレージ装置1の製造時において、NOR型フラッシュメモリへ格納するリカバリー用ファームウェアを変更することができるという効果を奏する。また、リカバリー用ファームウェアの信頼性を検証するための検証データがeFuseによって記録されるので、NOR型フラッシュメモリ自体の差し替えに対応することができる。あるいは、マスクROMなどである読み出し専用メモリ40にリカバリー用ファームウェアを格納する場合において、さらに、当該リカバリー用ファームウェアの信頼性を検証するための検証データをeFuseに記録するようにしてもよい。
【0072】
また、本実施形態においては、リカバリー用ファームウェアが、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものと想定し、不揮発性メモリ30上の通常動作用ファームウェアをリカバリー用ファームウェアに書き換えて、ストレージ装置1を再起動することとしている。リカバリー用ファームウェアが、ホスト2から正規の通常動作用ファームウェアを取得する等の、通常動作用ファームウェアを復旧するための必要最小限の機能を備えるものである場合、不揮発性メモリ30上の通常動作用ファームウェアをリカバリー用ファームウェアに書き換えることに代えて、揮発性メモリ20に格納された後、セキュリティ保証データ114を用いた信頼性の検証が成功したリカバリー用ファームウェアが、正規の通常動作用ファームウェアをホスト2から取得し、改ざんされている不揮発性メモリ30上の通常動作用ファームウェアを、ホスト2から取得した正規の通常動作用ファームウェアに書き換えるようにしてもよい。この場合、ストレージ装置1の再起動が1回で済むことになる。
【0073】
(第4実施形態)
次に、第4実施形態について説明する。
【0074】
図7は、本実施形態のストレージ装置1のファームウェアのリカバリーに関する機能ブロックを示す図である。本実施形態のストレージ装置1も、第1実施形態から第3実施形態と同様、コントローラ10、揮発性メモリ20および不揮発性メモリ30を有する。ここでは、第1実施形態から第3実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明を省略する。
【0075】
本実施形態のストレージ装置1は、第1実施形態と同様、不揮発性メモリ30上に、アクセス権限がSecurity CPU11に限定される区画を設定し、この区画にリカバリー用ファームウェアを格納する。つまり、本実施形態のストレージ装置1においては、高セキュリティ領域30Aが不揮発性メモリ30上に存在する。
【0076】
また、本実施形態のストレージ装置1においては、通常動作用ファームウェアが、たとえば暗号鍵などの重要データを扱うことを想定する。重要データは、通常動作用ファームウェアと同様、不揮発性メモリ30の通常領域30Bに格納されている。また、その信頼性を検証するための情報がセキュリティ保証データ114としてSecurity CPU11内に格納されている。さらに、本実施形態のストレージ装置1においては、ホスト2からのコマンドによる指示やストレージ装置1の内部処理などによって、重要データが特定のタイミングで更新され得る。
【0077】
この場合、通常動作用ファームウェアのリカバリー時、最新の重要データが失われると、再起動されたストレージ装置1は、正常な動作が行えなくなってしまう。そこで、本実施形態のストレージ装置1は、さらに、重要データ35を復旧するためのリカバリー用重要データ36を、不揮発性メモリ30上の高セキュリティ領域30Aに格納する。
【0078】
本実施形態のストレージ装置1におけるリカバリー実行部113は、たとえば特定のタイミングでの重要データ35の更新時、更新された重要データ35を不揮発性メモリ30の通常領域30Bから読み出す(図7:d11)。なお、リカバリー実行部113によるリカバリー用重要データ36の高セキュリティ領域30Aへの格納は、重要データ35の更新時とは異なるタイミングで実行されてもよい。つまり、符号d11で示される、重要データ35の通常領域30Bからの読み出しは、特定のタイミングでの重要データ35の更新時に限定されない。
【0079】
リカバリー実行部113は、Security CPU11内に格納されているセキュリティ保証データ114を用いて、通常領域30Bから読み出した重要データ35の信頼性を検証する(図7:d12)。この検証が成功した場合、リカバリー実行部113は、読み出した重要データ35の高セキュリティ領域30Aへの書き込みを実行する(図7:d13)。検証が失敗した場合には、リカバリー実行部113は、ホスト2へエラーを通知する。ホスト2へエラーを通知した場合、リカバリー実行部113は、ストレージ装置1を停止させるようにしてもよい。
【0080】
また、通常動作用ファームウェアのリカバリー実行時、リカバリー実行部113は、リカバリー用重要データ36を不揮発性メモリ30の高セキュリティ領域30Aから読み出す(図7:d21)。なお、通常動作用ファームウェア自体のリカバリーの手順は、第1実施形態で説明した通りであるので、ここでは、その説明を省略する。
【0081】
リカバリー実行部113は、読み出したリカバリー用重要データ36について、Security CPU11内に格納されているセキュリティ保証データ114を用いて、その信頼性を検証する(図7:d22)。そして、検証が成功した場合、リカバリー実行部113は、不揮発性メモリ30の通常領域30Bに格納されている重要データ35をリカバリー用重要データ36に書き換える。
【0082】
本実施形態のストレージ装置1においては、通常動作用ファームウェアによって扱われる重要データが特定のタイミングで更新され、かつ、通常動作用ファームウェアのリカバリー時、最新の重要データが復旧されるので、異常動作が検知される前の状態から使い続けることが可能となり、可用性を向上させることができる。
【0083】
また、本実施形態では、不揮発性メモリ30上に、アクセス権限がSecurity CPU11に限定される区画を設定し、この区画にリカバリー用ファームウェアと通常動作用ファームウェアが扱う重要データとを格納する例を説明した。第3実施形態において一変形例として説明した、NOR型フラッシュメモリなどの書き込みが可能な記憶素子にリカバリー用ファームウェアを格納し、かつ、リカバリー用ファームウェアの信頼性を検証するための検証データがeFuseによって記録される形態において、通常動作用ファームウェアが扱う重要データのバックアップをNOR型フラッシュメモリに格納するようにしてもよい。検証データは、更新が発生しないリカバリー用ファームウェア分のみFuseによって記録する。アクセス権限がSecurity CPU11に限定されるNOR型フラッシュメモリに重要データを格納するだけでも、重要データの信頼性は高いレベルで担保される。
【0084】
この場合、NOR型フラッシュメモリの一部領域に、検証データがFuseによって記録される、更新が発生しないリカバリー用ファームウェアを格納し、NOR型フラッシュメモリの他の領域には、更新が発生する重要データを格納するという組み合わせを低コストで実現できる。
【0085】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0086】
1…ストレージ装置、2…ホスト、10…コントローラ、11…Security CPU、12-1,12-2…一般的なCPU、20…揮発性メモリ、30…不揮発性メモリ、30A…高セキュリティ領域、30B…通常領域、31,32-1,32-2…通常動作用ファームウェア、33,34-1,34-2…リカバリー用ファームウェア、35…重要データ、36…リカバリー用重要データ、40…読み出し専用メモリ、111…検知部、112…リカバリー判定部、113…リカバリー実行部、114…セキュリティ保証データ。
図1
図2
図3
図4
図5
図6
図7