説明

ディスクアレイ制御装置とディスクアレイ制御方法およびストレージシステム

【課題】非並列動作モードの暗復号を同時に実行し処理を高速化可能なディスクアレイ制御装置を提供する。
【解決手段】ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ制御装置において、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当ててデータバッファ143に格納し、データバッファ143に格納されたブロックデータのうち各行の同じ列のセルに対応したブロックデータをパイプライン暗復号回路131でパイプライン処理に合わせて同時に暗復号する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報家電やコンピュータ等における暗号/復号技術、特にRAID(Redundant Array of Inexpensive Disks)に代表されるディスクアレイにデータを格納するディスクアレイ制御装置やストレージシステムにおける暗号/復号技術に関する。
【背景技術】
【0002】
現在、企業の内部統制強化を定めた日本版SOX法の制定により、企業は大量の帳票データの保護/管理を行わなければならず、それらの大量のデータを一括して管理することができるデータセンタの自社設置、もしくはデータセンタのアウトソーシングに注目が集まっている。データセンタでは、データアクセス高速化や格納するデータの保護のために、RAIDに代表されるディスクアレイシステムにデータを冗長化し格納する。
【0003】
近年、このデータセンタにおいて、情報漏えいが問題となっている。この情報漏えいは外部からの不正アクセスによる犯行と、ディスクアレイを構成するHDDの盗難などの内部犯行に分類される。このHDDの盗難による情報漏えいを防止する1つの方法は、HDDに格納されるデータを暗号化することである。これにより、データセンタ内部からHDDが持ち出されても、暗号化に使用した鍵を入手しない限り、暗号化前のデータへのアクセスを無効にすることができる。
【0004】
ディスクへ格納するデータの暗号化には、ブロック暗号を用いる場合が多い。ブロック暗号は、データを一定長のブロックデータに分割し、鍵やIV(Initial Vector)を用いてブロック単位に暗号化し、同一長の暗号データを出力する共通鍵暗号方式である。2007年現在、共通鍵暗号方式においては、AES(Advanced Encryption Standard)が、事実上世界標準となっている。AESは、ラウンドと呼ばれる単位毎に換字処理と転置処理を繰り返し行うスピン構造を持った暗号アルゴリズムである。
【0005】
このブロック暗号では、利用シーンに合わせて暗号化を行うために、複数の暗号利用モードが用意されている。この暗号利用モードは、ブロックデータ間に依存関係がなくランダムな順序でブロックデータを処理できる並列処理性を持ったモード(以下並列動作モード)と、ブロックデータ間に依存関係がありシーケンシャルな順序でブロックデータを処理しなければならない並列処理性を持たないモード(以下非並列動作モード)に分類できる。
【0006】
並列動作モードではブロックデータ間に関係性を持たせず暗号化するため、各々のブロックデータの処理順序を意識せずに、つまりランダムな順序で暗復号可能である。並列動作モードでの暗復号処理としては、例えば、暗号回路をラウンド毎にパイプライン化し、各段にブロックデータを次々に入力することで暗復号を高速に処理するようにしたものが提案されている(特許文献1参照)。
【0007】
【特許文献1】特開2002−297031号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
非並列動作モードでは、ブロックデータ間に関係性を持たせて暗号化する。非並列動作モードの1つCBC(Cipher Block Chaining)で、データDを暗号化する場合を例に説明する。なお、データDはブロックデータDb[0]、Db[1]で構成されているとする。
【0009】
CBCの暗号化では、1つ目のブロックデータDb[0]を暗号処理する前に、Db[0]とIVの間で排他的論理和(XOR)を取り、(Db[0] XOR IV)を暗号化する。次のブロックデータDb[1]を暗号化する際は、前記(Db[0] XOR IV)の暗号結果C(Db[0] XOR IV)と、前記Db[1]をXORし、(Db[1] XOR C(Db[0] XOR IV))を暗号化する。
【0010】
しかし、このように非並列動作モードでは、以前に処理したブロックデータの暗号結果を利用して以降のブロックデータを何かしらの方法で演算し、その結果を暗号化するため、Db[0]とDb[1]のように、同一データに含まれる複数のブロックデータを並列に暗復号することはできない。このため、特許文献1に記載された暗号回路を搭載したディスクアレイシステムでは、データを非並列動作モードで暗復号する場合、ブロックデータを次々にパイプライン回路に入力できないため、並列動作モードの暗復号に比べ低速となる。
【0011】
さらに、複数の暗号利用モードで暗号化されたデータを格納するディスクアレイシステムにおいて、特許文献1に記載された暗号回路では、複数の暗号利用モードを並列に実行することができない。暗号利用モードで暗号化されたデータを格納するディスクアレイシステムとしては、例えば、ディスクアレイシステムに格納するデータを扱う顧客により、利用する暗号利用モードが異なるディスクアレイシステムがあり、また、ディスクのセクタ単位で暗号化を行うシステムとしては、セクタ長がブロックデータの倍数長であるディスクに格納されるデータの暗号化に利用する暗号利用モードと、セクタ長がブロックデータの倍数長でないディスクに格納されるデータの暗号化に利用する暗号利用モードが異なるディスクアレイシステムがある。
【0012】
複数のデータを各々別の暗号利用モードで暗復号する場合、1つの暗号利用モードの暗復号処理の間、他の暗号利用モードの暗復号が実行できないため、パイプライン暗号回路の各段に空きが発生し、高速に暗復号処理できない。
【0013】
本発明は、上述の事情を考慮してなされたものであり、非並列動作モードのデータの暗復号を同時実行することを第1の目的とする。また、本発明は、非並列動作モードの暗復号と並列動作モードのデータの暗復号を複数同時に実行することを第2の目的とする。さらに、本発明は、複数の暗号利用モードの暗復号同時実行において、1つの暗号利用モードのデータの暗復号に処理が偏ることによって、他の暗号利用モードのデータの暗復号の処理レイテンシが発生するのを防止することを第3の目的とする。
【課題を解決するための手段】
【0014】
前記目的を達成するために、本発明は、ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するに際して、ディスクアクセス要求を識別して、ホスト装置からの書き込み要求の場合は、ホスト装置からのデータを書き込み転送データとして管理し、ホスト装置からの読み込み要求の場合は、ディスクアレイからのデータを読み込み転送データとして管理し、この管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して入力バッファに格納し、入力バッファに格納した各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行し、非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、並列動作モードによるデータに対しては、入力バッファから各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行してする。
【0015】
具体的には、本発明は、ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ装置において、前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ことを特徴とする。
【0016】
本発明の好適な形態においては、前記入力バッファは、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、前記入力バッファの各行の同じ列のセルに対応したブロックデータを前記パイプライン処理に合わせて同時に暗復号化してなる。
【0017】
また、本発明は、ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ装置において、前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行し、前記入力バッファに格納された各メッセージのデータとして、前記非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、前記並列動作モードによるデータに対しては、前記入力バッファから各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ことを特徴とする。
【0018】
本発明の好適な形態においては、前記入力バッファは、複数の非並列モード暗復号対象データと複数の並列モード暗復号対象データを、それぞれ暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データまたは並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、非並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化し、この暗復号処理中に発生する空き処理時間を利用して、並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化してなる。
【発明の効果】
【0019】
本発明によれば、搭載する暗号アルゴリズムのラウンド数倍だけ高速化できる。
また、複数の暗号利用モード暗復号対象データを暗復号する場合、1つの暗号利用モードの暗復号処理にユーザが定めた閾値以下のレイテンシしか発生させないので、ユーザに最適な使い方を提供できる。
【発明を実施するための最良の形態】
【0020】
【実施例1】
【0021】
以下、図面を用いて本発明の第1実施形態を詳細に説明する。
図1は、本発明の第1実施形態に係るストレージシステムを示す構成図である。図1において、ストレージシステムは、ホスト装置100と、ディスクアレイ101と、ディスクアレイ制御装置102を備え、ホスト装置100は、情報家電やコンピュータのような、ディスクアレイ101に格納されたデータを使用する上位装置あるいは上位計算機で構成され、通信ネットワークを介してディスクアレイ制御装置102と情報の授受を行う。
【0022】
ディスクアレイ101はディスクドライブ110〜112で構成される。ディスクアレイ制御装置102は、ディスクアレイ101を制御し、ホスト装置100からのディスクアクセス要求を受け、データの読み書きを行う。ディスクアレイ制御装置102は、鍵ライブラリ120と、IVライブラリ121と、暗号利用モードライブラリ122と、入力側非並列動作モードデータキュー123と、キューデータテーブル124と、アドレスマップテーブル125と、暗復号処理部126と、出力側データキュー127で構成される。
【0023】
鍵ライブラリ120は、ホスト装置100からの書き込み要求時に、ディスクアレイ101に格納されるデータを暗号化する際に使用する暗号鍵が格納され、ホスト装置100からの読み込み要求時に、ディスクアレイ101から読み出され、ホスト装置100に転送するデータを復号する際に使用する復号鍵が格納される。
【0024】
IVライブラリ121は、ホスト装置100からの書き込み要求時に、ディスクアレイ101に格納されるデータを暗号化する際に使用するIVが格納され、ホスト装置100からの読み込み要求時に、ディスクアレイ101から読み出され、ホスト装置100に転送するデータを復号する際に使用するIVが格納される。
【0025】
暗号利用モードライブラリ122は、ホスト装置100からの書き込み要求時に、ディスクアレイ101に格納されるデータを暗号化する際に必要な暗号利用モードが保持され、ホスト装置100からの読み込み要求時に、ディスクアレイ101から読み出され、ホスト装置100に転送するデータを復号する際に必要な復号利用モードが保持される。
【0026】
入力側非並列動作モードデータキュー123は、ディスクアレイ制御装置102によって、ホスト装置100からの書き込み要求時に、ホスト装置100から転送されるデータにおける非並列モード暗復号対象データをキューイングし、ホスト装置100からの読み込み要求時に、ホスト装置100のディスクアクセス要求時に指定されるアドレスに応じたデータにおける非並列動作モード暗復号対象データをディスクアレイ101からキューイングする。
【0027】
なお、入力側非並列動作モードデータキュー123にキューイングされるデータのサイズは、ディスクアレイ101を構成するディスクドライブ110〜112のセクタ長である。また、キューイングされるデータ間には暗復号処理に関して関連性がないものとする。例えば、CBC暗号利用モードのデータを複数キューイングする場合、キューイングされるデータそれぞれにおける先頭ブロックデータはIVとXORされ、そのXOR演算結果の暗復号が実施されるものとする。
【0028】
キューデータテーブル124には、ディスクアレイ制御装置102によって、データキューイング順序、書き込み/読み込みアドレス、書き込み/読み込みデータサイズ、データ暗復号に使用する暗号鍵情報、データ暗復号に使用するIV情報、データ暗復号の暗号利用モード等が設定される。
【0029】
アドレスマップテーブル125は、ディスクアレイ101に格納されるデータのディスクアドレスに対する、ディスク領域で異なる複数の暗号鍵と、ディスク領域で異なる複数のIVと、ディスク領域で異なる複数の暗号利用モードが記載され、ディスクアレイ制御装置102が、キューデータテーブル124を作成する際に参照される。
【0030】
暗復号処理部126は、ディスクアレイ制御装置102によって、入力側非並列動作モードデータキュー123から転送されるデータの暗復号処理を行う。出力側データキュー127は、暗復号処理部126から出力されるデータをキューイングする。
【0031】
暗復号処理部126は、入力制御部130と、パイプライン暗復号回路131と、出力制御部132で構成される。入力制御部130は、暗号鍵バッファ140と、IVバッファ141と、暗号利用モードバッファ142と、データバッファ143で構成される。入力制御部130は、暗号鍵ライブラリ120から転送される暗号鍵を暗号鍵バッファ140に格納し、IVライブラリ121から転送されるIVをIVバッファ141に格納し、暗号利用モードライブラリ122から転送される暗号利用モード情報を暗号利用モード142に格納し、入力側非並列動作モードデータキュー123から転送されるデータをデータバッファ143に格納する。
【0032】
なお、暗号鍵バッファ140は、バッファ容量によって異なるが、最大でR個の暗号鍵を保持することができ、IVバッファ141は、バッファ容量によって異なるが、最大でR個のIVを保持することができ、暗号利用モードバッファ142は、バッファ容量によって異なるが、最大でR個の暗号利用モード情報を保持することができる。
【0033】
ここで、Rは暗号アルゴリズムによって決定される任意の整数である。例えば、128ビットの鍵長の暗号鍵を使用するAESの場合、Rは10である。また、データバッファ143は、行列構造を取り、バッファ容量によって異なるが、最大でR行×Ss/Sb列である。ここで、Ssは、ディスクアレイ101を構成するディスクドライブ110〜112のセクタ長を示す。また、Sbは実装する暗号アルゴリズムの暗復号処理単位であるブロック長を示し、例えば、AESの場合、Sbは16バイトである。データバッファ143からパイプライン暗復号回路131に転送されるデータは、暗号処理単位であるブロックデータ単位で転送される。
【0034】
パイプライン暗復号回路131は、入力側暗号利用モード処理回路150と、ラウンド処理回路151〜153と、データ保持レジスタ154〜156と、出力側暗号利用モード処理回路157で構成される。パイプライン暗復号回路131は、入力制御部130から転送される暗号鍵と、IVと、暗号利用モードを利用して、入力制御部130から転送されるデータを、ホスト装置100からの書き込み要求の場合は暗号化し、ホスト装置100からの読み込み要求の場合は復号化する。
【0035】
パイプライン暗復号回路131の暗復号処理において、入力側暗号利用モード処理回路150は、ラウンド0処理回路151にデータを入力する前に、入力制御部130から転送されるデータを加工する必要がある暗号利用モードの処理を行う。例えば、CBC暗号利用モードの暗号化時に、データバッファ143から転送されるデータにおいて先頭ブロックデータの場合は、IVバッファ141から転送されるIVと、データバッファ143から転送されるブロックデータをXORし、そのXOR演算結果をラウンド0処理回路151に転送し、データバッファ143から転送されるデータにおいて先頭以外のブロックデータの場合は、出力側暗号利用モード処理回路157から出力されるブロックデータと、データバッファ143から転送されるブロックデータをXORし、そのXOR演算結果をラウンド0処理回路151に転送する。
【0036】
ラウンド0〜R−1処理回路151〜153は、スピン構造を持った暗号アルゴリズムの各ラウンド処理を行う回路であり、数珠つなぎで接続されたパイプライン構造をとる。ラウンド0〜R−1処理回路151〜153に暗号アルゴリズムとしてAESを実装する場合、各ラウンドの処理時間は同一であり、ラウンド0〜R−1処理回路151〜153の入力/出力のタイミングは同一となる。各ラウンドの処理時間が異なる暗号アルゴリズムを実装する場合でも、各ラウンドの処理時間を、最大の処理時間がかかるラウンド処理回路の処理時間に合わせることで、ラウンド0〜R−1処理回路151〜153の入力/出力のタイミングを同一にすることができる。
【0037】
データ保持レジスタ154には、入力側暗号利用モード処理回路150から出力されるデータがラウンド0処理回路151に入力されるタイミングで、データバッファ143から出力されるデータが入力され、ラウンド0処理回路151での処理が終了し、その処理結果が出力されるタイミングで、データ保持レジスタ154は保持していたデータを出力する。
【0038】
同様に、データ保持レジスタ155は、ラウンド0処理回路151からラウンド1処理回路152にデータが入力されるタイミングで、データ保持レジスタ154から出力されるデータを入力し、ラウンド1処理回路152での処理が終了し、その処理結果が出力されるタイミングで保持していたデータを出力する。
【0039】
同様に、データ保持レジスタ156は、ラウンドR−1処理回路153にデータが入力されるタイミングで、データを入力し、ラウンドR−1処理回路153での処理が終了し、その処理結果が出力されるタイミングで保持していたデータを出力する。
【0040】
出力側暗号利用モード処理回路157は、ラウンドR−1処理回路153から出力されるデータと、データ保持レジスタ156から出力されるデータを入力し、出力制御部132にデータを出力する前に、ラウンドR−1処理回路153から出力されるデータを加工する必要がある暗号利用モードの処理を行う。例えば、CBC暗号利用モードの暗号化時は、ラウンドR−1処理回路153から出力されるデータを未加工で出力制御部132および入力側暗号利用モード処理回路150に出力する。
【0041】
また、例えば、OFB(Output FeedBack)暗号利用モードの暗号化時は、ラウンドR−1処理回路153から出力されるデータと、データ保持レジスタ156から出力されるデータをXORし、そのXOR演算結果を出力制御部132および入力側暗号利用モード処理回路150に出力する。
【0042】
出力制御部132は、データバッファ160で構成される。データバッファ160は、行列構造を取り、バッファ容量によって異なるが、最大でR行×Ss/Sb列である。データバッファ160のサイズは、データバッファ143と同一である。出力制御部132は、パイプライン暗復号回路131から出力されるブロックデータを、データバッファ160に一時保持し、1行に格納されるデータがSsになった時点で、データを出力側データキュー127へ転送する。
【0043】
次に、図2を参照して、ディスクアレイ制御装置102における暗号鍵ライブラリ120と、IVライブラリ121と、暗号利用モードライブラリ122と、入力側非並列動作モードデータキュー123それぞれと、入力制御部130のインタフェースについて説明する。
【0044】
図2は、非並列動作モードデータキュー123にデータSP0〜SP(R−1)をキューイングした状態を示す。図2において、暗号鍵ライブラリ120は入力制御部130内の暗号鍵バッファ140と接続されており、ディスクアレイ制御装置102は、キューデータテーブル124のキューイング順序に従って、対応する暗号鍵を暗号鍵バッファ140内の鍵Rnd0もしくは鍵Rnd1、鍵Rnd(R−1)に出力する。図2では、暗号鍵ライブラリ120内の鍵iを鍵Rnd0に、暗号鍵ライブラリ120内の鍵jを鍵Rnd1に、暗号鍵ライブラリ120内の鍵iを鍵Rnd(R−1)に出力する。
【0045】
IVライブラリ121は、入力制御部130内のIVバッファ141と接続されており、ディスクアレイ制御装置102は、キューデータテーブル124のキューイング順序に従って、対応するIVをIVバッファ141内のIV Rnd0もしくはIV Rnd1、IV Rnd(R−1)に出力する。図2では、IVライブラリ121内のIVsをIV Rnd0に、IVライブラリ121内のIVtをIV Rnd1に、IVライブラリ120内のIVuをIV Rnd(R−1)に出力する。
【0046】
暗号利用モードライブラリ122は、入力制御部130内の暗号利用モードバッファ142と接続されており、ディスクアレイ制御装置102は、キューデータテーブル124のキューイング順序に従って、対応する暗号利用モードを暗号利用モードバッファ142内のモードRnd0もしくはモードRnd1、モードRnd(R−1)に出力する。図2では、暗号利用モードライブラリ122内のMaをモードRnd0に、暗号利用モードライブラリ122内のMbをモードRnd1に、暗号利用モードライブラリ122内のiを鍵Rnd(R−1)に出力する。なお、MaおよびMbは非並列動作モードの1種を示す。
【0047】
入力側非並列動作モードデータキュー123は、入力制御部130内のデータバッファ143と接続されており、ディスクアレイ制御装置102は、キューデータテーブル124のキューイング順序に従って、対応するデータをデータバッファ143内のデータRnd0もしくはデータRnd1、データRnd(R−1)に出力する。図2では、入力側非並列動作モードデータキュー123内のデータSP0をデータRnd0に、入力側非並列動作モードデータキュー123内のデータSP1をデータRnd1に、入力側非並列動作モードデータキュー123内のデータSP(R−1)をデータRnd(R−1)に出力する。
【0048】
次に、図3を参照して、ディスクアレイ制御装置102のデータ転送処理について説明する。図3は、ディスクアレイ制御装置102に対して、ホスト装置100からの書き込み要求、もしくはホスト装置100からの読み込み要求が発生した際の処理フローを示している。
【0049】
ディスクアレイ制御装置102は、ホスト装置100からの書き込み要求の場合は、ホスト装置100から転送された転送データ、ホスト装置100からの読み込み要求の場合は、ディスクアレイ101から転送された転送データを受け付ける(ステップ300)。ここでは、前述の転送された転送データのデータ数をNとする。なお、Nは、非並列動作モードデータキュー123にキューイング可能なデータ数以下である任意の整数である。
【0050】
ディスクアレイ制御装置102は、アドレスマップテーブル125を参照して、ホスト装置100からの書き込み/読み込み要求のディスクアクセスアドレス/サイズに従い、対応する暗号鍵、IV、暗号利用モードの情報等と共に、転送されたN個の転送データの情報をキューデータテーブル124に設定する(ステップ301)。なお、キューデータテーブル124において、転送データの情報は転送されたデータ順に作成される。
【0051】
続けて、ディスクアレイ制御装置102は、入力側非並列動作モードデータキュー123に転送されたデータを転送順に従いキューイングし(ステップ302)、次に、キューデータテーブル124を参照して、キューイングされたデータの順に合わせて、暗号鍵を暗号鍵ライブラリ120から暗号バッファ140に転送し、IVをIVライブラリ121からIVバッファ141に転送し、暗号利用モード情報を暗号利用モードライブラリ122から暗号利用モードバッファ142に転送する(ステップ303)。
【0052】
同様に、ディスクアレイ制御装置102は、キューデータテーブル124を参照して、キューイングされたデータの順に合わせて、非並列動作モードデータキュー123にキューイングされたデータを、データバッファ143に格納できる数だけ転送する(ステップ304)。この際、ディスクアレイ制御装置102における暗復号処理部126は、暗号鍵バッファ140に設定された暗号鍵と、IVバッファ141に設定されたIVと、暗号利用モードバッファ142に設定された暗号利用モードを使用して、データバッファ143に格納されたデータの暗復号処理を行う(ステップ305)。このステップ305の詳細は後述する。
【0053】
一方、ディスクアレイ制御装置102は、出力側データキュー127が、暗復号処理部126から出力された暗復号結果データをキューイングし(ステップ306)、ホスト装置100からの書き込み要求の場合は、キューイングしたデータをディスクアレイ101に転送し、ホスト装置100からの読み込み要求の場合は、キューシングしたデータをホスト装置100へデータを転送し(ステップ307)、転送したデータに関する情報をキューデータテーブル308から削除し(ステップ308)、このルーチンでの処理を終了する。
【0054】
次に、図4を参照して、暗復号処理部126のデータ暗復号処理について説明する。図4は、暗号処理部126の詳細な内部ブロック図である。図4において、入力制御部130は、データバッファのRnd[0]行のデータを処理する際に、暗号鍵バッファ140の鍵Rnd0に保持された暗号鍵を、入力側暗号利用モード処理回路150に出力する。同様に、入力制御部130は、データバッファのRnd[1]行のデータを処理する際に、暗号鍵バッファ140の鍵Rnd1に保持された暗号鍵を入力側暗号利用モード処理回路150に出力し、データバッファのRnd[R−1]行のデータを処理する際に、暗号鍵バッファ140の鍵Rnd(R−1)に保持された暗号鍵を入力側暗号利用モード処理回路150に出力する。
【0055】
IVバッファ141の入出力動作に関しても同じく、入力制御部130は、データバッファのRnd[0]行のデータを処理する際に、IVバッファ141のIV Rnd0に保持されたIVを入力側暗号利用モード処理回路150に出力し、データバッファのRnd[1]行のデータを処理する際に、IVバッファ141のIV Rnd1に保持されたIVを入力側暗号利用モード処理回路150に出力し、データバッファのRnd[R−1]行のデータを処理する際に、IVバッファ141のIV Rnd(R−1)に保持されたIVを入力側暗号利用モード処理回路150に出力する。
【0056】
暗号利用モードバッファ142の入出力動作に関しても同じく、入力制御部130は、データバッファのRnd[0]行のデータを処理する際に、暗号利用モードバッファ142のモードRnd0に保持された暗号利用モード情報を入力側暗号利用モード処理回路150に出力し、データバッファのRnd[1]行のデータを処理する際に、暗号利用モードバッファ142のモードRnd1に保持された暗号利用モード情報を入力側暗号利用モード処理回路150に出力し、データバッファのRnd[R−1]行のデータを処理する際に、暗号利用モードバッファ142のモードRnd(R−1)に保持された暗号利用モード情報を入力側暗号利用モード処理回路150に出力する。
【0057】
データバッファ143は、Rnd[0][0]〜Rnd[R−1][Ss/Sb]のセルで構成される行列構造を持ち、全ての行列セルからデータを入力側暗号利用モード処理回路150に出力することができる。
【0058】
次に、図5を参照して、入力制御部130のパイプライン暗復号回路131へのデータ出力処理について説明する。図5は、入力制御部130によるパイプライン暗復号回路131へのデータ出力処理のフローチャートを示す。
【0059】
入力制御部130は、暗号鍵バッファ140と、IVバッファ141と、暗号利用モードバッファ142における出力対象をRnd0に初期化し、データバッファ143の出力対象をRnd[0][0]に初期化し(ステップ400)、続けて、データバッファ143に処理すべきセルがあるかどうかを判定し(ステップ401)、ステップ401が真であれば、処理を終了し、ステップ401が偽であれば、データバッファ143の現在の処理対象行に未処理データがあるかどうかを判定し(ステップ402)、ステップ402が真であれば、データバッファ143の処理対象行のデータを出力すべきタイミングかどうかを判定し(ステップ403)、ステップ402が偽であれば、ステップ407へ進む。
【0060】
入力制御部130は、ステップ403では、現在の処理対象行における(現在の処理対象列−1)列目のブロックデータが、出力側暗号利用モード処理回路157から入力側暗号利用モード処理回路150に出力されるタイミングを真とし、つまり、(現在の処理対象列−1)列目のブロックデータが出力されてから、R×ラウンド処理時間後のタイミングが真とし、ステップ403が真であれば、出力対象の暗号鍵/IV/暗号利用モード情報/データをパイプライン暗復号回路131へ出力する(ステップ404)。ステップ404の処理時間が、ラウンド処理回路151〜153における最大の処理時間未満であれば、入力制御部130は、1ラウンド処理時間が経過するまでウェイトし(ステップ405)、ステップ403が偽であれば、1ラウンド処理時間分ウェイトし(ステップ406)、ステップ403が真になるまで、ステップ403とステップ406を繰り返す。
【0061】
続けて、入力制御部130は、データバッファ143における現在の処理対象行が最終行かどうかを判定し(ステップ407)、ステップ407が真であれば、暗号鍵バッファ140と、IVバッファ141と、暗号利用モードバッファ142の出力対象をRnd0にし、データバッファ143の出力対象をRnd[0]行の次の列のセルに移動する(ステップ408)。ステップ407が偽であれば、入力制御部130は、暗号鍵バッファ140と、IVバッファ141と、暗号利用モードバッファ142の出力対象を次のRnd分にし、データバッファ143の出力対象を次の行の同じ列のセルに移動し(ステップ409)、ステップ401〜409を繰り返し、ステップ401が真となれば、処理を終了する。
【0062】
すなわち、入力制御部130は、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージ(「グループ」といっても良い。)に分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当てたとき、各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせてパイプライン暗復号回路131に出力するようになっている。
【0063】
次に、図6を参照して、パイプライン暗復号回路131のデータ暗復号処理について説明する。図6は、パイプライン暗復号回路131のデータ暗復号処理のフローチャートを示す。
【0064】
パイプライン暗復号回路131は、ステップ500とステップ501を同時に実行し、ステップ500では、入力側暗号利用モード処理回路150が、入力制御部130からデータを受け付け、ステップ501では、ラウンド1処理回路152がラウンド0処理回路151からのデータを入力し、ラウンドR−1処理回路153が、1つ前のラウンド処理回路からのデータを入力する。
【0065】
パイプライン暗復号回路131は、ステップ500とステップ501の処理が終了した後、ステップ502〜506を実行する。なお、ステップ502とステップ503の処理、ステップ504の処理、ステップ505とステップ506の処理は同時に実行される。
【0066】
まず、ステップ502において、入力側暗号利用モード処理回路150は、ステップ500にて入力されたデータやIVに対して、同時に入力される暗号利用モード情報に従い、暗号利用モード特有の演算を行い、その結果をラウンド0処理回路151に出力する。ステップ503では、ステップ502で入力側暗号利用モード処理回路150から出力されたデータに対して、ラウンド0処理回路151がラウンド0特有の処理を行う。
【0067】
ステップ504では、ラウンド1処理回路152が、ステップ501で得られたラウンド0処理回路151からの出力データに対して、ラウンド1特有の処理を実行する。
【0068】
ステップ505では、ラウンドR−1処理回路153が、ステップ501で得られた1つ前のラウンド処理回路からの出力データに対して、ラウンドR−1特有の処理を実行し、ステップ506では、出力側暗号利用モード処理回路157が、ステップ505で得られたラウンドR−1処理回路153からの出力データに対して、同時にデータ保持レジスタ156から入力されるデータを用いて、暗号利用モード特有の演算を実行する。
【0069】
パイプライン暗復号回路131は、ステップ502〜ステップ506の処理が終了した後、ステップ507〜509を同時に実行する。ステップ507〜509のウェイト処理は、各ラウンド処理が異なる暗号アルゴリズムを実装する場合に必要となる。
【0070】
パイプライン暗復号回路131は、ステップ507では、入力側暗号利用モード処理回路150とラウンド0処理回路151における処理時間が、同時に実行される他の処理に対して短いのであれば、同時に実行される他の処理において消費される最大の処理時間までウェイトし、同様に、ステップ508では、ラウンド1処理回路152における処理時間が、同時に実行される他の処理に対して短いのであれば、同時に実行される他の処理において消費される最大の処理時間までウェイトし、さらに、ステップ509では、ラウンドR−1処理回路153と出力側暗号利用モード処理回路157における処理時間が、同時に実行される他の処理に対して短いのであれば、同時に実行される他の処理において消費される最大の処理時間までウェイトし、ステップ507〜509の処理が終了した後、ステップ510および511を同時に実行する。
【0071】
パイプライン暗復号回路131は、ステップ510では、ラウンドR−1処理回路153以外のラウンド処理回路が、処理結果を次のラウンド処理回路へ出力し、ステップ511では、出力側暗号利用モード処理回路157が、処理結果を出力制御部132へ出力する。なお、ラウンド2〜ラウンドR−2までの処理回路は、前述のラウンド1処理回路152と同様の動作となる。
【0072】
すなわち、パイプライン暗復号回路131は、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当てたとき、各行の同じ列のセルに対応したブロックデータに対して各ラウンド0〜R−1処理回路でパイプラインでの処理に合わせて同時に暗復号化処理を実行するようになっている。
【0073】
この際、パイプライン暗復号回路131は、暗復号化処理部として、データバッファ143に格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、データバッファ143から各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行することになる。
【0074】
次に、図7を参照して、出力制御部132のデータ転送処理について説明する。図7は、出力制御部132のデータ転送処理のフローチャートを示す。図7において、出力制御部132は、データバッファ160における入力対象セルをRnd[0][0]に初期化し(ステップ600)、データバッファ160において処理すべき全ての行に関して、出力側データキュー127への出力が完了したかどうかを判定する(ステップ601)。
【0075】
出力制御部132は、ステップ601が偽であれば、パイプライン暗復号回路131から出力されるブロックデータを入力し(ステップ602)、続けて、現在の処理対象行の全列にデータが埋まったかどうかを判定し(ステップ603)、ステップ603が真であれば、出力側データキュー127へ処理対象行データを出力する(ステップ604)。
【0076】
次に、出力制御部132は、キューデータテーブル124における出力済みデータの情報を削除し(ステップ605)、ステップ604とステップ605の処理時間が、最大ラウンド処理時間より短いのであれば最大ラウンド処理時間経過するまでウェイトし(ステップ606)、データバッファ160における現在の処理対象行が最終行かどうかを判定し(ステップ607)、ステップ607が真であれば、データバッファ160の出力対象をRnd[0]行の次の列のセルに移動する(ステップ608)。出力制御部132は、ステップ607が偽であれば、データバッファ160の出力対象を次の行の同じ列のセルに移動し(ステップ609)、ステップ601〜609を繰り返し、ステップ601が真となれば、処理を終了する。
【0077】
すなわち、出力制御部132は、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当てたとき、各行の同じ列のセルに対応したブロックデータをパイプラインでの処理タイミングに合わせて出力側データキュー127へ出力するようになっている。
【0078】
上述の通り、本ディスクアレイ制御装置102は、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当てたとき、各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号するため、従来技術である特許文献1を適用したストレージシステムと比較し、R倍高速となる。
【0079】
また、本実施形態1では、入力制御部130に、R個の暗号鍵と、R個のIVと、R個の暗号利用モード情報と、R個のデータを保持できるバッファを用意したが、性能低下が許容できるのであれば、R以下のバッファ容量にすることも可能であり、コストの削減ができる。また、暗復号処理スループットは、従来技術である特許文献1と比べ、バッファ容量に応じて1〜R倍となる。
【実施例2】
【0080】
以下、図面を用いて本発明の第2実施形態を詳細に説明する。
本実施形態では、非並列動作モードのデータ暗号化と並列動作モードのデータ暗号化の同時実行に関して詳細に説明する。
【0081】
図8に示す前記ディスクアレイ制御装置102は、前述した実施形態1の図1から入力側並列動作モードデータキュー128が追加された構造を持つ。入力側並列動作モードデータキュー128は、ディスクアレイ制御装置102によって、ホスト装置100からの書き込み要求時に、ホスト装置100から転送されるデータにおける並列モード暗復号対象データをキューイングし、ホスト装置100からの読み込み要求時に、ホスト装置100のディスクアクセス要求時に指定されるアドレスに応じたデータにおける並列動作モード暗復号対象データをディスクアレイ101からキューイングする。なお、入力側並列動作モードデータキュー128にキューイングされるデータのサイズは、ディスクアレイ101を構成するディスクドライブ110〜112のセクタ長である。
【0082】
また、入力制御部132は、暗号鍵ライブラリ120から転送される暗号鍵を内部に持つ暗号鍵バッファ140に格納し、IVライブラリ121から転送されるIVを内部に持つIVバッファ141に格納し、暗号利用モードライブラリ122から転送される暗号利用モード情報を内部に持つ暗号利用モード142に格納し、入力側非並列動作モードデータキュー123と並列動作モードデータキュー128から転送されるデータを内部に持つデータバッファ143に格納する。なお、図8において、入力側並列動作モードデータキュー128と入力制御部132以外のブロックは、実施形態1の図1と同じである。
【0083】
図9は、非並列動作モードデータキュー123にデータSP0〜SP(R−1)をキューイングし、並列動作モードデータキュー128にデータPP0〜PP(R−1)をキューイングした状態を示し、前述した実施形態1の図2に、入力側並列動作モードデータキュー128が追加された構造を持つ。なお、図9において、Mcは並列動作モードの1種であり、入力側非並列動作モードデータキュー123と入力側並列動作モードデータキュー128は、入力制御部130内のデータバッファ143と接続されている。
【0084】
具体的には、本実施形態におけるディスクアレイ制御装置102は、次の数1(条件1)に示す条件を満たすαの数だけ、データキューテーブル112の非並列動作モードデータのキューイング順に従い、非並列動作モードデータキュー123から対応するデータを、データバッファ143の先頭のRnd0行へ順に出力し、その後、データバッファ143の行数Ncからαを引いた(Nc−α)が0以上であれば、データキューテーブル112の並列動作モードデータのキューイング順に従い、(Nc−α)個だけ、並列動作モードデータキュー128から対応するデータを、データバッファ143の非並列動作モードデータが入った次の行へ順に出力する。なお、図9ではNcはRである。
【0085】
【数1】

図9において、Rを10とすると、α=5となり、ディスクアレイ制御装置102は、1回目の暗復号処理時に、入力側非並列動作モードデータキュー123から、SP0から数えて5つ目までのデータを、データRnd0から5行目までに順に出力し、データバッファ143の残りの5行に、入力側並列動作モードデータキュー128から、PP0から数えて5つ目までのデータを順に出力する。
【0086】
数1(条件1)において、latencyは並列動作モード暗復号対象データのいずれもが、並列動作モードデータキュー128にキューイングされてからデータバッファ143へ出力されない時間を示す。LATENCYはlatencyの最大許容時間を示し、ユーザが利用形態に合わせて設定する。Ncは、データバッファ143の行数(カラム数)を、Ncbcは、非並列動作モードデータキュー123にキューイングされる非並列動作モードデータのデータ数を、Nrは実装される暗号アルゴリズムのラウンド数を、Necbは、並列動作モードデータキュー128にキューイングされる並列動作モードデータのデータ数を示す。また、MAXは引数が取りうる最大値を返す関数を、CEILは切り上げ関数を示す。
【0087】
図10は、ディスクアレイ制御装置102のデータ転送処理のフローチャートを示しており、前述した実施形態1の図3からステップ302がステップ310に、ステップ304がステップ311に差し替えた処理フローとなる。以下、ステップ310、311について説明する。
【0088】
まず、ディスクアレイ制御装置102は、ステップ310では、キューデータテーブル124を参照し、ホスト装置100からの書き込み要求の場合は、ホスト装置100から転送された転送データ、ホスト装置100からの読み込み要求の場合は、ディスクアレイ101から転送された転送データをそれぞれ判別し、転送データが非並列動作モードデータであるときには非並列動作モードデータキュー123にキューイングし、転送データが並列動作モードデータであるときには並列動作モードデータキュー128にキューイングする。
【0089】
ディスクアレイ制御装置102は、ステップ311では、キューデータテーブル124を参照し、数1(条件1)によるαだけ非並列動作モードデータキュー123からデータを出力し、(Nc−α)だけ並列動作モードデータキュー128からデータを入力制御部内データバッファ143へ出力する。
【0090】
すなわち、ディスクアレイ制御装置102は、数1(条件1)で定められたECBに関するLATENCY以下の場合、ホスト装置100から転送されたデータのうち非並列動作モードデータと並列動作モードデータとの混合割合をキューテーブル124を参照して把握し、上記条件1を満たす並列動作モードデータの投入数nに対して、(バッファカラム数−n)だけ非並列動作モードデータを入力側非並列動作モードデータキュー123に格納し、それ以外の並列動作モードデータを入力側並列動作モードデータキュー128に格納する。
【0091】
また、ディスクアレイ制御装置102は、非並列動作モードデータが入力側非並列動作モードデータキュー123に多く転送され、上記条件1により、非並列動作モードデータが並列動作モードデータよりも優先され、並列動作モードデータが1つも処理されずに、定められたECBに関するLATENCYを超えた場合、並列動作モードデータの投入数を1として、非並列動作モードデータと並列動作モードデータをデータバッファ143に入力することとしている。
【0092】
図11は、入力制御部130によるパイプライン暗復号回路131へのデータ出力処理のフローチャートを示し、前述した実施形態1の図5のフローに、ステップ410〜417を加えた処理フローとなる。以下、ステップ410〜417について説明する。
【0093】
入力制御部130は、ステップ410では、データバッファ143の現在の処理対象行が非並列動作モードのデータであるかどうかを判定し、ステップ410が真であれば、ステップ408へ進み、ステップ410が偽であれば、データバッファ143の現在の処理対象列が最終かどうかを判定し(ステップ412)、ステップ412が真であれば、データバッファ143の現在の出力対象を、Rnd[0]のデータにおいて、次に処理すべきデータが入ったセルに移動し(ステップ413)、ステップ412が偽であれば、データバッファ143の出力対象を、同一行の次の列のセルに移動する(ステップ414)。
【0094】
同様に、入力制御部130は、ステップ411では、データバッファ143の現在の処理対象行が非並列動作モードのデータであるかどうかを判定し、ステップ411が真であれば、ステップ409へ進み、ステップ410が偽であれば、データバッファ143の現在の処理対象列が最終かどうかを判定し(ステップ415)、ステップ415が真であれば、データバッファ143の現在の出力対象を、次の行の先頭列のセルに移動し(ステップ416)、ステップ415が偽であれば、データバッファ143の出力対象を、同一行の次の列のセルに移動する(ステップ417)。
【0095】
このように、本実施形態において、非並列動作モードデータと、並列動作モードデータで異なる処理を行う理由は、並列動作モードデータはブロックデータ間に依存性がないため、データバッファ143の同一行に配置されるブロックデータを連続してパイプライン暗復号回路131に入力することが可能であり、無駄なウェイト処理時間を削減するためである。なお、図8、図9、図10、図11において、実施形態1の図1、図2、図3、図5と同一符号のものは共通の機能を持つ。また、実施形態1の図4、図6、図7が示す機能は実施形態2においても共通である。
【0096】
上述の通り、本実施形態2におけるディスクアレイ制御装置102は、複数の非並列モード暗復号対象データと複数の並列モード暗復号対象データを、それぞれ暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データまたは並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に、Rnd[0]〜Rnd[R−1]の各行に割当てたとき、非並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号し、この暗復号処理中に発生する空き処理時間を利用して、並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号するようにしたため、最大R倍の高速な暗号化が可能となる。
【0097】
この際、パイプライン暗復号回路131は、暗復号化処理部として、データバッファ(入力バッファ)143に格納された各メッセージのデータとして、非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、非並列動作モードによるデータに対しては、データバッファ143から各メッセージのデータをブロック単位でインタリーブに取り込み、並列動作モードによるデータに対しては、データバッファ143から各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行することになる。
【0098】
また、本実施形態2では、入力制御部130に、R個の暗号鍵と、R個のIVと、R個の暗号利用モード情報と、R個のデータを保持できるバッファを用意したが、性能低下が許容できコストを削減するのであれば、R以下のバッファ容量にすることも可能であり、暗復号処理スループットは、従来技術である特許文献1と比べ、バッファ容量に応じて1〜R倍となる。
【0099】
また、本実施形態2では、非並列動作モード暗復号対象データと並列動作モード暗復号対象データの、データバッファ143への入力割合は任意の数としたが、(非並列動作モード暗復号対象データ数/並列動作モード暗復号対象データ数)が一定のディスクアレイの場合、データバッファ143を(非並列動作モード暗復号対象データ数/並列動作モード暗復号対象データ数)に分割することで、バッファ制御を容易にし、回路規模を縮小することができる。
【0100】
また、本実施形態2では、複数の非並列動作モード暗復号対象データと複数の並列動作モード暗復号対象データを同時に実行することができるため、例えば128ビット鍵のAESで暗号化する場合、従来技術に比べ最大で、およそ暗号アルゴリズムのラウンド数倍だけ高速な処理が可能となる。
【0101】
また、本実施形態2では、複数の暗号利用モード暗復号対象データを暗復号する場合、1つの暗号利用モードの暗復号処理にユーザが定めた閾値以下のレイテンシしか発生させないので、ユーザに最適な使い方を提供することができる。
【図面の簡単な説明】
【0102】
【図1】本発明の第1実施形態を示すブロック図である。
【図2】第1実施形態における暗号鍵/IV/暗号利用モード/データを暗復号回路の前段に用意するバッファへ格納する方式を示すブロック図である。
【図3】第1実施形態のディスクアレイ制御装置のデータ処理を説明するためのフローチャートである。
【図4】第1実施形態のディスクアレイ制御装置の暗号処理部の詳細を説明するブロック図である。
【図5】入力制御部のデータ出力処理を説明するためのフローチャートで ある。
【図6】パイプライン暗復号回路のデータ暗復号処理を説明するためのフローチャートである。
【図7】出力制御部のデータ転送処理を説明するためのフローチャートで ある。
【図8】本発明の第2実施形態を示すブロック図である。
【図9】第2実施形態における暗号鍵/IV/暗号利用モード/データを暗復号回路の前段に用意するバッファへ格納する方式を示すブロック図である。
【図10】第2実施形態のディスクアレイ制御装置のデータ処理フローを説明するフローチャートである。
【図11】第2実施形態における入力制御部のデータ出力処理を説明するためのフローチャートである。
【符号の説明】
【0103】
100 ホスト装置
101 ディスクアレイ
102 ディスクアレイ制御装置
110 ディスクアレイ構成ハードディスクドライブ
111 ディスクアレイ構成ハードディスクドライブ
112 ディスクアレイ構成ハードディスクドライブ
120 暗号鍵ライブラリ
121 IVライブラリ
122 暗号利用モードライブラリ
123 入力側非並列動作モードデータキュー
124 キューデータテーブル
125 アドレスマップテーブル
126 暗復号処理部
127 出力側データキュー
128 入力側並列動作モードデータキュー
130 入力制御部
131 パイプライン暗復号回路
132 出力制御部
140 暗号鍵バッファ
141 IVバッファ
142 暗号利用モードバッファ
143 データバッファ
150 入力側暗号利用モード処理回路
151 ラウンド0処理回路
152 ラウンド1処理回路
153 ラウンドR−1処理回路
154 データ保持レジスタ
155 データ保持レジスタ
156 データ保持レジスタ
157 出力側暗号利用モード処理回路
160 データバッファ

【特許請求の範囲】
【請求項1】
ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ装置において、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、
前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、
前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、
前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ディスクアレイ制御装置。
【請求項2】
前記入力バッファは、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、前記入力バッファの各行の同じ列のセルに対応したブロックデータを前記パイプライン処理に合わせて同時に暗復号化してなる、請求項1に記載のディスクアレイ制御装置。
【請求項3】
ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ装置において、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、
前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、
前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、
前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行し、前記入力バッファに格納された各メッセージのデータとして、前記非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、前記並列動作モードによるデータに対しては、前記入力バッファから各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ディスクアレイ制御装置。
【請求項4】
前記入力バッファは、複数の非並列モード暗復号対象データと複数の並列モード暗復号対象データを、それぞれ暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データまたは並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、非並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化し、この暗復号処理中に発生する空き処理時間を利用して、並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化してなる、請求項3に記載のディスクアレイ制御装置。
【請求項5】
ホスト装置とディスアレイ制御装置との間でデータの授受を行って、前記ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ制御方法において、
前記ディスクアレイ制御装置は、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する工程と、
前記工程の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して入力バッファに格納する工程と、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する工程と、
前記暗復号化処理工程で処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて出力バッファに格納する工程と、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送する工程と、を備え、
前記暗復号化処理を実行する工程は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行する工程を、含むディスクアレイ制御方法。
【請求項6】
ホスト装置とディスアレイ制御装置との間でデータの授受を行って、前記ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ制御方法において、
前記ディスクアレイ制御装置は、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する工程と、
前記工程の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して入力バッファに格納する工程と、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する工程と、
前記暗復号化処理工程で処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて出力バッファに格納する工程と、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送する工程と、を備え、
前記暗復号化処理を実行する工程は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行し、前記入力バッファに格納された各メッセージのデータとして、前記非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、前記並列動作モードによるデータに対しては、前記入力バッファから各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行する工程を、含むディスクアレイ制御方法。
【請求項7】
ホスト装置と、前記ホスト装置と通信ネットワークを介してデータの授受を行うとともに、前記ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ制御装置とを備えたストレージシステムにおいて、
前記ディスクアレイ制御装置は、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、
前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、
前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、
前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ストレージシステム。
【請求項8】
前記入力バッファは、複数の非並列モード暗復号対象データを、暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、前記入力バッファの各行の同じ列のセルに対応したブロックデータを前記パイプライン処理に合わせて同時に暗復号化してなる、請求項7に記載のストレージシステム。
【請求項9】
ホスト装置と、前記ホスト装置と通信ネットワークを介してデータの授受を行うとともに、前記ホスト装置からのディスクアクセス要求に応じてディスクアレイを制御するディスクアレイ制御装置とを備えたストレージシステムにおいて、
前記ディスクアレイ制御装置は、
前記ホスト装置または前記ディスアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記ホスト装置からのデータを書き込み転送データとして管理し、前記ホスト装置からの読み込み要求の場合は、前記ディスクアレイからのデータを読み込み転送データとして管理する転送データ管理部と、
前記転送データ管理部の管理下にある書き込み転送データまたは読み込み転送データを暗復号化対象のデータとして複数のメッセージに分けるとともに、メッセージ毎にブロック単位に分割して格納する入力バッファと、
前記入力バッファに格納された暗復号化対象のデータをブロック単位で入力し、入力したブロック単位のデータに対して暗復号化処理を実行する暗復号化処理部と、
前記暗復号化処理部により処理されたデータを前記ホスト装置または前記ディスクアレイに対応づけて前記複数のメッセージに分けて格納する出力バッファと、
前記ホスト装置または前記ディスクアレイとデータの授受を行うと共に、前記ディスクアクセス要求を識別して、前記ホスト装置からの書き込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ディスクアレイに転送し、前記ホスト装置からの読み込み要求の場合は、前記出力バッファに格納された各メッセージのデータを前記ホスト装置に転送するデータ転送部と、を備え、
前記暗復号化処理部は、前記入力バッファに格納された各メッセージのデータがブロックデータ間に依存関係があって、シーケンシャルな順序で処理しなければならない非並列動作モードによるデータであるときには、前記入力バッファから各メッセージのデータをブロック単位でインタリーブに取り込み、取り込んだデータに対してパイプラインで暗復号化処理を実行し、前記入力バッファに格納された各メッセージのデータとして、前記非並列動作モードによるデータの他に、ブロック間に依存関係がなく、ランダムな順序で処理できる並列動作モードによるデータを存在するときには、前記並列動作モードによるデータに対しては、前記入力バッファから各メッセージのデータをブロック単位でシーケンシャルに取り込み、各取り込んだデータに対してパイプラインで暗復号化処理を実行してなる、ストレージシステム。
【請求項10】
前記入力バッファは、複数の非並列モード暗復号対象データと複数の並列モード暗復号対象データを、それぞれ暗復号処理に関して関連性のない複数のメッセージに分け、各メッセージに属する非並列モード暗復号対象データまたは並列モード暗復号対象データを複数のブロックデータに分割し、各メッセージに属する各ブロックデータをメッセージ毎に各行各列に割当てて格納し、前記暗復号化処理部は、非並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化し、この暗復号処理中に発生する空き処理時間を利用して、並列モード暗復号対象データを含むメッセージ各行の同じ列のセルに対応したブロックデータをパイプライン処理に合わせて同時に暗復号化してなる、請求項9に記載のストレージシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2008−292852(P2008−292852A)
【公開日】平成20年12月4日(2008.12.4)
【国際特許分類】
【出願番号】特願2007−139589(P2007−139589)
【出願日】平成19年5月25日(2007.5.25)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】