(57)【特許請求の範囲】
【請求項１】
メモリと、
ハードディスクドライブと、
前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、
前記暗号化復号化装置は、
前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、
前記コマンド発行部によって前記コマンドが発行された場合、ＬＢＡが連続する複数の前記セクタのうち先頭セクタの前記ＬＢＡであるスタートＬＢＡ、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、
キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、
前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記ＬＢＡを算出することを、転送される前記分割データ毎に実行するＬＢＡ算出部と、
前記ＬＢＡ算出部で算出された前記ＬＢＡから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、
転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、
前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、
前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(ａ)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために、前記暗号化部をオフさせ、(ｂ)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え、
前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置。
【請求項２】
前記ハードディスクドライブは、ＳＡＴＡのＮＣＱに対応する請求項１に記載の情報処理装置。
【請求項３】
前記暗号化部及び前記復号化部での暗号化方式は、ＡＥＳのＣＢＣモードである請求項１又は２項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードディスクドライブ用の暗号化復号化装置に関し、特にブロック暗号を用いる暗号化復号化装置に関する。
【背景技術】
【０００２】
情報処理装置において、データ量が大きくなると、メモリの容量が不足するので、仮想メモリが利用される。仮想メモリとはメモリの容量が足りなくなれば、一部のデータをハードディスクドライブ等の補助記憶装置に移すことにより、メモリ容量を確保するオペレーティングシステムの機能である。
【０００３】
ハードディスクドライブは電源が切れてもデータが消えないので、仮想メモリとしてハードディスクドライブを利用すると、仮想メモリに記憶されたデータが残ることがある。このためデータを暗号化して仮想メモリに記憶することによって、データの漏洩を防止する場合がある。
【０００４】
データを暗号化する方法としてブロック暗号がある。ブロック暗号とはデータを一定の長さのブロックごとに区切り、ブロック単位で暗号化することである。ブロック暗号にはいくつかのモードがあり、そのうちＡＥＳ(Advanced Encryption Standard)のＣＢＣ(Cipher Block Chaining)モードでは、先頭ブロックについては外部から与えた初期ベクトル(Initial Vector)を利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化する。
【０００５】
ハードディスクドライブにはＮＣＱ(Native Command Queuing)と称されるデータ転送技術がある。ハードディスクドライブはホストコントローラから送られてきたコマンドを実行してデータを転送する。ＮＣＱにおいてハードディスクドライブは、ホストコントローラから送られてコマンドをキューイングし、セクタへのアクセス効率が高まるようにコマンドの順番を並び替えてコマンドを実行する。ＮＣＱによればセクタに効率的にアクセスできるのでデータの転送を速くすることができる。
【０００６】
ＮＣＱではハードディスクドライブでキューイングできるコマンド数が多ければ、セクタへのアクセス効率が高まる。ＳＡＴＡ(Serial Advanced Technology Attachment)はコンピュータにハードディスクドライブ等の記憶装置を接続するためのインターフェース規格の一つであり、ＳＡＴＡのＮＣＱでは最大３２個までコマンドをキューイングすることができる。
【０００７】
ＮＣＱを利用するハードディスクドライブではコマンドの順番が変更されるので、データを上記ＣＢＣモードで暗号化してハードディスクドライブに記憶する場合、コマンドの順番が変更されても、正しい初期ベクトルが生成できるようにしなければならない。そこで、初期ベクトルの生成にＬＢＡ(Logical Block Addressing)を用いる技術が提案されている(例えば特許文献１参照)。ＬＢＡはハードディスクドライブの全てのセクタに通し番号を振り、その通し番号によってセクタを指定する方式である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８７６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
データを暗号化すれば暗号化及び復号化の時間を要するので、それだけデータの転送が遅くなる。データには暗号化したいデータ(パスワード等の機密性の高いデータ)と暗号化しなくてもよいデータ(機密性のないデータ)がある。
【００１０】
メモリとハードディスクドライブとの間でデータを転送する際に、データの中に暗号化するデータと暗号化しないデータとが混在することがある。このような場合に、暗号化するデータについては暗号化して転送し、暗号化しないデータについては暗号化しないで転送できれば便利である。
【００１１】
本発明は、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できるハードディスクドライブ用の暗号化復号化装置及びそれを備える情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成する本発明の第１の局面に係るハードディスクドライブ用の暗号化復号化装置は、メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送するハードディスクドライブに用いられる暗号化復号化装置であって、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、ＬＢＡが連続する複数の前記セクタのうち先頭セクタの前記ＬＢＡであるスタートＬＢＡ、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記ＬＢＡを算出することを、転送される前記分割データ毎に実行するＬＢＡ算出部と、前記ＬＢＡ算出部で算出された前記ＬＢＡから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記情報テーブルに記憶されている前記コマンド情報を基にして、前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示す場合、当該コマンドで転送される前記分割データについては暗号化及び復号化を実行しないために前記暗号化部及び前記復号化部を停止させる暗号化オンオフ判定部と、を備える。
【００１３】
本発明の第１の局面に係るハードディスクドライブ用の暗号化復号化装置よれば、実行されたコマンドで転送される分割データについて暗号化の有無を指示する指示情報をコマンド毎に付加することができる。これにより、ハードディスクドライブにキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンドと暗号化しない分割データに対応するコマンドに分けることができる。従って、メモリとハードディスクドライブとの間で転送するデータの中に、暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。
【００１４】
上記構成において、前記ハードディスクドライブは、ＳＡＴＡのＮＣＱに対応する。
【００１５】
上記構成において。前記暗号化部及び前記復号化部での暗号化方式は、ＡＥＳのＣＢＣモードである。
【００１６】
本発明の第２の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリと前記ハードディスクドライブとの間で転送されるデータに対して、暗号化及び復号化の処理をする上記ハードディスクドライブ用の暗号化復号化装置と、を備える。
【００１７】
本発明の第２の局面に係る情報処理装置によれば、上記第１の局面に係るハードディスクドライブ用の暗号化復号化装置の効果を得ることができる。
本発明の第３の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、前記暗号化復号化装置は、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、ＬＢＡが連続する複数の前記セクタのうち先頭セクタの前記ＬＢＡであるスタートＬＢＡ、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記ＬＢＡを算出することを、転送される前記分割データ毎に実行するＬＢＡ算出部と、前記ＬＢＡ算出部で算出された前記ＬＢＡから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(ａ)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために���前記暗号化部をオフさせ、(ｂ)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え、前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置である。
【発明の効果】
【００１８】
本発明によれば、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】コマンドのリストの一例を示す図である。
【図３】各コマンドの内容の一例を示す図である。
【図４】各コマンドに対応するセクタの位置を示すハードディスクの平面図である。
【図５】図１に示す初期ベクトル供給部の構成を示すブロック図である。
【図６】コマンド情報の一例を示す図である。
【図７】コマンドが並び替えられた状態を示す図である。
【図８】メモリからＨＤＤへのデータの転送を示す図である。
【図９】本実施形態において暗号化処理を説明するフローチャートである。
【図１０】暗号化部のレジスタに格納された分割データを示す図である。
【図１１】ＨＤＤからメモリへのデータの転送を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面に基づいて本発明の実施形態を詳細に説明する。図１は本発明の一実施形態に係る情報処理装置１の構成を示すブロック図である。情報処理装置１は例えば、コピー、プリンタ、スキャナ及びファクシミリの機能を有する画像形成装置に適用することができる。情報処理装置１はＣＰＵ(Central Processing Unit)３、メモリ５、ハードディスクドライブ(以下、ＨＤＤと記載する)７及び暗号化復号化装置９を備える。
【００２１】
ＣＰＵ３は情報処理装置１を動作させるために必要な制御を、情報処理装置１を構成する上記ハードウェア及び図示しないハードウェア(メインメモリ、ＲＯＭ(Read Only Memory)等)に対して実行する。
【００２２】
メモリ５は例えばＤＲＡＭ(Dynamic Random Access Memory)であり、ＨＤＤ７との間でデータが転送される。メモリ５からＨＤＤ７へのデータＤ１の転送とは、メモリ５に記憶されたデータＤ１を読み出して、ＨＤＤ７に書き込む処理である。ＨＤＤ７からメモリ５へのデータＤ２の転送とは、ＨＤＤ７に記憶されたデータＤ２を読み出して、メモリ５に書き込む処理である。
【００２３】
ＨＤＤ７は例えば、ＳＡＴＡのＮＣＱに対応するＨＤＤであり、メモリ５との間でデータを転送するために発行されたコマンドをキューイングし、キューイングされたコマンドの順番を並び替えてコマンドを実行することにより、メモリ５との間でデータを転送する。ＳＡＴＡのＮＣＱでは最大３２個のコマンドをキューイングすることができる。メモリ５とＨＤＤ７との間でデータが転送される場合、データをセクタに記憶される単位で分割した分割データ毎に転送される。
【００２４】
暗号化復号化装置９はメモリ５からＨＤＤ７に転送されるデータＤ１を暗号化し、ＨＤＤ７からメモリ５に転送されるデータＤ２を復号化する。暗号化復号化装置９は例えば、ＡＳＩＣ(Application Specific Integrated Circuit)を用いて構成されており、ＳＡＴＡホストコントローラ(以下、ホストコントローラと記載する)１１、初期ベクトル供給部１３、暗号化部１５、復号化部１７及び暗号鍵記憶部１９を備える。
【００２５】
ホストコントローラ１１は例えば、ＳＡＴＡのＡＨＣＩ(Advanced Host Controller Interface)規約に従って構成されている。ホストコントローラ１１はコマンド発行部２１を備える。ホストコントローラ１１はＣＰＵ３からのアクセス要求ＲＥＱに応じて、コマンド発行部２１にコマンドを発行させる。ホストコントローラ１１は発行されたコマンドのリストを作成すると共に発行されたコマンドをＨＤＤ７に送信する。
【００２６】
図２はコマンドのリストの一例を示す図である。この例では４つのコマンド０〜３を用いてメモリ５とＨＤＤ７との間でデータを転送する。メモリ５とＨＤＤ７の間で転送されるデータは分割データに分けられて転送される。
【００２７】
図３はコマンド０〜３の内容の一例を示している。データにはメモリアドレスＡＤＤ「１０００００００−１０００４ＦＦＦ，３０００１０００−３０００３ＦＦＦ，Ｃ０００００００−Ｃ０００４ＦＦＦ」が割り当てられている。メモリアドレスＡＤＤとはデータ(分割データ)に割り当てられているメモリ５上のアドレスである。図１に示すように、メモリアドレスＡＤＤはデータを転送する際に、ホストコントローラ１１からメモリ５に送られる。
【００２８】
分割データはデータをセクタに記憶される単位で分割したものである。セクタの容量が例えば５１２バイトとすれば、分割データのデータ量は５１２バイトである(１６進数で表すと「１０００」)。
【００２９】
分割データのメモリアドレスＡＤＤの欄には各分割データに対して割り当てられているメモリアドレスＡＤＤが示されている。セクタのＬＢＡの欄には各分割データに対して割り当てられたセクタのアドレスが示されている。各コマンドにおいてＬＢＡは連続している。
【００３０】
スタートＬＢＡ(Start_LBA)はコマンド０〜３のそれぞれにおいて、ＬＢＡが連続する複数のセクタのうち先頭セクタのＬＢＡである。
【００３１】
スタートアドレス(Start_Address)はコマンド０〜３のそれぞれにおいて、先頭セクタが割り当てられた分割データに対して割り当てられているメモリアドレスＡＤＤの先頭アドレスａｄｄである。先頭アドレスａｄｄについてコマンド０を例に説明すると、「３０００１０００」、「３０００２０００」及び「３０００３０００」が先頭アドレスａｄｄとなる。図１に示すように、先頭アドレスａｄｄは分割データを転送する際に、ホストコントローラ１１から初期ベクトル供給部１３に送られる。
【００３２】
図４はコマンド０〜３に対応するセクタ２３の位置を示すハードディスクの平面図である。ＬＢＡがＮ，Ｎ＋１，Ｎ＋２のセクタ２３とＬＢＡがＬ，Ｌ＋１，Ｌ＋２，Ｌ＋３，Ｌ＋４のセクタ２３が位置するトラック２５は同じである。これらのセクタ２３と、ＬＢＡがＣ，Ｃ＋１のセクタ２３と、ＬＢＡがＫ，Ｋ＋１，Ｋ＋２のセクタ２３と、が位置するトラック２５は異なる。
【００３３】
図３に示す指示情報は転送される分割データについて暗号化の有無を指示するものであり、本実施形態において、指示情報は転送される分割データについて暗号化しないことを指示するものである。指示情報はコマンド発行部２１がコマンドを発行する際にコマンド毎に付加することができる。指示情報は例えばＡＨＣＩ規格のコマンドリストを拡張して、コマンドのリザーブ領域にフラグを用いて指示することができる。なお、指示情報は暗号化の有無を示すビット又はフラグ等のデータをコマンドに付加しないことによって、暗号化をする又はしないを示す情報であってもよい。
【００３４】
コマンド０は指示情報を含む。これはメモリアドレスＡＤＤが「３０００１０００−３０００３ＦＦＦ」に格納されているデータであるファイルは機密性を有しておらず、そのファイルは暗号化しないことを意味する。これに対して、コマンド１，２，３は指示情報を含まない。これはメモリアドレスＡＤＤが「Ｃ０００００００−Ｃ０００４ＦＦＦ」及び「１０００００００−１０００４ＦＦＦ」に格納されているデータであるファイルは機密性を有しており、暗号化することを意味する。  
【００３５】
ファイルには予め暗号化するか否かの設定がされている。メモリ５からＨＤＤ７に複数のファイルを含むデータを転送する場合、ディスクリプタには、ファイル毎にファイルに割り当てられているメモリアドレスＡＤＤとセクタ２３のＬＢＡが記録されると共に暗号化するか否かが記録される。ディスクリプタはホストコントローラ１１又はＨＤＤ７に格納される。コマンド発行部２１はコマンドを発行する際にディスクリプタを参照して、コマンドに指示情報を付加するか否かを選択する。
【００３６】
図１の説明に戻る。暗号鍵記憶部１９は例えば、ＲＡＭ(Random Access Memory)又はレジスタ等の記憶手段によって構成されており、暗号化及び復号化に用いる暗号鍵ＫＥが予め記憶されている。
【００３７】
暗号化部１５はメモリ５とホストコントローラ１１との間に設けられている。暗号化部１５は転送される分割データをブロック単位で暗号化するに際して、先頭ブロックについては初期ベクトル供給部１３から供給された(言い換えれば図５の初期ベクトル生成部３７で生成された)初期ベクトルＩＶを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、メモリ５からＨＤＤ７に転送する分割データ毎に実行する。本実施形態では、暗号化部１５は暗号鍵記憶部１９に記憶されている暗号鍵ＫＥと、初期ベクトル供給部１３から供給された初期ベクトルＩＶとに基づいて、ホストコントローラ１１から出力されたメモリアドレスＡＤＤに応じてメモリ５からホストコントローラ１１に転送されるデータＤ１を、転送される分割データ毎にリアルタイムで暗号化してホストコントローラ１１へ出力する。暗号化部１５はブロック暗号化方式として、例えばＡＥＳのＣＢＣモードを用いる。
【００３８】
復号化部１７はホストコントローラ１１とメモリ５との間に設けられている。復号化部１７は暗号化部１５で暗号化されてＨＤＤ７に記憶された分割データについて、初期ベクトル供給部１３から供給された(言い換えれば図５の初期ベクトル生成部３７で生成された)初期ベクトルＩＶを利用して復号化することを、ＨＤＤ７からメモリ５に転送する分割データ毎に実行する。本実施形態では、復号化部１７は暗号鍵記憶部１９に記憶されている暗号鍵ＫＥと、初期ベクトル供給部１３から供給された初期ベクトルＩＶとに基づいて、ホストコントローラ１１から出力されたメモリアドレスＡＤＤに応じてホストコントローラ１１からメモリ５に転送されるデータＤ２を、転送される分割データ毎にリアルタイムで復号化してメモリ５へ出力する。
【００３９】
復号化部１７は暗号化部１５と同じ暗号化方式を用いて復号化を行う。なお、暗号化部１５及び復号化部１７はＡＥＳのＣＢＣモードに限らない。データをブロック単位で暗号化する暗号化方式であって、先頭ブロックについては初期ベクトルＩＶを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化するブロック暗号化方式であればよい。
【００４０】
初期ベクトル供給部１３は例えば種々の論理回路及び順序回路等を用いて構成される。図５は初期ベクトル供給部１３の構成の一例を示すブロック図である。初期ベクトル供給部１３は情報テーブル３１、コマンド特定部３３、ＬＢＡ算出部３５、初期ベクトル生成部３７及び暗号化オンオフ判定部３９を備える。
【００４１】
初期ベクトル供給部１３はＣＰＵ３からのホストコントローラ１１へのアクセス要求ＲＥＱ(図１)を監視し、アクセス要求ＲＥＱに応じてコマンド発行部２１によってコマンドが発行された場合、コマンドの転送情報を読み取って得られたコマンド情報を、情報テーブル３１に記憶する。ＡＨＣＩ規格であれば、初期ベクトル供給部１３はコマンドリスト内のコマンドヘッダ並びに、コマンドテーブル内のコマンドＦＩＳ及びＰＲＤＴ(Physical Region Descriptor Table)を読み取ってコマンド情報を作成する。コマンド情報はスタートＬＢＡ、スタートアドレス及び、複数のセクタ２３のデータ量、を特定するための情報並びに指示情報の有無をコマンド毎について得たものである。
【００４２】
図６はコマンド情報の一例を示す図である。コマンド情報はＨＤＤ７にキューイングできる最大数である３２個のコマンドについて示される。Exist[Ｉ]はコマンドＩ(Ｉはコマンド番号であり、０〜３１)が存在するか否かを示す情報である。Exist[Ｉ]：１であれば、そのコマンドは存在する。Exist[Ｉ]：０であれば、そのコマンドは存在しない。スタートＬＢＡ(Start_LBA)、スタートアドレス(Start_Address)及び指示情報については既に説明した。
【００４３】
セクタサイズ(Sector_Size)は複数のセクタ２３のデータ量を特定するための情報の一例であり、各コマンドについてのセクタ２３の数である。例えば、コマンド０であれば、セクタサイズが３なので、３(セクタ数)×５１２バイトがコマンド０についての複数のセクタ２３のデータ量となる。
【００４４】
コマンド特定部３３はＨＤＤ７がキューイングされたコマンド０〜３の順番を並び替えてそれらのコマンドを実行する際に、転送される分割データに割り当てられたメモリアドレスＡＤＤの先頭アドレスａｄｄと情報テーブル３１に記憶されているコマンド情報とを用いて、転送される分割データに対応するコマンドが、コマンド発行部２１により発行された複数のコマンドのうちのいずれであるかを特定することを、転送される分割データ毎に実行する。
【００４５】
コマンドの特定には下記式が用いられる。
【００４６】
Start_Address[Ｉ]≦ａｄｄ＜Start_Address[Ｉ]＋Sector_Size×１０００・・・(１)
【００４７】
式(１)は１セクタの容量が５１２バイトの場合を示している。「１０００」は５１２を１６進数で表現したものである。例えば、図３に示す先頭アドレスａｄｄが「３０００２０００」の分割データであれば、コマンド０の場合に式(１)が成立するので、先頭アドレスａｄｄが「３０００２０００」の分割データはコマンド０に対応すると特定できる。
【００４８】
ＬＢＡ算出部３５はコマンド特定部３３で特定されたコマンドについてのコマンド情報と転送される分割データに割り当てられたメモリアドレスＡＤＤの先頭アドレスａｄｄとを用いて、転送される分割データに割り当てられたセクタ２３のＬＢＡを算出することを、転送される分割データ毎に実行する。
【００４９】
ＬＢＡの演算には下記式が用いられる。
【００５０】
ＬＢＡ＝Start_LBA[Ｉ]＋(ａｄｄ− Start_Address[Ｉ])／１０００・・・(２)
【００５１】
例えば、図３に示す先頭アドレスａｄｄが「３０００２０００」の分割データであれば、コマンド０に対応するので、Start_LBA[０]が「Ｋ」であり、Start_Address[０]が「３０００１０００」である。従って、式(２)より、ＬＢＡは「Ｋ＋１」となる。
【００５２】
初期ベクトル生成部３７はＬＢＡ算出部３５で算出されたＬＢＡから初期ベクトルＩＶを生成することを、転送される分割データ毎に実行する。詳細には、初期ベクトル生成部３７はＬＢＡ算出部３５により算出されたＬＢＡに、所定の演算処理、例えば排他的論理和演算等の演算処理をして、初期ベクトルＩＶを生成し、暗号化部１５及び復号化部１７に供給する。これにより、暗号強度を向上させる。なお、初期ベクトル生成部３７は、ＬＢＡを、そのまま初期ベクトルＩＶとして出力する構成としてもよい。
【００５３】
暗号化オンオフ判定部３９はメモリ５からＨＤＤ７にデータを転送する際に、情報テーブル３１に記憶されているコマンド情報を参照して、コマンド特定部３３で特定されたコマンドに指示情報が付加されているか否か判定する。指示情報とは分割データを暗号化しないことを指示する情報である。暗号化オンオフ判定部３９は指示情報が付加されていると判定した場合、暗号化部１５にＯＦＦ信号を送り、暗号化部１５をオフさせる。これにより、その分割データについては暗号化されずに転送される。これに対して、暗号化オンオフ判定部３９は指示情報が付加されていないと判定した場合、暗号化部１５にＯＮ信号を送り、暗号化部１５をオンさせる。これにより、その分割データについては暗号化されて転送される。
【００５４】
ＨＤＤ７からメモリ５にデータを転送する場合、暗号化オンオフ判定部３９は情報テーブル３１に記憶されているコマンド情報を参照して、コマンド特定部３３で特定されたコマンドに指示情報が付加されているか否か判定する。暗号化オンオフ判定部３９は指示情報が付加されていると判定した場合、復号化部１７にＯＦＦ信号を送り、復号化部１７をオフさせる。これにより、その分割データについては復号化されずに転送される。一方、暗号化オンオフ判定部３９は指示情報が付加されていないと判定した場合、復号化部１７にＯＮ信号を送り、復号化部１７をオンさせる。これにより、その分割データについては復号化されて転送される。
【００５５】
以上のように、暗号化オンオフ判定部３９は情報テーブル３１に記憶されているコマンド情報を基にして、コマンド特定部３３で特定されたコマンドの指示情報が暗号化無しを示す場合、そのコマンドで転送される分割データについては暗号化及び復号化を実行しないために暗号化部１５及び復号化部１７を停止させる。
【００５６】
次に、本実施形態に係る情報処理装置１がデータを転送する動作について説明する。コマンドの内容は図３に示す通りであり、コマンド情報は図６に示す通りとする。まず、メモリ５から仮想メモリであるＨＤＤ７にデータを転送する動作を説明する。
【００５７】
図１に示すＣＰＵ３がホストコントローラ１１に、メモリ５からＨＤＤ７にデータを転送するためのアクセス要求ＲＥＱを送信すると、そのアクセス要求ＲＥＱに応じて、コマンド発行部２１はコマンドを発行する。そのコマンドを基にしてホストコントローラ１１は図２に示すコマンドリストを作成すると共にそのコマンドをＨＤＤ７に送信する。
【００５８】
初期ベクトル供給部１３はアクセス要求ＲＥＱを監視し、コマンド発行部２１によってコマンドが発行されると、図６に示すコマンド情報を情報テーブル３１に記憶する。
【００５９】
ＨＤＤ７に送信されたコマンドであるコマンド０〜３はキューイングされて、セクタ２３に効率的にアクセスできるように、例えば図７に示すように、コマンドが並び替えられる。ここでは、実行の順番がコマンド２、コマンド０、コマンド３、コマンド１に並び替えられている。
【００６０】
図８はメモリ５からＨＤＤ７へのデータの転送を示す図である。まず、ＨＤＤ７がコマンド２を実行することにより、ホストコントローラ１１は分割データｄ１、分割データｄ２の順でメモリ５からＨＤＤ７に転送する。これにより、分割データｄ１はＬＢＡが「Ｃ」のセクタ２３に記憶され、分割データｄ２はＬＢＡが「Ｃ＋１」のセクタ２３に記憶される。
【００６１】
次に、ＨＤＤ７がコマンド０を実行することにより、ホストコントローラ１１は分割データｄ３、分割データｄ４、分割データｄ５の順でメモリ５からＨＤＤ７に転送する。これにより、分割データｄ３はＬＢＡが「Ｋ」のセクタ２３に記憶され、分割データｄ４はＬＢＡが「Ｋ＋１」のセクタ２３に記憶され、分割データｄ５はＬＢＡが「Ｋ＋２」のセクタ２３に記憶される。
【００６２】
そして、ＨＤＤ７はコマンド３を実行することにより、ホストコントローラ１１は分割データｄ６、分割データｄ７、分割データｄ８の順でメモリ５からＨＤＤ７に転送する。これにより、分割データｄ６はＬＢＡが「Ｎ」のセクタ２３に記憶され、分割データｄ７はＬＢＡが「Ｎ＋１」のセクタ２３に記憶され、分割データｄ８はＬＢＡが「Ｎ＋２」のセクタ２３に記憶される。
【００６３】
最後に、ＨＤＤ７がコマンド１を実行することにより、ホストコントローラ１１は分割データｄ９、分割データｄ１０、分割データｄ１１、分割データｄ１２、分割データｄ１３の順でメモリ５からＨＤＤ７に転送する。これらの分割データも、上記と同様に割り当てられたセクタ２３に記憶される。
【００６４】
分割データｄ１〜ｄ１３はそれぞれ、転送される際に暗号化される。但し、対応するコマンドが分割データについて暗号化しないことを指示する指示情報が付加されていれば、暗号化されずに転送される。これについて説明する。図９は暗号化処理を説明するフローチャートである。
【００６５】
図８に示す分割データｄ１を転送する場合、コマンド特定部３３は図６に示すコマンド情報と上記式(１)とを用いて、分割データｄ１に対応するコマンドを特定する(ステップＳ１)。これは、ＨＤＤ７がコマンドの順番を並び替えているので、ホストコントローラ１１はどのコマンドが実行されているかを認識できないからである。分割データｄ１の先頭アドレスａｄｄが「１０００００００」なので、分割データｄ１に対応するコマンドはコマンド２であることが特定できる。
【００６６】
暗号化オンオフ判定部３９は情報テーブル３１を参照して、コマンド特定部３３で特定されたコマンドが指示情報を含むか否か判定する(ステップＳ３)。コマンド２は指示情報を含まないので(ステップＳ３でＮＯ)、すなわち、暗号化の対象となるので、暗号化オンオフ判定部３９はＯＮ信号を生成し(ステップＳ５)、ＯＮ信号を暗号化部１５に送り、暗号化部１５を動作させる。メモリ５からＨＤＤ７への転送では復号化処理がないので、復号化部１７は停止されている。
【００６７】
ＬＢＡ算出部３５は図６に示すコマンド情報と上記式(２)とを用いて、分割データｄ１に割り当てられたセクタ２３のＬＢＡを算出する(ステップＳ７)。分割データｄ１に対応するコマンドはコマンド２である。スタートＬＢＡ[２]は「Ｃ」、スタートアドレス[２]は「１０００００００」、先頭アドレスａｄｄは「１０００００００」である。従って、分割データｄ１に割り当てられたセクタ２３のＬＢＡは「Ｃ」と算出される。
【００６８】
次に、初期ベクトル生成部３７によって、予め設定された所定の演算処理Ｍａｋｅ＿Ｉｖが、ステップＳ７で算出されたＬＢＡに施されて、初期ベクトルＩＶが生成され(ステップＳ９)、初期ベクトルＩＶが暗号化部１５及び復号化部１７へ出力される(ステップＳ１１)。
【００６９】
以上により分割データｄ１の初期ベクトルＩＶが得られる。暗号化部１５に設けられたレジスタに分割データｄ１は格納されている。図１０はそのレジスタに格納されている分割データｄ１を示す図である。初期ベクトル生成部３７から出力された初期ベクトルＩＶと、暗号鍵記憶部１９に記憶されている暗号鍵ＫＥとに基づいて、暗号化部１５は分割データｄ１をＡＥＳのＣＢＣモードで暗号化する。すなわち、暗号化部１５は分割データｄ１をブロック単位で暗号化するに際して、先頭ブロックについては初期ベクトルＩＶを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化する。暗号化部１５は暗号化された分割データｄ１をホストコントローラ１１へ出力する。ホストコントローラ１１は暗号化された分割データｄ１をＨＤＤ７に転送し、ＨＤＤ７は暗号化された分割データｄ１をＬＢＡが「Ｃ」のセクタ２３に記憶させる。
【００７０】
分割データｄ１の次に分割データｄ２が転送されるが、分割データｄ２は分割データｄ１と同様に暗号化されて、分割データｄ２はＬＢＡが「Ｃ＋１」のセクタ２３に記憶される。
【００７１】
コマンド２の実行が終了すると、ＨＤＤ７はコマンド０を実行する。まず、図８に示す分割データｄ３が転送される。
【００７２】
コマンド特定部３３は図６に示すコマンド情報と上記式(１)とを用いて、分割データｄ３に対応するコマンドを特定する(ステップＳ１)。分割データｄ３の先頭アドレスａｄｄが「３０００１０００」なので、分割データｄ３に対応するコマンドはコマンド０であることが特定できる。
【００７３】
暗号化オンオフ判定部３９は情報テーブル３１を参照して、コマンド特定部３３で特定されたコマンドが指示情報を含むか否か判定する(ステップＳ３)。コマンド０は指示情報を含むので(ステップＳ３でＹＥＳ)、すなわち、暗号化しないので、暗号化オンオフ判定部３９はＯＦＦ信号を生成し(ステップＳ１３)、ＯＦＦ信号を暗号化部１５に送り、暗号化部１５を停止させる。
【００７４】
暗号化部１５は停止されているので、分割データｄ３は暗号化されないで、ホストコントローラ１１に送られる。ホストコントローラ１１は暗号化されていない分割データｄ３をＨＤＤ７に送り、ＨＤＤ７はＬＢＡが「Ｋ」のセクタ２３に暗号化されていない分割データｄ３を記憶させる。
【００７５】
分割データｄ４，ｄ５についても、分割データｄ３と同様に暗号化されずに、割り当てられたセクタ２３に記憶される。
【００７６】
コマンド０の実行が終了すると、ＨＤＤ７はコマンド３を実行し、次にコマンド１を実行する。コマンド３及びコマンド１は指示情報を含まないので、コマンド２と同様に処理される。これにより、コマンド３に対応する分割データｄ６，ｄ７，ｄ８は暗号化されて、割り当てられたセクタ２３に記憶され、コマンド１に対応する分割データｄ９，ｄ１０，ｄ１１，ｄ１２，ｄ１３は暗号化されて、割り当てられたセクタ２３に記憶される。
【００７７】
以上によりメモリ５からＨＤＤ７へのデータの転送が終了する。ＨＤＤ７におけるＳＡＴＡのＮＣＱによって、コマンドの実行順序が変更されているが、初期ベクトル生成部３７によって、分割データの先頭アドレスａｄｄに基づき正しい初期ベクトルＩＶが生成され、この正しい初期ベクトルＩＶに基づき、暗号化部１５で暗号化が実行される。従って、正しくＡＥＳのＣＢＣモードで暗号化された分割データを、ＨＤＤ７に記憶させることができる。
【００７８】
次に、仮想メモリであるＨＤＤ７からメモリ５にデータを転送する動作を説明する。図１１はＨＤＤ７からメモリ５へのデータの転送を示す図である。上記の通り、メモリアドレスＡＤＤが「１０００００００−１０００４ＦＦＦ，３０００１０００−３０００３ＦＦＦ，Ｃ０００００００−Ｃ０００４ＦＦＦ」に割り当てられているデータはメモリ５からＨＤＤ７に転送されている。ＣＰＵ３がそのデータをメモリ５から読み出す命令をした場合、そのデータはメモリ５に記憶されていないので、ＣＰＵ３はホストコントローラ１１に、ＨＤＤ７からメモリ５にデータを転送するためのアクセス要求ＲＥＱを送信する。
【００７９】
以降はメモリ５からＨＤＤ７へのデータの転送と同様である。すなわち、図２に示すコマンドのリストが作成され、コマンドは図３に示す内容を有しており、図６に示すコマンド情報が情報テーブル３１(図５)に記憶され、図７に示すようにコマンドの順番が並び替えられてコマンドが実行される。
【００８０】
コマンドを実行する際に、図５に示す暗号化オンオフ判定部３９はコマンドが指示情報を含むと判定すれば、そのコマンドで転送される分割データは暗号化されていないので、ＯＦＦ信号を出力する。ＯＦＦ信号により復号化部１７が停止されるので、分割データは復号化されずに、転送される。一方、暗号化オンオフ判定部３９はコマンドが指示情報を含まないと判定すれば、そのコマンドで転送される分割データは暗号化されているので、ＯＮ信号を出力する。ＯＮ信号により復号化部１７が動作されるので、分割データは復号化されて転送される。復号化のフローは図９に示す暗号化のフローと同じである。
【００８１】
ＨＤＤ７からメモリ５にデータを転送する場合も、ＨＤＤ７におけるＳＡＴＡのＮＣＱによって、コマンドの実行順序が変更されているが、初期ベクトル生成部３７によって、分割データの先頭アドレスａｄｄに基づき正しい初期ベクトルＩＶが生成され、この正しい初期ベクトルＩＶに基づき、復号化部１７で復号化が実行される。従って、正しくＡＥＳのＣＢＣモードで復号化された分割データを、メモリ５に記憶させることができる。
【００８２】
以上説明したように、本実施形態によれば、実行されたコマンドで転送される分割データについて暗号化しないことを指示する指示情報をコマンド毎に付加することができる。これにより、ＨＤＤ７にキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンド１，２，３と暗号化しない分割データに対応するコマンド０に分けることができる。従って、メモリ５とＨＤＤ７との間で転送するデータの中に、暗号化するデータ(例えばファイルＡ)と暗号化しないデータ(例えばファイルＢ)とが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。復号化においても、暗号化されているデータは復号化して転送し、暗号化されていないデータは復号化しないで転送することができる。
【符号の説明】
【００８３】
１  情報処理装置
５  メモリ
７  ＨＤＤ(ハードディスクドライブ)
９  暗号化復号化装置
２３  セクタ
３１  情報テーブル  
【図１】
0005481354.tif 000002
【図２】
0005481354.tif 000003
【図３】
0005481354.tif 000004
【図４】
0005481354.tif 000005
【図５】
0005481354.tif 000006
【図６】
0005481354.tif 000007
【図７】
0005481354.tif 000008
【図８】
0005481354.tif 000009
【図９】
0005481354.tif 000010
【図１０】
0005481354.tif 000011
【図１１】
0005481354.tif 000012