(57)【要約】【課題】データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化および復号化を行う。【解決手段】暗号処理部１５０が、データが転送されるＤＭＡチャネルを識別するＤＭＡ番号を含んだディスクリプタ２を取得し、取得したディスクリプタ２に含まれるＤＭＡ番号に基づいて、同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で暗号化し、暗号化したデータをディスクインタフェース制御部１６０に対して転送する。【選択図】        図１
2008197578.tif 000002
【特許請求の範囲】
【請求項１】
第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化装置であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ暗号化装置。
【請求項２】
前記データ暗号化手段は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする請求項１に記載のデータ暗号化装置。
【請求項３】
前記第一の装置に対してデータの転送を要求するとともに当該データの転送に用いるチャネルを識別する要求チャネル識別情報を含んだデータ転送要求を前記第二の装置から受信する転送要求受信手段をさらに備え、
前記データ暗号化手段は、前記転送要求受信手段によりデータ転送要求が受信された場合に、前記要求チャネル識別情報と、前記転送情報取得手段により取得された転送チャネル識別情報とが同じであるか否かを判定し、同じであった場合に、前記第一の装置に対してデータ転送要求を送信し、送信したデータ転送要求に応じて前記第一の装置から転送されるデータを暗号化することを特徴とする請求項１または２に記載のデータ暗号化装置。
【請求項４】
前記転送要求受信手段により受信されるデータ転送要求には、当該データ転送要求によって要求されるデータを暗号化するか否かを示す暗号化要否情報が含まれており、
前記データ暗号化手段は、前記暗号化要否情報に基づいて、前記データ転送要求に応じて前記第一の装置から転送されるデータを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする請求項３に記載のデータ暗号化装置。
【請求項５】
第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化装置であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ復号化装置。
【請求項６】
前記データ復号化手段は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする請求項５に記載のデータ復号化装置。
【請求項７】
第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化方法であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、
前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化工程と、
前記データ暗号化工程により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送工程と、
を含んだことを特徴とするデータ暗号化方法。
【請求項８】
第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化方法であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、
前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化工程と、
前記データ復号化工程により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送工程と、
を含んだことを特徴とするデータ復号化方法。
【請求項９】
ホスト装置から記憶装置に対するデータの転送を制御するデータ転送制御装置であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記記憶装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ転送制御装置。
【請求項１０】
記憶装置からホスト装置に対する暗号化データの転送を制御するデータ転送制御装置であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記ホスト装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、第一の装置と第二の装置との間で転送されるデータの暗号化および復号化を行うデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ転送制御装置に関し、特に、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化および復号化を行うことができるデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ転送制御装置に関するものである。
【背景技術】
【０００２】
従来、磁気ディスク装置や光ディスク装置などの記憶装置では、盗難や不正アクセスによる情報漏洩を防ぐことを目的とし、記憶媒体（磁気ディスクや光ディスクなど）にデータを記録する際や、ホストコンピュータなどの上位装置との間でデータを送受信する際に、当該データを暗号化することが行われている（例えば、特許文献１および２を参照）。
【０００３】
例えば、記憶媒体として複数のディスクを備えたディスク装置と、ディスク装置に対するデータの読み出しや書き込みを要求する上位装置と、上位装置からの要求に基づいてディスク装置に対するデータの入出力を制御するＲＡＩＤコントローラ（ディスク制御装置）とから構成される一般的なＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムについて考える。
【０００４】
図１７は、従来のＲＡＩＤシステムの一例を示す図である。同図に示すように、このＲＡＩＤシステムは、ＲＡＩＤコントローラ１０と、上位装置であるホスト装置２０と、ディスク装置３０とから構成されており、ＲＡＩＤコントローラ１０は、ホスト装置２０とディスク装置３０との間に接続される。
【０００５】
このうち、ＲＡＩＤコントローラ１０は、同図に示すように、ホストインタフェース制御部１１と、メインメモリ１２と、メモリ制御部１３と、ＣＰＵ（Central Processing Unit）１４と、ディスクインタフェース制御部１６とを有する。
【０００６】
各機能部について簡単に説明すると、ホストインタフェース制御部１１は、ホスト装置２０との間でやり取りされるデータ転送を制御する制御部であり、メインメモリ１２は、キャッシュとして利用するためのキャッシュ領域などを有するメモリである。
【０００７】
また、メモリ制御部１３は、メインメモリ１２に対するデータの読み出しおよび書き込みを制御する制御部であり、ＣＰＵ１４は、ＲＡＩＤコントローラ１０を全体制御するファームウェアを実行する中央処理装置であり、ディスクインタフェース制御部１６は、ディスク装置３０との間で行われるデータ転送を制御する制御部である。
【０００８】
ここで、さらに同図を用いて、かかるＲＡＩＤコントローラ１０の動作について簡単に説明しておく。なお、以下では、ホスト装置２０からライト要求を受信した際の動作（以下、「ライト動作」と呼ぶ）と、ホスト装置２０からリード要求を受信した際の動作（以下、「リード動作」と呼ぶ）について、それぞれ説明する。
【０００９】
まず、ライト動作では、同図（ａ）に示すように、ホスト装置２０からライト要求が送信されると（同図に示す（１））、ホストインタフェース制御部１１が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（２））。そして、ディスクインタフェース制御部１６が、メモリ制御部１３を介してキャッシュ領域からデータを読み出し（同図に示す（３）、読み出したデータをディスク装置３０に対して転送する（同図に示す（４））。
【００１０】
一方、リード動作では、同図（ｂ）に示すように、ホスト装置２０からリード要求が送信されると（同図に示す（１））、ディスクインタフェース制御部１６が、当該リード要求で要求されたデータをディスク装置３０から読み出し（同図に示す（２））、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（３））。そして、ホストインタフェース制御部１１が、メモリ制御部１３を介してキャッシュ領域からデータを読み出し（同図に示す（４））、読み出したデータをホスト装置２０に対して転送する（同図に示す（５））。
【００１１】
このようなＲＡＩＤシステムにおいて、ディスク装置３０に記憶されるデータに対する暗号処理（暗号化および復号化）を行う場合には、かかる暗号処理は、ＲＡＩＤコントローラ１０によって行われるのが一般的である。
【００１２】
その場合、暗号処理は、ホスト装置２０とメインメモリ１２との間でデータが転送される間で行う場合と、メインメモリ１２とディスク装置３０との間でデータが転送される間で行う場合とが考えられる。
【００１３】
しかし、ホスト装置２０とメインメモリ１２との間でデータが転送される間で行う場合には、メインメモリ１２に格納されるデータは全て暗号化されることになり、ファームウェアによって、メインメモリ１２に格納されているデータの参照を要する処理が行われるような場合には、参照のたびにデータの復号化が必要になり、効率が悪い。
【００１４】
そのため、ＲＡＩＤコントローラ１０がディスク装置３０に記憶されるデータに対する暗号処理を行う場合には、メインメモリ１２とディスク装置３０との間でデータが転送される途中で行うのが現実的である。
【００１５】
かかる暗号処理は、一般的には、ファームウェアに暗号処理の手順を組み込むことによって実現される。以下に、ファームウェアによる一般的な暗号処理について簡単に説明する。
【００１６】
まず、ライト動作では、ホスト装置２０からライト要求が送信されると、ホストインタフェース制御部１１が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する。ここで、ファームウェアが、メモリ制御部１３を制御してキャッシュ領域からデータを順次読み出して暗号化し、暗号化したデータを、メインメモリ１２のキャッシュ領域とは異なる退避領域に退避する。そして、ディスクインタフェース制御部１６が、メモリ制御部１３を介して、暗号化済みのデータを退避領域から読み出し、読み出したデータをディスク装置３０に対して転送する。
【００１７】
一方、リード動作では、ホスト装置２０からリード要求が送信されると、ディスクインタフェース制御部１６が、当該リード要求で要求されたデータをディスク装置３０から読み出し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する。ここで、ファームウェアが、メモリ制御部１３を制御してキャッシュ領域に格納されたデータを順次読み出して復号化し、復号化したデータを、メインメモリ１２のキャッシュ領域とは異なる退避領域に退避する。そして、ホストインタフェース制御部１１が、メモリ制御部１３を介して、復号化済みのデータを退避領域から読み出し、読み出したデータをホスト装置２０に対して転送する。
【００１８】
このように、ファームウェアがメインメモリ１２とディスク装置３０との間で転送されるデータに対して暗号処理を行うことによって、ディスク装置３０に記憶されるデータを暗号化することができる。
【００１９】
しかし、ファームウェアに暗号処理を行わせるためには、上述したように、暗号処理を行う前後でデータを一時的に退避するための退避領域が必要になり、ＲＡＩＤコントローラ１０に実装すべきメモリ（メインメモリまたは他のメモリ）の容量が増大するという問題がある。メモリ容量の増大は、ＲＡＩＤコントローラ１０のコスト増にもつながる。
【００２０】
さらに、この場合には、ディスク装置に対するデータの入出力が発生するたびに必ずファームウェアによる暗号処理ステップが行われることになり、データの入出力におけるレスポンスタイムが増加するという問題もある。さらに、ファームウェアが暗号処理を行うことによって、ＲＡＩＤコントローラ１０のＣＰＵにかかる負荷が増大し、その結果としてディスク制御装置のビジー率が高くなり、また、上述の暗号処理に伴うメインメモリバス使用も発生するため、結果的にＲＡＩＤシステム全体の性能が低下するという問題もある。
【００２１】
そこで、ここでは、ＲＡＩＤコントローラ１０において、ファームウェアに暗号処理を行わせるのではなく、集積回路などのハードウェアで暗号化および復号化の機能を実現した暗号処理チップを用いて、ディスク装置３０に記憶されるデータに対する暗号処理を行うことを前提とする。
【００２２】
図１８は、暗号処理チップを用いた場合のＲＡＩＤコントローラ１０を示す図である。同図に示すように、このＲＡＩＤコントローラ１０では、暗号処理チップを有する暗号処理部１５を、メモリ制御部１３とディスクインタフェース制御部１６との間にバスを介して接続している。
【００２３】
かかるＲＡＩＤコントローラ１０の動作について説明すると、ライト動作では、同図（ａ）に示すように、ホスト装置２０からライト要求が送信されると（同図に示す（１））、ホストインタフェース制御部１１が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（２））。そして、暗号処理部１５が、メモリ制御部１３を介してキャッシュ領域から順次データを読み出し、読み出したデータを暗号化して、ディスクインタフェース制御部１６に引き渡す（同図に示す（３））。ディスクインタフェース制御部１６は、暗号化済みのデータを受け取ると、そのデータをディスク装置３０に対して転送する（同図に示す（４））。
【００２４】
一方、リード動作では、同図（ｂ）に示すように、ホスト装置２０からリード要求が送信されると（同図に示す（１））、ディスクインタフェース制御部１６が、当該リード要求で要求されたデータをディスク装置３０から読み出し（同図に示す（２））、暗号処理部１５に引き渡す。暗号処理部１５は、受け取ったデータを復号化し、復号化したデータを、メモリ制御部１３を介して順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（３））。そして、ホストインタフェース制御部１１が、メモリ制御部１３を介して、復号化済みのデータをキャッシュ領域から読み出し（同図に示す（４））、読み出したデータをホスト装置２０に対して転送する（同図に示す（５））。
【００２５】
このように、暗号処理チップを用いて暗号処理を行う場合には、前述した退避領域が不要になるため、ファームウェアで暗号処理を行う場合に生じるコスト増や処理低下の問題は解決される。
【００２６】
【特許文献１】特開２００５−３２２２０１号公報
【特許文献２】特開２００６−３９０００号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかしながら、暗号処理チップを用いて暗号処理を行う場合には、ＲＡＩＤコントローラ１０内部の各デバイスを接続するバスにおけるデータ転送の単位となるデータサイズと、暗号化チップによる暗号処理の処理単位となるデータサイズとが異なる場合には、複雑な制御が必要になるという問題がある。以下、この問題について具体的に説明する。
【００２８】
例えば、バスの規格がＰＣＩ  Ｅｘｐｒｅｓｓ（Peripheral Component Interconnect Express：以下、「ＰＣＩｅ」と呼ぶ）を、暗号化チップによる暗号処理の方式がＡＥＳ（Advanced Encryption Standard）暗号方式をそれぞれ用いた場合について説明する。この場合、バスにおけるデータの転送単位となるサイズは４バイト（３２ビット）の倍数となり、暗号処理の処理単位となるサイズは１６バイト（１２８ビット）となる。
【００２９】
そのため、ＰＣＩｅバスで転送されたデータに対してＡＥＳ暗号方式で暗号化すると、１６バイトに満たないデータが暗号化されずに残ってしまう場合がある（復号化についても同様）。この場合、暗号処理部１５は、残ったデータ（以下、「端数データ」と呼ぶ）を保持しておき、後続して転送されるデータと連結することによって、１６バイト以上のデータにしたうえで当該データを暗号化することになる。
【００３０】
ところで、ＰＣＩｅでは、データは、ＴＬＰ（Transaction Layer Packet）と呼ばれるパケットに成形されて転送されるが、ひとつのＴＬＰで転送可能なデータのサイズには上限サイズが規定されている。そのため、上限サイズを超えるデータを転送する場合には、当該データは、複数のＴＬＰに分割されて転送される。
【００３１】
また、通常、メモリ制御部１３を介してメインメモリ１２に通ずるバスで転送されるデータは、ＣＰＵの負荷を軽減するため、ＤＭＡ（Direct Memory Access）方式で転送される。このＤＭＡ方式では、複数のＤＭＡチャネルを用いて並列にデータ転送を行うことが可能である。
【００３２】
そして、ひとつのデータをもとに分割されたＴＬＰは、同じＤＭＡチャネルを用いて転送される。そのため、端数データと、後続して転送されるデータとを連結する際には、同じＤＭＡチャネルで転送されたデータであるか否かを識別する必要がある。
【００３３】
ＴＬＰには、各種コマンド（リードコマンドやライトコマンドなど）やアドレスなどを含むヘッダが付与されており、データの転送に用いられるＤＭＡチャネルは、当該ＴＬＰのヘッダに含まれるＴａｇ情報を用いて識別することが可能である。
【００３４】
しかしながら、通常、Ｔａｇ領域にどのように情報を設定するかは、データを転送するデバイス（ここでは、メモリ制御部１３や、ディスクインタフェース制御部１６など）の仕様によって異なっているため、デバイスの仕様によらない汎用的な暗号化チップを実現するには、かかるＴａｇ情報を、ＤＭＡチャネルを識別するための要素として用いることはできない。
【００３５】
そのため、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、いかにして、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化および復号化を行うかが極めて重要な課題となっている。
【００３６】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化および復号化を行うことができるデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ転送制御装置を提供することを目的とする。
【課題を解決するための手段】
【００３７】
上述した課題を解決し、目的を達成するため、本発明は、第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化装置であって、データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送手段と、を備えたことを特徴とする。
【００３８】
また、本発明は、上記の発明において、前記データ暗号化手段は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする。
【００３９】
また、本発明は、上記の発明において、前記第一の装置に対してデータの転送を要求するとともに当該データの転送に用いるチャネルを識別する要求チャネル識別情報を含んだデータ転送要求を前記第二の装置から受信する転送要求受信手段をさらに備え、前記データ暗号化手段は、前記転送要求受信手段によりデータ転送要求が受信された場合に、前記要求チャネル識別情報と、前記転送情報取得手段により取得された転送チャネル識別情報とが同じであるか否かを判定し、同じであった場合に、前記第一の装置に対してデータ転送要求を送信し、送信したデータ転送要求に応じて前記第一の装置から転送されるデータを暗号化することを特徴とする。
【００４０】
また、本発明は、上記の発明において、前記転送要求受信手段により受信されるデータ転送要求には、当該データ転送要求によって要求されるデータを暗号化するか否かを示す暗号化要否情報が含まれており、前記データ暗号化手段は、前記暗号化要否情報に基づいて、前記データ転送要求に応じて前記第一の装置から転送されるデータを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする。
【００４１】
また、本発明は、第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化装置であって、暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送手段と、を備えたことを特徴とする。
【００４２】
また、本発明は、上記の発明において、前記データ復号化手段は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする。
【００４３】
また、本発明は、第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化方法であって、データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化工程と、前記データ暗号化工程により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送工程と、を含んだことを特徴とする。
【００４４】
また、本発明は、上記の発明において、前記データ暗号化工程は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする。
【００４５】
また、本発明は、第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化方法であって、暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化工程と、前記データ復号化工程により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送工程と、を含んだことを特徴とする。
【００４６】
また、本発明は、上記の発明において、前記データ復号化工程は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする。
【００４７】
また、本発明は、ホスト装置から記憶装置に対するデータの転送を制御するデータ転送制御装置であって、データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記記憶装置に対して転送するデータ転送手段と、を備えたことを特徴とする。
【００４８】
また、本発明は、上記の発明において、前記データ暗号化手段は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする。
【００４９】
また、本発明は、記憶装置からホスト装置に対する暗号化データの転送を制御するデータ転送制御装置であって、暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記ホスト装置に対して転送するデータ転送手段と、を備えたことを特徴とする。
【００５０】
また、本発明は、上記の発明において、前記データ復号化手段は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする。
【発明の効果】
【００５１】
本発明によれば、データが転送されるチャネルを識別する転送チャネル識別情報を取得し、取得した転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化し、第二のデータサイズ単位で暗号化したデータを第二の装置に対して転送するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化を行うことができるという効果を奏する。
【００５２】
また、本発明によれば、蓄積したデータを暗号化する際に、第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するので、データ転送の単位となるデータサイズが暗号処理の単位となるデータサイズを超えていた場合でも、端数となったデータと後続するデータとを結合して、暗号化を行うことができるという効果を奏する。
【００５３】
また、本発明によれば、第一の装置に対してデータの転送を要求するとともに当該データの転送に用いるチャネルを識別する要求チャネル識別情報を含んだデータ転送要求を第二の装置から受信し、データ転送要求を受信した場合に、当該データ転送要求に含まれる要求チャネル識別情報と、取得した転送チャネル識別情報とが同じであるか否かを判定し、同じであった場合に、第一の装置に対してデータ転送要求を送信し、送信したデータ転送要求に応じて第一の装置から転送されるデータを暗号化するので、データの転送に先立って転送先から送信されるデータ転送要求に、当該データの転送に用いられるチャネルを識別する情報を設定しておくことによって、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化を行うことができるという効果を奏する。
【００５４】
また、本発明によれば、第二の装置から受信するデータ転送要求には、当該データ転送要求によって要求されるデータを暗号化するか否かを示す暗号化要否情報が含まれており、この暗号化要否情報に基づいて、データ転送要求に応じて第一の装置から転送されるデータを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化するので、例えば、データ転送を制御するための制御データなど、暗号化を行う必要がないデータを、暗号処理の対象から除くことができるという効果を奏する。
【００５５】
また、本発明によれば、暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得し、取得した転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化し、第二のデータサイズ単位で復号化したデータを第一の装置に対して転送するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの復号化を行うことができるという効果を奏する。
【００５６】
また、本発明によれば、蓄積した暗号化データを復号化する際に、第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するので、データ転送の単位となるデータサイズが暗号処理の単位となるデータサイズを超えていた場合でも、端数となったデータと後続するデータとを結合して、復号化を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００５７】
以下に添付図面を参照して、この発明に係るデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ転送制御装置の好適な実施例を詳細に説明する。なお、本実施例では、ＲＡＩＤコントローラに本発明を適用した場合について説明する。
【実施例】
【００５８】
まず、本実施例に係るＲＡＩＤコントローラの概念について説明する。図１は、本実施例に係るＲＡＩＤコントローラの概念を説明するための説明図である。同図に示すように、このＲＡＩＤコントローラ１００は、ホスト装置２００とディスク装置３００との間に接続され、ホストインタフェース制御部１１０と、メインメモリ１２０と、メモリ制御部１３０と、ＣＰＵ１４０と、暗号処理部１５０と、ディスクインタフェース制御部１６０とを有する。
【００５９】
各機能部について簡単に説明すると、ホストインタフェース制御部１１０は、ホスト装置２００との間でやり取りされるデータ転送を制御する制御部であり、メインメモリ１２０は、キャッシュとして利用するためのキャッシュ領域などを有するメモリである。また、メモリ制御部１３０は、メインメモリ１２０に対するデータの読み出しおよび書き込みを制御する制御部であり、ＣＰＵ１４０は、ＲＡＩＤコントローラ１００を全体制御するファームウェアを実行する中央処理装置である。また、暗号処理部１５０は、暗号処理チップを用いて、ＡＥＳ暗号方式に準拠した暗号処理を行う処理部であり、ディスクインタフェース制御部１６０は、ディスク装置３００との間で行われるデータ転送を制御する制御部である。
【００６０】
ここで、ホストインタフェース制御部１１０、メモリ制御部１３０、暗号処理部１５０およびディスクインタフェース制御部１６０は、それぞれ、ＰＣＩｅバスを介して接続され、ホストインタフェース制御部１１０とメインメモリ１２０との間で、メモリ制御部１３０を介して行われるデータ転送、および、メインメモリ１２０とディスクインタフェース制御部１６０との間で、メモリ制御部１３０および暗号処理部１５０を介して行われるデータ転送は、それぞれＤＭＡ方式を用いて行われる。
【００６１】
このように、本実施例に係るＲＡＩＤコントローラ１００は、上位装置であるホスト装置２００と、ディスク装置３００との間に接続され、ホスト装置２００からの要求に基づいて、ディスク装置３００に対するデータの入出力を制御する装置であって、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたチャネルを識別して、チャネルごとにデータの暗号化および復号化を行うことができる点に主な特徴がある。
【００６２】
この特徴について具体的に説明すると、まず、本実施例に係るＲＡＩＤコントローラ１００では、図１（ａ）に示すように、ホストインタフェース制御部１１０が、ホスト装置２００から送信されたライト要求を受信すると（同図に示す（１））、ライト要求とともに送信されるデータを、メモリ制御部１３０を介してメインメモリ１２０のキャッシュ領域に格納する（同図に示す（２））。
【００６３】
この一方で、ファームウェア（ＣＰＵ１４０）が、メインメモリに格納されたデータを転送するための制御情報を生成する。この制御情報には、当該データの転送に用いられるＤＭＡチャネルを識別するＤＭＡ番号などが含まれている（同図に示す（３））。
【００６４】
そして、暗号処理部１５０が、ファームウェアによって生成された制御情報を取得し（同図に示す（４））、取得した制御情報に含まれるＤＭＡ番号に基づいて、メモリ制御部１３０から同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で暗号化する（同図に示す（５））。
【００６５】
ここで、暗号処理部１５０は、蓄積したデータを暗号化する際に、ＡＥＳ暗号方式で規定されたデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で暗号化する。
【００６６】
そして、暗号処理部１５０は、暗号化したデータを順次ディスクインタフェース制御部１６０に対して転送し（同図に示す（６））、ディスクインタフェース制御部１６０が、暗号処理部１５０から転送された暗号化済みデータをディスク装置３００に対して転送する（同図に示す（７））。ここで転送されたデータは、ディスク装置３００において、記憶媒体であるディスクに書き込まれる。
【００６７】
また、本実施例に係るＲＡＩＤコントローラ１００では、図１（ｂ）に示すように、ホストインタフェース制御部１１０が、ホスト装置２００から送信されたリード要求を受信すると（同図に示す（１））、ファームウェア（ＣＰＵ１４０）が、ディスク装置３００から読み出される暗号化データを転送するための制御情報を生成する（同図に示す（２））。この制御情報には、当該暗号化データの転送に用いられるＤＭＡチャネルを識別するＤＭＡ番号などが含まれている。
【００６８】
この一方で、ディスクインタフェース制御部１６０が、リード要求で要求されたデータをディスク装置３０から読み出して（同図に示す（４））、同一のＤＭＡチャネルを用いて、ＰＣＩｅで規定されたデータサイズ単位で暗号処理部１５に転送する。
【００６９】
そして、暗号処理部１５０が、ファームウェアによって生成された制御情報を取得し（同図に示す（３））、取得した制御情報に含まれるＤＭＡ番号に基づいて、ディスクインタフェース制御部１６０から転送された暗号化データを蓄積し、蓄積した暗号化データを、ＡＥＳ暗号方式で規定されたデータサイズ単位で復号化する（同図に示す（５））。
【００７０】
ここで、暗号処理部１５０は、蓄積した暗号化データを復号化する際に、ＡＥＳ暗号方式で規定されたデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で復号化する。
【００７１】
そして、暗号処理部１５０は、復号化したデータを順次メモリ制御部１３０に対して転送し、メモリ制御部１３０が、暗号処理部１５０から転送された復号化済みデータをメインメモリ１２０のキャッシュ領域に格納し（同図に示す（６））、ホストインタフェース制御部１１０が、キャッシュ領域に格納されたデータをホスト装置に対して送信する（同図に示す（７）および（８））。
【００７２】
このように、本実施例に係るＲＡＩＤコントローラ１００では、暗号処理部１５０が、ホスト装置２００から要求されたデータが転送されるＤＭＡチャネルを識別するＤＭＡ番号を取得し、取得したＤＭＡ番号に基づいて、同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを、ＡＥＳで規定されたデータサイズ単位で暗号化し、暗号化したデータを、ディスクインタフェース制御部１６０が、ディスク装置３００に対して転送するようにしている。
【００７３】
また、本実施例に係るＲＡＩＤコントローラ１００では、暗号処理部１５０が、ホスト装置２００から要求された暗号化データが転送されるＤＭＡチャネルを識別するＤＭＡ番号を取得し、取得したＤＭＡ番号に基づいて、同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを、ＡＥＳで規定されたデータサイズ単位で復号化し、復号化したデータを、ホストインタフェース制御部１１０が、ホスト装置２００に対して転送するようにしている。
【００７４】
これにより、本実施例に係るＲＡＩＤコントローラ１００では、データが転送されたＤＭＡチャネルを識別し、ＤＭＡチャネルごとにデータの暗号化および復号化を行うことができる。
【００７５】
次に、本実施例に係るＲＡＩＤコントローラ１００の構成について説明する。図２は、本実施例に係るＲＡＩＤコントローラ１００の構成を示す機能ブロック図である。同図に示すように、本実施例に係るＲＡＩＤコントローラ１００は、ホスト装置２００とディスク装置３００との間に接続される。
【００７６】
ホスト装置２００は、ディスク装置３００に対してデータのライトおよびリードを行う上位装置である。このホスト装置２００は、データのライトを行う場合には、ＲＡＩＤコントローラ１００に対してライト要求を送信し、データのリードを行う場合には、ＲＡＩＤコントローラ１００に対してリード要求を送信する。
【００７７】
ディスク装置３００は、各種データを記憶する記憶装置であり、データの記憶媒体として、所定の種類のＲＡＩＤ（ＲＡＩＤ０，１，３，５など）で構成された複数のディスク３１０1〜３１０nを有する。
【００７８】
ＲＡＩＤコントローラ１００は、ホスト装置２００からの要求に基づいて、ディスク装置３００に対するデータの入出力を制御する装置であり、ホストインタフェース制御部１１０と、ディスクインタフェース制御部１６０と、メインメモリ１２０と、メモリ制御部１３０と、ＣＰＵ１４０と、暗号処理部１５０とを有する。
【００７９】
ここで、前述したように、ホストインタフェース制御部１１０、メモリ制御部１３０、暗号処理部１５０およびディスクインタフェース制御部１６０は、それぞれ、ＰＣＩｅバスを介して接続され、ホストインタフェース制御部１１０とメインメモリ１２０との間で、メモリ制御部１３０を介して行われるデータ転送、および、メインメモリ１２０とディスクインタフェース制御部１６０との間で、メモリ制御部１３０および暗号処理部１５０を介して行われるデータ転送は、それぞれＤＭＡ方式を用いて行われる。
【００８０】
以下、ＲＡＩＤコントローラ１００が有する各機能部について、それぞれ具体的に説明する。なお、以下では、ホスト装置２００からのライト要求に応じてディスク装置３００に書き込まれるデータを「ライトデータ」と呼び、ホスト装置からのリード要求に応じてディスク装置３００から読み出されるデータを「リードデータ」と呼ぶ。
【００８１】
ホストインタフェース制御部１１０は、ホスト装置２００との間で行われるデータ転送や、メインメモリ１２０との間で行われるデータ転送を制御する処理部である。このホストインタフェース制御部１１０は、ライト動作では、ホスト装置２００からライト要求を受信すると、当該ライト要求とともに送信されたライトデータを、メモリ制御部１３０を介してメインメモリ１２０のキャッシュ領域に格納する。一方、リード動作では、ホストインタフェース制御部１１０は、ホスト装置２００からリード要求を受信すると、当該リード要求をメモリ制御部１３０に対して転送する。
【００８２】
メインメモリ１２０は、各種プログラムや各種データを記憶する記憶装置であり、ＲＡＩＤコントローラ１００の全体制御を行うための各種処理手順を規定したファームウェアや、ファームウェアの実行に必要な制御データなどを記憶する。また、メインメモリ１２０は、ホスト装置２００から転送されたデータや、ディスク装置３００から転送されたデータを一時的に格納するためのキャッシュ領域や、後述するディスクリプタ１やディスクリプタ２などの制御情報を格納するための所定の領域を有する。
【００８３】
メモリ制御部１３０は、メインメモリ１２０に対するデータの読み出しおよび書き込みを制御する処理部である。このメモリ制御部１３０は、書き込み要求パケットを受信すると、当該書き込み要求パケットに基づいて、メインメモリ１２０にデータを書き込み、また、読み出し要求パケットを受信すると、当該読み出し要求パケットに基づいて、メインメモリ１２０からデータを読み出し、読み出したデータを含めた読み出し応答パケットを、読み出し要求パケットを送信した処理部に対して送信する。
【００８４】
ここでいう読み出し要求パケットおよび書き込み要求パケットは、それぞれ、ＰＣＩｅでフォーマットが規定されたＴＬＰであり、シーケンス番号やヘッダ、データ、ＣＲＣ（Cyclic Redundancy Check）などから構成される。ここでは、ＴＬＰのヘッダについて説明する。
【００８５】
図３は、ＰＣＩｅで規定されたＴＬＰのヘッダのフォーマットを示す図である。同図に示すように、ＴＬＰのヘッダには、パケットの転送や、データの読み出しや書き込みを制御するための各種の情報が含まれている。特に本発明に関連する情報について説明すると、５〜８バイト目（同図に示す「｛Fields in bytes 4 through 7 depend on type of Request｝」）には、ライト要求やリード要求など、要求の種類を識別する情報などが設定され、９〜１６バイト目には、アドレス情報（同図に示す「Ａｄｄｒｅｓｓ」）として、リードデータの読み出し先となるメインメモリ１２０上の物理アドレスや、ライトデータの書き込み先となるメインメモリ１２０上の物理アドレスなどが設定される。
【００８６】
なお、ＰＣＩｅでは、読み出し要求パケットおよび書込み要求パケットにて要求可能なデータの上限サイズや、読み出し応答パケットにて応答可能なデータの上限サイズが規定されている。そのため、メモリ制御部１３０は、読み出し応答パケットを送信する際に、メインメモリ１２０から読み出したデータが、読み出し応答パケットにて応答可能な上限サイズを超えていた場合には、当該データを上限サイズ以下となるように分割し、分割したそれぞれのデータについて読み出し応答パケットを送信する。
【００８７】
図２に戻って、ＣＰＵ１４０は、メインメモリ１２０に格納されたファームウェアを読み出して実行することによって、ＲＡＩＤコントローラ１００の全体制御を行う中央処理装置である。このＣＰＵ１４０は、ファームウェアを実行することによって、ＲＡＩＤコントローラ１００の全体制御を行うための各種の処理を行う。なお、ここでは、ＣＰＵ１４０によって行われる処理のうち、特に本発明に関連する処理のみを説明する。
【００８８】
ＣＰＵ１４０は、ホストインタフェース制御部１１０を介してホスト装置２００からライト要求やリード要求などの要求を受信すると、受信した要求に基づいて、メインメモリ１２０に対するデータの読み出しや書き込みを制御するための制御情報であるディスクリプタ１およびディスクリプタ２をそれぞれ生成し、メインメモリ１２０に格納する。そして、ＣＰＵ１４０は、ディスクリプタ１およびディスクリプタ２をメインメモリ１２０の所定の領域に格納した後に、後述する暗号処理部１５０およびディスクインタフェース制御部１６０を起動する。
【００８９】
ここで、ＣＰＵ１４０によって生成されるディスクリプタ１およびディスクリプタ２について説明する。まず、ディスクリプタ１について説明する。図４は、ディスクリプタ１のフォーマットを示す図である。同図に示すように、ディスクリプタ１は、暗号化要否フラグと、ＤＭＡ番号と、物理アドレスと、ＤＭＡ転送サイズとから構成される。
【００９０】
ここで、暗号化要否フラグには、「１」が固定で設定され、ＤＭＡ番号には、リード要求またはライト要求の対象データをＤＭＡ転送する際に用いられるＤＭＡチャネルを識別する番号が設定され、物理アドレスには、ホスト装置２００から要求されたデータが格納されるメインメモリ１２０上のアドレスが設定され、ＤＭＡ転送サイズには、ホスト装置２００から要求されたデータのサイズが設定される。
【００９１】
続いて、ディスクリプタ２について説明する。図５は、ディスクリプタ２のフォーマットを示す図である。同図に示すように、ディスクリプタ２は、ＤＭＡ番号と、物理アドレスと、暗号鍵と、ＤＭＡ転送サイズとから構成される。ここで、ＤＭＡ番号、物理アドレスおよびＤＭＡ転送サイズには、ディスクリプタ１のＤＭＡ番号、物理アドレスおよびＤＭＡ転送サイズに設定された値と同じ値がそれぞれ設定され、暗号鍵には、後述する暗号処理部１５０においてデータの暗号化および復号化が行われる際に用いられる鍵情報が設定される。
【００９２】
図２に戻って、ディスクインタフェース制御部１６０は、ディスク装置３００との間で行われるデータ転送や、メインメモリ１２０との間で行われるＤＭＡ転送を制御する処理部であり、アービター１６１と、ＤＭＡチャネル１６２1〜１６２nとを有する。このディスクインタフェース制御部１６０は、ファームウェアによって起動されると、メインメモリ１２０からディスクリプタ１を読み出すための読み出し要求パケットを生成し、暗号処理部１５０に対して送信する。
【００９３】
ここで、ディスクリプタ１の読み出し要求パケットを生成する際、ディスクインタフェース制御部１６０は、当該読み出し要求のヘッダのアドレス情報に、暗号化要否フラグと、物理アドレスとをそれぞれ設定する。図６は、ディスクリプタ読み出し要求パケットのアドレス情報を示す図である。同図は、読み出し要求パケットに含まれるアドレス情報を示している（図３に示した「Ａｄｄｒｅｓ」を参照）。
【００９４】
具体的には、ディスクインタフェース制御部１６０は、同図に示すように、アドレス情報の先頭１ビット（ｂｉｔ６３）に、暗号化要否フラグとして「０（暗号化不要）」を設定し、２〜６２ビット目（ｂｉｔ６２〜２）に、物理アドレスとして、メインメモリ１２０のディスクリプタ格納アドレス（ここでは、ディスクリプタ１の格納アドレス）を設定する。
【００９５】
ここで送信されたディスクリプタ１の読み出し要求パケットは、暗号処理部１５０によって、メモリ制御部１３０に転送される。メモリ制御部１３０は、この読み出し要求パケットを受信すると、メインメモリ１２０のキャッシュ領域からディスクリプタ１を読み出し、ディスクインタフェース制御部１６０に対して送信する。
【００９６】
そして、ディスクインタフェース制御部１６０は、メモリ制御部１３０からディスクリプタ１が送信されると、ライト動作では、ディスクリプタ１に設定されている情報に基づいて、メインメモリ１２０からライトデータを読み出すための読み出し要求パケットを生成し、暗号処理部１５０に対して送信する。
【００９７】
この時、ディスクインタフェース制御部１６０は、ディスクリプタ１に設定されているＤＭＡ転送サイズが、読み出し要求パケットにて要求可能なデータの上限サイズを超えていた場合には、ライトデータを上限サイズ以下となるように分割し、分割したそれぞれのデータについて読み出し要求パケットを送信する。なお、ここで送信される読み出し要求パケットは、それぞれ、同じＤＭＡチャネルを用いて送信される。
【００９８】
ここで、データの読み出し要求パケットを生成する際、ディスクインタフェース制御部１６０は、当該読み出し要求のアドレス情報に、暗号化要否フラグと、ＤＭＡ番号と、物理アドレスとをそれぞれ設定する。図７は、データ読み出し要求パケットのアドレス情報を示す図である。同図は、読み出し要求パケットに含まれるアドレス情報を示している（図３に示した「Ａｄｄｒｅｓ」を参照）。
【００９９】
具体的には、ディスクインタフェース制御部１６０は、同図に示すように、１ビット目（ｂｉｔ６３）に、暗号化要否フラグとして「１（暗号化要）」を設定し、２〜９ビット目（ｂｉｔ６２〜５５）に、ＤＭＡ番号として、当該読み出し要求パケットが転送されるＤＭＡチャネルを識別するＤＭＡ番号を、１０〜６２ビット目（ｂｉｔ５４〜２）に、物理アドレスとして、ライトデータの格納先となるメインメモリ１２０上のアドレスの９ｂｉｔ目以降を、それぞれ設定する。
【０１００】
なお、ここではＤＭＡ番号が８ビットである場合を説明するが、ＤＭＡ番号の桁数は、これに限られず、ＤＭＡチャネルの数などに応じて適宜決められる。
【０１０１】
ここで送信されたデータ読み出し要求パケットは、暗号処理部１５０によって、アドレス情報に含まれるＤＭＡ番号が、ディスクリプタ２に含まれている物理アドレスに変換されたうえで、メモリ制御部１３０に転送される。
【０１０２】
そして、送信した読み出し要求パケットに対して、暗号処理部１５０によって暗号化されたデータが応答されると、ディスクインタフェース制御部１６０は、受信したデータをディスク装置３００に対して転送する。
【０１０３】
一方、リード動作では、ディスクインタフェース制御部１６０は、メモリ制御部１３０からディスクリプタ１が応答されると、ディスクインタフェース制御部１６０は、ディスクリプタ１に設定されている情報に基づいて、ディスク装置３００からデータを読み出し、読み出したデータをメインメモリ１２０に書き込むための書き込み要求パケットを生成し、暗号処理部１５０に対して送信する。
【０１０４】
この時、ディスクインタフェース制御部１６０は、ディスク装置３００から読み出したデータのサイズが、書き込み要求パケットにて要求可能なデータの上限サイズを超えていた場合には、当該データを上限サイズ以下となるように分割し、分割したそれぞれのデータについて書き込み要求パケットを送信する。なお、ここで送信される書き込み要求パケットは、それぞれ、同じＤＭＡチャネルを用いて送信される。
【０１０５】
ここで、データの書き込み要求パケットを生成する際、ディスクインタフェース制御部１６０は、当該書き込み要求パケットのアドレス情報には、暗号化要否フラグと、ＤＭＡ番号と、物理アドレスとをそれぞれ設定する。具体的には、ディスクインタフェース制御部１６０は、図７に示したデータ読み出し要求パケットのアドレス情報と同様に、ｂｉｔ６３に、暗号化要否フラグとして「１（暗号化要）」を、ｂｉｔ６２〜５５に、ＤＭＡ番号として、当該書き込み要求パケットが転送されるＤＭＡチャネルを識別するＤＭＡ番号を、ｂｉｔ５４〜２に、物理アドレスとして、ライトデータの書き込み先となるメインメモリ１２０上のアドレスの９ｂｉｔ目以降を、それぞれ設定する。
【０１０６】
ＤＭＡチャネル１６２1〜１６２nは、ディスクインタフェース制御部１６０とメインメモリ１２０との間に、暗号処理部１５０およびメモリ制御部１３０を経由して設定された転送チャネルであり、それぞれ、ディスクインタフェース制御部１６０とメモリ制御部１３０との間でデータのＤＭＡ転送が行われる際に用いられる。これらＤＭＡチャネルは、それぞれ固有のＤＭＡ番号によって識別される。
【０１０７】
アービター１６１は、ディスクインタフェース制御部１６０とメモリ制御部１３０との間でＤＭＡ転送が行われる際に、データの転送に用いるＤＭＡチャネル１６２1〜１６２nを選択する処理部である。このアービター１６１は、ディスクインタフェース制御部１６０からメモリ制御部１３０に対してデータが転送される場合には、ＤＭＡチャネル１６２1〜１６２nのうちから１つのＤＭＡチャネルを選択し、選択したＤＭＡチャネルを介して、当該データをＤＭＡ転送する。
【０１０８】
また、アービター１６１は、メインメモリ１２０に格納されていたデータがＤＭＡチャネル１６２1〜１６２nを介してＤＭＡ転送されると、各データをディスク装置３００に対して送信する。このアービター１６１によって、各ＤＭＡチャネルを介して、ディスクインタフェース制御部１６０とメインメモリ１２０との間で、複数のデータが並列してＤＭＡ転送される。
【０１０９】
暗号処理部１５０は、暗号処理チップを用いて、ＡＥＳ暗号方式に準拠した暗号処理を行う処理部である。具体的には、この暗号処理部１５０は、ファームウェアによって起動されると、メインメモリ１２０からディスクリプタ２を読み出すための読み出し要求パケットを生成し、メモリ制御部１３０に対して送信する。
【０１１０】
ここで、ディスクリプタ２の読み出し要求パケットを生成する際、暗号処理部１５０は、当該読み出し要求のヘッダのアドレス情報に、暗号化要否フラグと、物理アドレスとをそれぞれ設定する。なお、アドレス情報の設定方法は、ディスクリプタ１のヘッダのアドレスの設定方法と同じであるので、ここでは説明を省略する（図６を参照）。
【０１１１】
そして、暗号処理部１５０は、送信したディスクリプタ２の読み出し要求パケットに対して、メモリ制御部１３０からディスクリプタ２が応答されると、ディスクリプタ２に含まれるＤＭＡ番号、物理アドレス、暗号鍵およびＤＭＡ転送サイズを、内部メモリに記憶する。
【０１１２】
この後、暗号処理部１５０は、ライト動作では、ディスクインタフェース制御部１６０から読み出し要求パケットを受信すると、当該読み出し要求パケットのヘッダのアドレス情報に設定されている暗号化要否フラグを確認し、「１」が設定されていた場合には、アドレス情報に設定されているＤＭＡ番号と、内部メモリに記憶したＤＭＡ番号とを比較する。
【０１１３】
ここで、ＤＭＡ番号が一致していた場合には、暗号処理部１５０は、ヘッダに設定されているＤＭＡ番号を内部メモリに記憶した物理アドレスに変換したうえで、メモリ制御部１３０に対して読み出し要求パケットを送信する。
【０１１４】
これにより、ディスクリプタ１または２の読み出し要求パケットについては、暗号化要否フラグが「０」であるため、アドレス情報は変換されず、ライトデータの読み出し要求パケットやリードデータの書き込み要求パケットについては、暗号化要否フラグが「０」であるため、アドレス情報が変換されるようになる。
【０１１５】
なお、暗号処理部１５０は、暗号化要否フラグが「１」である読み出し要求パケットを送信する場合には、送信する前に、当該読み出し要求パケットのヘッダに設定されているＴａｇ情報を内部メモリに記憶しておく。そして、送信した読み出し要求パケットに対して、メモリ制御部１３０から読み出し応答パケットが送信された場合には、当該読み出し応答パケットのヘッダに設定されているＴａｇ情報と、内部メモリに記憶したＴａｇ情報とを比較する。
【０１１６】
図８は、ＰＣＩｅで規定された読み出し要求パケットのヘッダのフォーマットを示す図であり、図９は、ＰＣＩｅで規定された読み出し応答パケットのヘッダのフォーマットを示す図である。各図に示すように、Ｔａｇ情報は、読み出し要求パケットでは、ヘッダの４９〜５６ビット目に設定され、読み出し応答パケットでは、ヘッダの８１〜８８ビット目に設定されている。ＰＣＩｅの規格上、読み出し要求パケットのＴａｇ情報と、その応答として生成される読み出し応答パケットのＴａｇ情報には、それぞれ同じ値が設定される。
【０１１７】
暗号処理部１５０は、Ｔａｇ情報を比較した結果、それぞれが同じ値であった場合には、送信された読み出し応答パケットに含まれているデータを、内部メモリに記憶されている暗号鍵を用いて暗号化し、暗号化したデータを、ディスクインタフェース制御部１６０に対して送信する。
【０１１８】
ここで、暗号処理部１５０は、読み出し応答パケットに含まれているデータをＡＥＳ処理方式で規定されたデータサイズ単位（１６バイト単位）で暗号化するが、当該データが１６バイト未満であった場合や、１６バイト単位で暗号化した際に、１６バイト未満のデータが残った場合には、残ったデータを、端数データとして内部メモリに保持しておく。
【０１１９】
ところで、前述したように、メモリ制御部１３０から送信される読み出し応答パケットは、ＰＣＩｅで規定された応答可能なデータの上限サイズの関係で、ひとつのデータについて読み出し応答パケットが分割されて送信される場合がある。
【０１２０】
そこで、暗号処理部１５０は、後続して読み出し応答パケットがさらに送信されると、当該読み出し応答パケットのＴａｇ情報と、内部メモリに記憶したＴａｇ情報とを比較し、それぞれが同じ値であった場合には、送信された読み出し応答パケットに含まれているデータの先頭を、内部メモリに記憶されている端数データの末尾に結合し、その結果得られるデータを暗号化し、暗号化したデータを、ディスクインタフェース制御部１６０に対して送信する。
【０１２１】
このように、暗号処理部１５０は、読み出し応答パケットが分割されて送信された場合でも、Ｔａｇ情報の値に基づいて、各読み出し応答パケットに含まれているデータを結合して、暗号化することができる。
【０１２２】
そして、暗号処理部１５０は、分割されて送信された全ての読み出し応答パケットのデータを暗号化した結果、さらに１６バイト未満のデータが残った場合には、残ったデータを端数データとして内部メモリに保持しておく。
【０１２３】
ところで、前述したように、ディスクインタフェース制御部１６０から送信される読み出し要求パケットは、ＰＣＩｅで規定された要求可能なデータの上限サイズの関係で、ひとつのデータについて読み出し要求パケットが分割されて送信される場合がある。
【０１２４】
そこで、暗号処理部１５０は、後続して読み出し要求パケットがさらに送信されると、当該読み出し要求パケットのヘッダのアドレス情報に設定されている暗号化要否フラグを確認し、「１」が設定されていた場合には、アドレス情報に設定されているＤＭＡ番号と、内部メモリに記憶したＤＭＡ番号とを比較する。
【０１２５】
そして、ＤＭＡ番号が一致していた場合には、暗号処理部１５０は、ヘッダに設定されているＤＭＡ番号を内部メモリに記憶した物理アドレスに変換したうえで、メモリ制御部１３０に対して読み出し要求パケットを送信する。
【０１２６】
その後、暗号処理部１５０は、メモリ制御部１３０から読み出し応答パケットが送信されると、送信された読み出し応答パケットに含まれているデータを、内部メモリに記憶されている暗号鍵を用いて暗号化し、暗号化したデータを、ディスクインタフェース制御部１６０に対して送信する。
【０１２７】
ここで、暗号処理部１５０は、データの暗号化を行う際に、内部メモリに端数データが記憶されていた場合には、送信された読み出し応答パケットに含まれているデータの先頭を、端数データの末尾に結合し、その結果得られるデータを暗号化する。
【０１２８】
なお、暗号処理部１５０は、上記の過程のなかで、データを暗号化するたびに、暗号化したデータのサイズを内部メモリに記憶されているＤＭＡサイズから減算しておく。そして、内部メモリに記憶されているＤＭＡサイズがゼロになった場合には、暗号処理部１５０は、分割されて送信された全ての読み出し要求パケットのデータが暗号化されたと判断し、次のディスクリプタ２の読み出し要求をメモリ制御部１３０に対して送信し、ディスクリプタ２が応答された場合には、当該ディスクリプタ２に基づいて、上記と同様のライト動作を行う。
【０１２９】
このように、暗号処理部１５０は、読み出し要求パケットが分割されて送信された場合でも、ＤＭＡ番号の値に基づいて、各読み出し要求パケットで要求されたデータをＤＭＡチャネルごとに結合して、暗号化することができる。
【０１３０】
一方、暗号処理部１５０は、リード動作では、ディスクインタフェース制御部１６０から書き込み要求パケットを受信すると、当該書き込み要求パケットのヘッダのアドレス情報に設定されている暗号化要否フラグを確認し、「１」が設定されていた場合には、アドレス情報に設定されているＤＭＡ番号と、内部メモリに記憶したＤＭＡ番号とを比較する。
【０１３１】
ここで、ＤＭＡ番号が一致していた場合には、暗号処理部１５０は、ヘッダに設定されているＤＭＡ番号を内部メモリに記憶した物理アドレスに変換する。
【０１３２】
そして、暗号処理部１５０は、書き込み要求パケットに含まれているデータをＡＥＳ処理方式で規定されたデータサイズ単位（１６バイト単位）で復号化し、復号化したデータを、アドレス変換を行った書き込み要求パケットに設定して、メモリ制御部１３０に対して送信する。
【０１３３】
ここで、暗号処理部１５０は、受信した書き込み要求パケットに含まれていたデータが１６バイト未満であった場合や、１６バイト単位で復号化した際に、１６バイト未満のデータが残った場合には、残ったデータを、端数データとして内部メモリに保持しておく。
【０１３４】
ところで、前述したように、メモリ制御部１３０から送信される書き込み応答パケットは、ＰＣＩｅで規定された要求可能なデータの上限サイズの関係で、ひとつのデータについて書き込み要求パケットが分割されて送信される場合がある。
【０１３５】
そこで、暗号処理部１５０は、後続して書き込み要求パケットがさらに送信されると、当該書き込み要求パケットのヘッダのアドレス情報に設定されている暗号化要否フラグを確認し、「１」が設定されていた場合には、前回受信した書き込み要求パケットと同様に、アドレス情報に設定されているＤＭＡ番号と、内部メモリに記憶したＤＭＡ番号とを比較し、ＤＭＡ番号が一致していた場合には、ヘッダに設定されているＤＭＡ番号を内部メモリに記憶した物理アドレスに変換する。
【０１３６】
そして、暗号処理部１５０は、送信された書き込み要求パケットに含まれているデータの先頭を内部メモリに記憶されている端数データの末尾に結合し、結合して得られたデータを復号化し、復号化したデータを、アドレス変換を行った書き込み要求パケットに設定して、メモリ制御部１３０に対して送信する。
【０１３７】
なお、暗号処理部１５０は、上記の過程のなかで、データを暗号化するたびに、暗号化したデータのサイズを内部メモリに記憶されているＤＭＡサイズから減算しておく。そして、内部メモリに記憶されているＤＭＡサイズがゼロになった場合には、暗号処理部１５０は、分割されて送信された全ての書き込み要求パケットのデータが復号化されたと判断し、メモリ制御部１３０に対して、次のディスクリプタ２の読み出し要求を送信し、ディスクリプタ２が応答された場合には、当該ディスクリプタ２に基づいて、上記と同様のリード動作を行う。
【０１３８】
このように、暗号処理部１５０は、書き込み要求パケットが分割されて送信された場合でも、ＤＭＡ番号の値に基づいて、各書き込み要求パケットで要求されたデータをＤＭＡチャネルごとに結合して、復号化することができる。
【０１３９】
次に、本実施例に係るＲＡＩＤコントローラ１００の処理手順について説明する。ここでは、図１０〜１３を参照して、ライト動作におけるＲＡＩＤコントローラ１００の処理手順について説明した後に、図１４〜１６を参照して、リード動作におけるＲＡＩＤコントローラ１００について処理手順を説明する。なお、以下では、読み出し要求パケットを、単に「読み出し要求」と呼び、書き込み要求パケットを、単に「書き込み要求」と呼ぶ。
【０１４０】
まず、ライト動作におけるＲＡＩＤコントローラ１００の処理手順について説明する。図１０〜１３は、ライト動作におけるＲＡＩＤコントローラ１００の処理手順を示すシーケンス図（１）〜（４）である。各図に示すように、ライト動作では、ホストインタフェース制御部１１０が、ホスト装置２００からライト要求を受信すると、メモリ制御部１３０を介して、ライトデータをメインメモリ１２０のキャッシュ領域に書き込む（ステップＳ１０１、Ｓ１０２）。
【０１４１】
メモリ制御部１３０は、ライトデータを書き込んだ後に、ＣＰＵ１４０に対して完了通知を送信する（ステップＳ１０３）。ＣＰＵ１４０は、完了通知を受信すると、ファームウェアを実行することによって、ＲＡＩＤ処理を行い（ステップＳ１０４）、ディスクリプタ１およびディスクリプタ２をメインメモリ１２０に設定し（ステップＳ１０５、Ｓ１０６）、その後、暗号処理部１５０およびディスクインタフェース制御部１６０をそれぞれ起動する（ステップＳ１０７、Ｓ１０８）。
【０１４２】
暗号処理部１５０は、ファームウェアによって起動されると、メモリ制御部１３０に対してディスクリプタ２の読み出し要求を送信し（ステップＳ１０９）、読み出し要求を受信したメモリ制御部１３０は、メインメモリ１２０からディスクリプタ２を読み出し、暗号処理部１５０に対して応答する（ステップＳ１１０）。
【０１４３】
暗号処理部１５０は、ディスクリプタ２を受信すると、当該ディスクリプタ２に含まれるＤＭＡ番号や物理アドレス、ＤＭＡ転送サイズなどを内部メモリに記憶する（ステップＳ１１１）。
【０１４４】
一方、ディスクインタフェース制御部１６０は、ファームウェアによって起動されると、暗号処理部１５０に対してディスクリプタ１の読み出し要求を送信する（ステップＳ１１２）。
【０１４５】
暗号処理部１５０は、ディスクリプタ１の読み出し要求を受信すると、当該読み出し要求のヘッダに設定されている暗号化要否フラグを参照し（ステップＳ１１３）、暗号化要否フラグが「０」であるため、アドレス変換を行わずに、メモリ制御部１３０に対して読み出し要求を送信する（ステップＳ１１４）。
【０１４６】
メモリ制御部１３０は、読み出し要求を受信すると、ディスクインタフェース制御部１６０に対してディスクリプタ１を応答し（ステップＳ１１５）、ディスクリプタ１を受信したディスクインタフェース制御部１６０は、ライトデータの読み出し要求を生成する。ここで、ディスクインタフェース制御部１６０は、読み出し要求にて要求可能なデータの上限サイズを超えていたため、当該ライトデータをデータ１とデータ２とに分割して、それぞれの読み出し要求を生成したとする。
【０１４７】
そして、ディスクインタフェース制御部１６０は、まず、データ１の読み出し要求を暗号処理部１５０に送信したとする（ステップＳ１１６）。
【０１４８】
暗号処理部１５０は、データ１の読み出し要求を受信すると、当該読み出し要求のヘッダに設定されている暗号化要否フラグを参照し（ステップＳ１１７）、ここでは、暗号化要否フラグが「１」であるため、アドレス情報のＤＭＡ番号が、内部メモリに記憶されているＤＭＡ番号と一致しているか否かを判定する（ステップＳ１１８）。
【０１４９】
そして、ここでは、ＤＭＡ番号が一致しているため、暗号処理部１５０は、アドレス情報のＤＭＡ番号を内部メモリに記憶されている物理アドレスで変換し（ステップＳ１１９）、アドレス変換後の読み出し要求をメモリ制御部１３０に対して送信し（ステップＳ１２０）、Ｔａｇ情報を内部メモリに記憶する（ステップＳ１２１）。
【０１５０】
そして、メモリ制御部１３０が、メインメモリ１２０からデータ１を読み出し、読み出したデータ１を含む読み出し応答を暗号処理部１５０に対して送信すると（ステップＳ１２２）、暗号処理部１５０は、受信した読み出し応答のヘッダに設定されているＴａｇ情報が、内部メモリに記憶されているＴａｇ情報と一致しているか否かを判定する（ステップＳ１２３）。
【０１５１】
そして、暗号処理部１５０は、Ｔａｇ情報が一致する読み出し応答に含まれるデータを連結することによってデータ１を暗号化し、暗号化したデータ１をディスクインタフェース制御部１６０に対して送信する（ステップＳ１２４）。
【０１５２】
ディスクインタフェース制御部１６０は、データ１を受信すると、ディスク装置３００に対して当該データ１を転送する（ステップＳ１２５）。
【０１５３】
そして、暗号処理部１５０は、データ１を暗号化した際に、１６バイトに満たない端数データが残った場合には、残った端数データを内部メモリに保持し（ステップＳ１２６）、暗号化したデータのサイズを内部メモリに記憶しているＤＭＡ転送サイズから減算する（ステップＳ１２７）。
【０１５４】
その後、暗号処理部１５０は、データ転送サイズがゼロになっているか否かを判定し（ステップＳ１２８）、データ転送サイズがゼロになっていなかった場合には、後続する読み出し要求が転送されるまで待機する（ステップＳ１２９）。
【０１５５】
ディスクインタフェース制御部１６０は、ステップＳ１１６でデータ１の読み出し要求を送信した後に、データ２の読み出し要求を暗号処理部１５０に対して送信する（ステップＳ１３０）。
【０１５６】
これ以降、読み出し要求を受信した暗号処理部１５０が、データ２を含む読み出し応答をメモリ制御部１３０から受信するまでの処理手順（ステップＳ１３１〜Ｓ１３６）は、前述した、データ１を含む読み出し要求を受信した際の手順（ステップＳ１１７からステップＳ１２２）と同様であるため、ここでは説明を省略する。
【０１５７】
読み出し応答を受信すると、暗号処理部１５０は、受信した読み出し応答のヘッダに設定されているＴａｇ情報が、内部メモリに記憶されているＴａｇ情報と一致しているか否かを判定する（ステップＳ１３７）。
【０１５８】
そして、暗号処理部１５０は、内部メモリに保持されているデータ１の端数データと、Ｔａｇ情報が一致する読み出し応答に含まれるデータとを連結することによって（ステップＳ１３９）、データ１の端数およびデータ２を暗号化し、暗号化したデータ（データ１の端数およびデータ２）をディスクインタフェース制御部１６０に対して送信する（ステップＳ１３９）。
【０１５９】
ディスクインタフェース制御部１６０は、データ１の端数およびデータ２を受信すると、ディスク装置３００に対して、当該データ１の端数およびデータ２を転送する（ステップＳ１４０）。
【０１６０】
そして、暗号処理部１５０は、暗号化したデータのサイズを内部メモリに記憶しているＤＭＡ転送サイズから減算する（ステップＳ１４１）。なお、ここでは、データ１の端数およびデータ２を暗号化した結果、端数データが残らなかったとする。
【０１６１】
その後、暗号処理部１５０は、データ転送サイズがゼロになっているか否かを判定し（ステップＳ１４２）、データ転送サイズがゼロになっていた場合には、メモリ制御部１３０に対して、次のディスクリプタ２の読み出し要求を送信する（ステップＳ１４３）。そして、メモリ制御部１３０からディスクリプタ２が応答された場合には（ステップＳ１４４）、ＲＡＩＤコントローラ１００は、ステップＳ１１１以降の処理を同様に行う。
【０１６２】
続いて、リード動作におけるＲＡＩＤコントローラ１００の処理手順について説明する。なお、ここでは、上記で説明したライト動作でディスク装置３００に転送されたデータ（データ１およびデータ２）を読み出す場合について説明する。図１４〜１６は、リード動作におけるＲＡＩＤコントローラ１００の処理手順を示すシーケンス図（１）〜（３）である。各図に示すように、リード動作では、ホストインタフェース制御部１１０が、ホスト装置２００からリード要求を受信すると、メモリ制御部１３０に対してリード要求を転送する（ステップＳ２０１）。
【０１６３】
メモリ制御部１３０は、リード要求を受信すると、ＣＰＵ１４０に対して、リード要求を受信したことを通知する（ステップＳ２０２）。ＣＰＵ１４０は、リード要求の受信通知を受信すると、ファームウェアを実行することによって、ディスクリプタ１およびディスクリプタ２をメインメモリ１２０に設定し（ステップＳ２０３、Ｓ２０４）、その後、暗号処理部１５０およびディスクインタフェース制御部１６０をそれぞれ起動する（ステップＳ２０５、Ｓ２０６）。
【０１６４】
暗号処理部１５０は、ファームウェアによって起動されると、メモリ制御部１３０に対してディスクリプタ２の読み出し要求を送信し（ステップＳ２０７）、読み出し要求を受信したメモリ制御部１３０は、メインメモリ１２０からディスクリプタ２を読み出し、暗号処理部１５０に対して応答する（ステップＳ２０８）。
【０１６５】
暗号処理部１５０は、ディスクリプタ２を受信すると、当該ディスクリプタ２に含まれるＤＭＡ番号や物理アドレス、ＤＭＡ転送サイズなどを内部メモリに記憶する（ステップＳ２０９）。
【０１６６】
一方、ディスクインタフェース制御部１６０は、ファームウェアによって起動されると、暗号処理部１５０に対してディスクリプタ１の読み出し要求を送信する（ステップＳ２１０）。
【０１６７】
暗号処理部１５０は、ディスクリプタ１の読み出し要求を受信すると、当該読み出し要求のヘッダに設定されている暗号化要否フラグを参照し（ステップＳ２１１）、暗号化要否フラグが「０」であるため、アドレス変換を行わずに、メモリ制御部１３０に対して読み出し要求を送信する（ステップＳ２１２）。
【０１６８】
メモリ制御部１３０は、読み出し要求を受信すると、ディスクインタフェース制御部１６０に対してディスクリプタ１を応答し（ステップＳ２１３）、ディスクリプタ１を受信したディスクインタフェース制御部１６０は、ディスク装置３００からデータ１およびデータ２を読み出す（ステップＳ２１４）。
【０１６９】
ここで、ディスクインタフェース制御部１６０は、読み出したデータ１およびデータ２の書込み要求を生成するが、データ１およびデータ２の合計サイズが、書き込み要求で要求可能なデータの上限サイズを超えていたため、データ１およびデータ２について、それぞれ読み出し要求を生成したとする。
【０１７０】
そして、ディスクインタフェース制御部１６０は、まず、データ１の書き込み要求を暗号処理部１５０に送信したとする（ステップＳ２１５）。
【０１７１】
暗号処理部１５０は、データ１の書き込み要求を受信すると、当該書き込み要求のヘッダに設定されている暗号化要否フラグを参照し（ステップＳ２１６）、ここでは、暗号化要否フラグが「１」であるため、アドレス情報のＤＭＡ番号が、内部メモリに記憶されているＤＭＡ番号と一致しているか否かを判定する（ステップＳ２１７）。
【０１７２】
そして、ここでは、ＤＭＡ番号が一致しているため、暗号処理部１５０は、アドレス情報のＤＭＡ番号を内部メモリに記憶されている物理アドレスで変換し（ステップＳ２１８）、さらに、データ１を復号化し（ステップＳ２１９）、復号化したデータ１をアドレス変換後の書き込み要求に設定して、その書き込み要求をメモリ制御部１３０に対して送信する（ステップＳ２２０）。書き込み要求を受信したメモリ制御部１３０は、メインメモリ１２０に対してデータ１を書き込む（ステップＳ２２１）。
【０１７３】
そして、暗号処理部１５０は、データ１を復号化した際に、１６バイトに満たない端数データが残った場合には、残った端数データを内部メモリに保持し（ステップＳ２２２）、復号化したデータのサイズを内部メモリに記憶しているＤＭＡ転送サイズから減算する（ステップＳ２２３）。
【０１７４】
その後、暗号処理部１５０は、データ転送サイズがゼロになっているか否かを判定し（ステップＳ２２４）、データ転送サイズがゼロになっていなかった場合には、後続する書き込み要求が転送されるまで待機する（ステップＳ２２５）。
【０１７５】
ディスクインタフェース制御部１６０は、ステップＳ２１５でデータ１の書き込み要求を送信した後に、データ２の書き込み要求を暗号処理部１５０に対して送信する（ステップＳ２２６）。
【０１７６】
暗号処理部１５０は、データ２の書き込み要求を受信すると、当該書き込み要求のヘッダに設定されている暗号化要否フラグを参照し（ステップＳ２２７）、ここでは、暗号化要否フラグが「１」であるため、アドレス情報のＤＭＡ番号が、内部メモリに記憶されているＤＭＡ番号と一致しているか否かを判定する（ステップＳ２２８）。
【０１７７】
そして、ここでは、ＤＭＡ番号が一致しているため、暗号処理部１５０は、アドレス情報のＤＭＡ番号を内部メモリに記憶されている物理アドレスで変換し（ステップＳ２２９）、さらに、内部メモリに記憶されているデータ１の端数とデータ２とを連結し（ステップＳ２３０）、連結したデータを復号化し（ステップＳ２３１）、復号化したデータをアドレス変換後の書き込み要求に設定して、その書き込み要求をメモリ制御部１３０に対して送信する（ステップＳ２３２）。
【０１７８】
書き込み要求を受信したメモリ制御部１３０は、メインメモリ１２０に対してデータ１の端数およびデータ２を書き込み（ステップＳ２３３）、データの書き込みが完了したことをＣＰＵ１４０に通知する（ステップＳ２３４）。
【０１７９】
ＣＰＵ１４０は、書き込み完了が通知されると、ホストインタフェース制御部１１０と連携して、ホスト装置２００に対する応答処理を行う（ステップＳ２３５）。
【０１８０】
一方、暗号処理部１５０は、書き込み要求を送信した後に、復号化したデータのサイズを内部メモリに記憶しているＤＭＡ転送サイズから減算する（ステップＳ２３６）。なお、ここでは、データ１の端数およびデータ２を復号化した結果、端数データが残らなかったとする。
【０１８１】
その後、暗号処理部１５０は、データ転送サイズがゼロになっているか否かを判定し（ステップＳ２３７）、データ転送サイズがゼロになっていた場合には、メモリ制御部１３０に対して、次のディスクリプタ２の読み出し要求を送信する（ステップＳ２３８）。そして、メモリ制御部１３０からディスクリプタ２が応答された場合には（ステップＳ２３９）、ＲＡＩＤコントローラ１００は、ステップＳ２０９以降の処理を同様に行う。
【０１８２】
上述してきたように、本実施例では、暗号処理部１５０が、データが転送されるＤＭＡチャネルを識別するＤＭＡ番号を含んだディスクリプタ２を取得し、取得したディスクリプタ２に含まれるＤＭＡ番号に基づいて、同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で暗号化し、暗号化したデータをディスクインタフェース制御部１６０に対して転送するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたＤＭＡチャネルを識別して、ＤＭＡチャネルごとにデータの暗号化を行うことができる。
【０１８３】
また、本実施例では、暗号処理部１５０が、蓄積したデータを暗号化する際に、ＡＥＳ暗号方式で規定されたデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを、ＡＥＳ暗号方式で規定されたデータサイズ単位で暗号化するので、データ転送の単位となるデータサイズが暗号処理の単位となるデータサイズを超えていた場合でも、端数となったデータと後続するデータとを結合して、暗号化を行うことができる。
【０１８４】
また、本実施例では、暗号処理部１５０が、メモリ制御部１３０に対してデータの読み出しを要求するとともに当該データの転送に用いるＤＭＡチャネルを識別するＤＭＡ番号を含んだデータ読み出し要求をディスクインタフェース制御部１６０から受信し、データ読み出し要求を受信した場合に、当該データ読み出し要求に含まれるＤＭＡ番号と、取得したＤＭＡ番号とが同じであるか否かを判定し、同じであった場合に、メモリ制御部１３０に対してデータ読み出し要求を送信し、送信したデータ読み出し要求に応じてメモリ制御部１３０から転送されるデータを暗号化するので、データの転送に先立って転送先から送信されるデータ転送要求に、当該データの転送に用いられるＤＭＡチャネルを識別する情報を設定しておくことによって、データが転送されたＤＭＡチャネルを識別して、ＤＭＡチャネルごとにデータの暗号化を行うことができる。
【０１８５】
また、本実施例では、ディスクインタフェース制御部１６０から受信するデータ読み出し要求には、当該データ転送要求によって要求されるデータを暗号化するか否かを示す暗号化要否フラグが含まれており、この暗号化要否フラグに基づいて、暗号処理部１５０が、データ読み出し要求に応じてメモリ制御部１３０から転送されるデータを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化するので、例えば、データ転送を制御するための制御データなど、暗号化を行う必要がないデータを、暗号処理の対象から除くことができる。
【０１８６】
また、本実施例では、暗号処理部１５０が、暗号化データが転送されるＤＭＡチャネルを識別するＤＭＡ番号を含んだディスクリプタ２を取得し、取得したディスクリプタ２に含まれるＤＭＡ番号に基づいて、同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを、ＡＥＳ暗号方式で規定されたデータサイズ単位で復号化し、ＡＥＳ暗号方式で規定されたデータサイズ単位で復号化したデータをメモリ制御部１３０に対して転送するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データが転送されたＤＭＡチャネルを識別して、ＤＭＡチャネルごとにデータの復号化を行うことができる。
【０１８７】
また、本実施例では、暗号処理部１５０が、蓄積した暗号化データを復号化する際に、ＡＥＳ暗号方式で規定されたデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のＤＭＡチャネルを用いてＰＣＩｅで規定されたデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データをＡＥＳ暗号方式で規定されたデータサイズ単位で復号化するので、データ転送の単位となるデータサイズが暗号処理の単位となるデータサイズを超えていた場合でも、端数となったデータと後続するデータとを結合して、復号化を行うことができる。
【０１８８】
また、本実施例では、ＲＡＩＤコントローラに本発明を適用した場合について説明したが、本発明はこれに限定されるものではなく、例えば、ＰＣＩｅバスで接続されたデバイスから構成される各種のデータ転送制御装置において、デバイス間で転送されるデータを暗号化および復号化する場合にも同様に適用することができる。
【０１８９】
また、本実施例では、暗号方式としてＡＥＳ暗号方式をそれぞれ用いた場合について説明したが、本発明はこれに限定されるものではなく、他の暗号方式であっても、暗号処理の処理単位と、バスにおけるデータ転送の単位となるデータサイズとが異なるような場合には、同様に適用することができる。
【０１９０】
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【０１９１】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１９２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１９３】
（付記１）第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化装置であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ暗号化装置。
【０１９４】
（付記２）前記データ暗号化手段は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする付記１に記載のデータ暗号化装置。
【０１９５】
（付記３）前記第一の装置に対してデータの転送を要求するとともに当該データの転送に用いるチャネルを識別する要求チャネル識別情報を含んだデータ転送要求を前記第二の装置から受信する転送要求受信手段をさらに備え、
前記データ暗号化手段は、前記転送要求受信手段によりデータ転送要求が受信された場合に、前記要求チャネル識別情報と、前記転送情報取得手段により取得された転送チャネル識別情報とが同じであるか否かを判定し、同じであった場合に、前記第一の装置に対してデータ転送要求を送信し、送信したデータ転送要求に応じて前記第一の装置から転送されるデータを暗号化することを特徴とする付記１または２に記載のデータ暗号化装置。
【０１９６】
（付記４）前記転送要求受信手段により受信されるデータ転送要求には、当該データ転送要求によって要求されるデータを暗号化するか否かを示す暗号化要否情報が含まれており、
前記データ暗号化手段は、前記暗号化要否情報に基づいて、前記データ転送要求に応じて前記第一の装置から転送されるデータを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする付記３に記載のデータ暗号化装置。
【０１９７】
（付記５）第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化装置であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ復号化装置。
【０１９８】
（付記６）前記データ復号化手段は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする付記５に記載のデータ復号化装置。
【０１９９】
（付記７）第一の装置から第二の装置に対して転送されるデータを暗号化するデータ暗号化方法であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、
前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化工程と、
前記データ暗号化工程により第二のデータサイズ単位で暗号化されたデータを前記第二の装置に対して転送するデータ転送工程と、
を含んだことを特徴とするデータ暗号化方法。
【０２００】
（付記８）前記データ暗号化工程は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする付記７に記載のデータ暗号化方法。
【０２０１】
（付記９）第二の装置から第一の装置に対して転送される暗号化データを復号化するデータ復号化方法であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得工程と、
前記転送情報取得工程により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化工程と、
前記データ復号化工程により第二のデータサイズ単位で復号化されたデータを前記第一の装置に対して転送するデータ転送工程と、
を含んだことを特徴とするデータ復号化方法。
【０２０２】
（付記１０）前記データ復号化工程は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする付記９に記載のデータ復号化方法。
【０２０３】
（付記１１）ホスト装置から記憶装置に対するデータの転送を制御するデータ転送制御装置であって、
データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送されるデータを蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により第二のデータサイズ単位で暗号化されたデータを前記記憶装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ転送制御装置。
【０２０４】
（付記１２）前記データ暗号化手段は、前記蓄積したデータを暗号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送されるデータと結合して蓄積し、蓄積したデータを第二のデータサイズ単位で暗号化することを特徴とする付記１１に記載のデータ転送制御装置。
【０２０５】
（付記１３）記憶装置からホスト装置に対する暗号化データの転送を制御するデータ転送制御装置であって、
暗号化データが転送されるチャネルを識別する転送チャネル識別情報を取得する転送情報取得手段と、
前記転送情報取得手段により取得された転送チャネル識別情報に基づいて、同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データを蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により第二のデータサイズ単位で復号化されたデータを前記ホスト装置に対して転送するデータ転送手段と、
を備えたことを特徴とするデータ転送制御装置。
【０２０６】
（付記１４）前記データ復号化手段は、前記蓄積した暗号化データを復号化する際に、前記第二のデータサイズに満たない残余データが生じた場合には、当該残余データを、さらに同一のチャネルを用いて第一のデータサイズ単位で転送される暗号化データと結合して蓄積し、蓄積した暗号化データを第二のデータサイズ単位で復号化することを特徴とする付記１３に記載のデータ転送制御装置。
【産業上の利用可能性】
【０２０７】
以上のように、本発明に係るデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ転送制御装置は、ディスク制御装置などのデータ転送制御装置において、装置内のデバイス間で転送されるデータの暗号化および復号化する場合に有用であり、特に、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合に適している。
【図面の簡単な説明】
【０２０８】
【図１】本実施例に係るＲＡＩＤコントローラの概念を説明するための説明図である。
【図２】本実施例に係るＲＡＩＤコントローラの構成を示す機能ブロック図である。
【図３】ＴＬＰのヘッダのフォーマットを示す図である。
【図４】ディスクリプタ１のフォーマットを示す図である。
【図５】ディスクリプタ２のフォーマットを示す図である。
【図６】ディスクリプタ読み出し要求パケットのアドレス情報を示す図である。
【図７】データ読み出し要求パケットのアドレス情報を示す図である。
【図８】読み出し要求パケットのヘッダのフォーマットを示す図である。
【図９】読み出し応答パケットのヘッダのフォーマットを示す図である。
【図１０】ライト動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（１）である。
【図１１】ライト動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（２）である。
【図１２】ライト動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（３）である。
【図１３】ライト動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（４）である。
【図１４】リード動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（１）である。
【図１５】リード動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（２）である。
【図１６】リード動作におけるＲＡＩＤコントローラの処理手順を示すシーケンス図（３）である。
【図１７】従来のＲＡＩＤシステムの一例を示す図である。
【図１８】暗号処理チップを用いた場合のＲＡＩＤコントローラを示す図である。
【符号の説明】
【０２０９】
１０，１００    ＲＡＩＤコントローラ
１１，１１０    ホストインタフェース制御部
１２，１２０    メインメモリ
１３，１３０    メモリ制御部
１４，１４０    ＣＰＵ
１５，１５０    暗号処理部
１６，１６０    ディスクインタフェース制御部
１６１    アービター
１６２1〜１６２n    ＤＭＡチャネル
２０，２００    ホスト装置
３０，３００    ディスク装置
３１０1〜３１０n    ディスク
【図１】
2008197578.tif 000003
【図２】
2008197578.tif 000004
【図３】
2008197578.tif 000005
【図４】
2008197578.tif 000006
【図５】
2008197578.tif 000007
【図６】
2008197578.tif 000008
【図７】
2008197578.tif 000009
【図８】
2008197578.tif 000010
【図９】
2008197578.tif 000011
【図１０】
2008197578.tif 000012
【図１１】
2008197578.tif 000013
【図１２】
2008197578.tif 000014
【図１３】
2008197578.tif 000015
【図１４】
2008197578.tif 000016
【図１５】
2008197578.tif 000017
【図１６】
2008197578.tif 000018
【図１７】
2008197578.tif 000019
【図１８】
2008197578.tif 000020