JP5481354B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP5481354B2
JP5481354B2 JP2010257928A JP2010257928A JP5481354B2 JP 5481354 B2 JP5481354 B2 JP 5481354B2 JP 2010257928 A JP2010257928 A JP 2010257928A JP 2010257928 A JP2010257928 A JP 2010257928A JP 5481354 B2 JP5481354 B2 JP 5481354B2
Authority
JP
Japan
Prior art keywords
command
divided data
unit
encryption
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010257928A
Other languages
English (en)
Other versions
JP2012108779A (ja
Inventor
匡史 堤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Document Solutions Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Document Solutions Inc filed Critical Kyocera Document Solutions Inc
Priority to JP2010257928A priority Critical patent/JP5481354B2/ja
Publication of JP2012108779A publication Critical patent/JP2012108779A/ja
Application granted granted Critical
Publication of JP5481354B2 publication Critical patent/JP5481354B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明はハードディスクドライブ用の暗号化復号化装置に関し、特にブロック暗号を用いる暗号化復号化装置に関する。
情報処理装置において、データ量が大きくなると、メモリの容量が不足するので、仮想メモリが利用される。仮想メモリとはメモリの容量が足りなくなれば、一部のデータをハードディスクドライブ等の補助記憶装置に移すことにより、メモリ容量を確保するオペレーティングシステムの機能である。
ハードディスクドライブは電源が切れてもデータが消えないので、仮想メモリとしてハードディスクドライブを利用すると、仮想メモリに記憶されたデータが残ることがある。このためデータを暗号化して仮想メモリに記憶することによって、データの漏洩を防止する場合がある。
データを暗号化する方法としてブロック暗号がある。ブロック暗号とはデータを一定の長さのブロックごとに区切り、ブロック単位で暗号化することである。ブロック暗号にはいくつかのモードがあり、そのうちAES(Advanced Encryption Standard)のCBC(Cipher Block Chaining)モードでは、先頭ブロックについては外部から与えた初期ベクトル(Initial Vector)を利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化する。
ハードディスクドライブにはNCQ(Native Command Queuing)と称されるデータ転送技術がある。ハードディスクドライブはホストコントローラから送られてきたコマンドを実行してデータを転送する。NCQにおいてハードディスクドライブは、ホストコントローラから送られてコマンドをキューイングし、セクタへのアクセス効率が高まるようにコマンドの順番を並び替えてコマンドを実行する。NCQによればセクタに効率的にアクセスできるのでデータの転送を速くすることができる。
NCQではハードディスクドライブでキューイングできるコマンド数が多ければ、セクタへのアクセス効率が高まる。SATA(Serial Advanced Technology Attachment)はコンピュータにハードディスクドライブ等の記憶装置を接続するためのインターフェース規格の一つであり、SATAのNCQでは最大32個までコマンドをキューイングすることができる。
NCQを利用するハードディスクドライブではコマンドの順番が変更されるので、データを上記CBCモードで暗号化してハードディスクドライブに記憶する場合、コマンドの順番が変更されても、正しい初期ベクトルが生成できるようにしなければならない。そこで、初期ベクトルの生成にLBA(Logical Block Addressing)を用いる技術が提案されている(例えば特許文献1参照)。LBAはハードディスクドライブの全てのセクタに通し番号を振り、その通し番号によってセクタを指定する方式である。
特開2009−187646号公報
データを暗号化すれば暗号化及び復号化の時間を要するので、それだけデータの転送が遅くなる。データには暗号化したいデータ(パスワード等の機密性の高いデータ)と暗号化しなくてもよいデータ(機密性のないデータ)がある。
メモリとハードディスクドライブとの間でデータを転送する際に、データの中に暗号化するデータと暗号化しないデータとが混在することがある。このような場合に、暗号化するデータについては暗号化して転送し、暗号化しないデータについては暗号化しないで転送できれば便利である。
本発明は、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できるハードディスクドライブ用の暗号化復号化装置及びそれを備える情報処理装置を提供することを目的とする。
上記目的を達成する本発明の第1の局面に係るハードディスクドライブ用の暗号化復号化装置は、メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送するハードディスクドライブに用いられる暗号化復号化装置であって、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記情報テーブルに記憶されている前記コマンド情報を基にして、前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示す場合、当該コマンドで転送される前記分割データについては暗号化及び復号化を実行しないために前記暗号化部及び前記復号化部を停止させる暗号化オンオフ判定部と、を備える。
本発明の第1の局面に係るハードディスクドライブ用の暗号化復号化装置よれば、実行されたコマンドで転送される分割データについて暗号化の有無を指示する指示情報をコマンド毎に付加することができる。これにより、ハードディスクドライブにキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンドと暗号化しない分割データに対応するコマンドに分けることができる。従って、メモリとハードディスクドライブとの間で転送するデータの中に、暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。
上記構成において、前記ハードディスクドライブは、SATAのNCQに対応する。
上記構成において。前記暗号化部及び前記復号化部での暗号化方式は、AESのCBCモードである。
本発明の第2の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリと前記ハードディスクドライブとの間で転送されるデータに対して、暗号化及び復号化の処理をする上記ハードディスクドライブ用の暗号化復号化装置と、を備える。
本発明の第2の局面に係る情報処理装置によれば、上記第1の局面に係るハードディスクドライブ用の暗号化復号化装置の効果を得ることができる。
本発明の第3の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、前記暗号化復号化装置は、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(a)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために、前記暗号化部をオフさせ、(b)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え、前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置である。
本発明によれば、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できる。
本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。 コマンドのリストの一例を示す図である。 各コマンドの内容の一例を示す図である。 各コマンドに対応するセクタの位置を示すハードディスクの平面図である。 図1に示す初期ベクトル供給部の構成を示すブロック図である。 コマンド情報の一例を示す図である。 コマンドが並び替えられた状態を示す図である。 メモリからHDDへのデータの転送を示す図である。 本実施形態において暗号化処理を説明するフローチャートである。 暗号化部のレジスタに格納された分割データを示す図である。 HDDからメモリへのデータの転送を示す図である。
以下、図面に基づいて本発明の実施形態を詳細に説明する。図1は本発明の一実施形態に係る情報処理装置1の構成を示すブロック図である。情報処理装置1は例えば、コピー、プリンタ、スキャナ及びファクシミリの機能を有する画像形成装置に適用することができる。情報処理装置1はCPU(Central Processing Unit)3、メモリ5、ハードディスクドライブ(以下、HDDと記載する)7及び暗号化復号化装置9を備える。
CPU3は情報処理装置1を動作させるために必要な制御を、情報処理装置1を構成する上記ハードウェア及び図示しないハードウェア(メインメモリ、ROM(Read Only Memory)等)に対して実行する。
メモリ5は例えばDRAM(Dynamic Random Access Memory)であり、HDD7との間でデータが転送される。メモリ5からHDD7へのデータD1の転送とは、メモリ5に記憶されたデータD1を読み出して、HDD7に書き込む処理である。HDD7からメモリ5へのデータD2の転送とは、HDD7に記憶されたデータD2を読み出して、メモリ5に書き込む処理である。
HDD7は例えば、SATAのNCQに対応するHDDであり、メモリ5との間でデータを転送するために発行されたコマンドをキューイングし、キューイングされたコマンドの順番を並び替えてコマンドを実行することにより、メモリ5との間でデータを転送する。SATAのNCQでは最大32個のコマンドをキューイングすることができる。メモリ5とHDD7との間でデータが転送される場合、データをセクタに記憶される単位で分割した分割データ毎に転送される。
暗号化復号化装置9はメモリ5からHDD7に転送されるデータD1を暗号化し、HDD7からメモリ5に転送されるデータD2を復号化する。暗号化復号化装置9は例えば、ASIC(Application Specific Integrated Circuit)を用いて構成されており、SATAホストコントローラ(以下、ホストコントローラと記載する)11、初期ベクトル供給部13、暗号化部15、復号化部17及び暗号鍵記憶部19を備える。
ホストコントローラ11は例えば、SATAのAHCI(Advanced Host Controller Interface)規約に従って構成されている。ホストコントローラ11はコマンド発行部21を備える。ホストコントローラ11はCPU3からのアクセス要求REQに応じて、コマンド発行部21にコマンドを発行させる。ホストコントローラ11は発行されたコマンドのリストを作成すると共に発行されたコマンドをHDD7に送信する。
図2はコマンドのリストの一例を示す図である。この例では4つのコマンド0〜3を用いてメモリ5とHDD7との間でデータを転送する。メモリ5とHDD7の間で転送されるデータは分割データに分けられて転送される。
図3はコマンド0〜3の内容の一例を示している。データにはメモリアドレスADD「10000000−10004FFF,30001000−30003FFF,C0000000−C0004FFF」が割り当てられている。メモリアドレスADDとはデータ(分割データ)に割り当てられているメモリ5上のアドレスである。図1に示すように、メモリアドレスADDはデータを転送する際に、ホストコントローラ11からメモリ5に送られる。
分割データはデータをセクタに記憶される単位で分割したものである。セクタの容量が例えば512バイトとすれば、分割データのデータ量は512バイトである(16進数で表すと「1000」)。
分割データのメモリアドレスADDの欄には各分割データに対して割り当てられているメモリアドレスADDが示されている。セクタのLBAの欄には各分割データに対して割り当てられたセクタのアドレスが示されている。各コマンドにおいてLBAは連続している。
スタートLBA(Start_LBA)はコマンド0〜3のそれぞれにおいて、LBAが連続する複数のセクタのうち先頭セクタのLBAである。
スタートアドレス(Start_Address)はコマンド0〜3のそれぞれにおいて、先頭セクタが割り当てられた分割データに対して割り当てられているメモリアドレスADDの先頭アドレスaddである。先頭アドレスaddについてコマンド0を例に説明すると、「30001000」、「30002000」及び「30003000」が先頭アドレスaddとなる。図1に示すように、先頭アドレスaddは分割データを転送する際に、ホストコントローラ11から初期ベクトル供給部13に送られる。
図4はコマンド0〜3に対応するセクタ23の位置を示すハードディスクの平面図である。LBAがN,N+1,N+2のセクタ23とLBAがL,L+1,L+2,L+3,L+4のセクタ23が位置するトラック25は同じである。これらのセクタ23と、LBAがC,C+1のセクタ23と、LBAがK,K+1,K+2のセクタ23と、が位置するトラック25は異なる。
図3に示す指示情報は転送される分割データについて暗号化の有無を指示するものであり、本実施形態において、指示情報は転送される分割データについて暗号化しないことを指示するものである。指示情報はコマンド発行部21がコマンドを発行する際にコマンド毎に付加することができる。指示情報は例えばAHCI規格のコマンドリストを拡張して、コマンドのリザーブ領域にフラグを用いて指示することができる。なお、指示情報は暗号化の有無を示すビット又はフラグ等のデータをコマンドに付加しないことによって、暗号化をする又はしないを示す情報であってもよい。
コマンド0は指示情報を含む。これはメモリアドレスADDが「30001000−30003FFF」に格納されているデータであるファイルは機密性を有しておらず、そのファイルは暗号化しないことを意味する。これに対して、コマンド1,2,3は指示情報を含まない。これはメモリアドレスADDが「C0000000−C0004FFF」及び「10000000−10004FFF」に格納されているデータであるファイルは機密性を有しており、暗号化することを意味する。
ファイルには予め暗号化するか否かの設定がされている。メモリ5からHDD7に複数のファイルを含むデータを転送する場合、ディスクリプタには、ファイル毎にファイルに割り当てられているメモリアドレスADDとセクタ23のLBAが記録されると共に暗号化するか否かが記録される。ディスクリプタはホストコントローラ11又はHDD7に格納される。コマンド発行部21はコマンドを発行する際にディスクリプタを参照して、コマンドに指示情報を付加するか否かを選択する。
図1の説明に戻る。暗号鍵記憶部19は例えば、RAM(Random Access Memory)又はレジスタ等の記憶手段によって構成されており、暗号化及び復号化に用いる暗号鍵KEが予め記憶されている。
暗号化部15はメモリ5とホストコントローラ11との間に設けられている。暗号化部15は転送される分割データをブロック単位で暗号化するに際して、先頭ブロックについては初期ベクトル供給部13から供給された(言い換えれば図5の初期ベクトル生成部37で生成された)初期ベクトルIVを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、メモリ5からHDD7に転送する分割データ毎に実行する。本実施形態では、暗号化部15は暗号鍵記憶部19に記憶されている暗号鍵KEと、初期ベクトル供給部13から供給された初期ベクトルIVとに基づいて、ホストコントローラ11から出力されたメモリアドレスADDに応じてメモリ5からホストコントローラ11に転送されるデータD1を、転送される分割データ毎にリアルタイムで暗号化してホストコントローラ11へ出力する。暗号化部15はブロック暗号化方式として、例えばAESのCBCモードを用いる。
復号化部17はホストコントローラ11とメモリ5との間に設けられている。復号化部17は暗号化部15で暗号化されてHDD7に記憶された分割データについて、初期ベクトル供給部13から供給された(言い換えれば図5の初期ベクトル生成部37で生成された)初期ベクトルIVを利用して復号化することを、HDD7からメモリ5に転送する分割データ毎に実行する。本実施形態では、復号化部17は暗号鍵記憶部19に記憶されている暗号鍵KEと、初期ベクトル供給部13から供給された初期ベクトルIVとに基づいて、ホストコントローラ11から出力されたメモリアドレスADDに応じてホストコントローラ11からメモリ5に転送されるデータD2を、転送される分割データ毎にリアルタイムで復号化してメモリ5へ出力する。
復号化部17は暗号化部15と同じ暗号化方式を用いて復号化を行う。なお、暗号化部15及び復号化部17はAESのCBCモードに限らない。データをブロック単位で暗号化する暗号化方式であって、先頭ブロックについては初期ベクトルIVを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化するブロック暗号化方式であればよい。
初期ベクトル供給部13は例えば種々の論理回路及び順序回路等を用いて構成される。図5は初期ベクトル供給部13の構成の一例を示すブロック図である。初期ベクトル供給部13は情報テーブル31、コマンド特定部33、LBA算出部35、初期ベクトル生成部37及び暗号化オンオフ判定部39を備える。
初期ベクトル供給部13はCPU3からのホストコントローラ11へのアクセス要求REQ(図1)を監視し、アクセス要求REQに応じてコマンド発行部21によってコマンドが発行された場合、コマンドの転送情報を読み取って得られたコマンド情報を、情報テーブル31に記憶する。AHCI規格であれば、初期ベクトル供給部13はコマンドリスト内のコマンドヘッダ並びに、コマンドテーブル内のコマンドFIS及びPRDT(Physical Region Descriptor Table)を読み取ってコマンド情報を作成する。コマンド情報はスタートLBA、スタートアドレス及び、複数のセクタ23のデータ量、を特定するための情報並びに指示情報の有無をコマンド毎について得たものである。
図6はコマンド情報の一例を示す図である。コマンド情報はHDD7にキューイングできる最大数である32個のコマンドについて示される。Exist[I]はコマンドI(Iはコマンド番号であり、0〜31)が存在するか否かを示す情報である。Exist[I]:1であれば、そのコマンドは存在する。Exist[I]:0であれば、そのコマンドは存在しない。スタートLBA(Start_LBA)、スタートアドレス(Start_Address)及び指示情報については既に説明した。
セクタサイズ(Sector_Size)は複数のセクタ23のデータ量を特定するための情報の一例であり、各コマンドについてのセクタ23の数である。例えば、コマンド0であれば、セクタサイズが3なので、3(セクタ数)×512バイトがコマンド0についての複数のセクタ23のデータ量となる。
コマンド特定部33はHDD7がキューイングされたコマンド0〜3の順番を並び替えてそれらのコマンドを実行する際に、転送される分割データに割り当てられたメモリアドレスADDの先頭アドレスaddと情報テーブル31に記憶されているコマンド情報とを用いて、転送される分割データに対応するコマンドが、コマンド発行部21により発行された複数のコマンドのうちのいずれであるかを特定することを、転送される分割データ毎に実行する。
コマンドの特定には下記式が用いられる。
Start_Address[I]≦add<Start_Address[I]+Sector_Size×1000・・・(1)
式(1)は1セクタの容量が512バイトの場合を示している。「1000」は512を16進数で表現したものである。例えば、図3に示す先頭アドレスaddが「30002000」の分割データであれば、コマンド0の場合に式(1)が成立するので、先頭アドレスaddが「30002000」の分割データはコマンド0に対応すると特定できる。
LBA算出部35はコマンド特定部33で特定されたコマンドについてのコマンド情報と転送される分割データに割り当てられたメモリアドレスADDの先頭アドレスaddとを用いて、転送される分割データに割り当てられたセクタ23のLBAを算出することを、転送される分割データ毎に実行する。
LBAの演算には下記式が用いられる。
LBA=Start_LBA[I]+(add− Start_Address[I])/1000・・・(2)
例えば、図3に示す先頭アドレスaddが「30002000」の分割データであれば、コマンド0に対応するので、Start_LBA[0]が「K」であり、Start_Address[0]が「30001000」である。従って、式(2)より、LBAは「K+1」となる。
初期ベクトル生成部37はLBA算出部35で算出されたLBAから初期ベクトルIVを生成することを、転送される分割データ毎に実行する。詳細には、初期ベクトル生成部37はLBA算出部35により算出されたLBAに、所定の演算処理、例えば排他的論理和演算等の演算処理をして、初期ベクトルIVを生成し、暗号化部15及び復号化部17に供給する。これにより、暗号強度を向上させる。なお、初期ベクトル生成部37は、LBAを、そのまま初期ベクトルIVとして出力する構成としてもよい。
暗号化オンオフ判定部39はメモリ5からHDD7にデータを転送する際に、情報テーブル31に記憶されているコマンド情報を参照して、コマンド特定部33で特定されたコマンドに指示情報が付加されているか否か判定する。指示情報とは分割データを暗号化しないことを指示する情報である。暗号化オンオフ判定部39は指示情報が付加されていると判定した場合、暗号化部15にOFF信号を送り、暗号化部15をオフさせる。これにより、その分割データについては暗号化されずに転送される。これに対して、暗号化オンオフ判定部39は指示情報が付加されていないと判定した場合、暗号化部15にON信号を送り、暗号化部15をオンさせる。これにより、その分割データについては暗号化されて転送される。
HDD7からメモリ5にデータを転送する場合、暗号化オンオフ判定部39は情報テーブル31に記憶されているコマンド情報を参照して、コマンド特定部33で特定されたコマンドに指示情報が付加されているか否か判定する。暗号化オンオフ判定部39は指示情報が付加されていると判定した場合、復号化部17にOFF信号を送り、復号化部17をオフさせる。これにより、その分割データについては復号化されずに転送される。一方、暗号化オンオフ判定部39は指示情報が付加されていないと判定した場合、復号化部17にON信号を送り、復号化部17をオンさせる。これにより、その分割データについては復号化されて転送される。
以上のように、暗号化オンオフ判定部39は情報テーブル31に記憶されているコマンド情報を基にして、コマンド特定部33で特定されたコマンドの指示情報が暗号化無しを示す場合、そのコマンドで転送される分割データについては暗号化及び復号化を実行しないために暗号化部15及び復号化部17を停止させる。
次に、本実施形態に係る情報処理装置1がデータを転送する動作について説明する。コマンドの内容は図3に示す通りであり、コマンド情報は図6に示す通りとする。まず、メモリ5から仮想メモリであるHDD7にデータを転送する動作を説明する。
図1に示すCPU3がホストコントローラ11に、メモリ5からHDD7にデータを転送するためのアクセス要求REQを送信すると、そのアクセス要求REQに応じて、コマンド発行部21はコマンドを発行する。そのコマンドを基にしてホストコントローラ11は図2に示すコマンドリストを作成すると共にそのコマンドをHDD7に送信する。
初期ベクトル供給部13はアクセス要求REQを監視し、コマンド発行部21によってコマンドが発行されると、図6に示すコマンド情報を情報テーブル31に記憶する。
HDD7に送信されたコマンドであるコマンド0〜3はキューイングされて、セクタ23に効率的にアクセスできるように、例えば図7に示すように、コマンドが並び替えられる。ここでは、実行の順番がコマンド2、コマンド0、コマンド3、コマンド1に並び替えられている。
図8はメモリ5からHDD7へのデータの転送を示す図である。まず、HDD7がコマンド2を実行することにより、ホストコントローラ11は分割データd1、分割データd2の順でメモリ5からHDD7に転送する。これにより、分割データd1はLBAが「C」のセクタ23に記憶され、分割データd2はLBAが「C+1」のセクタ23に記憶される。
次に、HDD7がコマンド0を実行することにより、ホストコントローラ11は分割データd3、分割データd4、分割データd5の順でメモリ5からHDD7に転送する。これにより、分割データd3はLBAが「K」のセクタ23に記憶され、分割データd4はLBAが「K+1」のセクタ23に記憶され、分割データd5はLBAが「K+2」のセクタ23に記憶される。
そして、HDD7はコマンド3を実行することにより、ホストコントローラ11は分割データd6、分割データd7、分割データd8の順でメモリ5からHDD7に転送する。これにより、分割データd6はLBAが「N」のセクタ23に記憶され、分割データd7はLBAが「N+1」のセクタ23に記憶され、分割データd8はLBAが「N+2」のセクタ23に記憶される。
最後に、HDD7がコマンド1を実行することにより、ホストコントローラ11は分割データd9、分割データd10、分割データd11、分割データd12、分割データd13の順でメモリ5からHDD7に転送する。これらの分割データも、上記と同様に割り当てられたセクタ23に記憶される。
分割データd1〜d13はそれぞれ、転送される際に暗号化される。但し、対応するコマンドが分割データについて暗号化しないことを指示する指示情報が付加されていれば、暗号化されずに転送される。これについて説明する。図9は暗号化処理を説明するフローチャートである。
図8に示す分割データd1を転送する場合、コマンド特定部33は図6に示すコマンド情報と上記式(1)とを用いて、分割データd1に対応するコマンドを特定する(ステップS1)。これは、HDD7がコマンドの順番を並び替えているので、ホストコントローラ11はどのコマンドが実行されているかを認識できないからである。分割データd1の先頭アドレスaddが「10000000」なので、分割データd1に対応するコマンドはコマンド2であることが特定できる。
暗号化オンオフ判定部39は情報テーブル31を参照して、コマンド特定部33で特定されたコマンドが指示情報を含むか否か判定する(ステップS3)。コマンド2は指示情報を含まないので(ステップS3でNO)、すなわち、暗号化の対象となるので、暗号化オンオフ判定部39はON信号を生成し(ステップS5)、ON信号を暗号化部15に送り、暗号化部15を動作させる。メモリ5からHDD7への転送では復号化処理がないので、復号化部17は停止されている。
LBA算出部35は図6に示すコマンド情報と上記式(2)とを用いて、分割データd1に割り当てられたセクタ23のLBAを算出する(ステップS7)。分割データd1に対応するコマンドはコマンド2である。スタートLBA[2]は「C」、スタートアドレス[2]は「10000000」、先頭アドレスaddは「10000000」である。従って、分割データd1に割り当てられたセクタ23のLBAは「C」と算出される。
次に、初期ベクトル生成部37によって、予め設定された所定の演算処理Make_Ivが、ステップS7で算出されたLBAに施されて、初期ベクトルIVが生成され(ステップS9)、初期ベクトルIVが暗号化部15及び復号化部17へ出力される(ステップS11)。
以上により分割データd1の初期ベクトルIVが得られる。暗号化部15に設けられたレジスタに分割データd1は格納されている。図10はそのレジスタに格納されている分割データd1を示す図である。初期ベクトル生成部37から出力された初期ベクトルIVと、暗号鍵記憶部19に記憶されている暗号鍵KEとに基づいて、暗号化部15は分割データd1をAESのCBCモードで暗号化する。すなわち、暗号化部15は分割データd1をブロック単位で暗号化するに際して、先頭ブロックについては初期ベクトルIVを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化する。暗号化部15は暗号化された分割データd1をホストコントローラ11へ出力する。ホストコントローラ11は暗号化された分割データd1をHDD7に転送し、HDD7は暗号化された分割データd1をLBAが「C」のセクタ23に記憶させる。
分割データd1の次に分割データd2が転送されるが、分割データd2は分割データd1と同様に暗号化されて、分割データd2はLBAが「C+1」のセクタ23に記憶される。
コマンド2の実行が終了すると、HDD7はコマンド0を実行する。まず、図8に示す分割データd3が転送される。
コマンド特定部33は図6に示すコマンド情報と上記式(1)とを用いて、分割データd3に対応するコマンドを特定する(ステップS1)。分割データd3の先頭アドレスaddが「30001000」なので、分割データd3に対応するコマンドはコマンド0であることが特定できる。
暗号化オンオフ判定部39は情報テーブル31を参照して、コマンド特定部33で特定されたコマンドが指示情報を含むか否か判定する(ステップS3)。コマンド0は指示情報を含むので(ステップS3でYES)、すなわち、暗号化しないので、暗号化オンオフ判定部39はOFF信号を生成し(ステップS13)、OFF信号を暗号化部15に送り、暗号化部15を停止させる。
暗号化部15は停止されているので、分割データd3は暗号化されないで、ホストコントローラ11に送られる。ホストコントローラ11は暗号化されていない分割データd3をHDD7に送り、HDD7はLBAが「K」のセクタ23に暗号化されていない分割データd3を記憶させる。
分割データd4,d5についても、分割データd3と同様に暗号化されずに、割り当てられたセクタ23に記憶される。
コマンド0の実行が終了すると、HDD7はコマンド3を実行し、次にコマンド1を実行する。コマンド3及びコマンド1は指示情報を含まないので、コマンド2と同様に処理される。これにより、コマンド3に対応する分割データd6,d7,d8は暗号化されて、割り当てられたセクタ23に記憶され、コマンド1に対応する分割データd9,d10,d11,d12,d13は暗号化されて、割り当てられたセクタ23に記憶される。
以上によりメモリ5からHDD7へのデータの転送が終了する。HDD7におけるSATAのNCQによって、コマンドの実行順序が変更されているが、初期ベクトル生成部37によって、分割データの先頭アドレスaddに基づき正しい初期ベクトルIVが生成され、この正しい初期ベクトルIVに基づき、暗号化部15で暗号化が実行される。従って、正しくAESのCBCモードで暗号化された分割データを、HDD7に記憶させることができる。
次に、仮想メモリであるHDD7からメモリ5にデータを転送する動作を説明する。図11はHDD7からメモリ5へのデータの転送を示す図である。上記の通り、メモリアドレスADDが「10000000−10004FFF,30001000−30003FFF,C0000000−C0004FFF」に割り当てられているデータはメモリ5からHDD7に転送されている。CPU3がそのデータをメモリ5から読み出す命令をした場合、そのデータはメモリ5に記憶されていないので、CPU3はホストコントローラ11に、HDD7からメモリ5にデータを転送するためのアクセス要求REQを送信する。
以降はメモリ5からHDD7へのデータの転送と同様である。すなわち、図2に示すコマンドのリストが作成され、コマンドは図3に示す内容を有しており、図6に示すコマンド情報が情報テーブル31(図5)に記憶され、図7に示すようにコマンドの順番が並び替えられてコマンドが実行される。
コマンドを実行する際に、図5に示す暗号化オンオフ判定部39はコマンドが指示情報を含むと判定すれば、そのコマンドで転送される分割データは暗号化されていないので、OFF信号を出力する。OFF信号により復号化部17が停止されるので、分割データは復号化されずに、転送される。一方、暗号化オンオフ判定部39はコマンドが指示情報を含まないと判定すれば、そのコマンドで転送される分割データは暗号化されているので、ON信号を出力する。ON信号により復号化部17が動作されるので、分割データは復号化されて転送される。復号化のフローは図9に示す暗号化のフローと同じである。
HDD7からメモリ5にデータを転送する場合も、HDD7におけるSATAのNCQによって、コマンドの実行順序が変更されているが、初期ベクトル生成部37によって、分割データの先頭アドレスaddに基づき正しい初期ベクトルIVが生成され、この正しい初期ベクトルIVに基づき、復号化部17で復号化が実行される。従って、正しくAESのCBCモードで復号化された分割データを、メモリ5に記憶させることができる。
以上説明したように、本実施形態によれば、実行されたコマンドで転送される分割データについて暗号化しないことを指示する指示情報をコマンド毎に付加することができる。これにより、HDD7にキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンド1,2,3と暗号化しない分割データに対応するコマンド0に分けることができる。従って、メモリ5とHDD7との間で転送するデータの中に、暗号化するデータ(例えばファイルA)と暗号化しないデータ(例えばファイルB)とが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。復号化においても、暗号化されているデータは復号化して転送し、暗号化されていないデータは復号化しないで転送することができる。
1 情報処理装置
5 メモリ
7 HDD(ハードディスクドライブ)
9 暗号化復号化装置
23 セクタ
31 情報テーブル

Claims (3)

  1. メモリと、
    ハードディスクドライブと、
    前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、
    前記暗号化復号化装置は、
    前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、
    前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、
    キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、
    前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、
    前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、
    転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、
    前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、
    前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(a)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために、前記暗号化部をオフさせ、(b)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え
    前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置
  2. 前記ハードディスクドライブは、SATAのNCQに対応する請求項1に記載の情報処理装置
  3. 前記暗号化部及び前記復号化部での暗号化方式は、AESのCBCモードである請求項1又は2項に記載の情報処理装置
JP2010257928A 2010-11-18 2010-11-18 情報処理装置 Expired - Fee Related JP5481354B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010257928A JP5481354B2 (ja) 2010-11-18 2010-11-18 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010257928A JP5481354B2 (ja) 2010-11-18 2010-11-18 情報処理装置

Publications (2)

Publication Number Publication Date
JP2012108779A JP2012108779A (ja) 2012-06-07
JP5481354B2 true JP5481354B2 (ja) 2014-04-23

Family

ID=46494324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010257928A Expired - Fee Related JP5481354B2 (ja) 2010-11-18 2010-11-18 情報処理装置

Country Status (1)

Country Link
JP (1) JP5481354B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5524122B2 (ja) * 2011-04-06 2014-06-18 京セラドキュメントソリューションズ株式会社 情報処理装置及び情報処理方法
JP5524127B2 (ja) * 2011-04-27 2014-06-18 京セラドキュメントソリューションズ株式会社 情報処理装置及び情報処理方法
JP6192617B2 (ja) * 2014-08-04 2017-09-06 京セラドキュメントソリューションズ株式会社 情報処理装置、転送制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325207A (ja) * 2000-05-17 2001-11-22 Hitachi Ltd キャッシュ内蔵型スイッチおよび計算機システムおよびキャッシュ内蔵型スイッチのスイッチ制御方法
WO2008114329A1 (ja) * 2007-02-19 2008-09-25 Pioneer Corporation データ暗号化記録装置、および、その方法
JP5117748B2 (ja) * 2007-03-29 2013-01-16 株式会社日立製作所 暗号化機能を備えたストレージ仮想化装置
JP5017136B2 (ja) * 2008-02-08 2012-09-05 京セラドキュメントソリューションズ株式会社 ハードディスクドライブ用の暗号化復号化装置、及びハードディスクドライブ装置
JP2010256652A (ja) * 2009-04-27 2010-11-11 Renesas Electronics Corp 記憶媒体暗号処理装置及び方法

Also Published As

Publication number Publication date
JP2012108779A (ja) 2012-06-07

Similar Documents

Publication Publication Date Title
US20130290736A1 (en) Data storage device, data control device and method for encrypting data
US8321659B2 (en) Data encryption apparatus, data decryption apparatus, data encryption method, data decryption method, and data transfer controlling apparatus
TWI525471B (zh) 具有加密之資料儲存裝置及其方法以及運用該裝置之系統、固態磁碟機、電腦可讀媒體
EP2365444B1 (en) Dma engine capable of concurrent data manipulation
JP6067757B2 (ja) ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用
JP2008085986A (ja) データ変換装置と電子装置とデータ変換方法
JP2012090286A (ja) イン−ストリームデータ暗号化/復号の機能を有するメモリシステム
US8908859B2 (en) Cryptographic apparatus and memory system
US20100128874A1 (en) Encryption / decryption in parallelized data storage using media associated keys
EP2722787A1 (en) Method and apparatus for writing and reading encrypted hard disk data
JP5118494B2 (ja) イン−ストリームデータ暗号化/復号の機能を有するメモリシステム
KR101496975B1 (ko) 고체 상태 디스크 및 이에 대한 입출력방법
JP2008524969A5 (ja)
JP5481354B2 (ja) 情報処理装置
JP2012243381A (ja) データ記憶装置、記憶制御装置及び方法
JP5017136B2 (ja) ハードディスクドライブ用の暗号化復号化装置、及びハードディスクドライブ装置
KR101126596B1 (ko) 단일 및 다중 aes 동작을 지원하기 위한 듀얼 모드 aes 장치 및 방법
US20100138670A1 (en) Storage apparatus and data writing method
US10929030B2 (en) Computer and control method
JP2007336446A (ja) データ暗号化装置
JP4853026B2 (ja) 情報処理装置及びプログラム
US9058295B2 (en) Encrypt data of storage device
CN114064525A (zh) 存储器***、存储器***的控制方法以及信息处理***
CN101727408A (zh) 一种基于硬盘接口控制器的数据加密方法
JP5263574B2 (ja) データ処理装置及びデータ消去方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5481354

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees