(57)【特許請求の範囲】
【請求項１】
書き込み対象の平文データにエラーチェックコードを付して書き込み要求を行う制御装置と、
鍵検証用の期待値と前記平文データとを同一の暗号鍵を用いてそれぞれ暗号化し、前記平文データを暗号化して得られた暗号文データに応じて前記エラーチェックコードを置換し、置換済エラーチェックコードに暗号化済み期待値を格納する暗号処理装置と、
前記置換済エラーチェックコードを用いて書き込みエラーチェックを行った上で、前記置換済エラーチェックコードが付された前記暗号文データを記憶する記憶装置と
を備え、
前記暗号処理装置は、前記暗号文データの読み出し要求を受け付けた場合に、前記置換済エラーチェックコードに格納された前記暗号化済み期待値を復号鍵により復号し、前記暗号鍵と前記復号鍵とが適正に対応するか否かを検証する
ことを特徴とするストレージシステム。
【請求項２】
前記期待値は、同一データの読み書きに際して一意に特定される値であり、
前記暗号処理装置は、前記暗号文データの読み出しにより特定された読み出し時の期待値と、前記暗号化済み期待値を復号して得られた書き込み時の期待値とが一致したときに前記暗号鍵と前記復号鍵とが適正に対応すると判定することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記期待値は、前記記憶装置における前記暗号文データの格納先アドレスに対応することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記期待値は、前記記憶装置における前記暗号文データの格納先アドレスの上位ビットであり、前記エラーチェックコードに含まれる前記格納先アドレスの下位ビットとの組み合わせで前記格納先アドレスを指し示すことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記制御装置は、前記書き込み要求を行う際に、前記記憶装置における書き込み先としての格納先アドレスと、暗号化に用いる前記暗号鍵とを指定し、前記書き込み先としての格納先アドレスにより定まる前記期待値を前記エラーチェックコードの一部に格納し、
前記暗号処理装置は、指定された前記暗号鍵により前記平文データを暗号化するとともに、前記エラーチェックコードから読み出した前記期待値を暗号化する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記制御装置は、前記読み出し要求を行う際に、前記記憶装置からの読み出し元としての格納先アドレスと、復号に用いる前記復号鍵とを指定し、
前記暗号処理装置は、前記置換済エラーチェックコードに格納された前記暗号化済み期待値を指定された前記復号鍵により復号し、前記読み出し元としての格納先アドレスから特定された期待値と一致することを条件に、前記暗号文データの復号結果を出力する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記暗号処理装置は、前記平文データの暗号化と前記期待値の暗号化に異なる暗号方式を用いることを特徴とする請求項１に記載のストレージシステム。
【請求項８】
制御装置が、書き込み対象の平文データにエラーチェックコードを付して書き込み要求を行う書き込み要求ステップと、
暗号処理装置が、鍵検証用の期待値と前記平文データとを同一の暗号鍵を用いてそれぞれ暗号化し、前記平文データを暗号化して得られた暗号文データに応じて前記エラーチェックコードを置換し、置換済エラーチェックコードに暗号化済み期待値を格納する暗号化ステップと、
記憶装置が、前記置換済エラーチェックコードを用いて書き込みエラーチェックを行った上で、前記置換済エラーチェックコードが付された前記暗号文データを記憶する記憶ステップと、
前記暗号処理装置が、前記暗号文データの読み出し要求を受け付けた場合に、前記置換済エラーチェックコードに格納された前記暗号化済み期待値を復号鍵により復号し、前記暗号鍵と前記復号鍵とが適正に対応するか否かを検証する検証ステップと
を含むことを特徴とする暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及び暗号処理方法に関する。
【背景技術】
【０００２】
従来、復号鍵を検証するため、特開２００７−１２４５３０号公報（特許文献１）に記載の技術がある。この公報には、「復号化の対象は、暗号コードと暗号データとを含む暗号化デジタルデータであり、第１復号手段１２ａはその中の暗号コードを復号化処理して復号化診断コードを生成し、判断手段１３は、生成された復号化診断コードが所定の検証コードと一致するか否かにより、暗号コードの復号化処理が正常になされたか否かを判断する。制御手段１５は、暗号コードの復号化が正常な場合は第２復号手段１２ｂによる暗号データの復号化開始を許可し、正常でない場合は暗号データの復号化開始を禁止する。」という記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１２４５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１は、ストレージシステムを想定した技術ではない。ストレージシステムでは、ストレージコントローラで各データブロックにＤＩＦと呼ばれるチェックコードを付加し、ストレージシステム内のデータ転送経路上に複数のチェックポイントを設けることで、データの信頼性を高めるのが一般的である。また、ストレージコントローラはＨＤＤやＳＳＤ等の最終記憶媒体への書き込みデータブロックをストレージコントローラ内の暗号処理装置にて暗号化する機能を有している。しかし、前記暗号処理において、ブロックデータの信頼性を高めるＤＩＦを暗号化すると、最終記憶媒体におけるＤＩＦのチェックが機能しない課題がある。
【０００５】
また、特許文献１では、検証コードは任意に設定可能であるが、検証コードを任意に設定可能とした場合には、検証コードの管理が問題となる。検証コード自体の信頼性を担保する必要が生ずるからである。さらに、ストレージシステムでは、所定サイズ（例えば５１２バイト）に分割してデータの読み書きを行うため、分割したデータの暗号化に係る処理は自動的かつ低負荷であることが望まれ、特許文献１に代表される従来技術は適さない。以上のように、特許文献１に代表される従来技術をストレージシステムに適用すると、データ転送負荷の増加を招く。
【０００６】
そこで、本発明では、ストレージシステムにおいて、記憶装置におけるＤＩＦのチェックを低負荷で機能させて信頼性を高めつつ、暗号を取り扱い可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、代表的な本発明のストレージシステム及び暗号処理方法の一つは、まず、制御装置が、書き込み対象の平文データにエラーチェックコードと鍵検証用の期待値を付して書き込み要求を行う。次に、暗号処理装置が、鍵検証用の期待値と前記平文データとを同一の暗号鍵を用いてそれぞれ暗号化し、前記平文データを暗号化して得られた暗号文データに応じて前記エラーチェックコードを置換し、置換済エラーチェックコードに暗号化済み期待値を格納する。そして、記憶装置が、前記置換済エラーチェックコードを用いて書き込みエラーチェックを行った上で、前記置換済エラーチェックコードが付された前記暗号文データを記憶する。その後、暗号処理装置が、前記暗号文データの読み出し要求を受け付けた場合に、前記置換済エラーチェックコードに格納された前記暗号化済み期待値を復号鍵により復号し、前記暗号鍵と前記復号鍵とが適正に対応するか否かを検証する。
【発明の効果】
【０００８】
本発明によれば、ストレージシステムにおいて、低負荷で暗号を取り扱い可能とすることができる。上記した以外の課題、構成及び効果は以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】ストレージシステムのメインコントローラ構成図。
【図２】暗号処理装置の構成図。
【図３】暗号化処理の説明図。
【図４】暗号鍵と復号鍵についての説明図。
【図５】制御装置からの要求についての説明図。
【図６】期待値管理テーブルの説明図。
【図７】期待値の暗号化についての説明図。
【図８】鍵管理テーブルの説明図。
【図９】暗号コントローラの処理手順を示すフローチャート（その１）。
【図１０】暗号コントローラの処理手順を示すフローチャート（その２）。
【図１１】書き込み時のＤＩＦの書き換えについての説明図。
【図１２】読み出し時のＤＩＦの書き換えについての説明図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施例を説明する。
【実施例】
【００１１】
図１は、ストレージシステムのメインコントローラ構成図である。メインコントローラは、1つ以上の制御装置（ＣＰＵ（Central Processing Unit））を有する。ストレージシステムは、複数のメインコントローラを備えた冗長構成を採用する場合もある。
【００１２】
制御装置１１は、１つ以上のＤＩＭＭ（Dual Inline Memory Module）を主記憶１２として使用する。制御装置は、暗号処理装置２０を介して記憶装置と接続している。この暗号処理装置２０が、データの暗号化と復号を担う。
【００１３】
図２は、暗号処理装置２０の構成図である。暗号処理装置２０は、スイッチ２１により、制御装置１１と記憶装置３１を内部で接続する。
【００１４】
さらに、スイッチ２１は、暗号コントローラ２２と接続されている。そして、暗号コントローラ２２は、メモリ２３と接続されている。暗号コントローラ２２は、メモリ２３を暗号文データの一時保持に用いる。すなわち、図２に破線で示した暗号コントローラ２２、メモリ２３が、データの暗号化や復号を担う機能部として動作することになる。
【００１５】
図３は、暗号化処理の説明図である。制御装置１１は、まず、主記憶１２に格納した平文データの暗号化を暗号処理装置２０に指示する（１）。
【００１６】
暗号処理装置２０の暗号コントローラ２２は、主記憶１２から取得した平文データを暗号化し、暗号文データをメモリ２３に格納する（２）。
【００１７】
その後、制御装置１１は、記憶装置３１に書き込みを指示する。記憶装置３１は、ＳＳＤ（Solid State Drive）等の最終記憶媒体を内包する。記憶装置３１は、メモリ２３より暗号文データを読み出し、制御装置１１に指定された、最終記憶媒体の論理アドレスに記憶する（３）。
【００１８】
図４は、暗号鍵と復号鍵についての説明図である。暗号化を行う場合には、制御装置１１は、５１２バイトの平文データに８バイトの平文ＤＩＦを付して暗号処理装置２０に暗号化を指示する。平文ＤＩＦは、平文データに対応するエラーチェックコードである。暗号コントローラ２２は暗号化の指示を受け、暗号処理装置２０のスイッチ２１を介して、平文ＤＩＦ付き平文データを読み出す。
【００１９】
暗号コントローラ２２は、暗号／復号エンジンとして動作し、制御装置１１から指定された暗号鍵を用いて、読みだした５１２バイトの平文データを暗号化し、５１２バイトの暗号文データを生成する。また、暗号文データに対応するエラーチェックコードである８バイトの暗号文ＤＩＦを生成し、エラーチェックコードの置き換えを行う。その後、制御装置１１は、暗号文データの書き込みを記憶装置３１に指示し、記憶装置３１は８バイトの暗号文ＤＩＦが付された５１２バイトの暗号文データを記憶する。
【００２０】
一方、復号を行う場合には、まず制御装置１１が暗号文データの読み出しを記憶装置３１に指示し、記憶装置３１が暗号処理装置２０に、８バイトの暗号文ＤＩＦが付された５１２バイトの暗号文データを書き込む。暗号処理装置２０のスイッチ２１は、暗号文ＤＩＦ付き暗号文データを暗号コントローラ２２に送る。
【００２１】
その後、制御装置１１が暗号処理装置２０に復号を指示する。復号の指示を受けた暗号コントローラ２２は、暗号／復号エンジンとして動作し、制御装置１１から指定された復号鍵を用いて５１２バイトの暗号文データを復号し、５１２バイトの平文データを生成する。また、平文データに対応するエラーチェックコードである８バイトの平文ＤＩＦを生成し、エラーチェックコードの置き換えを行う。その後、暗号コントローラ２２は、スイッチ２１を介して、８バイトの平文ＤＩＦが付された５１２バイトの平文データを制御装置１１に指示された、主記憶の論理アドレスに送信する。
【００２２】
図４に示したように平文データを暗号化して暗号文データを生成した後、暗号文データに対応する暗号文ＤＩＦを付すよう構成すれば、記憶装置３１では暗号文データの読み書きを行うときにＤＩＦチェックを行うことができる。しかし、これだけでは暗号化前の平文データと暗号文データを復号して得た平文データの対応を示す情報がないため、暗号鍵と復号鍵とが適正に対応することを保証できない。なお、本実施例では、秘密鍵暗号を用いる場合を示しているため、「暗号鍵と復号鍵とが適正に対応する」状態では、暗号鍵と復号鍵とが同一となる。
【００２３】
そこで、本実施例にかかるストレージシステムは、ストレージシステムで同一データの読み書きを行う際に一意に特定される値を鍵検証用の期待値として利用している。期待値としては、データの格納先である論理アドレス、もしくは論理アドレスから特定される値を用いることができる。論理アドレスは、データの書き込みと読み出しの双方で制御装置１１から指定され、書き込み時と読み出し時で同一である。また、暗号化されたまま論理アドレスが変更されることもない。このため、論理アドレス自体、もしくは論理アドレスから一意に定まる値を期待値として利用可能となる。具体的には、論理アドレスと期待値の対応テーブルを制御装置１１が保持してもよいし、暗号文データの格納先としての論理アドレスの上位ビットを用いてもよい。また、書き込みエラーを検知するためのコードとして論理アドレスの下位ビットがエラーチェックコードに含まれているならば、この下位ビットと期待値としての上位ビットとの組み合わせで論理アドレスを指し示すようにしてもよい。
【００２４】
期待値による鍵の検証について説明する。まず、制御装置１１は、書き込み要求を行う際に、記憶装置３１における書き込み先としての論理アドレスと、暗号化に用いる暗号鍵とを指定し、論理アドレスにより定まる期待値を平文データのＤＩＦコードに格納する。暗号処理装置２０は、期待値と平文データとを同一の暗号鍵を用いてそれぞれ暗号化する。そして、平文データを暗号化して得られた暗号文データに応じてエラーチェックコードを置換し、置換済エラーチェックコードである暗号文ＤＩＦに暗号化済み期待値を格納する。記憶装置３１は、暗号文ＤＩＦを用いて書き込みエラーチェックを行った上で、暗号文ＤＩＦ付き暗号文データを記憶する。
【００２５】
制御装置１１は、読み出し要求を行う際に、記憶装置３１からの読み出し元としての論理アドレスと、復号に用いる復号鍵とを指定する。暗号処理装置２０は、暗号文ＤＩＦに格納された暗号化済み期待値を復号鍵により復号し、暗号文データの読み出し元の論理アドレスから特定された読み出し時の期待値と、復号して得られた書き込み時の期待値とを比較することで、鍵の検証を行う。読み出し時の期待値と復号して得られた書き込み時の期待値とが一致したならば、暗号鍵と復号鍵とが適正に対応する（暗号鍵と復号鍵が同一である）と判定し、暗号文データの復号結果を出力する。
【００２６】
図５は、制御装置１１からの要求についての説明図である。図５では、制御装置１１が書き込み要求や読み出し要求に用いるコマンドのフォーマットから本実施例に関する重要な項目を抜粋している。
【００２７】
具体的には、Ｗｏｒｄ０のＢｉｔ３１：２８は、名称「ＩＯ＿ＣＭＤ」であり、コマンド種（暗号化／復号／その他）を示す。Ｗｏｒｄ０のＢｉｔ２３：１６は、名称「ＤＥＫ＿ＩＮＤＥＸ」であり、鍵番号を示す。
【００２８】
Ｗｏｒｄ２：３のＢｉｔ６３：０は、名称「ＳＲＣ＿ＡＤＲ」であり、データの読み出し元アドレスを示す。Ｗｏｒｄ４：５のＢｉｔ６３：０は、名称「ＤＥＳＴ＿ＡＤＲ」であり、データの書き込み先アドレスを示す。
【００２９】
Ｗｏｒｄ６のＢｉｔ７：０は、名称「ＣＨＫ＿ＡＴＡＧ１」であり、Ｒｅａｄ時に読み出される期待値を格納する。Ｗｏｒｄ８のＢｉｔ７：０は、名称「ＧＥＮ＿ＡＴＡＧ１」であり、Ｗｒｉｔｅ時に書き込む期待値を格納する。
【００３０】
図６は、制御装置１１が管理する期待値管理テーブルの説明図である。図６に示すように、期待値管理テーブルは、最終記憶媒体番号、鍵番号、論理アドレス、期待値を対応付けた構造である。
【００３１】
例えば、最終記憶媒体番号「０」、鍵番号「Ｘ」、論理アドレス「０ｘＸＸＸＸＸＸＸＸ」であれば、期待値「ＸＸｈ」である。また、最終記憶媒体番号「１」、鍵番号「Ｙ」、論理アドレス「０ｘＹＹＹＹＹＹＹＹ」であれば、期待値「ＹＹｈ」である。そして、最終記憶媒体番号「２」、鍵番号「Ｚ」、論理アドレス「０ｘＺＺＺＺＺＺＺＺ」であれば、期待値「ＺＺｈ」である。図６において、鍵番号は最終記憶媒体番号に対応して異なるが、期待値は最終記憶媒体番号や鍵番号に依存せず、論理アドレスに対応付けられている。
【００３２】
図７は、期待値の暗号化についての説明図である。図７では、５１２バイトの平文データが鍵αと鍵βを用いて暗号化され、５１２バイトの暗号文データが生成されている。また、暗号化により元の平文のＣＲＣ（Cyclic Redundancy Check）は使用できないので、ＣＲＣは暗号文データから生成されてＤＩＦに書き込まれる。また、期待値は鍵αにより暗号化され、ＤＩＦのＡＴＡＧ１に格納される。なお、ＣＲＣには２バイトが割り当てられ、ＡＴＡＧ１には１バイトが割り当てられる。この他、ＤＩＦには１バイトのＡＴＡＧ０と４バイトのＲＴＡＧが含まれる。
【００３３】
図７では、平文データの暗号化には２つの暗号鍵が用いられ、期待値の暗号化には１つの暗号鍵が用いられている。これは、平文データの暗号化と期待値の暗号化に異なる暗号方式を用いているためである。例えば、期待値には処理速度優先の暗号方式を用い、平文データの暗号化には強度優先の暗号方式を用いる。このように、制御装置１１の指定により一意に特定される鍵を用いている限り、平文データの暗号化と期待値の暗号化とは、異なる暗号方式を用いてもよい。
【００３４】
図８は、鍵管理テーブルの説明図である。図８に示す鍵管理テーブルは、暗号コントローラ２２により保持される。図８では、鍵番号に対して鍵αと鍵βを対応付けている。鍵αは、Data  Encription  Keyであり、鍵βはInitialization  Vector  Keyである。鍵αと鍵βは、いずれも２５６ビットの疑似乱数で生成される。
【００３５】
次に、暗号コントローラ２２の処理手順について説明する。図９及び図１０は、暗号コントローラ２２の処理手順を示すフローチャートである。まず、暗号コントローラ２２は、コマンド発行通知を受信し（ステップＳ１０１）、主記憶を読み出す（ステップＳ１０２）。
【００３６】
暗号コントローラ２２は、コマンドが暗号化コマンドであるか否かを判定する（ステップＳ１０３）。暗号化コマンドであるならば（ステップＳ１０３；Ｙｅｓ）、コマンドから鍵番号、期待値、読み出し元の論理アドレス（ＳＲＣ＿ＡＤＲ）、書き込み先論理アドレス（ＤＥＳＴ＿ＡＤＲ）を取得する（ステップＳ１０４）。
【００３７】
ステップＳ１０４の後、暗号コントローラ２２は、鍵管理テーブルから鍵番号に対応する鍵を読み出す（ステップＳ１０５）とともに、読み出し元の論理アドレス（ＳＲＣ＿ＡＤＲ）から平文データを読み出す（ステップＳ１０６）。そして、平文データのＤＩＦチェックを行い（ステップＳ１０７）、ＤＩＦチェックがＯＫであれば（ステップＳ１０８；Ｙｅｓ）、鍵を使用して平文データと期待値を暗号化する（ステップＳ１０９）。
【００３８】
ステップＳ１０９の後、暗号コントローラ２２は、暗号化した期待値を格納した暗号文ＤＩＦを生成し、暗号文ＤＩＦを付した暗号文データを書き込み先論理アドレス（ＤＳＴ＿ＡＤＲ）に書き込む（ステップＳ１１０）。その後、コマンドに対する応答を行って（ステップＳ１１１）、正常終了する。
【００３９】
一方、暗号化コマンドではない場合には、暗号コントローラ２２は、コマンドが復号コマンドであるか否かを判定する（ステップＳ１１３）。復号コマンドであるならば（ステップＳ１１３；Ｙｅｓ）、コマンドから鍵番号、期待値、読み出し元の論理アドレス（ＳＲＣ＿ＡＤＲ）、書き込み先論理アドレス（ＤＥＳＴ＿ＡＤＲ）を取得する（ステップＳ１１４）。
【００４０】
ステップＳ１１４の後、暗号コントローラ２２は、鍵管理テーブルから鍵番号に対応する鍵を読み出す（ステップＳ１１５）とともに、読み出し元の論理アドレス（ＳＲＣ＿ＡＤＲ）から暗号文データと暗号化された期待値を読み出す（ステップＳ１１６）。そして、暗号文データのＤＩＦチェックを行い（ステップＳ１１７）、ＤＩＦチェックがＯＫであれば（ステップＳ１１８；Ｙｅｓ）、鍵を使用して暗号文データと期待値を復号する（ステップＳ１１９）。
【００４１】
ステップＳ１１９の後、暗号コントローラ２２は、復号した期待値とコマンド内の期待値（ＣＨＫ＿ＡＴＡＧ１）を比較する（ステップＳ１２０）。期待値が一致するならば（ステップＳ１２１；Ｙｅｓ）、暗号コントローラ２２は、復号した平文データを書き込み先論理アドレス（ＤＳＴ＿ＡＤＲ）に書き込む（ステップＳ１２２）。その後、コマンドに対する応答を行って（ステップＳ１２３）、正常終了する。
【００４２】
なお、ＤＩＦチェックがＯＫでない場合（ステップＳ１０８；Ｎｏ、又はステップＳ１１８；Ｎｏ）、暗号コントローラ２２は、コマンドに対する応答を行って（ステップＳ１２５）、異常終了する。同様に、期待値が一致しなかった場合（ステップＳ１２１；Ｎｏ）、暗号コントローラ２２は、コマンドに対する応答を行って（ステップＳ１２５）、異常終了する。コマンドが復号コマンドでもなかった場合（ステップＳ１１３；Ｎｏ）には、別コマンドの処理を行うが、ここでは説明を省略する。
【００４３】
次に、ＤＩＦの書き換えについて説明する。図１１は、書き込み時のＤＩＦの書き換えについての説明図である。図１１では、まず、データ格納部としての主記憶の論理アドレスに平文データが格納されている。このときのＤＩＦ（８Ｂｙｔｅ）には、平文データに対する２バイトのＣＲＣと、１バイトのＡＴＡＧ０、１バイトのＡＴＡＧ１、４バイトのＲＴＡＧが含まれている。
【００４４】
暗号処理装置２０の暗号コントローラ２２は、データ制御部及び転送部として機能し、主記憶１２の平文データを暗号文データとしてメモリ２３に格納する。
【００４５】
暗号コントローラ２２の処理は、ＤＩＦ（ＣＲＣ）チェック、期待値の暗号化、ＡＴＡＧ１のデータ書き込み、ＣＲＣ置換、暗号文データ生成である。これにより、平文データに対する２バイトのＣＲＣは、暗号文データに対する２バイトのＣＲＣに置き換えられる。また、ＡＴＡＧ１に暗号化済みの期待値１バイトが格納される。
【００４６】
暗号コントローラ２２は、暗号文データに暗号文ＤＩＦを付与し、データ格納部としてのメモリ２３に一時格納する。その後、記憶装置３１がＣＲＣとＬＡのＤＩＦチェックを行い、最終記憶媒体に書き込む。
【００４７】
図１２は、読み出し時のＤＩＦの書き換えについての説明図である。図１２では、記憶装置３１の最終記憶媒体に暗号文データが格納されている。このときのＤＩＦ（８Ｂｙｔｅ）には、暗号文データに対する２バイトのＣＲＣと、暗号化済みの期待値が書き込まれた１バイトのＡＴＡＧ１が含まれている。
【００４８】
この暗号文データに対し、記憶装置３１がＤＩＦ（ＣＲＣ）チェックを行い、暗号処理装置２０のメモリ２３に格納する。
【００４９】
暗号処理装置２０の暗号コントローラ２２は、データ制御部及び転送部として機能し、メモリ２３の暗号文データを平文データとして主記憶１２に格納する。
【００５０】
暗号コントローラ２２の処理は、ＤＩＦ（ＣＲＣ）チェック、期待値の復号、ＣＲＣ置換、平文データ生成である。これにより、暗号文データに対する２バイトのＣＲＣは、平文データに対する２バイトのＣＲＣに置き換えられる。
【００５１】
暗号コントローラ２２は、平文データに平文ＤＩＦを付与し、データ格納部としての主記憶１２に書き込む。
【００５２】
上述してきたように、本実施例に開示したストレージシステム及び暗号処理方法によれば、制御装置１１が、書き込み対象の平文データにエラーチェックコードを付して書き込み要求を行い、暗号処理装置２０が、鍵検証用の期待値と平文データとを同一の暗号鍵を用いてそれぞれ暗号化し、平文データを暗号化して得られた暗号文データに応じてエラーチェックコードを置換し、置換済エラーチェックコードに暗号化済み期待値を格納する。そして、記憶装置３１は、置換済エラーチェックコードを用いて書き込みエラーチェックを行った上で、置換済エラーチェックコードが付された暗号文データを記憶する。また、暗号処理装置２０は、暗号文データの読み出し要求を受け付けた場合に、置換済エラーチェックコードに格納された暗号化済み期待値を復号鍵により復号し、暗号鍵と前記復号鍵とが適正に対応するか否かを検証する。
このため、ストレージシステムにおいて、追加の検証コードを付加することなく、ＤＩＦの枠組みの中で鍵の検証を行い、暗号を取り扱い可能とすることができる。
【００５３】
また、期待値としては、同一データの読み書きに際して一意に特定される値をもちいることができ、暗号処理装置は、暗号文データの読み出しにより特定された読み出し時の期待値と、暗号化済み期待値を復号して得られた書き込み時の期待値とが一致したときに暗号鍵と復号鍵とが適正に対応すると判定する。このため、暗号化に係る処理を自動的かつ低負荷で実行可能となる。
【００５４】
具体的には、期待値は、記憶装置における暗号文データの格納先アドレスに対応させればよい。さらに、期待値は、記憶装置における暗号文データの格納先アドレスの上位ビットとし、エラーチェックコードに含まれる格納先アドレスの下位ビットとの組み合わせで格納先アドレスを指し示すこととしてもよい。
【００５５】
また、本実施例によれば、制御装置は、書き込み要求を行う際に、記憶装置における書き込み先としての格納先アドレスと、暗号化に用いる暗号鍵とを指定し、書き込み先としての格納先アドレスにより定まる期待値を前記エラーチェックコードの一部に格納し、暗号処理装置は、指定された暗号鍵により平文データを暗号化するとともに、エラーチェックコードから読み出した期待値を暗号化する。
【００５６】
また、本実施例によれば、制御装置は、読み出し要求を行う際に、記憶装置からの読み出し元としての格納先アドレスと、復号に用いる復号鍵とを指定し、暗号処理装置は、置換済エラーチェックコードに格納された暗号化済み期待値を指定された復号鍵により復号し、読み出し元としての格納先アドレスから特定された期待値と一致することを条件に、暗号文データの復号結果を出力する。
【００５７】
また、本実施例によれば、暗号処理装置は、平文データの暗号化と期待値の暗号化に異なる暗号方式を用いることができる。
【００５８】
なお、本発明は上述の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
【００５９】
例えば、期待値は必ずしもテーブルのデータとして保持する必要はなく、アドレスから期待値を算定する構成としてもよい。
【符号の説明】
【００６０】
１１：制御装置、１２：主記憶、２０：暗号処理装置、２１：スイッチ、２２：暗号コントローラ、２３：メモリ、３１：記憶装置
【図１】
0006964696.tif 000002
【図２】
0006964696.tif 000003
【図３】
0006964696.tif 000004
【図４】
0006964696.tif 000005
【図５】
0006964696.tif 000006
【図６】
0006964696.tif 000007
【図７】
0006964696.tif 000008
【図８】
0006964696.tif 000009
【図９】
0006964696.tif 000010
【図１０】
0006964696.tif 000011
【図１１】
0006964696.tif 000012
【図１２】
0006964696.tif 000013