(57)【要約】【課題】データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化および復号化を行う。【解決手段】受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求パケットをディスク装置から受信した場合に、第一の受信可能サイズ以上であり、かつ、暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求をＲＡＩＤコントローラに対して送信し、送信したデータ転送要求に対する応答としてＲＡＩＤコントローラから送信される第二の受信可能サイズのデータを受信し、受信したデータを暗号化データサイズ単位で暗号化し、暗号化したデータを第一の受信可能サイズ単位でディスク装置に対して送信する。【選択図】        図１
2008199542.tif 000002
【特許請求の範囲】
【請求項１】
第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化装置であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、
前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ暗号化装置。
【請求項２】
前記データ暗号化手段は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする請求項１に記載のデータ暗号化装置。
【請求項３】
前記第一の装置から送信されるデータには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ暗号化手段は、前記残余データを、前記第一の装置から後続してさらに送信されるデータと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする請求項２に記載のデータ暗号化装置。
【請求項４】
前記第一の装置から送信されるデータには、データの種類を示すデータ種別情報が含まれており、
前記データ暗号化手段は、前記第一の装置から応答されるデータを暗号化する際に、前記データ種別情報に基づいて、当該データを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする請求項１、２または３に記載のデータ暗号化装置。
【請求項５】
第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化装置であって、
前記第二の装置から送信される暗号化データを受信するデータ受信手段と、
前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ復号化装置。
【請求項６】
前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ復号化手段は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする請求項５に記載のデータ復号化装置。
【請求項７】
第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化方法であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信工程と、
前記転送要求送信工程により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化工程と、
前記データ暗号化工程により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化工程により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信工程と、
を含んだことを特徴とするデータ暗号化方法。
【請求項８】
第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化方法であって、
前記第二の装置から送信される暗号化データを受信するデータ受信工程と、
前記データ受信工程により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化工程と、
前記データ復号化工程により復号化されたデータを前記第一の装置に対して送信するデータ送信工程と、
を含んだことを特徴とするデータ復号化方法。
【請求項９】
第一の装置から第二の装置に対して転送されるデータを中継するとともに、当該データを所定の暗号化データサイズ単位で暗号化するデータ中継装置であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、
前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ中継装置。
【請求項１０】
第二の装置から第一の装置に対して転送される暗号化データを中継するとともに、当該暗号化データを所定の復号化データサイズ単位で復号化するデータ中継装置であって、
前記第二の装置から送信される暗号化データを受信するデータ受信手段と、
前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、第一の装置と第二の装置との間で転送されるデータの暗号化および復号化を行うデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置に関し、特に、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化および復号化を行うことができるデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置に関するものである。
【背景技術】
【０００２】
従来、磁気ディスク装置や光ディスク装置などの記憶装置では、盗難や不正アクセスによる情報漏洩を防ぐことを目的とし、記憶媒体（磁気ディスクや光ディスクなど）にデータを記録する際や、ホストコンピュータなどの上位装置との間でデータを送受信する際に、当該データを暗号化することが行われている（例えば、特許文献１および２を参照）。
【０００３】
例えば、記憶媒体として複数のディスクを備えたディスク装置と、ディスク装置に対するデータの読み出しや書き込みを要求する上位装置と、上位装置からの要求に基づいてディスク装置に対するデータの入出力を制御するＲＡＩＤコントローラ（ディスク制御装置）とから構成される一般的なＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムについて考える。
【０００４】
図１１は、従来のＲＡＩＤシステムの一例を示す図である。同図に示すように、このＲＡＩＤシステムは、ＲＡＩＤコントローラ１０と、上位装置であるホスト装置２０と、ディスク装置３０とから構成されており、ＲＡＩＤコントローラ１０は、ホスト装置２０とディスク装置３０との間に接続される。
【０００５】
このうち、ＲＡＩＤコントローラ１０は、同図に示すように、ホストインタフェース制御部１１と、メインメモリ１２と、メモリ制御部１３と、ＣＰＵ（Central Processing Unit）１４と、ディスクインタフェース制御部１５とを有する。
【０００６】
各機能部について簡単に説明すると、ホストインタフェース制御部１１は、ホスト装置２０との間でやり取りされるデータ転送を制御する制御部であり、メインメモリ１２は、キャッシュとして利用するためのキャッシュ領域などを有するメモリである。
【０００７】
また、メモリ制御部１３は、メインメモリ１２に対するデータの読み出しおよび書き込みを制御する制御部であり、ＣＰＵ１４は、ＲＡＩＤコントローラ１０を全体制御するファームウェアを実行する中央処理装置であり、ディスクインタフェース制御部１５は、ディスク装置３０との間で行われるデータ転送を制御する制御部である。
【０００８】
ここで、さらに同図を用いて、かかるＲＡＩＤコントローラ１０の動作について簡単に説明しておく。なお、以下では、ホスト装置２０からライト要求を受信した際の動作（以下、「ライト動作」と呼ぶ）と、ホスト装置２０からリード要求を受信した際の動作（以下、「リード動作」と呼ぶ）について、それぞれ説明する。
【０００９】
まず、ライト動作では、同図（ａ）に示すように、ホスト装置２０からライト要求が送信されると（同図に示す（１））、ホストインタフェース制御部１１が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（２））。そして、ディスクインタフェース制御部１５が、メモリ制御部１３を介してキャッシュ領域からデータを読み出し（同図に示す（３））、読み出したデータをディスク装置３０に対して転送する（同図に示す（４））。
【００１０】
一方、リード動作では、同図（ｂ）に示すように、ホスト装置２０からリード要求が送信されると（同図に示す（１））、ディスクインタフェース制御部１５が、当該リード要求で要求されたデータをディスク装置３０から読み出し（同図に示す（２））、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する（同図に示す（３））。そして、ホストインタフェース制御部１１が、メモリ制御部１３を介してキャッシュ領域からデータを読み出し（同図に示す（４））、読み出したデータをホスト装置２０に対して転送する（同図に示す（５））。
【００１１】
このようなＲＡＩＤシステムにおいて、ディスク装置３０に記憶されるデータに対する暗号処理（暗号化および復号化）を行う場合には、かかる暗号処理は、ＲＡＩＤコントローラ１０によって行われるのが一般的である。
【００１２】
その場合、暗号処理は、ホスト装置２０とメインメモリ１２との間でデータが転送される間で行う場合と、メインメモリ１２とディスク装置３０との間でデータが転送される間で行う場合とが考えられる。
【００１３】
しかし、ホスト装置２０とメインメモリ１２との間でデータが転送される間で行う場合には、メインメモリ１２に格納されるデータは全て暗号化されることになり、ファームウェアによって、メインメモリ１２に格納されているデータの参照を要する処理が行われるような場合には、参照のたびにデータの復号化が必要になり、効率が悪い。
【００１４】
そのため、ＲＡＩＤコントローラ１０がディスク装置３０に記憶されるデータに対する暗号処理を行う場合には、メインメモリ１２とディスク装置３０との間でデータが転送される途中で行うのが現実的である。
【００１５】
かかる暗号処理は、一般的には、ファームウェアに暗号処理の手順を組み込むことによって実現される。以下に、ファームウェアによる一般的な暗号処理について簡単に説明する。
【００１６】
まず、ライト動作では、ホスト装置２０からライト要求が送信されると、ホストインタフェース制御部１１が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する。ここで、ファームウェアが、メモリ制御部１３を制御してキャッシュ領域からデータを順次読み出して暗号化し、暗号化したデータを、メインメモリ１２のキャッシュ領域とは異なる退避領域に退避する。そして、ディスクインタフェース制御部１５が、メモリ制御部１３を介して、暗号化済みのデータを退避領域から読み出し、読み出したデータをディスク装置３０に対して転送する。
【００１７】
一方、リード動作では、ホスト装置２０からリード要求が送信されると、ディスクインタフェース制御部１５が、当該リード要求で要求されたデータをディスク装置３０から読み出し、メモリ制御部１３に引き渡す。メモリ制御部１３は、受け取ったデータを順次メインメモリ１２のキャッシュ領域に格納する。ここで、ファームウェアが、メモリ制御部１３を制御してキャッシュ領域に格納されたデータを順次読み出して復号化し、復号化したデータを、メインメモリ１２のキャッシュ領域とは異なる退避領域に退避する。そして、ホストインタフェース制御部１１が、メモリ制御部１３を介して、復号化済みのデータを退避領域から読み出し、読み出したデータをホスト装置２０に対して転送する。
【００１８】
このように、ファームウェアがメインメモリ１２とディスク装置３０との間で転送されるデータに対して暗号処理を行うことによって、ディスク装置３０に記憶されるデータを暗号化することができる。
【００１９】
しかし、ファームウェアに暗号処理を行わせるためには、上述したように、暗号処理を行う前後でデータを一時的に退避するための退避領域が必要になり、ＲＡＩＤコントローラ１０に実装すべきメモリ（メインメモリまたは他のメモリ）の容量が増大するという問題がある。メモリ容量の増大は、ＲＡＩＤコントローラ１０のコスト増にもつながる。
【００２０】
さらに、この場合には、ディスク装置に対するデータの入出力が発生するたびに必ずファームウェアによる暗号処理ステップが行われることになり、データの入出力におけるレスポンスタイムが増加するという問題もある。さらに、ファームウェアが暗号処理を行うことによって、ＲＡＩＤコントローラ１０のＣＰＵにかかる負荷が増大し、その結果としてディスク制御装置のビジー率が高くなり、また、上述の暗号処理に伴うメインメモリバス使用も発生するため、結果的にＲＡＩＤシステム全体の性能が低下するという問題もある。
【００２１】
そこで、ここでは、ＲＡＩＤコントローラ１０において、ファームウェアに暗号処理を行わせるのではなく、集積回路などのハードウェアで暗号化および復号化の機能を実現した暗号処理チップを用いて、ディスク装置３０に記憶されるデータに対する暗号処理を行うことを前提とする。
【００２２】
その場合、例えば、ＲＡＩＤコントローラ１０とディスク装置３０との間に、暗号処理チップを備えたデータ中継装置を接続し、このデータ中継装置が、ＲＡＩＤコントローラ１０からディスク装置３０に対して転送されるデータの暗号化、および、ディスク装置３０からＲＡＩＤコントローラ１０に対して転送されるデータの復号化を行う。
【００２３】
これにより、ＲＡＩＤコントローラ１０において、前述した退避領域が不要になるため、ファームウェアで暗号処理を行う場合に生じるコスト増や処理低下の問題は解決される。
【００２４】
【特許文献１】特開２００３−２７１４６０号公報
【特許文献２】特開２００６−４１６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、データ中継装置が暗号処理を行う場合には、ＲＡＩＤコントローラとディスク装置とを接続するインタフェースの種類、および、暗号処理チップに用いられた暗号処理方式の種類によっては、データ転送が不可能になる場合があるという問題がある。以下、この問題について具体的に説明する。
【００２６】
例えば、ＲＡＩＤコントローラとディスク装置とを接続するインタフェースが、ＦＣ（Fibre Channel）またはＳＡＳ（Serial Attached SCSI）であった場合を考える。ＦＣやＳＡＳでは、データは４バイト（３２ビット）の倍数となるサイズの単位で転送され、かかるデータの転送は、ＳＣＳＩ（Small Computer system Interface）で規定されたプロトコルを用いて行われる。
【００２７】
まず、ＳＣＳＩによるデータ転送について説明しておく。ＳＣＳＩでは、データ転送を要求する側をイニシエータと呼び、データを提供する側をターゲットと呼ぶ。
【００２８】
例えば、イニシエータからターゲットに対してデータを転送する場合について説明する。図１２は、ＳＣＳＩによるデータ転送を説明するための説明図である。この場合、同図に示すように、まず、イニシエータが、書き込みコマンドを設定した書き込みコマンドパケットをターゲットに対して送信する（同図に示す（１））。
【００２９】
ターゲットは、書き込みコマンドパケットを受信すると、受信可能サイズを設定したデータ転送要求パケットをイニシエータに対して応答し、イニシエータは、当該受信可能サイズに基づいて、書き込み対象のデータを設定したデータパケットをターゲットに対して送信する。
【００３０】
なお、ＳＣＳＩでは、ひとつのデータ転送要求パケットに設定できる受信可能サイズや、ひとつのデータパケットに設定できるデータのサイズには上限値が決められている。そのため、転送対象のデータのサイズが大きい場合には、当該データは、上限値に基づいて複数のデータ転送要求パケットまたは複数のデータパケットに分割されて転送される。
【００３１】
例えば、同図に示すように、ターゲットが、まず、受信可能サイズをＡとしたデータ転送要求パケットをイニシエータに対して応答し（同図に示す（２））、これに対して、イニシエータが、データサイズがＢバイトであるデータ１を設定したデータパケットと、データサイズがＣバイトであるデータ２を設定したデータパケットとをそれぞれターゲットに対して送信したとする（同図に示す（３）および（４））。なお、ここでは、Ｃ＝Ａ−Ｂであるとする。
【００３２】
ターゲットは、データパケットを受信するごとに、受信済データのサイズを累計し、送信したデータ転送要求パケットに設定した受信可能サイズ分のデータがイニシエータから送信された場合には、次のデータ転送要求パケットをイニシエータに対して送信する。
【００３３】
例えば、同図に示すように、ターゲットは、データ１が設定されたデータパケットと、データ２が設定されたデータパケットとをイニシエータからそれぞれ受信すると、受信済データのサイズがＢ＋Ｃ＝Ａバイトとなったため、次のデータ転送要求パケットをイニシエータに対して送信する（同図に示す（５））。
【００３４】
このように、ＳＣＳＩでは、ターゲットは、送信したデータ転送要求パケットに設定した受信可能サイズ分のデータがイニシエータから送信されるまでは、次のデータ転送要求パケットを送信しない。
【００３５】
このようなＳＣＳＩの特性をふまえたうえで、前述したデータ中継装置による暗号処理に係る問題について、具体的に説明する。図１３は、データ中継装置による暗号処理に係る問題を説明するための説明図である。
【００３６】
例えば、同図に示すように、ＦＣにより接続されたＲＡＩＤコントローラとディスク装置との間にＦＣスイッチを接続し、このＦＣスイッチが、ＡＥＳ（Advanced Encryption Standard）暗号方式による暗号処理を行うとする。この場合、ＲＡＩＤコントローラがイニシエータとなり、ディスク装置がターゲットとなる。
【００３７】
ここでは、ＲＡＩＤコントローラからディスク装置に対してデータを転送するライト動作について説明する。同図に示すように、ライト動作では、まず、ＲＡＩＤコントローラが、ＦＣスイッチを経由し、ディスク装置に対して書き込みコマンドパケットを送信する（同図に示す（１））。
【００３８】
ここで、書き込みコマンドパケットを受信したディスク装置が、受信可能サイズを１６×Ａ＋ａバイト（Ａ，ａは０以上の整数）としたデータ転送要求パケットを、ＦＣスイッチを経由し、ＲＡＩＤコントローラに対して応答したとする（同図に示す（２））。なお、ここでは、ａ＜１６であるとする。
【００３９】
そして、データ転送要求パケットを受信したＲＡＩＤコントローラが、まず、データサイズが１６×Ｂバイト（Ｂは０以上の整数）であるデータ１を設定したデータパケットを、ＦＣスイッチに送信したとする（同図に示す（３））。
【００４０】
ＦＣスイッチは、データパケットを受信すると、そのデータパケットに設定されているデータ１を、ＡＥＳ暗号方式で暗号化する。ＡＥＳ暗号方式では、１６バイト（１２８ビット）単位でデータが暗号化される。そのため、この場合、ＦＣスイッチは、データ１を全て暗号化することができ、暗号化したデータ１を設定したデータパケットをディスク装置に対して送信する（同図に示す（４））。
【００４１】
ディスク装置は、ＦＣスイッチから送信されたデータパケットを受信し、受信したデータパケットに設定されているデータ１を、記憶媒体であるディスクに書き込む。この時、ディスク装置における受信済データの累計サイズは、１６×Ｂバイトとなる。
【００４２】
続いて、ＲＡＩＤコントローラが、データサイズが１６×Ｃ＋ａバイト（Ｃ，ａは０以上の整数）であるデータ２を設定したデータパケットをＦＣスイッチに送信したとする（同図に示す（５））。なお、ここでは、Ｃ＝Ａ−Ｂであるとする。
【００４３】
この場合、ＦＣスイッチは、受信したデータパケットに設定されたデータ２の一部である１６×Ｃバイトのデータのみを暗号化する。その結果、１６バイト未満であるａバイトのデータが、暗号化されずに残る。そして、ここでＦＣスイッチが行う処理としては、全てのデータが暗号化できなかったためディスク装置に対して何も送信しないか（同図に示す（６））、または、暗号化した１６×Ｃバイトのデータのみを設定したデータパケットをディスク装置に対して送信するか（同図に示す（７））のいずれが考えられる。
【００４４】
しかし、いずれの場合でも、ディスク装置は、受信済データの累計サイズが、データ転送要求パケットに設定した受信可能サイズである１６×Ａ＋ａバイトにはならないため、次のデータ転送要求パケットを送信することはできない（同図に示す（８））。
【００４５】
このように、ＦＣやＳＡＳによってデータ転送が行われる場合には、データ転送の単位となるデータサイズと、暗号処理の単位となるデータサイズが異なる場合、ＲＡＩＤコントローラがディスク装置に対して転送すべきデータを全て転送する前に、データ転送が中断されてしまうことになる。
【００４６】
そのため、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、いかにして、データ転送を中断させることなく暗号化および復号化を行うかが極めて重要な課題となっている。
【００４７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化および復号化を行うことができるデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置を提供することを目的とする。
【課題を解決するための手段】
【００４８】
上述した課題を解決し、目的を達成するため、本発明は、第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化装置であって、前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、を備えたことを特徴とする。
【００４９】
また、本発明は、上記の発明において、前記データ暗号化手段は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする。
【００５０】
また、本発明は、上記の発明において、前記第一の装置から送信されるデータには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、前記データ暗号化手段は、前記残余データを、前記第一の装置から後続してさらに送信されるデータと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする。
【００５１】
また、本発明は、上記の発明において、前記第一の装置から送信されるデータには、データの種類を示すデータ種別情報が含まれており、前記データ暗号化手段は、前記第一の装置から応答されるデータを暗号化する際に、前記データ種別情報に基づいて、当該データを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする。
【００５２】
また、本発明は、第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化装置であって、前記第二の装置から送信される暗号化データを受信するデータ受信手段と、前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、を備えたことを特徴とする。
【００５３】
また、本発明は、上記の発明において、前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、前記データ復号化手段は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする。
【００５４】
また、本発明は、上記の発明において、前記第二の装置から送信される暗号化データには、データの種類を示すデータ種別情報が含まれており、前記データ復号化手段は、前記第二の装置から送信される暗号化データを復号化する際に、前記データ種別情報に基づいて、当該暗号化データを復号化するか否かを判定し、復号化すると判定した場合に、当該暗号化データを復号化することを特徴とする。
【００５５】
また、本発明は、第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化方法であって、前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信工程と、前記転送要求送信工程により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化工程と、前記データ暗号化工程により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化工程により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信工程と、を含んだことを特徴とする。
【００５６】
また、本発明は、上記の発明において、前記データ暗号化工程は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする。
【００５７】
また、本発明は、第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化方法であって、前記第二の装置から送信される暗号化データを受信するデータ受信工程と、前記データ受信工程により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化工程と、前記データ復号化工程により復号化されたデータを前記第一の装置に対して送信するデータ送信工程と、を含んだことを特徴とする。
【００５８】
また、本発明は、上記の発明において、前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、前記データ復号化工程は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする。
【００５９】
また、本発明は、第一の装置から第二の装置に対して転送されるデータを中継するとともに、当該データを所定の暗号化データサイズ単位で暗号化するデータ中継装置であって、前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、を備えたことを特徴とする。
【００６０】
また、本発明は、上記の発明において、前記データ暗号化手段は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする。
【００６１】
また、本発明は、第二の装置から第一の装置に対して転送される暗号化データを中継するとともに、当該暗号化データを所定の復号化データサイズ単位で復号化するデータ中継装置であって、前記第二の装置から送信される暗号化データを受信するデータ受信手段と、前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、を備えたことを特徴とする。
【００６２】
また、本発明は、上記の発明において、前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、前記データ復号化手段は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする。
【発明の効果】
【００６３】
本発明によれば、受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、第一の受信可能サイズ以上であり、かつ、暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信し、送信したデータ転送要求に対する応答として第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを暗号化データサイズ単位で暗号化し、暗号化したデータを第一の受信可能サイズ単位で第二の装置に対して送信し、送信時に第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、後続してさらに暗号化されるデータと結合し、結合したデータを第二の装置に対して送信するので、データ転送要求で指定された第一の受信可能サイズ分のデータが、第二の装置に対して送信されることになり、第二の装置が、次のデータ転送を送信することが可能になる。すなわち、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化を行うことができるという効果を奏する。
【００６４】
また、本発明によれば、第一の装置から送信されるデータを暗号化した際に、暗号化データサイズに満たない残余データが生じた場合には、当該残余データを第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、暗号化データサイズ単位で暗号化するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、転送される全てのデータに対して、データ転送を中断させることなく暗号化を行うことができるという効果を奏する。
【００６５】
また、本発明によれば、第一の装置から送信されるデータには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、残余データを、第一の装置から後続してさらに送信されるデータと結合する場合に、入出力識別情報に基づいて結合するので、複数の連続するデータが並列に転送されるような場合でも、それぞれのデータごとに暗号化を行うことができるという効果を奏する。
【００６６】
また、本発明によれば、第一の装置から送信されるデータには、データの種類を示すデータ種別情報が含まれており、第一の装置から応答されるデータを暗号化する際に、データ種別情報に基づいて、当該データを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化するので、制御用のデータは暗号化せずに、ユーザデータのみを暗号化するなど、暗号化する必要があるデータと、暗号化する必要がないデータとを振り分けることができるという効果を奏する。
【００６７】
また、本発明によれば、第二の装置から送信される暗号化データを受信し、暗号化データを受信した場合に、当該暗号化データを復号化データサイズ単位で復号化し、復号化した際に、復号化データサイズに満たない残余データが生じた場合には、当該残余データを、第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを復号化データサイズ単位で復号化し、復号化したデータを第一の装置に対して送信するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、転送される全てのデータに対して、データ転送を中断させることなく復号化を行うことができるという効果を奏する。
【００６８】
また、本発明によれば、第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、残余データを、第二の装置から後続してさらに送信される暗号化データと結合する場合に、入出力識別情報に基づいて結合するので、複数の連続するデータが並列に転送されるような場合でも、それぞれのデータごとに復号化を行うことができるという効果を奏する。
【００６９】
また、本発明によれば、第二の装置から送信される暗号化データには、データの種類を示すデータ種別情報が含まれており、第二の装置から送信される暗号化データを復号化する際に、データ種別情報に基づいて、当該暗号化データを復号化するか否かを判定し、復号化すると判定した場合に、暗号化データを復号化するので、制御用のデータは復号化せずに、ユーザデータのみを復号化するなど、復号化する必要があるデータと、復号化する必要がないデータとを振り分けることができるという効果を奏する。
【発明を実施するための最良の形態】
【００７０】
以下に添付図面を参照して、この発明に係るデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置の好適な実施例を詳細に説明する。なお、本実施例では、ＦＣスイッチに本発明を適用した場合について説明する。
【実施例】
【００７１】
まず、本実施例に係るＦＣスイッチの概念について説明する。図１および２は、本実施例に係るＦＣスイッチの概念を説明するための説明図（１）および（２）である。このうち、図１は、図１３で説明したＦＣスイッチに本発明を適用した場合を示している。
【００７２】
図１および２に示すように、本実施例に係るＦＣスイッチは、ＲＡＩＤコントローラとディスク装置との間でやり取りされるデータを中継するとともに、当該データを暗号化および復号化する装置であって、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化および復号化を行うことができる点に主な特徴がある。
【００７３】
この特徴について具体的に説明すると、まず、ライト動作では、図１の（１）〜（６）に示すように、ＲＡＩＤコントローラが書き込みコマンドパケットを送信してから、ディスク装置がデータ転送要求パケットを送信し、これに応じて、ＲＡＩＤコントローラが、データ１を設定したデータパケット、および、データ２を設定したデータパケットをディスク装置に対して送信するまでは、図１３の（１）〜（５）に示した手順と同じであるが、まず、ＦＣスイッチが、ディスク装置から送信されたデータ転送要求パケットに対して新たな受信可能サイズを設定したうえで、当該データ転送要求パケットをＲＡＩＤコントローラに対して送信する点が異なる。
【００７４】
ここでは、ＦＣスイッチは、ディスク装置から送信されたデータ転送要求パケットに対して、当該データ転送要求パケットに設定されていた受信可能サイズ以上であり、かつ、ＡＥＳ暗号方式の処理単位となるデータサイズの倍数、すなわち、１６バイトの倍数となる新たな受信可能サイズを設定したうえで、当該データ転送要求パケットをＲＡＩＤコントローラに対して送信する。
【００７５】
例えば、ＦＣスイッチは、受信可能サイズを１６×Ａ＋ａとしたデータ転送要求パケットが送信されると、当該データ転送要求に対して、１６×Ａ＋１６バイトを新たな受信可能サイズとして設定する（図１に示す（３））。
【００７６】
これにより、ＲＡＩＤコントローラからＦＣスイッチに送信されるデータのサイズは１６バイトの倍数になるため、ＦＣスイッチが、当該データをＡＥＳ暗号方式で暗号化する際に、１６バイト未満のデータを残すことなく、完全にデータを暗号化することが可能になる。
【００７７】
例えば、データ転送要求パケットに設定された受信可能サイズが１６×Ａ＋１６バイトに増えたことによって、ＲＡＩＤコントローラは、ｘ＝１６−ａとした場合に、サイズが１６×Ｃ＋ａ＋ｘバイトであるデータ２を設定したデータパケットをＦＣスイッチに対して送信する（図１に示す（６））。ここで、ａ＋ｘ＝１６であるので、データ２のサイズは１６バイトの倍数となる。
【００７８】
そして、ＦＣスイッチは、データ２を全て暗号化し、暗号化したデータのうち１６×Ｃ＋ａバイト分のデータを設定したデータパケットをディスク装置に対して送信し、ｘバイト分のデータを内部メモリに保持する（図１に示す（７））。
【００７９】
ディスク装置は、ＦＣスイッチから送信されたデータパケットに設定されているデータを、記憶媒体であるディスクに書き込む。この時、ディスク装置が受信したデータの累計サイズは、１６×Ｂ＋１６×Ｃ＋ａ＝１６×Ａ＋ａ、すなわち、データ転送要求パケットに設定した受信可能サイズと同じになる。これにより、ディスク装置は、次のデータ転送要求パケットを送信することができる（図１に示す（８））。
【００８０】
その後、ＦＣスイッチは、同図に示した（３）以降と同様の処理を行い、ディスク装置から後続して送信されるデータ転送要求パケットに応じて、ＲＡＩＤコントローラからデータパケットが送信されると（図１に示す（１０））、当該データパケットに設定されているデータを暗号化し、暗号化したデータと、内部メモリに保持した暗号化済みの未転送データ（ｘバイトのデータ）とを結合し、結合したデータを設定したデータパケットをディスク装置に対して送信する（図１に示す（１１））。これ以降は、ディスク装置、ＦＣスイッチおよびＲＡＩＤコントローラは、同図に示した（６）以降と同様の処理を行う。
【００８１】
このように、本実施例に係るＦＣスイッチでは、受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求パケットをディスク装置から受信した場合に、第一の受信可能サイズ以上であり、かつ、暗号化データサイズ（ＡＥＳ暗号方式の処理単位となるデータサイズ）の倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求パケットをＲＡＩＤコントローラに対して送信し、送信したデータ転送要求パケットに対する応答としてＲＡＩＤコントローラから送信される第二の受信可能サイズ分のデータを受信し、受信したデータを暗号化データサイズ単位で暗号化し、暗号化したデータを第一の受信可能サイズ単位でディスク装置に対して送信し、送信時に第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、後続してさらに暗号化されるデータと結合し、結合したデータを含めたデータパケットをディスク装置に対して送信するようにしている。
【００８２】
これにより、データ転送要求で指定された第一の受信可能サイズ分のデータが、ディスク装置に対して送信されることになり、ディスク装置が、次のデータ転送を送信することができる。すなわち、ＦＣやＳＡＳとＡＥＳ暗号方式のように、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化を行うことができる。
【００８３】
一方、ディスク装置からＲＡＩＤコントローラにデータを転送するリード動作では、図２に示すように、まず、ＲＡＩＤコントローラが、ＦＣスイッチを経由し、ディスク装置に対して読み出しコマンドパケットを送信する（同図に示す（１））。
【００８４】
ここで、読み出しコマンドパケットを受信したディスク装置が、まず、データサイズが１６×Ａ＋ａバイト（Ａ，ａは０以上の整数）であるデータ１を設定したデータパケットを、ＦＣスイッチに対して送信したとする（同図に示す（２））。なお、ここでは、ａ＜１６であるとする。
【００８５】
ＦＣスイッチは、データパケットを受信すると、そのデータパケットに設定されているデータを、ＡＥＳ暗号方式で復号化する。ＡＥＳ暗号方式では、１６バイト（１２８ビット）単位でデータが復号化される。そのため、ＦＣスイッチは、受信したデータを１６バイト単位で暗号化し、１６バイトに満たないデータが残った場合には、残ったデータを内部メモリに保持する。
【００８６】
すなわち、ここでは、ＦＣスイッチは、データ１のうち１６×Ａバイトのデータを復号化し、残ったａバイトのデータを内部メモリに保持する。そして、ＦＣスイッチは、復号化したデータをＲＡＩＤコントローラに対して送信する（同図に示す（３））。
【００８７】
ディスク装置は、ＲＡＩＤコントローラからデータパケットを受信すると、当該データパケットに設定されているデータをメインメモリのキャッシュ領域に格納する。この時、ＲＡＩＤコントローラにおける受信済データの累計サイズは、１６×Ａバイトとなる。
【００８８】
続いて、ディスク装置が、データサイズがｎ＋１６×Ｂ＋ｂバイト（ｎ，Ｂ，ｂは０以上の整数）であるデータ２を設定したデータパケットを、ＦＣスイッチに対して送信したとする（同図に示す（４））。なお、ここでは、ｎ＝１６−ａ，ｂ＜１６であるとする。
【００８９】
ＦＣスイッチは、データパケットを受信すると、そのデータパケットに設定されているデータを、ＡＥＳ暗号方式で復号化する。この時、ＦＣスイッチは、受信したデータの先頭に、内部メモリに保持しているデータを結合したうえで復号化を行い、１６バイトに満たない、結合したデータを復号化する。
【００９０】
すなわち、ここでは、ＦＣスイッチは、内部メモリに保持しているａバイトのデータをデータ２の先頭に結合し、結合したデータのうちａ＋ｎ＋１６×Ｂバイトのデータを復号化し、残ったｂバイトのデータを内部メモリに保持する。そして、ＦＣスイッチは、復号化したデータを設定したデータパケットをＲＡＩＤコントローラに対して送信する（同図に示す（５））。
【００９１】
ディスク装置は、ＲＡＩＤコントローラからデータパケットを受信すると、当該データパケットに設定されているデータをメインメモリのキャッシュ領域に格納する。この時、ＲＡＩＤコントローラにおける受信済データの累計サイズは、１６×Ａ＋ａ＋ｎ＋１６×Ｂバイトとなる。
【００９２】
さらに、ディスク装置が、読み出し対象の最終データとして、データサイズがｍ＋１６×Ｃ＋ｃバイト（ｍ，Ｃ，ｃは０以上の整数）であるデータ３を設定したデータパケットを、ＦＣスイッチに対して送信したとする（同図に示す（６））。なお、ここでは、ｍ＝１６−ｂであり、ｃは１６の倍数であるとする。
【００９３】
ＦＣスイッチは、内部メモリに保持しているｂバイトのデータをデータ３の先頭に結合し、結合したデータのうちｂ＋ｍ＋１６×Ｃ＋ｃバイトのデータを復号化する。そして、ＦＣスイッチは、復号化したデータを設定したデータパケットをＲＡＩＤコントローラに対して送信する（同図に示す（７））。
【００９４】
ディスク装置は、ＲＡＩＤコントローラからデータパケットを受信すると、当該データパケットに設定されているデータをメインメモリのキャッシュ領域に格納する。この時、ＲＡＩＤコントローラにおける受信済データの累計サイズは、１６×Ａ＋ａ＋ｎ＋１６×Ｂ＋ｂ＋ｍ＋１６×Ｃ＋ｃバイトとなる。
【００９５】
これにより、ＲＡＩＤコントローラは、ディスク装置から送信された全てのデータ（データ１、データ２およびデータ３）をメインメモリのキャッシュメモリに格納したことになる。
【００９６】
このように、本実施例に係るＦＣスイッチでは、ディスク装置から送信される暗号化データを受信し、暗号化データを受信した場合に、当該暗号化データを復号化データサイズ（ＡＥＳ暗号方式の処理単位となるデータサイズ）単位で復号化し、復号化した際に、復号化データサイズに満たない残余データが生じた場合には、当該残余データを、ディスク装置から後続してさらに送信される暗号化データと結合し、結合したデータを復号化データサイズ単位で復号化し、復号化したデータをＲＡＩＤコントローラに対して送信するようにしている。
【００９７】
これにより、ＦＣやＳＡＳとＡＥＳ暗号方式のように、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、転送される全てのデータに対して、データ転送を中断させることなく復号化を行うことができる。
【００９８】
次に、本実施例に係るＦＣスイッチを用いたＲＡＩＤシステムについて説明する。図３は、本実施例に係るＲＡＩＤシステムの構成を示す機能ブロック図である。同図に示すように、このＲＡＩＤシステムは、各種データを記憶するディスク装置３００と、ディスク装置３００に対するデータのライトやリードを要求するホスト装置２００との間に、ＦＣを介して、ＲＡＩＤコントローラ１００と、ＦＣスイッチ４００とがそれぞれ接続されて構成される。
【００９９】
ＲＡＩＤコントローラ１００は、ホスト装置２００からの指示に応じて、ディスク装置３００へのデータの入出力を制御する装置であり、ホスト装置２００との間でやり取りされるデータ転送を制御するホストインタフェース制御部１１０と、キャッシュとして利用するためのキャッシュ領域などを有するメインメモリ１２０と、メインメモリ１２０に対するデータの読み出しおよび書き込みを制御するメモリ制御部１３０と、ＲＡＩＤコントローラ１００を全体制御するファームウェアを実行するＣＰＵ１４０と、ディスク装置３００との間で行われるデータ転送を制御するディスクインタフェース制御部１５０とを有する。
【０１００】
ＦＣスイッチ４００は、ＲＡＩＤコントローラ１００とディスク装置３００との間で転送されるデータを中継するとともに、当該データを暗号化および復号化する装置であり、ＡＥＳ暗号方式を用いた暗号処理チップを備えた暗号処理部４３０を有する。
【０１０１】
かかるＲＡＩＤシステムの動作について簡単に説明すると、ライト動作では、同図（ａ）に示すように、ホスト装置２００からライト要求が送信されると（同図に示す（１））、ＲＡＩＤコントローラ１００において、ホストインタフェース制御部１１０が、当該ライト要求とともに送信されるデータを受信し、メモリ制御部１３０に引き渡す。メモリ制御部１３０は、受け取ったデータを順次メインメモリ１２０のキャッシュ領域に格納する（同図に示す（２））。
【０１０２】
そして、ディスクインタフェース制御部１５０が、メモリ制御部１３０を介してキャッシュ領域から順次データを読み出し（同図に示す（３））、読み出したデータを、ＦＣスイッチ４００に対して送信する（同図に示す（４））。そして、ＦＣスイッチ４００において、暗号処理部４３０が、受信したデータを暗号化し、ディスク装置３００に対して送信する（同図に示す（５））。ディスク装置３００は、暗号処理部４３０から送信されたデータを、記憶媒体であるディスクに書き込む。
【０１０３】
一方、リード動作では、同図（ｂ）に示すように、ホスト装置２００からリード要求が送信されると（同図に示す（１））、ディスク装置３００が、要求されたデータをディスクから読み出し、ＦＣスイッチに対して送信する（同図に示す（２））。ＦＣスイッチ４００は、ディスク装置３００からデータが送信されると、暗号処理部４３０が、当該データを復号化し、ＲＡＩＤコントローラ１００に対して送信する。
【０１０４】
ＲＡＩＤコントローラ１００では、ディスクインタフェース制御部１５０が、暗号処理部４３０から送信されたデータを受信し（同図に示す（３））、受信したデータを、メモリ制御部１３０を介して順次メインメモリ１２０のキャッシュ領域に格納する（同図に示す（４））。そして、ホストインタフェース制御部１１０が、メモリ制御部１３０を介して、復号化済みのデータをキャッシュ領域から読み出し（同図に示す（５））、読み出したデータをホスト装置２００に対して転送する（同図に示す（６））。
【０１０５】
ここで、図３に示したＦＣスイッチ４００の構成について、さらに詳細に説明する。図４は、本実施例に係るＦＣスイッチ４００の構成を示す機能ブロック図である。同図に示すように、ＦＣスイッチ４００は、ＲＡＩＤコントローラ１００とディスク装置３００との間にＦＣを介して接続される。
【０１０６】
まず、ＲＡＩＤコントローラ１００について説明する。このＲＡＩＤコントローラ１００は、ホスト装置２００からの要求に基づいて、ＳＣＳＩで規定されたプロトコルを用いてデータ転送を行う。
【０１０７】
具体的には、ＲＡＩＤコントローラ１００は、ホスト装置２００からライト要求が送信されると、ＦＣスイッチ４００に対して書き込みコマンドパケットを送信し、書き込みコマンドパケットに応じて送信されるデータ転送要求パケットがＦＣスイッチ４００から送信されると、当該データ転送要求パケットに基づいて、メインメモリ１２０のキャッシュ領域から読み出し、読み出したデータを設定したデータパケットをＦＣスイッチ４００に対して送信する。
【０１０８】
一方、ＲＡＩＤコントローラ１００は、ホスト装置２００からリード要求が送信されると、ＦＣスイッチ４００に対して読み出しコマンドパケットを送信し、読み出しコマンドで要求したデータが設定されたデータパケットがＦＣスイッチ４００から送信されると、当該データをメインメモリ１２０のキャッシュ領域に格納する。
【０１０９】
続いて、ディスク装置３００について説明する。このディスク装置３００は、ＲＡＩＤコントローラ１００から送信される各種コマンドパケットに基づいて、ＳＣＳＩで規定されたプロトコルを用いてデータ転送を行う。
【０１１０】
具体的には、ディスク装置３００は、ＦＣスイッチ４００から書き込みコマンドが送信されると、ディスク３１０1〜３１０nの空き容量などを確認し、受信可能なデータのサイズを示す受信可能サイズを含んだデータ転送要求パケットをＦＣスイッチ４００に対して送信する。
【０１１１】
一方、ディスク装置３００は、ＦＣスイッチ４００から読み出しコマンドパケットが送信されると、当該読み出しコマンドに基づいてディスク３１０1〜３１０nからデータを読み出し、読み出したデータをＦＣスイッチ４００に対して送信する。
【０１１２】
続いて、ＦＣスイッチ４００について説明する。このＦＣスイッチ４００は、ＦＣを介して通信を行う装置の間で、データの中継や通信経路の制御などを行う機能を備えた一般的なスイッチであり、特に本発明に関連する機能部としては、コントローラインタフェース制御部４１０と、ディスクインタフェース制御部４２０と、暗号処理部４３０とを有する。
【０１１３】
コントローラインタフェース制御部４１０は、ＲＡＩＤコントローラ１００との間で、ＦＣを介してやり取りされるデータの送受信を制御する処理部である。例えば、コントローラインタフェース制御部４１０は、書き込みコマンドパケットや読み出しコマンドパケット、データパケットなどをＲＡＩＤコントローラ１００から受信し、データパケットや、データ転送要求パケットなどをＲＡＩＤコントローラ１００に対して送信する。
【０１１４】
ディスクインタフェース制御部４２０は、ディスク装置３００との間で、ＦＣを介してやり取りされるデータの送受信を制御する処理部である。例えば、ディスクインタフェース制御部４２０は、ＲＡＩＤコントローラ１００から送信された書き込みコマンドパケットや読み出しコマンドパケット、ディスク３１０1〜３１０nに書き込むデータが設定されたデータパケット、データ転送要求パケットなどをディスク装置３００に対して送信し、ディスク３１０1〜３１０nから読み出したデータが設定されたデータパケットなどをディスク装置３００から受信する。
【０１１５】
暗号処理部４３０は、ＡＥＳ暗号方式を用いた暗号処理チップを備え、ＲＡＩＤコントローラ１００とディスク装置３００との間で転送されるデータを暗号化および復号化する処理部である。以下、暗号処理部４３０によって行われる処理について説明するが、ここでは、ライト動作において行われる処理と、リード動作において行われる処理とをそれぞれ説明する。
【０１１６】
まず、ライト動作では、暗号処理部４３０は、ＲＡＩＤコントローラ１００から書き込みコマンドパケットが送信されると、当該書き込みコマンドパケットをディスク装置３００に対して転送する。
【０１１７】
そして、暗号処理部４３０は、転送した書き込みコマンドパケットに応じてディスク装置３００からデータ転送要求パケットが送信されると、当該データ転送要求パケットに含まれている受信可能サイズを参照し、その受信可能サイズ以上であり、かつ、暗号化データサイズ（１６バイト）の倍数となる新たな受信可能サイズを算出する。
【０１１８】
さらに、暗号処理部４３０は、算出した新たな受信可能サイズを、ディスク装置３００から送信されたデータ転送要求パケットに対して設定し、当該データ転送要求パケットをＲＡＩＤコントローラ１００に対して送信する。
【０１１９】
そして、暗号処理部４３０は、送信したデータ転送要求パケットに応じて、ＲＡＩＤコントローラ１００からデータが送信されると、当該データを、ＡＥＳ暗号方式の処理単位となる１６バイト単位で暗号化し、ディスク装置３００に対して送信する。
【０１２０】
ここで、暗号処理部４３０は、暗号化において１６バイトに満たない残余データが生じた場合には、当該データを内部メモリに保持しておく。そして、暗号処理部４３０は、ＲＡＩＤコントローラ１００から後続してデータが送信された場合には、当該データの先頭に、内部メモリに保持しておいたデータを結合し、結合したデータを暗号化する。
【０１２１】
また、暗号処理部４３０は、データを暗号化するたびに、それまでに暗号化したデータのサイズの累計を算出し、算出した累計と、内部メモリに記憶している受信可能サイズとが同じになった場合には、以降のデータはディスク装置３００に送信せずに、内部メモリに保持しておく。
【０１２２】
これにより、データ転送要求パケットで指定した受信可能サイズ分のデータがディスク装置３００に対して送信されるので、ディスク装置は、次のデータ転送要求パケットを、ＦＣスイッチ４００を介し、ＲＡＩＤコントローラ１００に対して送信することができる。
【０１２３】
そして、暗号処理部４３０は、次にディスク装置３００から送信されるデータ転送要求に応じてＲＡＩＤコントローラ１００からデータが送信された場合には、当該データを暗号化したのちに、そのデータの先頭に、内部メモリに保持しておいたデータを結合し、結合したデータをディスク装置３００に対して転送する。
【０１２４】
一方、リード動作では、暗号処理部４３０は、ＲＡＩＤコントローラ１００から読み出しコマンドパケットが送信されると、当該読み出しコマンドパケットをディスク装置３００に対して転送する。
【０１２５】
そして、暗号処理部４３０は、転送した書き込みコマンドパケットに応じてディスク装置３００からデータ転送要求パケットが送信されると、当該データを、ＡＥＳ暗号方式の処理単位となる１６バイト単位で復号化し、ＲＡＩＤコントローラ１００に対して送信する。
【０１２６】
ここで、暗号処理部４３０は、復号化において１６バイトに満たない残余データが生じた場合には、当該データを内部メモリに保持しておく。そして、暗号処理部４３０は、ディスク装置３００から後続してデータが送信された場合には、当該データの先頭に、内部メモリに保持しておいたデータを結合し、結合したデータを復号化する。
【０１２７】
以上、暗号処理部４３０によって行われる処理について、ライト動作において行われる処理と、リード動作において行われる処理とをそれぞれ説明したが、以下では、それぞれの動作において共通して行われる処理について説明する。
【０１２８】
前述したように、ＳＣＳＩでは、転送されるデータのサイズが所定のサイズより大きい場合には、ひとつのコマンドパケットで処理されるデータが複数のパケットに分割されて転送される。そのため、ＲＡＩＤコントローラ１００が複数のコマンドを並列に処理することが可能である場合には、ＦＣスイッチ４００には、異なるコマンドに応じて生成されたパケットが混在して送信されることになる。
【０１２９】
そのため、暗号処理部４３０は、複数送信されるそれぞれのパケットを、同じコマンドに応じて生成されたパケットごとに分類して、暗号処理を行う必要がある。
【０１３０】
ＦＣの場合、データ転送を行う際の単位となるパケットには、データ転送を制御するための制御情報を含んだＦＣフレームヘッダが付加されている。図５は、ＦＣフレームヘッダのフォーマットを示す図である。同図に示すように、ＦＣフレームには各種の制御情報が設定されるが、このうち、「ＯＸ＿ＩＤ」には、同じコマンドに応じて生成されたパケットである場合、同じ値が設定される。
【０１３１】
そこで、暗号処理部４３０は、ＲＡＩＤコントローラ１００から書き込みコマンドパケットまたは読み出しコマンドパケットを受信した際に、当該コマンドに設定されている「ＯＸ＿ＩＤ」を内部メモリに記憶しておき、その後、データ転送要求パケットやデータパケットに対する処理を行う場合には、各パケットに設定されている「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と同じであるか否かを判定し、同じ場合のみ処理を行う。
【０１３２】
なお、本実施例では、ＲＡＩＤコントローラ１００とディスク装置３００とを接続するインタフェースがＦＣであった場合について説明しているが、インタフェースがＳＡＳであった場合でも、本発明は同様に適用することができる。
【０１３３】
その場合、パケットに付加されたＳＡＳフレームヘッダに設定されている情報に基づいて、同様の判定を行う。図６は、ＳＡＳフレームヘッダのフォーマットを示す図である。ＳＡＳの場合は、同図に示す「Ｔａｇ」を用いることによって、同様の判定を行う。
【０１３４】
また、ＦＣやＳＡＳでは、転送されるパケットは、各種コマンドなどを含んだ制御用のパケットと、ユーザデータを含んだデータパケットに大別されるが、暗号処理部４３０は、データパケットに含まれるユーザデータのみを暗号化する。そのため、暗号処理部４３０は、パケットを受信した際に、当該パケットが制御用のパケットであるかデータパケットであるかを判定し、データパケットであった場合のみ暗号処理を行う。
【０１３５】
ＦＣやＳＡＳのパケットでは、フレームヘッダに続く領域にＳＣＳＩ層のヘッダが設定される。暗号処理部４３０は、このＳＣＳＩ層のヘッダに含まれるコマンド情報に基づいて、パケットの種類を識別する。図７はＳＣＳＩ層のヘッダに含まれるコマンド情報を示す図である。同図の（ａ）は、ＦＣおよびＳＡＳのフレームヘッダの一部を示しており、同図に示す「ＣＤＢ」がコマンド情報である。
【０１３６】
かかるコマンド情報には、同図の（ｂ）に示すように、コマンドの種類を示す「ＯＰＥＲＡＴＩＯＮ  ＣＯＤＥ」が含まれており、「ＯＰＥＲＡＴＩＯＮ  ＣＯＤＥ」には、同図の（ｃ）に示すように、各種のコマンドが設定される。
【０１３７】
そこで、例えば、暗号処理部４３０は、パケットに含まれる「ＯＰＥＲＡＴＩＯＮ  ＣＯＤＥ」に設定されているコマンドが、「ＲＥＡＤ（任意の数値）」、「ＷＲＩＴＥ（任意の数値）」または「ＷＲＩＴＥ  ＡＮＤ  ＶＥＲＩＦＹ（任意の数値）」であった場合には、当該パケットが、読み出し対象または書き込み対象のユーザデータを含んだデータパケットであると判定し、暗号処理を行う。
【０１３８】
次に、本実施例に係るＦＣスイッチ４００の処理手順について説明する。ここでは、図８および９を参照して、ライト動作におけるＦＣスイッチ４００の処理手順について説明した後に、図１０を参照して、リード動作におけるＦＣスイッチ４００について処理手順を説明する。
【０１３９】
最初に、ライト動作におけるＦＣスイッチ４００の処理手順について説明する。図８および９は、ライト動作におけるＦＣスイッチ４００の処理手順を示す図（１）および（２）である。
【０１４０】
図８に示すように、ライト動作では、ＦＣスイッチ４００は、ＲＡＩＤコントローラ１００から送信された書き込みコマンド（ｗｔコマンド）パケットを受信すると（ステップＳ１０１）、受信したパケットのＳＣＳＩ層のヘッダに含まれるコマンドを解析し（ステップＳ１０２）、当該コマンドが暗号対象であるか否かを判定する。
【０１４１】
ここで、暗号対象であった場合には、ＦＣスイッチ４００は、当該パケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」を記憶するとともに（ステップＳ１０３）、当該書き込みコマンドパケットをディスク装置３００に対して送信する。
【０１４２】
そして、書き込みコマンドパケットに応じてディスク装置３００から送信されたデータ転送要求パケット（Ｘ．ＲＤＹ）を受信すると、ＦＣスイッチ４００は、受信したパケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」と、記憶している「ＯＸ＿ＩＤ」とが一致しているか否かを判定する（ステップＳ１０４）。
【０１４３】
ここで、一致していた場合には、ＦＣスイッチ４００は、データ転送要求パケットに含まれる受信可能サイズを記憶し（ステップＳ１０５）、さらに、この受信可能サイズ以上であり、かつ、１６バイトの倍数となる新たな受信可能サイズを設定し、設定した受信可能サイズを、データ転送要求パケットに含めることによって、ＲＡＩＤコントローラ１００に対して通知する（ステップＳ１０６）。
【０１４４】
例えば、同図に示すように、データ転送要求パケットに含まれる受信可能サイズが１６×Ａ＋ａバイトであった場合には、１６×（Ａ＋１）バイトを、新たな受信可能サイズとしてＲＡＩＤコントローラ１００に通知する。
【０１４５】
そして、データ転送要求パケットに応じてＲＡＩＤコントローラ１００からデータパケット（ＤＡＴＡ１〜ＤＡＴＡ４）が送信されると、ＦＣスイッチ４００は、それぞれ、パケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と一致しているか否かを判定する（ステップＳ１０７）。
【０１４６】
ここで、一致していた場合には、ＦＣスイッチ４００は、データパケットに含まれるユーザデータを解析し、１６バイトの端数がある場合には、端数分のデータを保持する。その場合、ＦＣスイッチ４００は、次のデータパケットを受信した際に、そのパケットの先頭に、保持した端数データを結合する（ステップＳ１０８）。
【０１４７】
そして、ＦＣスイッチ４００は、１６バイトのデータが揃った部分のみをＡＥＳ暗号化し、ディスク装置３００に対して送信する（ステップＳ１０９）。ここで、ＦＣスイッチ４００は、ステップＳ１０５で記憶した受信可能サイズと、暗号化したデータのサイズとが同じになった場合には、それ以降、ＲＡＩＤコントローラ１００から送信されるデータは、ディスク装置３００へ送信せずに保持しておく（ステップＳ１１０）。
【０１４８】
これにより、ディスク装置３００には、データ転送要求パケットに設定されていた受信可能サイズ分のデータが送信される。例えば、ディスク装置３００には、同図に示すように、１６×Ａ＋ａバイトのデータが送信される。
【０１４９】
そして、図９に示すように、ディスク装置３００から次のデータ転送要求パケットが送信されると、ＦＣスイッチ４００は、ステップＳ１０４〜Ｓ１０６と同様の処理を行い、新たな受信可能サイズを含めたデータ転送要求パケットをＲＡＩＤコントローラ１００に対して送信する（ステップＳ１１１〜Ｓ１１３）。
【０１５０】
そして、データ転送要求パケットに応じてＲＡＩＤコントローラ１００からデータパケット（ＤＡＴＡ５〜ＤＡＴＡ８）が送信されると、ＦＣスイッチ４００は、それぞれ、パケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と一致しているか否かを判定する（ステップＳ１１４）。
【０１５１】
ここで、一致していた場合には、ＦＣスイッチ４００は、未送信データ（ステップＳ１１０を参照）が保持されているか否かを確認し、保持されている場合には、当該未送信データを、最初に受信したデータパケットに含まれるユーザデータの先頭に結合する（ステップＳ１１５）。
【０１５２】
そして、ＦＣスイッチ４００は、データパケットに含まれるユーザデータを解析し、１６バイトの端数がある場合には、端数分のデータを保持する。その場合、ＦＣスイッチ４００は、次のデータパケットを受信した際に、そのパケットの先頭に、保持した端数データを結合する（ステップＳ１１６）。
【０１５３】
そして、ＦＣスイッチ４００は、１６バイトのデータが揃った部分のみをＡＥＳ暗号化し、ディスク装置３００に対して送信する（ステップＳ１１７）。ここで、ＦＣスイッチ４００は、ステップＳ１０５で記憶した受信可能サイズと、暗号化したデータのサイズとが同じになった場合には、それ以降、ＲＡＩＤコントローラ１００から送信されるデータは、ディスク装置３００へ送信せずに保持しておく（ステップＳ１１８）。
【０１５４】
そして、ＦＣスイッチ４００は、最終データであることを示す情報（Ｅｎｄ  Ｓｅｑｕｅｎｃｅ）を含んだデータパケットを受信した場合にディスク装置３００が送信する終了コマンドパケット（ＲＳＰ）を受信すると、受信したパケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と一致しているか否かを判定する（ステップＳ１１９）。
【０１５５】
ここで、一致していた場合には、ＦＣスイッチ４００は、当該書き込みコマンドによる入出力処理を終了する（ステップＳ１２０）。
【０１５６】
続いて、リード動作におけるＦＣスイッチ４００の処理手順について説明する。図１０は、リード動作におけるＦＣスイッチ４００の処理手順を示す図である。
【０１５７】
図１０に示すように、リード動作では、ＦＣスイッチ４００は、ＲＡＩＤコントローラ１００から送信された読み出しコマンド（ｒｄコマンド）パケットを受信すると（ステップＳ２０１）、受信したパケットのＳＣＳＩ層のヘッダに含まれるコマンドを解析し（ステップＳ２０２）、当該コマンドが暗号対象であるか否かを判定する。
【０１５８】
ここで、暗号対象であった場合には、ＦＣスイッチ４００は、当該パケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」を記憶するとともに（ステップＳ２０３）、当該読み出しコマンドパケットをディスク装置３００に対して送信する。
【０１５９】
そして、読み出しコマンドパケットに応じてディスク装置３００からデータパケット（ＤＡＴＡ１〜ＤＡＴＡ４）が送信されると、ＦＣスイッチ４００は、それぞれ、パケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と一致しているか否かを判定する（ステップＳ２０４）。
【０１６０】
ここで、一致していた場合には、ＦＣスイッチ４００は、データパケットに含まれるユーザデータを解析し、１６バイトの端数がある場合には、端数分のデータを保持する。その場合、ＦＣスイッチ４００は、次のデータパケットを受信した際に、そのパケットの先頭に、保持した端数データを結合する（ステップＳ２０５）。
【０１６１】
そして、ＦＣスイッチ４００は、１６バイトのデータが揃った部分のみをＡＥＳ復号化し、ＲＡＩＤコントローラ１００に対して送信する（ステップＳ２０６）。
【０１６２】
そして、ＦＣスイッチ４００は、最終データであることを示す情報（Ｅｎｄ  Ｓｅｑｕｅｎｃｅ）を含んだデータパケットを送信した場合にディスク装置３００が送信する終了コマンドパケット（ＲＳＰ）を受信すると、受信したパケットのフレームヘッダに含まれる「ＯＸ＿ＩＤ」が、記憶している「ＯＸ＿ＩＤ」と一致しているか否かを判定する（ステップＳ２０７）。
【０１６３】
ここで、一致していた場合には、ＦＣスイッチ４００は、当該読み出しコマンドによる入出力処理を終了する（ステップＳ２０８）。
【０１６４】
上述してきたように、本実施例では、ＦＣスイッチ４００が、受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求パケットをディスク装置３００から受信した場合に、第一の受信可能サイズ以上であり、かつ、暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求パケットをＲＡＩＤコントローラ１００に対して送信し、送信したデータ転送要求に対する応答としてＲＡＩＤコントローラ１００から送信される第二の受信可能サイズのデータを含んだデータパケットを受信し、当該データを暗号化データサイズ単位で暗号化し、暗号化したデータを第一の受信可能サイズ単位でディスク装置３００に対して送信し、送信時に第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、後続してさらに暗号化されるデータと結合し、結合したデータを含めたデータパケットをディスク装置３００に対して送信するので、データ転送要求パケットで指定された第一の受信可能サイズ分のデータが、ディスク装置３００に対して送信されることになり、ディスク装置３００が、次のデータ転送を送信することが可能になる。すなわち、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、データ転送を中断させることなく暗号化を行うことができる。
【０１６５】
また、本実施例では、ＦＣスイッチ４００が、ＲＡＩＤコントローラ１００から送信されるデータパケットに含まれるデータを暗号化した際に、暗号化データサイズに満たない残余データが生じた場合には、当該残余データをＲＡＩＤコントローラ１００から後続してさらに送信されるデータパケットに含まれるデータと結合し、結合したデータを、暗号化データサイズ単位で暗号化するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、転送される全てのデータに対して、データ転送を中断させることなく暗号化を行うことができる。
【０１６６】
また、本実施例では、ＦＣスイッチ４００が、ＲＡＩＤコントローラ１００から送信されるデータパケットには、連続するデータである場合に同じ値が設定される「ＯＸ＿ＩＤ」が含まれており、残余データを、ＲＡＩＤコントローラ１００から後続してさらに送信されるデータと結合する場合に、「ＯＸ＿ＩＤ」に基づいて結合するので、複数の連続するデータが並列に転送されるような場合でも、それぞれのデータごとに暗号化を行うことができる。
【０１６７】
また、本実施例では、ＲＡＩＤコントローラ１００から送信されるデータパケットには、データの種類を示すコマンド情報が含まれており、ＦＣスイッチ４００が、ＲＡＩＤコントローラ１００から応答されるデータパケットに含まれるデータを暗号化する際に、コマンド情報に基づいて、当該データを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化するので、制御用のデータは暗号化せずに、ユーザデータのみを暗号化するなど、暗号化する必要があるデータと、暗号化する必要がないデータとを振り分けることができる。
【０１６８】
また、本実施例では、ＦＣスイッチ４００が、ディスク装置３００から送信されるデータパケットを受信し、データパケットを受信した場合に、当該データパケットに含まれる暗号化データを復号化データサイズ単位で復号化し、復号化した際に、復号化データサイズに満たない残余データが生じた場合には、当該残余データを、ディスク装置３００から後続してさらに送信される暗号化データと結合し、結合したデータを復号化データサイズ単位で復号化し、復号化したデータをＲＡＩＤコントローラ１００に対して送信するので、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合でも、転送される全てのデータに対して、データ転送を中断させることなく復号化を行うことができる。
【０１６９】
また、本実施例では、ディスク装置３００から送信されるデータパケットに含まれる暗号化データには、連続するデータである場合に同じ値が設定される「ＯＸ＿ＩＤ」が含まれており、残余データを、ディスク装置３００から後続してさらに送信される暗号化データと結合する場合に、「ＯＸ＿ＩＤ」に基づいて結合するので、複数の連続するデータが並列に転送されるような場合でも、それぞれのデータごとに復号化を行うことができる。
【０１７０】
また、本実施例では、ディスク装置３００から送信されるデータパケットには、データの種類を示すコマンド情報が含まれており、ＦＣスイッチ４００が、ディスク装置３００から送信されるデータパケットに含まれる暗号化データを復号化する際に、コマンド情報に基づいて、当該暗号化データを復号化するか否かを判定し、復号化すると判定した場合に、暗号化データを復号化するので、制御用のデータは復号化せずに、ユーザデータのみを復号化するなど、復号化する必要があるデータと、復号化する必要がないデータとを振り分けることができる。
【０１７１】
なお、本実施例では、ＦＣスイッチ４００に本発明を適用した場合について説明したが、本発明はこれに限られるわけではなく、上記で説明した暗号処理部４３０が有する機能を、ＲＡＩＤコントローラ１００やディスク装置３００が有するように構成してもよい。
【０１７２】
また、本実施例では、暗号方式としてＡＥＳ暗号方式をそれぞれ用いた場合について説明したが、本発明はこれに限定されるものではなく、他の暗号方式であっても、暗号処理の処理単位となるデータサイズと、データ転送の単位となるデータサイズとが異なるような場合には、同様に適用することができる。
【０１７３】
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【０１７４】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１７５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１７６】
（付記１）第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化装置であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、
前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ暗号化装置。
【０１７７】
（付記２）前記データ暗号化手段は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする付記１に記載のデータ暗号化装置。
【０１７８】
（付記３）前記第一の装置から送信されるデータには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ暗号化手段は、前記残余データを、前記第一の装置から後続してさらに送信されるデータと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする付記２に記載のデータ暗号化装置。
【０１７９】
（付記４）前記第一の装置から送信されるデータには、データの種類を示すデータ種別情報が含まれており、
前記データ暗号化手段は、前記第一の装置から応答されるデータを暗号化する際に、前記データ種別情報に基づいて、当該データを暗号化するか否かを判定し、暗号化すると判定した場合に、当該データを暗号化することを特徴とする付記１、２または３に記載のデータ暗号化装置。
【０１８０】
（付記５）第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化装置であって、
前記第二の装置から送信される暗号化データを受信するデータ受信手段と、
前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ復号化装置。
【０１８１】
（付記６）前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ復号化手段は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする付記５に記載のデータ復号化装置。
【０１８２】
（付記７）前記第二の装置から送信される暗号化データには、データの種類を示すデータ種別情報が含まれており、
前記データ復号化手段は、前記第二の装置から送信される暗号化データを復号化する際に、前記データ種別情報に基づいて、当該暗号化データを復号化するか否かを判定し、復号化すると判定した場合に、当該暗号化データを復号化することを特徴とする付記５または６に記載のデータ復号化装置。
【０１８３】
（付記８）第一の装置から第二の装置に対して転送されるデータを所定の暗号化データサイズ単位で暗号化するデータ暗号化方法であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信工程と、
前記転送要求送信工程により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化工程と、
前記データ暗号化工程により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化工程により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信工程と、
を含んだことを特徴とするデータ暗号化方法。
【０１８４】
（付記９）前記データ暗号化工程は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする付記８に記載のデータ暗号化方法。
【０１８５】
（付記１０）第二の装置から第一の装置に対して転送される暗号化データを所定の復号化データサイズ単位で復号化するデータ復号化方法であって、
前記第二の装置から送信される暗号化データを受信するデータ受信工程と、
前記データ受信工程により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化工程と、
前記データ復号化工程により復号化されたデータを前記第一の装置に対して送信するデータ送信工程と、
を含んだことを特徴とするデータ復号化方法。
【０１８６】
（付記１１）前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ復号化工程は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする付記１０に記載のデータ復号化方法。
【０１８７】
（付記１２）第一の装置から第二の装置に対して転送されるデータを中継するとともに、当該データを所定の暗号化データサイズ単位で暗号化するデータ中継装置であって、
前記受信可能なデータのサイズを示す第一の受信可能サイズの情報を含んだデータ転送要求を第二の装置から受信した場合に、当該第一の受信可能サイズ以上であり、かつ、前記暗号化データサイズの倍数となる第二の受信可能サイズを設定し、設定した第二の受信可能サイズを含めたデータ転送要求を第一の装置に対して送信する転送要求送信手段と、
前記転送要求送信手段により送信されたデータ転送要求に対する応答として前記第一の装置から送信される第二の受信可能サイズのデータを受信し、受信したデータを前記暗号化データサイズ単位で暗号化するデータ暗号化手段と、
前記データ暗号化手段により暗号化されたデータを前記第一の受信可能サイズ単位で前記第二の装置に対して送信し、送信時に前記第一の受信可能サイズに満たない未送信データが残った場合には、当該未送信データを、前記データ暗号化手段により後続してさらに暗号化されるデータと結合し、結合したデータを前記第二の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ中継装置。
【０１８８】
（付記１３）前記データ暗号化手段は、前記第一の装置から送信されるデータを暗号化した際に、前記暗号化データサイズに満たない残余データが生じた場合には、当該残余データを前記第一の装置から後続してさらに送信されるデータと結合し、結合したデータを、前記暗号化データサイズ単位で暗号化することを特徴とする付記１２に記載のデータ中継装置。
【０１８９】
（付記１４）第二の装置から第一の装置に対して転送される暗号化データを中継するとともに、当該暗号化データを所定の復号化データサイズ単位で復号化するデータ中継装置であって、
前記第二の装置から送信される暗号化データを受信するデータ受信手段と、
前記データ受信手段により前記暗号化データが受信された場合に、当該暗号化データを前記復号化データサイズ単位で復号化し、復号化した際に前記復号化データサイズに満たない残余データが生じた場合には、当該残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合し、結合したデータを前記復号化データサイズ単位で復号化するデータ復号化手段と、
前記データ復号化手段により復号化されたデータを前記第一の装置に対して送信するデータ送信手段と、
を備えたことを特徴とするデータ中継装置。
【０１９０】
（付記１５）前記第二の装置から送信される暗号化データには、連続するデータである場合に同じ値が設定される入出力識別情報が含まれており、
前記データ復号化手段は、前記残余データを、前記第二の装置から後続してさらに送信される暗号化データと結合する場合に、前記入出力識別情報に基づいて結合することを特徴とする付記１４に記載のデータ中継装置。
【産業上の利用可能性】
【０１９１】
以上のように、本発明に係るデータ暗号化装置、データ復号化装置、データ暗号化方法、データ復号化方法およびデータ中継装置は、ＦＣスイッチやＳＡＳエクスパンダーなどのデータ中継装置においてデータの暗号化および復号化する場合に有用であり、特に、データ転送の単位となるデータサイズと暗号処理の単位となるデータサイズが異なる場合に適している。
【図面の簡単な説明】
【０１９２】
【図１】本実施例に係るＦＣスイッチの概念を説明するための説明図（１）である。
【図２】本実施例に係るＦＣスイッチの概念を説明するための説明図（２）である。
【図３】本実施例に係るＲＡＩＤシステムの構成を示す機能ブロック図である。
【図４】本実施例に係るＦＣスイッチの構成を示す機能ブロック図である。
【図５】ＦＣフレームヘッダのフォーマットを示す図である。
【図６】ＳＡＳフレームヘッダのフォーマットを示す図である。
【図７】ＳＣＳＩ層のヘッダに含まれるコマンド情報を示す図である。
【図８】ライト動作におけるＦＣスイッチの処理手順を示す図（１）である。
【図９】ライト動作におけるＦＣスイッチの処理手順を示す図（２）である。
【図１０】リード動作におけるＦＣスイッチの処理手順を示す図である。
【図１１】従来のＲＡＩＤシステムの一例を示す図である。
【図１２】ＳＣＳＩによるデータ転送を説明するための説明図である。
【図１３】データ中継装置による暗号処理に係る問題を説明するための説明図である。
【符号の説明】
【０１９３】
１０，１００    ＲＡＩＤコントローラ
１１，１１０    ホストインタフェース制御部
１２，１２０    メインメモリ
１３，１３０    メモリ制御部
１４，１４０    ＣＰＵ
１５，１５０    ディスクインタフェース制御部
２０，２００    ホスト装置
３０，３００    ディスク装置
３１０1〜３１０n    ディスク
４００    ＦＣスイッチ
４１０    コントローラインタフェース制御部
４２０    ディスクインタフェース制御部
４３０    暗号処理部
【図１】
2008199542.tif 000003
【図２】
2008199542.tif 000004
【図３】
2008199542.tif 000005
【図４】
2008199542.tif 000006
【図５】
2008199542.tif 000007
【図６】
2008199542.tif 000008
【図７】
2008199542.tif 000009
【図８】
2008199542.tif 000010
【図９】
2008199542.tif 000011
【図１０】
2008199542.tif 000012
【図１１】
2008199542.tif 000013
【図１２】
2008199542.tif 000014
【図１３】
2008199542.tif 000015