(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-13
(45)【発行日】2025-02-21
(54)【発明の名称】ストレージシステムおよび暗号演算方法
(51)【国際特許分類】
G06F 21/78 20130101AFI20250214BHJP
G06F 3/06 20060101ALI20250214BHJP
G06F 21/60 20130101ALI20250214BHJP
【FI】
G06F21/78
G06F3/06 304H
G06F21/60 320
(21)【出願番号】P 2023151967
(22)【出願日】2023-09-20
(62)【分割の表示】P 2022088767の分割
【原出願日】2022-05-31
【審査請求日】2023-09-20
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】森田 俊平
(72)【発明者】
【氏名】鎌塚 友幸
(72)【発明者】
【氏名】門司 秀明
(72)【発明者】
【氏名】清田 雄策
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2009-032130(JP,A)
【文献】特開2001-060254(JP,A)
【文献】特開2003-098960(JP,A)
【文献】特開2000-357201(JP,A)
【文献】米国特許出願公開第2020/0143067(US,A1)
【文献】米国特許出願公開第2019/0057222(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/78
G06F 3/06
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
ホスト端末から
の複数の記憶装置の各々に対する入出力を制御するコントロー
ラを含んで構成されるストレージシステムであって、
前記コントローラは、
前記複数の記憶装置の各々に対応した暗号演算のフォーマットを示す情報を含むフォーマット管理情報を記憶するメモリと、
ホスト端末からの記憶装置に対する入出力の要求に基づいて、前記フォーマット管理情報から前記記憶装置に対応するフォーマットを判定するプロセッサと、
ホスト端末からの記憶装置に対するデータの書き込みの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記データを暗号化し、ホスト端末からの記憶装置に対するデータの読み出しの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記記憶装置に記憶されている前記データの暗号データを復号する暗号演算回路と、
を備えるストレージシステム。
【請求項2】
前記メモリは、記憶装置に設けられている所定の記憶領域を示すアドレス範囲と、前記アドレス範囲に対応付けられている暗号鍵と、前記暗号鍵の識別情報とが含まれる登録鍵情報を記憶し、
前記プロセッサは、前記暗号鍵が記憶されている前記メモリの記憶領域を示すメモリアドレスと前記識別情報とを含む前記暗号鍵を登録するための鍵登録指示情報を生成し、
前記暗号演算回路は、前記鍵登録指示情報を受け取った場合、前記メモリアドレスの記憶領域に記憶されている前記暗号鍵を前記メモリから読み出し、読み出した前記暗号鍵と前記識別情報とを対応付けた鍵情報を記憶する、
請求項1に記載のストレージシステム。
【請求項3】
前記メモリに記憶されているフォーマット管理情報には、記憶装置に設けられている所定の記憶領域を示すアドレス範囲と、前記記憶装置に対応した暗号演算のフォーマットとが対応付けられた情報が含まれ、
前記プロセッサは、ホスト端末からの要求が記憶装置における記憶装置アドレスの記憶領域へのデータの書き込みの要求である場合、書き込みの要求であることを示す要求種別と、前記記憶装置アドレスに対応する暗号鍵の識別情報と、前記データが記憶されている前記メモリの記憶領域を示す第1のメモリアドレスと、前記データが暗号化された暗号データが記憶される記憶領域を指定するための前記メモリにおける第2のメモリアドレスと、前記記憶装置に対応する暗号演算のフォーマットとの情報を含む回路指示情報を生成し、
前記暗号演算回路は、前記回路指示情報を受け取った場合、
前記第1のメモリアドレスの記憶領域に記憶されている前記データを前記メモリから読み出し、
記憶している鍵情報から、前記識別情報に対応する暗号鍵を読み出し、
前記フォーマットに従って前記暗号鍵を用いて前記データを暗号化した暗号データを、前記第2のメモリアドレスの記憶領域に格納し、
前記プロセッサは、書き込みの要求であることを示す要求種別と前記記憶装置アドレスと前記第2のメモリアドレスとの情報を含む記憶装置指示情報を生成し、
前記記憶装置は、前記記憶装置指示情報を受け取った場合、前記第2のメモリアドレスの記憶領域に記憶されている前記暗号データを、前記記憶装置アドレスの記憶領域に記憶する、
請求項2に記載のストレージシステム。
【請求項4】
前記メモリに記憶されているフォーマット管理情報には、記憶装置に設けられている所定の記憶領域を示すアドレス範囲と、前記記憶装置に対応した暗号演算のフォーマットとが対応付けられた情報が含まれ、
前記プロセッサは、ホスト端末からの要求が記憶装置における記憶装置アドレスの記憶領域からの暗号データの読み出しの要求である場合、読み出しの要求であることを示す要求種別と、前記記憶装置アドレスと、前記記憶装置から読み出された前記暗号データが記憶される記憶領域を指定するための前記メモリにおける第3のメモリアドレスとの情報を含む記憶装置指示情報を生成し、
前記記憶装置は、前記記憶装置指示情報を受け取った場合、前記記憶装置アドレスの記憶領域から前記暗号データを読み出し、読み出した前記暗号データを前記第3のメモリアドレスの記憶領域に格納し、
前記プロセッサは、読み出しの要求であることを示す要求種別と、前記記憶装置アドレスに対応する暗号鍵の識別情報と、前記第3のメモリアドレスと、前記暗号データが復号されたデータが記憶される記憶領域を指定するための前記メモリにおける第4のメモリアドレスと、前記記憶装置に対応する暗号演算のフォーマットとの情報を含む回路指示情報を生成し、
前記暗号演算回路は、前記回路指示情報を受け取った場合、
前記第3のメモリアドレスの記憶領域に記憶されている前記暗号データを前記メモリから読み出し、
記憶している鍵情報から、前記識別情報に対応する暗号鍵を読み出し、
前記フォーマットに従って前記暗号鍵を用いて前記暗号データを復号したデータを前記第4のメモリアドレスの記憶領域に格納し、
前記プロセッサは、前記第4のメモリアドレスの記憶領域に記憶されている前記データを、前記ホスト端末に応答する、
請求項2に記載のストレージシステム。
【請求項5】
前記メモリは、記憶装置に設けられている所定の記憶領域を示すアドレス範囲と、前記記憶装置に対応する暗号演算の要否を示す要否情報とが含まれる暗号設定情報を記憶し、
前記プロセッサは、ホスト端末からの記憶装置における記憶装置アドレスに対するデータの書き込みの要求に基づいて、前記記憶装置アドレスに対応する要否情報を特定し、
前記暗号演算回路は、前記プロセッサにより特定された要否情報に基づいて暗号演算が必要であると判定したとき、前記プロセッサにより判定されたフォーマットに従って前記データを暗号化する、
請求項1に記載のストレージシステム。
【請求項6】
前記コントローラと、前記コントローラと同じ構成を備える前記コントローラの冗長化のための他のコントローラとが設けられ、
前記コントローラと前記他のコントローラとは、コントローラ間の通信を行うためのインターコネクトコントローラを備える、
請求項1に記載のストレージシステム。
【請求項7】
前記暗号演算回路は、PCIeSW(Peripheral Component Interconnect Express Switch)を介して前記プロセッサに接続されている、
請求項1に記載のストレージシステム。
【請求項8】
ホスト端末から
の複数の記憶装置の各々に対する入出力を制御するコントロー
ラを含んで構成されるストレージシステムであって、
前記コントローラは、メモリと、プロセッサと、暗号演算回路とを備え、
前記メモリが、前記複数の記憶装置の各々に対応した暗号演算のフォーマットを示す情報を含むフォーマット管理情報を記憶することと、
前記プロセッサが、ホスト端末からの記憶装置に対する入出力の要求に基づいて、前記フォーマット管理情報から前記記憶装置に対応するフォーマットを判定することと、
前記暗号演算回路が、ホスト端末からの記憶装置に対するデータの書き込みの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記データを暗号化し、ホスト端末からの記憶装置に対するデータの読み出しの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記記憶装置に記憶されている前記データの暗号データを復号することと、
を含む暗号演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、暗号演算を行うストレージシステムに関する。
【背景技術】
【0002】
ストレージシステムでは、フロントエンドネットワークにホスト端末を接続し、フロントエンドネットワークとは互いに独立したバックエンドネットワークに、ドライブボックスを接続している。
【0003】
従来、フロントエンドネットワークとしては、主に、FC(Fibre Channel)ネットワークまたはイーサネット(登録商標)が利用され、バックエンドネットワークとしては、SAS(Serial Attached SCSI)ネットワークが利用されている。ドライブボックスは、JBOD(Just a Bunch Of Disks)であり、ドライブボックスのスロットに、データを格納するSASドライブ、SATAドライブ等を複数搭載する。
【0004】
近年、ストレージシステムの性能向上に向けて、高性能化を狙ったSSD(Solid State Drive)等のフラッシュドライブが登場し、フラッシュドライブに最適なNVMeプロトコルが規格化されている。また、ネットワーク接続によるドライブ接続の高拡張性に向けて、NVMeプロトコルをネットワーク上で用いることができるNVMe-oF(NVMe over Fabrics)プロトコルの規格が登場し、NVMe-oFに対応したドライブボックスであるFBOF(Fabric-attached Bunch of Flash)が導入されている。
【0005】
近時、セキュリティ意識の高まりから、米国連邦情報・技術局(NIST)によって発行された標準および指針であるFIPS「Level2」以上の暗号化機能の導入が進められている。FIPS「Level2」以上を取得するには、CPU(Central Processing Unit)によるソフトウェアでの暗号演算(暗号化および復号)では困難であり、回路によるハードウェアでの暗号演算が求められている。
【0006】
この点、SASプロトコルおよびNVMeプロトコルの場合、ドライブボックスのディスクボードにおいて暗号演算が行われ、NVMe-oFプロトコルの場合、スマートNIC(Network Interface Card)において暗号演算が行われている。また、ホスト端末等から受信したデータについて、ユーザの所望する暗号化ポリシーを適用することができることを目的とした、暗号化回路を備えたコントローラが開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
近時のストレージシステムでは、複数種類のプロトコルのドライブがコントローラに接続される構成をとっている。それぞれのドライブとコントローラとは、ドライブごとに異なるプロトコルでデータ通信する。ここで、各ドライブにおいて暗号演算が行われる場合、暗号演算の仕様(フォーマット)は、プロトコルごとに異なっている。このように、ドライブごとに暗号演算が行われる場合、セキュリティレベルが均一にならないため、ストレージシステムとしてのセキュリティレベルは、最も低いセキュリティレベルに合わされてしまう。また、FIPS「Level2」以上をドライブごとに取得しなければならなくなってしまう。
【0009】
このようなことから、1種類の暗号演算回路において暗号演算が行われることが求められる。しかしながら、特許文献1には、複数種類の暗号演算のフォーマットに対応して暗号演算を行う技術が開示されていないので、ドライブごとに暗号演算回路を作り込まなくてはならない問題がある。
【0010】
本発明は、以上の点を考慮してなされたもので、複数種類の暗号演算のフォーマットに対応した暗号演算回路を実現し得るストレージシステム等を提案しようとするものである。
【課題を解決するための手段】
【0011】
かかる課題を解決するため本発明においては、ホスト端末からの複数の記憶装置と、前記複数の記憶装置の各々に対する入出力を制御するコントローラを含んで構成されるストレージシステムであって、前記コントローラは、前記複数の記憶装置の各々に対応した暗号演算のフォーマットを示す情報を含むフォーマット管理情報を記憶するメモリと、ホスト端末からの記憶装置に対する入出力の要求に基づいて、前記フォーマット管理情報から前記記憶装置に対応するフォーマットを判定するプロセッサと、ホスト端末からの記憶装置に対するデータの書き込みの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記データを暗号化し、ホスト端末からの記憶装置に対するデータの読み出しの要求に基づいて前記プロセッサにより判定されたフォーマットに従って前記記憶装置に記憶されている前記データの暗号データを復号する暗号演算回路と、を設けるようにした。
【0012】
上記構成では、記憶装置ごとに暗号演算のフォーマットが異なる場合であっても、プロセッサにより記憶装置に適した暗号演算のフォーマットが判定されるので、プロセッサにおいて判定されたフォーマットでの暗号演算が暗号演算回路において行われる。上記構成によれば、例えば、記憶装置ごとに暗号演算回路を作り込むことなく、ハードウェアによる暗号化を実現することができる。
【発明の効果】
【0013】
本発明によれば、利便性の高いストレージシステムを実現することができる。上記以外の課題、構成、および効果は、以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0014】
【
図1】第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【
図2】第1の実施の形態による登録鍵情報の一例を示す図である。
【
図3】第1の実施の形態によるフォーマット管理情報の一例を示す図である。
【
図4】第1の実施の形態による暗号設定情報の一例を示す図である。
【
図5】第1の実施の形態による鍵情報の一例を示す図である。
【
図6】第1の実施の形態による回路転送指示情報の一例を示す図である。
【
図7】第1の実施の形態によるドライブ転送指示情報の一例を示す図である。
【
図8】第1の実施の形態による鍵登録処理の一例を示す図である。
【
図9】第1の実施の形態による暗号要否設定処理の一例を示す図である。
【
図10】第1の実施の形態による鍵更新処理の一例を示す図である。
【
図11】第1の実施の形態によるライト処理の一例を示す図である。
【
図12】第1の実施の形態によるリード処理の一例を示す図である。
【
図13】第1の実施の形態によるライト処理に係る処理フローの一例を示す図である。
【
図14】第1の実施の形態によるリード処理に係る処理フローの一例を示す図である。
【
図15】第2の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【
図16】第3の実施の形態によるDIP処理の一例を示す図である。
【
図17】第3の実施の形態によるDIP処理に係る処理フローの一例を示す図である。
【
図18】第4の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【
図19】第5の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【発明を実施するための形態】
【0015】
(I)第1の実施の形態
以下、本発明の一実施の形態を詳述する。ただし、本発明は、実施の形態に限定されるものではない。
【0016】
本実施の形態のストレージシステムは、コントローラ(以下では、CTLと記すことがある)と複数種類の記憶装置とを含んで構成される。コントローラは、プロセッサと暗号演算回路とを備える。プロセッサは、ホスト端末から入出力(IO:INPUT / OUTPUT)の要求を受領したとき、暗号演算のフォーマットを判定する。暗号演算回路は、プロセッサによる判定の結果をもとに暗号演算を行う。コントローラは、暗号演算後のデータをホスト端末、記憶装置等に出力する。
【0017】
上記構成によれば、複数種類の暗号演算のフォーマットに対応した暗号演算回路を実現することができる。
【0018】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は、文脈毎に用いられ、1つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【0019】
次に、本発明の実施の形態を図面に基づいて説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は、単数でも複数でも構わない。
【0020】
なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。また、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ドライブを特に区別しないで説明する場合には、「ドライブ120」と記載し、個々のドライブを区別して説明する場合には、「ドライブ120-1」、「ドライブ120-2」のように記載することがある。
【0021】
図1において、100は、全体として第1の実施の形態によるストレージシステムを示す。
【0022】
ストレージシステム100は、CTL110と、複数種類のドライブ120とを含んで構成される。
【0023】
CTL110は、ノードの一例であり、ホスト端末101から発行されるIOコマンドに応じてドライブ120に対する入出力を制御する。ここで、ホスト端末101は、通信インターフェース(通信IF)、オペレーティングシステム(OS)、アプリケーションプログラム等を備えている。例えば、アプリケーションプログラムがファイルの操作等のデータ処理を行うと、ホスト端末101は、このデータ処理に応じたIOコマンドを、通信IFからSAN(Storage Area Network)等の通信ネットワークを介して、CTL110に送信する。
【0024】
IOコマンドとしては、ドライブ120へのデータの書き込みを要求するライトコマンド、ドライブ120からのデータの読み出しを要求するリードコマンド等がある。CTL110は、ホスト端末101からライトコマンドを受け取った場合、書込対象のドライブ120の種類に応じてライト処理を実行し、ホスト端末101からリードコマンドを受け取った場合、読込対象のドライブ120の種類に応じてリード処理を実行する。
【0025】
より具体的には、CTL110は、CPU111と、メモリ112と、暗号演算回路113と、PCIeSW(Peripheral Component Interconnect Express Switch)114と、ホストIF115と、バックエンドIF116とを含んで構成される。
【0026】
CPU111は、プロセッサの一例であり、1つまたは複数のプロセッサコアを備えている。CPU111は、メモリ112、ドライブ120等に記憶されたプログラムを読み込んで実行することにより、IOコマンド制御部111A、ドライブ制御部111B、暗号演算回路制御部111C等の機能を実現する。
【0027】
なお、CTL110は、CPU111に代えてまたは加えて、他のプロセッサを備えてもよい。例えば、プロセッサは、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU111のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部または全部を行うハードウェア回路(例えば、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0028】
IOコマンド制御部111Aは、ホスト端末101から送信されたIOコマンドを解釈する。ドライブ制御部111Bは、IOコマンドに基づいてドライブ120に対してIO命令(例えば、後述のドライブ転送指示)を発行する。暗号演算回路制御部111Cは、IOコマンドに基づいて暗号演算回路113に暗号演算命令(例えば、後述の回路転送指示)を発行する。なお、ドライブ転送指示、回路転送指示等の転送指示の情報は、蓄積され、ドライブ120および暗号演算回路113は、実行している処理が完了したタイミング、処理負荷が閾値より低くなったタイミング等の適宜のタイミングで転送指示の処理を開始する。
【0029】
メモリ112は、ライトコマンドと共にホスト端末101から送信されるデータ(ライトデータ)、リードコマンドをもとにドライブ120から読み出されてホスト端末101に応答されるデータ(リードデータ)、ドライブ120に書き込まれる暗号データ、ドライブ120から読み出された暗号データ等を一時的に記憶する。メモリ112には、ライトデータ、リードデータ等の通信データが記憶されるほかに、CTL110内で行われる暗号演算に関する各種の暗号関連情報も記憶されている。暗号関連情報としては、登録鍵情報112A、フォーマット管理情報112B、暗号設定情報112C等がある。
【0030】
また、メモリ112は、メモリ112上に保存するデータを記憶するための記憶領域として、データ格納領域112Dおよび登録鍵格納領域112Eを備えている。
【0031】
なお、メモリ112は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ112における少なくとも1つのメモリは、揮発性メモリであってもよいし、不揮発性メモリであってもよい。
【0032】
暗号演算回路113は、CPU111から通知される回路転送指示に従って、通信データ(例えば、ライトデータ)を暗号化して暗号データを生成したり、生成した暗号データを復号して通信データ(例えば、リードデータ)に戻したりする回路である。暗号演算回路113は、例えば、FPGAである。以下では、通信データとしては、復号、解読等の演算をすることなく利用可能な平文データを例に挙げて説明する。
【0033】
より具体的には、暗号演算回路113は、鍵情報113Aを記憶し、暗号回路113Bと、復号回路113Cとを含んで構成される。鍵情報113Aは、暗号演算回路113が暗号鍵を管理するための情報である。暗号回路113Bは、鍵情報113Aにより管理される暗号鍵を用いて平文データを暗号化する(平文データを暗号データにする)ための回路である。復号回路113Cは、鍵情報113Aにより管理されている暗号鍵を用いて暗号データを復号する(暗号データを平文データに戻す)ための回路である。以下では、暗号化と復号とに同じ暗号鍵を用いる共通鍵暗号を例に挙げて説明する。
【0034】
なお、
図1では、暗号演算回路113が1つ設けられる構成を示すが、本実施の形態は、この構成に限るものではない。例えば、暗号演算回路113は、ドライブ120の数、ドライブ120に記憶されているデータの容量等に応じて、複数設けられてもよい。
【0035】
PCIeSW114は、CPU111とPCIe接続のデバイスの間に位置し、コネクションとデータの管理とを行うチップ(ICチップ、マイクロチップ等)である。PCIeSW114-1は、CPU111とドライブ120-1、ドライブ120-2、およびドライブ120-3の各々とを通信可能に接続する。PCIeSW114-2は、CPU111と暗号演算回路113とを通信可能に接続する。
【0036】
本実施の形態では、暗号演算回路113がPCIeSW114-2を介してCPU111に接続される構成を示している。ただし、本実施の形態は、この構成に限るものではない。例えば、暗号演算回路113は、CPU111に直接接続される構成であってもよいし、CTL110内の他の構成要素を介してCPU111に接続される構成であってもよいし、その他の形態によりCPU111に接続される構成であってもよい。暗号演算回路113とCPU111とが接続可能なあらゆる形態を採用することができる。
【0037】
付言するならば、PCIeSW114-2には、暗号演算回路113に加えて、圧縮伸長回路等、他のアクセラレータ(PCIe接続のデバイスの一例)が接続されていてもよい。
【0038】
ホストIF115は、ホスト端末101とCTL110との間の通信を制御する。ホスト端末101から発行されたライトコマンドおよびライトデータは、ホストIF115によって受信される。リードコマンドに応じて読み出されたリードデータおよびリードコマンドの処理完了を告げる通知は、ホストIF115からホスト端末101に送信される。
【0039】
バックエンドIF116は、ドライブ120とCTL110との間の通信を制御する。バックエンドIF116は、論理ブロックアドレス(LBA)とドライブ120の物理的等レスとの変換操作等を行う。
【0040】
ドライブ120は、記憶装置の一例であり、各種のデータを記憶する。ドライブ120-1、ドライブ120-2、およびドライブ120-3は、例えば、内蔵ドライブであり、NVMeのプロトコルに準拠した処理を行うNVMeドライブである。PCIeSW114-1に直接接続されるNVMeドライブに記憶されるデータについては、ディスクボード等における暗号演算を行うことができないが、CTL110においては、暗号演算回路113により暗号演算を行うことができる。
【0041】
ドライブ120-4は、例えば、ドライブボックス130-1(筐体)に搭載され、プロトコルAに準拠した処理を行うドライブ(例えば、SASのプロトコルに準拠した処理を行うSASドライブ)であり、ディスクボードを介してCTL110と通信可能に接続される。ドライブ120-5は、例えば、ドライブボックス130-2に搭載され、プロトコルBに準拠した処理を行うドライブ(例えば、NVMeプロトコルのプロトコルに準拠した処理を行う自己暗号化ドライブ(SED:Self-Encrypting Drive))であり、スマートNICを介してCTL110と通信可能に接続される。ドライブ120-6は、例えば、ドライブボックス130-3(例えば、FBOF)に搭載され、プロトコルCに準拠した処理を行うドライブであり、スマートNICを介してCTL110と通信可能に接続される。なお、ドライブボックス130は、コントローラボード、LAN(Local Area Network)ボード、チャネルボード、ディスクボード、電源等を含んで構成される。
【0042】
なお、CTL110には、所定の通信IFが設けられ、管理端末が通信可能に接続されてもよい。管理端末は、コンピュータ装置として構成されており、LAN等の通信ネットワークを介してCTL110に接続される。例えば、管理端末は、ストレージ管理ソフトウェアを備えている。ストレージ管理ソフトウェアは、CTL110の構成、設定情報等を管理し、CTL110の各種情報を取得して表示させるためのプログラムである。ユーザは、ストレージ管理ソフトウェアが提供する管理画面を操作することにより、暗号演算に関する種々の設定を行うことができる。
【0043】
図2は、登録鍵情報112Aの一例(登録鍵テーブル200)を示す図である。
【0044】
登録鍵テーブル200は、ドライブ120の所定の記憶領域を示す物理アドレスの範囲(アドレス範囲)ごとにCPU111が暗号鍵を管理するためのテーブルである。より具体的には、登録鍵テーブル200は、アドレス範囲201と、鍵インデックス202と、暗号鍵203とのデータが対応付けられたレコードを記憶する。なお、登録鍵情報112Aについては、不揮発メモリ、鍵管理サーバ装置等に記憶しておいても良い。
【0045】
アドレス範囲201には、アドレス範囲を示すデータが格納される。アドレス範囲には、当該アドレス範囲の記憶領域に書き込まれるデータまたは当該記憶領域から読み出されるデータ(暗号演算対象のデータ)に対する暗号演算に用いられる暗号鍵が設定されている。なお、1つのドライブ120に1つのアドレス範囲が設定されていてもよいし、1つのドライブ120に複数のアドレス範囲が設定されていてもよい。つまり、暗号鍵については、ドライブ120ごとに設定されてもよいし、ドライブ120の所定の記憶領域ごとに設定されてもよい。鍵インデックス202には、CTL110内において当該暗号鍵を一意に識別可能な識別情報を示すデータが格納される。暗号鍵203には、当該暗号鍵を示すデータが格納される。
【0046】
図3は、フォーマット管理情報112Bの一例(フォーマット管理テーブル300)を示す図である。
【0047】
フォーマット管理テーブル300は、アドレス範囲ごとに暗号演算の仕様(フォーマット)をCPU111が管理するためのテーブルである。より具体的には、フォーマット管理テーブル300は、アドレス範囲301と、フォーマット302とのデータが対応付けられたレコードを記憶する。
【0048】
アドレス範囲301には、アドレス範囲を示すデータが格納される。フォーマット302には、暗号演算のフォーマットを示すデータが格納される。
【0049】
ここで、暗号演算のフォーマットとしては、「SAS」、「NVMe」等が挙げられる。例えば、フォーマット「SAS」では、「平文データ+保護コード」が暗号化され、フォーマット「NVMe」では、「平文データのみ」が暗号化されて保護コード(DIF)が付加される。このように、暗号演算のフォーマットに応じて暗号演算の処理方法が異なっている。なお、フォーマット管理テーブル300では、アドレス範囲301ごとに暗号演算のフォーマット302が設定可能であるが、ドライブ120ごとにまたはドライブ120の種類ごとにフォーマット302が設定されていてもよい。
【0050】
図4は、暗号設定情報112Cの一例(暗号設定テーブル400)を示す図である。
【0051】
暗号設定テーブル400は、アドレス範囲ごとに暗号演算の要否をCPU111が管理するためのテーブルである。より具体的には、暗号設定テーブル400は、アドレス範囲401と、暗号演算要否402とのデータが対応付けられたレコードを記憶する。
【0052】
アドレス範囲401には、アドレス範囲を示すデータが格納される。暗号演算要否402には、当該アドレス範囲に係るデータに対する暗号演算の要否を示す情報が格納される。例えば、ユーザは、管理端末等を介して、ドライブ120の所定の記憶領域を示すアドレス範囲ごとに暗号演算要否402の設定を行うことができる。
【0053】
図5は、鍵情報113Aの一例(鍵テーブル500)を示す図である。
【0054】
鍵テーブル500は、暗号演算回路113が暗号鍵を管理するためのテーブルである。より具体的には、鍵テーブル500は、鍵インデックス501と、暗号鍵502とのデータが対応付けられたレコードを記憶する。
【0055】
鍵インデックス501には、CTL110内において暗号鍵を一意に識別可能な情報を示すデータが格納される。暗号鍵502は、当該暗号鍵を示すデータが格納される。付言するならば、鍵インデックス202と鍵インデックス501とが同じ値である場合は、同じ暗号鍵であることを示す。
【0056】
図6は、CPU111から暗号演算回路113に通知される回路転送指示に含まれる情報の一例(回路転送指示情報600)を示す図である。
【0057】
回路転送指示情報600は、転送種別601と、暗号演算602と、転送元アドレス603と、転送先アドレス604と、対象ドライブ605との情報を含んで構成される。
【0058】
転送種別601には、ホスト端末101から送信されたIOコマンドの種別を示す情報が格納される。例えば、IOコマンドがライトコマンドである場合には「write」が転送種別601に格納され、IOコマンドがリードコマンドである場合には「read」が転送種別601に格納される。暗号演算602には、暗号演算の要否を示す情報が格納される。例えば、暗号演算602には、暗号演算が必要である場合には「鍵インデックス202の値」が格納され、暗号演算が不要である場合には「不要であることを示す値」が格納される。
【0059】
転送元アドレス603は、暗号演算回路113が暗号演算するデータ(転送元のデータ)を格納しているメモリ112上の記憶領域のアドレスを示す情報が格納される。転送先アドレス604は、暗号演算回路113が暗号演算したデータ(転送先のデータ)を格納するメモリ112上の記憶領域のアドレスを示す情報が格納される。なお、IOコマンドがライトコマンドである場合は、転送元のデータは、平文データであり、転送先のデータは、暗号データである。他方、IOコマンドがリードコマンドである場合は、転送元のデータは、暗号データであり、転送先のデータは、平文データである。
【0060】
対象ドライブ605は、暗号演算のフォーマットを示す情報が格納される。以下では、暗号演算のフォーマットとして、「SAS」と「NVMe」との2種類が設けられるケースを例に挙げて説明する。
【0061】
図7は、CPU111からドライブ120に通知されるドライブ転送指示に含まれる情報の一例(ドライブ転送指示情報700)を示す図である。
【0062】
ドライブ転送指示情報700は、転送種別701と、転送元アドレス702と、転送先アドレス703との情報を含んで構成される。
【0063】
転送種別701には、ホスト端末101から送信されたIOコマンドの種別を示す情報が格納される。転送元アドレス702は、ドライブ120がIO処理するデータ(転送元のデータ)を格納している記憶領域のアドレスを示す情報が格納される。転送先アドレス703は、ドライブ120がIO処理したデータ(転送先のデータ)を格納する記憶領域のアドレスを示す情報が格納される。
【0064】
なお、IOコマンドがライトコマンドである場合は、転送元アドレス702には、暗号データが格納されたメモリ112上の記憶領域のアドレスの情報が格納され、転送先アドレス703には、暗号データが格納されるドライブ120上の記憶領域のアドレスの情報が格納される。他方、IOコマンドがリードコマンドである場合は、転送元アドレス702には、暗号データが格納されているドライブ120上の記憶領域のアドレスの情報が格納され、転送先アドレス703には、暗号データが格納されたメモリ112上の記憶領域のアドレスの情報が格納される。
【0065】
図8は、鍵登録処理の一例を示す図である。鍵登録処理は、例えば、管理端末を介してユーザにより暗号鍵の登録が指示されたタイミング、鍵更新処理で呼び出されたタイミング、暗号演算回路113が初期化されるタイミング等、所定のタイミングで開始される。
【0066】
S801では、CPU111は、鍵登録指示情報が含まれる鍵登録指示を暗号演算回路113に通知する。例えば、CPU111は、管理端末等から暗号鍵の登録の指示を受け取ると、当該暗号鍵を受け渡すためのメモリ112上の記憶領域(アドレス空間)に当該暗号鍵を格納し、当該暗号鍵を識別するための鍵インデックスと、当該暗号鍵のデータを格納した記憶領域のアドレスとの情報が含まれる鍵登録指示情報を生成する。
【0067】
S802では、暗号演算回路113は、CPU111から通知された鍵登録指示を受け取り、鍵登録指示に含まれるメモリ112上の記憶領域のアドレスから、暗号鍵のデータを読み出す。なお、例えば、DMA(Direct Memory Access)により暗号鍵のデータが転送されてもよい。
【0068】
S803では、暗号演算回路113は、読み出した暗号鍵のデータを、S802で受け取った鍵登録指示に含まれる鍵インデックスに対応付けて鍵情報113Aに登録する。
【0069】
鍵登録処理によれば、暗号演算回路113は、CPU111により通知される鍵インデックスを介して、暗号演算において用いる暗号鍵を特定可能になる。
【0070】
図9は、暗号要否設定処理の一例を示す図である。暗号要否設定処理は、例えば、管理端末から、ユーザにより指定されたドライブ120の所定の記憶領域についての暗号演算の要否を示す要否情報を受信したタイミングで開始される。
【0071】
S901では、CPU111は、ユーザにより指定されたドライブ120の所定の記憶領域についての暗号演算の要否情報を受け取る。
【0072】
S902では、CPU111は、ドライブ120の所定の記憶領域を示すアドレス範囲についての暗号演算の要否情報を暗号設定情報112Cに登録する。
【0073】
ここで、セキュリティのレベルが相対的に低いところ(いわゆる穴)にリスクがある。この点、全てのドライブ120の全ての記憶領域に対して暗号演算を行う設定をすることで、一の暗号演算回路113により暗号演算が行われ、セキュリティのレベルが一定になって穴がなくなり、セキュリティが強固になる。
【0074】
図10は、鍵更新処理の一例を示す図である。鍵更新処理は、所定のタイミングで開始される。所定のタイミングは、定期的であってもよいし、予め定められた日時であってもよいし、ユーザにより指定されたタイミングであってもよいし、その他のタイミングであってもよい。
【0075】
S1001では、CPU111は、更新対象の暗号鍵が対応付けられているアドレス範囲のデータ(更新対象のデータ)に対して後述のリード処理を実行する。リード処理については、
図12を用いて後述する。
【0076】
S1002では、CPU111は、鍵削除指示情報が含まれる鍵削除指示を暗号演算回路113に通知する。鍵削除指示情報には、更新対象の暗号鍵の鍵インデックスの情報が含まれる。
【0077】
S1003では、暗号演算回路113は、鍵削除指示において指定されている鍵インデックスの暗号鍵の情報を鍵情報113Aから削除する。
【0078】
S1004では、暗号演算回路113は、更新対象の暗号鍵の登録の指示をCPU111に通知する。CPU111は、更新対象の暗号鍵の登録の指示を受け取ると、鍵登録処理を実行する。鍵登録処理により、更新対象の暗号鍵が暗号演算において用いられるようになる。
【0079】
S1005では、CPU111は、更新対象のデータに対して後述のライト処理を実行する。ライト処理については、
図11を用いて後述する。
【0080】
図11は、ライト処理の一例を示す図である。ライト処理は、CPU111がライトコマンドを受領したタイミング、鍵更新処理から呼び出されたタイミング等、所定のタイミングで開始される。
【0081】
S1101では、CPU111は、IOコマンド処理を行う。IOコマンド処理では、例えば、CPU111は、IOコマンドの種別としてライトコマンドを判定する。また、例えば、CPU111は、暗号設定テーブル400を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲401のレコードを特定し、特定したレコードの暗号演算要否402の値を取得する。
【0082】
S1102では、CPU111は、登録鍵情報112Aから暗号演算回路113が使用する暗号鍵の鍵インデックスを判定する。例えば、CPU111は、登録鍵テーブル200を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲201のレコードを特定し、特定したレコードの鍵インデックス202の値を取得する。
【0083】
なお、S1101において取得された暗号演算要否402の値が、暗号演算が不要であることを示す「非暗号動作」である場合は、S1102の処理は、行われなくてもよい。
【0084】
S1103では、CPU111は、フォーマット管理情報112Bから暗号演算回路113が使用する暗号演算のフォーマットを判定する。例えば、CPU111は、フォーマット管理テーブル300を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲301のレコードを特定し、特定したレコードのフォーマット302の値(「SAS」または「NVMe」)を取得する。
【0085】
S1104では、CPU111は、回路転送指示を暗号演算回路113に通知する。CPU111は、ライトコマンドであることを示す情報と、暗号演算の要否を示す情報と、ライトコマンドと共に送信されたデータが記憶されているメモリ112上の記憶領域のアドレス(転送元のアドレス)の情報と、当該データが暗号化されたデータが格納されるメモリ112上の記憶領域のアドレス(転送先のアドレス)の情報と、暗号演算のフォーマットが「SAS」であるか否かを示す対象ドライブの情報とを含む回路転送指示情報を生成する。なお、回路転送指示情報は、DMAにより暗号演算回路113に転送されてもよい。また、暗号演算の要否を示す情報には、暗号演算が必要である場合には、鍵インデックスの値が設定され、暗号演算が不要である場合には、暗号演算が不要であることを示す値が設定される。
【0086】
S1105では、暗号演算回路113は、回路転送指示情報に含まれる転送元のアドレスをもとにメモリ112上のデータを読み出す。
【0087】
S1106では、暗号演算回路113は、回路転送指示に含まれる鍵インデックスをもとに、鍵情報113Aから使用する暗号鍵のデータを取得する。
【0088】
S1107では、暗号演算回路113は、回路転送指示に含まれる対象ドライブの情報をもとに、暗号演算の処理方法を決定する。
【0089】
S1108では、暗号演算回路113は、S1106において取得した暗号鍵のデータを用いて、S1107で決定した処理方法で、S1105で読み出したデータを暗号化する。例えば、暗号演算回路113は、暗号演算のフォーマットが「SAS」である場合は、データに保護コードを加えた上で暗号鍵を用いて暗号化し、暗号演算のフォーマットが「NVMe」である場合は、暗号鍵を用いてデータを暗号化した上で保護コードを付加する。
【0090】
S1109では、暗号演算回路113は、回路転送指示に含まれる転送先のアドレスをもとにメモリ112上の当該アドレスの記憶領域に暗号化したデータを格納する。
【0091】
S1110では、CPU111は、ドライブ転送指示をドライブ120に送信する。例えば、CPU111は、ライトコマンドであることを示す情報と、暗号化されたデータが記憶されているメモリ112上の記憶領域のアドレス(転送元のアドレス)の情報と、IOコマンドのLBAから算出される物理アドレス(転送先のアドレス)の情報と、を含むドライブ転送指示情報を生成する。なお、ドライブ転送指示情報は、DMAにより、当該物理アドレスの記憶領域が設けられているドライブ120に転送されてもよい。
【0092】
S1111では、ドライブ120は、ドライブ転送指示に含まれる転送元のアドレスをもとに、メモリ112上のデータを取得し、取得したデータを、ドライブ転送指示に含まれる転送先のアドレスに格納する。
【0093】
図12は、リード処理の一例を示す図である。リード処理は、CPU111がリードコマンドを受領したタイミング、鍵更新処理から呼び出されたタイミング等、所定のタイミングで開始される。
【0094】
S1201では、CPU111は、IOコマンド処理を行う。IOコマンド処理では、例えば、CPU111は、IOコマンドの種別としてリードコマンドを判定する。また、例えば、CPU111は、暗号設定テーブル400を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲401のレコードを特定し、特定したレコードの暗号演算要否402の値を取得する。
【0095】
S1202では、CPU111は、登録鍵情報112Aから暗号演算回路113が使用する暗号鍵の鍵インデックスを判定する。例えば、CPU111は、登録鍵テーブル200を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲201のレコードを特定し、特定したレコードの鍵インデックス202の値を取得する。
【0096】
なお、S1201において取得された暗号演算要否402の値が、暗号演算が不要であることを示す「非暗号動作」である場合は、S1202の処理は、行われなくてもよい。
【0097】
S1203では、CPU111は、フォーマット管理情報112Bから暗号演算回路113が使用する暗号演算のフォーマットを判定する。例えば、CPU111は、フォーマット管理テーブル300を参照し、IOコマンドのLBAから算出される物理アドレスが該当するアドレス範囲301のレコードを特定し、特定したレコードのフォーマット302の値(「SAS」または「NVMe」)を取得する。
【0098】
S1204では、CPU111は、ドライブ転送指示をドライブ120に送信する。例えば、CPU111は、リードコマンドであることを示す情報と、IOコマンドのLBAから算出される物理アドレス(転送元のアドレス)の情報と、読み出されたデータが格納されるメモリ112上の記憶領域のアドレス(転送先のアドレス)の情報と、を含むドライブ転送指示情報を生成する。なお、ドライブ転送指示情報は、DMAにより当該物理アドレスの記憶領域が設けられているドライブ120に転送されてもよい。
【0099】
S1205では、ドライブ120は、ドライブ転送指示に含まれる転送元のアドレスをもとに、ドライブ120上のデータを取得し、取得したデータを、ドライブ転送指示に含まれる転送先のアドレスに格納する。
【0100】
S1206では、CPU111は、回路転送指示を暗号演算回路113に通知する。CPU111は、リードコマンドであることを示す情報と、暗号演算の要否を示す情報と、S1205においてデータが記憶されたメモリ112上の記憶領域のアドレス(転送元のアドレス)の情報と、当該データが復号されたデータが格納されるメモリ112上の記憶領域のアドレス(転送先のアドレス)の情報と、暗号演算のフォーマットが「SAS」であるか否かを示す対象ドライブの情報とを含む回路転送指示情報を生成する。なお、回路転送指示情報は、DMAにより暗号演算回路113に転送されてもよい。
【0101】
S1207では、暗号演算回路113は、回路転送指示に含まれる転送元のアドレスをもとにメモリ112上のデータを読み出す。
【0102】
S1208では、暗号演算回路113は、回路転送指示に含まれる鍵インデックスをもとに、鍵情報113Aから使用する暗号鍵のデータを取得する。
【0103】
S1209では、暗号演算回路113は、回路転送指示に含まれる対象ドライブの情報をもとに、暗号演算の処理方法を決定する。
【0104】
S1210では、暗号演算回路113は、S1208において取得した暗号鍵のデータを用いて、S1209で決定した処理方法で、S1207で読み出したデータを復号する。例えば、暗号演算回路113は、暗号演算のフォーマットが「SAS」である場合は、暗号鍵を用いてデータを復号した上で保護コードを取り除き、暗号演算のフォーマットが「NVMe」である場合は、データから保護コードを取り除いた上で暗号鍵を用いてデータを復号する。
【0105】
S1211では、暗号演算回路113は、回路転送指示に含まれる転送先のアドレスをもとにメモリ112上の当該アドレスの記憶領域に復号したデータを格納する。
【0106】
S1212では、CPU111は、データを出力する。例えば、リードコマンドの発行元(例えば、ホスト端末101)にデータを応答する。
【0107】
図13は、ライト処理に係る処理フローの一例を示す図である。
図13では、ライトデータが内蔵のドライブ120-1に書き込まれるケースを例に挙げて説明する。
【0108】
ホスト端末101からライト要求(ライトコマンドおよびライトデータ)が発行されると、ライト要求は、メモリ112に記憶される(S1301)。
【0109】
CPU111は、ライトコマンドを受け取ると、フォーマット判定(S1103)等を行う。そして、CPU111は、回路転送指示を暗号演算回路113に通知する(S1104)。
【0110】
続いて、暗号演算回路113は、回路転送指示に基づいてメモリ112から暗号演算回路113にライトデータを転送する(S1105)。続いて、暗号演算回路113は、処理決定(S1107)、暗号化(S1108)等を行い、暗号化したデータを暗号演算回路113からメモリ112に転送する(S1109)。
【0111】
続いて、CPU111は、ドライブ転送指示をドライブ120-1に送信する(S1110)。
【0112】
続いて、ドライブ120-1は、暗号化されたデータをメモリ112からドライブ120-1に転送する。
【0113】
図14は、リード処理に係る処理フローの一例を示す図である。
図14では、リードデータが内蔵のドライブ120-1から読み出されるケースを例に挙げて説明する。
【0114】
ホスト端末101からリード要求(リードコマンド)が発行されると、リード要求は、メモリ112に記憶される(S1401)。
【0115】
CPU111は、リードコマンドを受け取ると、フォーマット判定(S1203)等を行う。そして、CPU111は、ドライブ転送指示をドライブ120-1に通知する(S1204)。
【0116】
続いて、ドライブ120-1は、ドライブ転送指示に基づいて記憶領域からデータを読み出し、読み出したデータをメモリ112に転送する(S1205)。
【0117】
続いて、CPU111は、回路転送指示を暗号演算回路113に通知する(S1206)。
【0118】
続いて、暗号演算回路113は、回路転送指示に基づいて、ドライブ120-1から読み出されたデータを、メモリ112から暗号演算回路113に転送する(S1207)。続いて、暗号演算回路113は、処理決定(S1209)、復号(S1210)等を行い、復号したデータを暗号演算回路113からメモリ112に転送する(S1211)。
【0119】
続いて、CPU111は、復号されたデータをホスト端末101に応答する(S1402)。
【0120】
本実施の形態によれば、暗号化エンジンが集約されるので、暗号アルゴリズム、FIPS認証のセキュリティレベルが均一になり、ストレージシステム全体のセキュリティが担保できる。なお、暗号エンジンを集約していないと、一部でも脆弱性があった場合、ストレージシステム全体のセキュリティが脅かされるため、セキュリティリスクが大きくなる。
【0121】
例えば、以前はSAS形式とその他の形式とで暗号演算の処理方法が異なっていたが、CPUにより判定された暗号演算のフォーマットに従って暗号演算回路において切り替えて暗号演算することができる。また、同じ暗号アルゴリズムで暗号化することにより、プロトコル間で共通のデータ信頼性を担保できるというメリットもある。
【0122】
また、本実施の形態によれば、全てのドライブで同じ暗号エンジン(ハードウェア)を使うので、暗号エンジンごとにマイクロコンピュータを作りこむ必要がなくなる。また、同じ手順で複数のプロトコルの暗号演算を実現できるため、今後の製品でプロトコル(暗号演算のフォーマット)が追加になった場合でも迅速に対応することができ、製品が企画されてから市場に投入されるまでの時間を短縮することで競合力を維持できる。
【0123】
(II)第2の実施の形態
第2の実施の形態は、暗号演算回路113が、PCIeSW114-2ではなく、PCIeSW114-1に接続されている点が異なる。その他の構成は、第1の実施の形態の構成と同じであるので、その説明については省略する。
【0124】
図15は、本実施の形態のストレージシステム1500に係る構成の一例を示す図である。ストレージシステム1500は、CTL1510を備える。CTL1510では、CPU111と暗号演算回路113とがPCIeSW114-1を介して接続されている。
【0125】
本実施の形態では、PCIeSW114-2が設けられていないため、第1の実施の形態と比べてコストおよび実装面で有利となる。付言するならば、第1の実施の形態の構成では、CPU111とPCIeSW114-1と間のデータ流量が第2の実施の形態の構成と比べて少ないため、ストレージシステム性能としては第1の実施の形態の方が有利となる。
【0126】
(III)第3の実施の形態
第3の実施の形態は、ドライブ120のデータはそのままで、CTL110をアップグレードするDIP(Data In Place)が行われる点が第1の実施の形態と異なる。本実施の形態では、第1の実施の形態の構成と同じ構成については、その説明を省略する。
【0127】
本実施の形態におけるDIPにおいては、古いCTLで用いられているメモリに記憶されている各種の情報が新しいCTLに移行される。ここで、各種データの引継ぎ方式は、下記のように複数考えられ、何れかの引継ぎ方式が用いられてもよいし、その他の引継ぎ方式が用いられてもよい。
(引継ぎ方式1)ノード(新CTL)を増設し、インターコネクトコントローラを経由して旧CTLから新CTLに各種の情報をコピーし、コピーした後、旧CTLを減設する方式
(引継ぎ方式2)旧CTLの各種の情報を外部記憶装置に書き出し、新CTLに交換後に、外部記憶装置から新CTLに各種データをコピーする方式
(引継ぎ方式3)外部IFを用いて旧CTLと新CTLとを接続し、保守人員が各種の情報をコピーする方式
【0128】
図16は、DIP処理の一例を示す図である。DIP処理は、例えば、新しいCTL(CTL110)が増設された際、所定のタイミングで開始される。
【0129】
S1601では、CTL110のCPU111は、古いCTLのメモリから各種の情報をコピーする。例えば、CPU111は、古いCTLのメモリに記憶されている情報を、自CTL110のメモリ112にコピーする。例えば、古いCTLが暗号演算回路113を備える構成である場合は、当該情報には、登録鍵情報112A、フォーマット管理情報112B、暗号設定情報112C等が含まれる。なお、古いCTLが暗号演算回路113を備えない構成である場合は、暗号鍵を記憶している場合は、暗号鍵を取得する構成であってもよいし、暗号鍵については、鍵管理サーバ装置から取得する構成であってもよい。
【0130】
S1602では、CPU111は、暗号演算回路113の初期化を行う。例えば、CPU111は、鍵登録処理、暗号要否設定処理等を行う。
【0131】
図17は、DIP処理に係る処理フローの一例を示す図である。
図17では、古いCTL(CTL1710)が暗号演算回路113を備えていないケースを例に挙げて説明する。
【0132】
図17に示すように、CTL1710は、ホスト端末101からのIO要求を受け付け、ドライブ1720に対する入出力を制御している(S1701)。
【0133】
新しいCTL(CTL110)が増設されると、CTL110のCPU111は、各種情報コピー(S1601)において、メモリ1712の各種の情報を読み出し、読み出した情報をメモリ112に記憶する(S1702)。例えば、CPU111は、メモリ1712に暗号鍵のデータが記憶されている場合は、暗号鍵のデータをメモリ112に記憶する。
【0134】
続いて、CPU111は、暗号演算回路初期化(S1602)において、鍵登録処理を実行する。鍵登録処理では、CPU111は、取得した登録鍵についての鍵登録指示を暗号演算回路113に通知する(S801)。暗号演算回路113は、メモリ112から暗号鍵を読み出し(S802)、鍵情報113Aとして記憶する(S803)。
【0135】
続いて、IO切替が行われると(S1703)、CPU111は、ホスト端末101からのIO要求を受け付け、ドライブ1720に対する入出力を制御する。
【0136】
続いて、CPU1711は、IOに係る処理を停止し、CTL1710は、閉塞となる(S1704)。その後、CTL1710は、減設される。
【0137】
本実施の形態によれば、古いCTLに接続されていたドライブにおいて利用されていた暗号鍵が新しいCTLに引き継がれるので、古いCTLに接続されていたドライブのデータをそのままで、古いCTLから新しいCTLにアップグレードすることができる。
【0138】
(IV)第4の実施の形態
第4の実施の形態は、CTLが2つ設けられて冗長化されている点が第1の実施の形態と異なる。本実施の形態では、第1の実施の形態の構成と同じ構成については、その説明を省略する。
【0139】
図18は、本実施の形態のストレージシステム1800に係る構成の一例を示す図である。
【0140】
ストレージシステム1800は、CTL1810を2つ備える。CTL1810は、CTL1810間の通信を行うインターコネクトコントローラ1811を備える。例えば、一方のCTL1810と他方のCTL1810とは、インターコネクトコントローラ1811により通信可能に接続され、一方のCTL1810が故障しても他方のCTL1810により運用を継続できるように冗長化構成がとられている。
【0141】
より具体的には、CTL1810-1は、インターコネクトコントローラ1811-1を備え、CTL1810-2は、インターコネクトコントローラ1811-2を備える。インターコネクトコントローラ1811-1とインターコネクトコントローラ1811-2とは、ネットワークSW1820を介して接続されている。
【0142】
なお、本実施の形態は、上述の構成に限るものではなく、インターコネクトコントローラ1811同士を直接接続する構成としてもよい。
【0143】
ストレージシステム1800では、例えば、一方のCTL1810の交換(アップグレード)が行われた後に、他方のCTL1810の交換(アップグレード)が行われる。
【0144】
本実施の形態によれば、電源をオンにした状態(稼働した状態)において、ドライブのデータをそのままで、古いCTLから新しいCTLにアップグレードすることができる。
【0145】
(V)第5の実施の形態
第5の実施の形態は、CTLが2つ設けられて冗長化されているノードが複数設けられている点が第4の実施の形態と異なる。本実施の形態では、第4の実施の形態の構成と同じ構成については、その説明を省略する。
【0146】
図19は、本実施の形態のストレージシステム1900に係る構成の一例を示す図である。
【0147】
ストレージシステム1900は、ノード1910を複数備える。ノード1910は、CTL1810を2つ備え、冗長化構成がとられている。
【0148】
本実施の形態は、上述の構成に限るものではない。例えば、暗号演算回路113が接続されるPCIeSW114-2同士が接続される構成を採用してもよい。
【0149】
本実施の形態によれば、ドライブのデータをそのままで、古いノードから新しいノードにアップグレードすることができる。
【0150】
(VI)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
【0151】
上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
【0152】
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0153】
また、上述の実施の形態において、説明の便宜上、ストレージシステムに係る情報を、テーブルを用いて説明したが、データ構造はテーブルに限定されるものではない。ストレージシステムに係る情報は、XML(Extensible Markup Language)、YAML(YAML Ain't a Markup Language)、ハッシュテーブル、木構造等、テーブル以外のデータ構造によって表現されてもよい。
【0154】
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0155】
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
【0156】
(1)
暗号データを記憶する複数の記憶装置(例えば、ドライブ120)と、前記複数の記憶装置の各々に対する入出力を制御するコントローラ(例えば、CTL110、CTL1510、CTL1810)と、を含んで構成されるストレージシステム(例えば、ストレージシステム100、ストレージシステム1500、ストレージシステム1800、ストレージシステム1900)であって、前記コントローラは、前記複数の記憶装置の各々に対応した暗号演算のフォーマット(例えば、「SAS」、「NVMe」)を示す情報を含むフォーマット管理情報(例えば、フォーマット管理情報112B、フォーマット管理テーブル300)を記憶するメモリ(例えば、メモリ112)と、ホスト端末(例えば、ホスト端末101)からの記憶装置に対する入出力の要求に基づいて、前記フォーマット管理情報から前記記憶装置に対応するフォーマットを判定するプロセッサ(例えば、CPU111)と、ホスト端末からの記憶装置に対するデータの書き込みの要求(例えば、ライトコマンド)に基づいて前記プロセッサにより判定されたフォーマットに従って前記データを暗号化し、ホスト端末からの記憶装置に対するデータの読み出しの要求(例えば、リードコマンド)に基づいて前記プロセッサにより判定されたフォーマットに従って前記記憶装置に記憶されている前記データの暗号データを復号する暗号演算回路(例えば、暗号演算回路113)と、を備える。
【0157】
上記構成では、記憶装置ごとに暗号演算のフォーマットが異なる場合であっても、プロセッサにより記憶装置に適した暗号演算のフォーマットが判定されるので、プロセッサにおいて判定されたフォーマットでの暗号演算が暗号演算回路において行われる。上記構成によれば、例えば、記憶装置ごとに暗号演算回路を作り込むことなく、ハードウェアによる暗号化を実現することができる。
【0158】
(2)
前記メモリは、記憶装置に設けられている所定の記憶領域を示すアドレス範囲(例えば、アドレス範囲201)と、前記アドレス範囲に対応付けられている暗号鍵(例えば、暗号鍵203)と、前記暗号鍵の識別情報(例えば、鍵インデックス202)とが含まれる登録鍵情報(例えば、登録鍵情報112A、登録鍵テーブル200)を記憶し、前記プロセッサは、前記暗号鍵が記憶されている前記メモリの記憶領域を示すメモリアドレス(例えば、転送元のアドレス)と前記識別情報とを含む前記暗号鍵を登録するための鍵登録指示情報を生成し、前記暗号演算回路は、前記鍵登録指示情報を受け取った場合、前記メモリアドレスの記憶領域に記憶されている前記暗号鍵を前記メモリから読み出し、読み出した前記暗号鍵と前記識別情報とを対応付けた鍵情報(例えば、鍵情報113A、鍵テーブル500)を記憶する(例えば、
図8参照)。
【0159】
上記構成では、例えば、ストレージシステムにおいて既に用いられている暗号鍵を暗号演算回路に登録することができるので、記憶装置に記憶されている暗号データはそのままとして、コントローラをアップグレードすることができる。
【0160】
(3)
前記メモリに記憶されているフォーマット管理情報には、記憶装置に設けられている所定の記憶領域を示すアドレス範囲(例えば、アドレス範囲301)と、前記記憶装置に対応した暗号演算のフォーマット(例えば、フォーマット302)とが対応付けられた情報が含まれ、前記プロセッサは、ホスト端末からの要求が記憶装置における記憶装置アドレスの記憶領域へのデータの書き込みの要求である場合、書き込みの要求であることを示す要求種別と、前記記憶装置アドレスに対応する暗号鍵の識別情報と、前記データが記憶されている前記メモリの記憶領域を示す第1のメモリアドレスと、前記データが暗号化された暗号データが記憶される記憶領域を指定するための前記メモリにおける第2のメモリアドレスと、前記記憶装置に対応する暗号演算のフォーマットとの情報を含む回路指示情報(例えば、回路転送指示情報600)を生成し、前記暗号演算回路は、前記回路指示情報を受け取った場合、前記第1のメモリアドレスの記憶領域に記憶されている前記データを前記メモリから読み出し、記憶している鍵情報から、前記識別情報に対応する暗号鍵を読み出し、前記フォーマットに従って前記暗号鍵を用いて前記データを暗号化した暗号データを、前記第2のメモリアドレスの記憶領域に格納し、前記プロセッサは、書き込みの要求であることを示す要求種別と前記記憶装置アドレスと前記第2のメモリアドレスとの情報を含む記憶装置指示情報(例えば、ドライブ転送指示情報700)を生成し、前記記憶装置は、前記記憶装置指示情報を受け取った場合、前記第2のメモリアドレスの記憶領域に記憶されている前記暗号データを、前記記憶装置アドレスの記憶領域に記憶する(例えば、
図11参照)。
【0161】
上記構成では、要求種別と暗号鍵の識別情報と暗号演算のフォーマットとの情報が回路指示情報に含まれているので、例えば、暗号演算回路は、回路指示情報を受け取った場合、記憶装置に応じたフォーマットおよび暗号鍵でデータを暗号化することができる。
【0162】
(4)
前記プロセッサは、ホスト端末からの要求が記憶装置における記憶装置アドレスの記憶領域からの暗号データの読み出しの要求である場合、読み出しの要求であることを示す要求種別と、前記記憶装置アドレスと、前記記憶装置から読み出された前記暗号データが記憶される記憶領域を指定するための前記メモリにおける第3のメモリアドレスとの情報を含む記憶装置指示情報(例えば、ドライブ転送指示情報700)を生成し、前記記憶装置は、前記記憶装置指示情報を受け取った場合、前記記憶装置アドレスの記憶領域から前記暗号データを読み出し、読み出した前記暗号データを前記第3のメモリアドレスの記憶領域に格納し、前記プロセッサは、読み出しの要求であることを示す要求種別と、前記記憶装置アドレスに対応する暗号鍵の識別情報と、前記第3のメモリアドレスと、前記暗号データが復号されたデータが記憶される記憶領域を指定するための前記メモリにおける第4のメモリアドレスと、前記記憶装置に対応する暗号演算のフォーマットとの情報を含む回路指示情報(例えば、回路転送指示情報600)を生成し、前記暗号演算回路は、前記回路指示情報を受け取った場合、前記第3のメモリアドレスの記憶領域に記憶されている前記暗号データを前記メモリから読み出し、記憶している鍵情報から、前記識別情報に対応する暗号鍵を読み出し、前記フォーマットに従って前記暗号鍵を用いて前記暗号データを復号したデータを前記第4のメモリアドレスの記憶領域に格納し、前記プロセッサは、前記第4のメモリアドレスの記憶領域に記憶されている前記データを、前記ホスト端末に応答する(例えば、
図12参照)。
【0163】
上記構成では、要求種別と暗号鍵の識別情報と暗号演算のフォーマットとの情報が回路指示情報に含まれているので、例えば、暗号演算回路は、回路指示情報を受け取った場合、記憶装置に応じたフォーマットおよび暗号鍵で暗号データを復号することができる。
【0164】
(5)
前記メモリは、記憶装置に設けられている所定の記憶領域を示すアドレス範囲と、前記記憶装置に対応する暗号演算の要否を示す要否情報とが含まれる暗号設定情報(例えば、暗号設定情報112C、暗号設定テーブル400)を記憶し、前記プロセッサは、ホスト端末からの記憶装置における記憶装置アドレスに対するデータの書き込みの要求に基づいて、前記記憶装置アドレスに対応する要否情報を特定し、前記暗号演算回路は、前記プロセッサにより特定された要否情報に基づいて暗号演算が必要であると判定したとき、前記プロセッサにより判定されたフォーマットに従って前記データを暗号化する。
【0165】
上記構成によれば、例えば、ユーザは、暗号演算の要否を記憶領域ごとに設定することができる。また、例えば、ユーザは、すべての記憶領域に対して暗号演算を行う設定をすることで、全ての記憶装置に対して同一の暗号演算回路による暗号演算が行われるので、ストレージシステムのセキュリティレベルを一定にすることができる。これにより、セキュリティレベルが相対的に低い記憶装置に対するサイバー攻撃を回避することができ、ストレージシステムのセキュリティを強固にすることができる。
【0166】
(6)
上記ストレージシステムは、前記コントローラと、前記コントローラと同じ構成を備える前記コントローラの冗長化のための他のコントローラとが設けられ(例えば、
図18、
図19参照)、前記コントローラと前記他のコントローラとは、コントローラ間の通信を行うためのインターコネクトコントローラを備える。
【0167】
上記構成によれば、例えば、コントローラが冗長化されているので、ストレージシステムを停止することなく、コントローラをアップグレードすることができる。
【0168】
(7)
前記暗号演算回路は、PCIeSW(Peripheral Component Interconnect Express Switch)を介して前記プロセッサに接続されている(例えば、
図1、
図15、
図18、
図19参照)。
【0169】
上記構成によれば、例えば、追加の暗号演算回路、別のアクセラレータ等を追加できるといった拡張性を確保することができる。
【0170】
(8)
前記複数の記憶装置の少なくとも1つの記憶装置と前記プロセッサとがPCIeSW(Peripheral Component Interconnect Express Switch)に接続されている。
【0171】
例えば、PCIeSWに直接接続されるNVMeドライブではハードウェアによる暗号化が未サポートであるが、上記構成によれば、暗号演算回路による暗号化を行うことができるようになる。例えば、PCIeSWに直接接続されるNVMeドライブが設けられる構成であっても、CPU等によるソフトウェアによる暗号化よりもセキュリティが高いハードウェアによる暗号化を実現することができる。
【0172】
上記暗号演算回路は、PCIeSWを介さず直接上記プロセッサと接続する構成をとってもよい。また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
【0173】
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
【符号の説明】
【0174】
100……ストレージシステム、110……CTL、111……CPU、120……メモリ、113……暗号演算回路。