JP5481354B2 - Information processing device - Google Patents
Information processing device Download PDFInfo
- 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
Links
Images
Description
本発明はハードディスクドライブ用の暗号化復号化装置に関し、特にブロック暗号を用いる暗号化復号化装置に関する。 The present invention relates to an encryption / decryption device for a hard disk drive, and more particularly to an encryption / decryption device using a block cipher.
情報処理装置において、データ量が大きくなると、メモリの容量が不足するので、仮想メモリが利用される。仮想メモリとはメモリの容量が足りなくなれば、一部のデータをハードディスクドライブ等の補助記憶装置に移すことにより、メモリ容量を確保するオペレーティングシステムの機能である。 In the information processing apparatus, when the amount of data increases, the capacity of the memory becomes insufficient, so a virtual memory is used. Virtual memory is a function of an operating system that secures memory capacity by transferring some data to an auxiliary storage device such as a hard disk drive when the memory capacity is insufficient.
ハードディスクドライブは電源が切れてもデータが消えないので、仮想メモリとしてハードディスクドライブを利用すると、仮想メモリに記憶されたデータが残ることがある。このためデータを暗号化して仮想メモリに記憶することによって、データの漏洩を防止する場合がある。 Since data is not lost even when the power is turned off, data stored in the virtual memory may remain when the hard disk drive is used as the virtual memory. For this reason, data leakage may be prevented by encrypting the data and storing it in the virtual memory.
データを暗号化する方法としてブロック暗号がある。ブロック暗号とはデータを一定の長さのブロックごとに区切り、ブロック単位で暗号化することである。ブロック暗号にはいくつかのモードがあり、そのうちAES(Advanced Encryption Standard)のCBC(Cipher Block Chaining)モードでは、先頭ブロックについては外部から与えた初期ベクトル(Initial Vector)を利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化する。 There is a block cipher as a method of encrypting data. The block cipher is to divide data into blocks of a certain length and encrypt them in units of blocks. There are several block cipher modes. Among them, in the AES (Advanced Encryption Standard) CBC (Cipher Block Chaining) mode, the initial block is encrypted using the initial vector (Initial Vector) given from the outside, and the rest This block is encrypted using the previous block that has been encrypted.
ハードディスクドライブにはNCQ(Native Command Queuing)と称されるデータ転送技術がある。ハードディスクドライブはホストコントローラから送られてきたコマンドを実行してデータを転送する。NCQにおいてハードディスクドライブは、ホストコントローラから送られてコマンドをキューイングし、セクタへのアクセス効率が高まるようにコマンドの順番を並び替えてコマンドを実行する。NCQによればセクタに効率的にアクセスできるのでデータの転送を速くすることができる。 A hard disk drive has a data transfer technology called NCQ (Native Command Queuing). The hard disk drive executes commands sent from the host controller and transfers data. In NCQ, the hard disk drive queues commands sent from the host controller, and executes the commands by rearranging the order of the commands so that the sector access efficiency is improved. According to NCQ, the sector can be accessed efficiently, so that data transfer can be accelerated.
NCQではハードディスクドライブでキューイングできるコマンド数が多ければ、セクタへのアクセス効率が高まる。SATA(Serial Advanced Technology Attachment)はコンピュータにハードディスクドライブ等の記憶装置を接続するためのインターフェース規格の一つであり、SATAのNCQでは最大32個までコマンドをキューイングすることができる。 In NCQ, if the number of commands that can be queued in the hard disk drive is large, the access efficiency to the sector increases. SATA (Serial Advanced Technology Attachment) is one of interface standards for connecting a storage device such as a hard disk drive to a computer. The SATA NCQ can queue up to 32 commands.
NCQを利用するハードディスクドライブではコマンドの順番が変更されるので、データを上記CBCモードで暗号化してハードディスクドライブに記憶する場合、コマンドの順番が変更されても、正しい初期ベクトルが生成できるようにしなければならない。そこで、初期ベクトルの生成にLBA(Logical Block Addressing)を用いる技術が提案されている(例えば特許文献1参照)。LBAはハードディスクドライブの全てのセクタに通し番号を振り、その通し番号によってセクタを指定する方式である。 Since the order of commands is changed in a hard disk drive using NCQ, when data is encrypted and stored in the hard disk drive in the CBC mode, a correct initial vector must be generated even if the order of commands is changed. I must. Thus, a technique using LBA (Logical Block Addressing) for generating an initial vector has been proposed (see, for example, Patent Document 1). LBA is a system in which serial numbers are assigned to all sectors of a hard disk drive, and sectors are designated by the serial numbers.
データを暗号化すれば暗号化及び復号化の時間を要するので、それだけデータの転送が遅くなる。データには暗号化したいデータ(パスワード等の機密性の高いデータ)と暗号化しなくてもよいデータ(機密性のないデータ)がある。 If data is encrypted, it takes time for encryption and decryption, so that data transfer is delayed accordingly. There are data to be encrypted (data with high confidentiality such as a password) and data that does not need to be encrypted (data without confidentiality).
メモリとハードディスクドライブとの間でデータを転送する際に、データの中に暗号化するデータと暗号化しないデータとが混在することがある。このような場合に、暗号化するデータについては暗号化して転送し、暗号化しないデータについては暗号化しないで転送できれば便利である。 When data is transferred between the memory and the hard disk drive, data to be encrypted and data to be encrypted may be mixed in the data. In such a case, it is convenient if data to be encrypted can be transferred after being encrypted, and data that is not encrypted can be transferred without being encrypted.
本発明は、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できるハードディスクドライブ用の暗号化復号化装置及びそれを備える情報処理装置を提供することを目的とする。 In the hard disk drive capable of executing the commands by rearranging the order of the queued commands, the encryption is performed when data to be encrypted and data to be encrypted are mixed in the transferred data. An object of the present invention is to provide an encryption / decryption device for a hard disk drive that can transfer data to be encrypted and transfer data that is not encrypted without encryption, and an information processing device including the same.
上記目的を達成する本発明の第1の局面に係るハードディスクドライブ用の暗号化復号化装置は、メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送するハードディスクドライブに用いられる暗号化復号化装置であって、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記情報テーブルに記憶されている前記コマンド情報を基にして、前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示す場合、当該コマンドで転送される前記分割データについては暗号化及び復号化を実行しないために前記暗号化部及び前記復号化部を停止させる暗号化オンオフ判定部と、を備える。 An encryption / decryption device for a hard disk drive according to a first aspect of the present invention that achieves the above object queues a command issued to transfer data to and from a memory, and queues the queued command Used in a hard disk drive that transfers the data by rearranging the order of commands and transferring the data by dividing the data into units stored in sectors when transferring the data. An encryption / decryption device, issuing a command, a command issuing unit capable of adding for each command instruction information indicating whether or not the divided data transferred by the command is encrypted; When the command is issued by the command issuing unit, the first sector among a plurality of the sectors having consecutive LBAs. To specify the start LBA that is the LBA of the data, the start address that is the start address of the memory address assigned to the divided data to which the start sector is assigned, and the data amount of the plurality of sectors Information table in which command information that is obtained for each command is stored for each command, and when the command is executed by rearranging the order of the queued commands. The command corresponding to the divided data to be transferred using the start address of the memory address assigned to the divided data transferred by the command sent and the command information stored in the information table Of the plurality of commands issued by the command issuing unit It is assigned to the command specifying unit that executes the identification for each divided data to be transferred, the command information on the command specified by the command specifying unit, and the divided data to be transferred. An LBA calculation unit that executes, for each of the divided data to be transferred, calculating the LBA of the sector allocated to the divided data to be transferred using the start address of the memory address that is When generating the initial vector from the LBA calculated by the LBA calculation unit for each of the divided data to be transferred, and for encrypting the divided data to be transferred in units of blocks, The first block is encrypted using the initial vector generated by the initial vector generation unit, and the rest Are encrypted using the previous encrypted block for each of the divided data transferred from the memory to the hard disk drive, and encrypted by the encryption unit. For each of the divided data transferred from the hard disk drive to the memory, the divided data stored in the hard disk drive is decoded using the initial vector generated by the initial vector generation unit. And when the instruction information of the command specified by the command specifying unit indicates no encryption based on the command information stored in the information table In order not to execute encryption and decryption for the divided data, the encryption unit and the decryption The comprising an encryption off determination unit stopping, the.
本発明の第1の局面に係るハードディスクドライブ用の暗号化復号化装置よれば、実行されたコマンドで転送される分割データについて暗号化の有無を指示する指示情報をコマンド毎に付加することができる。これにより、ハードディスクドライブにキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンドと暗号化しない分割データに対応するコマンドに分けることができる。従って、メモリとハードディスクドライブとの間で転送するデータの中に、暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。 According to the encryption / decryption device for a hard disk drive according to the first aspect of the present invention, it is possible to add, for each command, instruction information for instructing whether or not the divided data transferred by the executed command is encrypted. . Thus, each of the commands queued in the hard disk drive can be divided into a command corresponding to the divided data to be encrypted and a command corresponding to the divided data not to be encrypted. Therefore, if the data to be transferred between the memory and the hard disk drive contains both encrypted data and unencrypted data, the encrypted data is encrypted and transferred, and the unencrypted data is encrypted. Can be transferred without.
上記構成において、前記ハードディスクドライブは、SATAのNCQに対応する。 In the above configuration, the hard disk drive corresponds to NCQ of SATA.
上記構成において。前記暗号化部及び前記復号化部での暗号化方式は、AESのCBCモードである。 In the above configuration. The encryption method in the encryption unit and the decryption unit is an AES CBC mode.
本発明の第2の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリと前記ハードディスクドライブとの間で転送されるデータに対して、暗号化及び復号化の処理をする上記ハードディスクドライブ用の暗号化復号化装置と、を備える。 An information processing apparatus according to a second aspect of the present invention includes a memory, a hard disk drive, and the hard disk that performs encryption and decryption processing on data transferred between the memory and the hard disk drive. And an encryption / decryption device for the drive.
本発明の第2の局面に係る情報処理装置によれば、上記第1の局面に係るハードディスクドライブ用の暗号化復号化装置の効果を得ることができる。
本発明の第3の局面に係る情報処理装置は、メモリと、ハードディスクドライブと、前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、前記暗号化復号化装置は、前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(a)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために、前記暗号化部をオフさせ、(b)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え、前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置である。
According to the information processing apparatus according to the second aspect of the present invention, the effect of the encryption / decryption apparatus for the hard disk drive according to the first aspect can be obtained.
An information processing apparatus according to a third aspect of the present invention queues commands issued to transfer data between a memory, a hard disk drive, and the memory, and the order of the queued commands The encryption is used for the hard disk drive that transfers the data by rearranging the data and transferring the data for each divided data obtained by dividing the data in units stored in sectors when the data is transferred A decryption device, wherein the encryption / decryption device issues the command and indicates instruction information indicating whether or not the divided data transferred by the command is encrypted. When the command is issued by the command issuing unit that can be added every time, and the command issuing unit, The start LBA that is the LBA of the first sector among the plurality of sectors in which the BA is continuous, the start address that is the first address of the memory address assigned to the divided data to which the first sector is assigned, and the plurality Information for specifying the data amount of the sector and command information obtained by obtaining the instruction information for each command, and the order of the queued commands are rearranged. When the command is executed, using the head address of the memory address assigned to the divided data transferred by the executed command and the command information stored in the information table, The command corresponding to the divided data to be transferred is the command generation. A command specifying unit that executes for each of the divided data to be transferred, and specifying the command that is specified by the command specifying unit. Using the command information and the start address of the memory address assigned to the divided data to be transferred, the LBA of the sector assigned to the divided data to be transferred is calculated. Transferred with an LBA calculation unit that executes for each divided data, and an initial vector generation unit that executes generation of an initial vector from the LBA calculated by the LBA calculation unit for each divided data to be transferred When the divided data is encrypted in units of blocks, the initial block is generated by the initial vector generation unit. For each of the divided data transferred from the memory to the hard disk drive, the encrypted data is encrypted using the initial vector, and the remaining blocks are encrypted using the previous encrypted block. An encryption unit to be executed, and decrypting the divided data encrypted by the encryption unit and stored in the hard disk drive using the initial vector generated by the initial vector generation unit; A decoding unit that executes each divided data to be transferred from the hard disk drive to the memory; and the command information stored in the information table when the divided data is transferred from the memory to the hard disk drive. Referring to (a) the command information specified by the command specifying unit is encrypted In order to transfer the divided data without encryption, the encryption unit is turned off, and (b) the instruction information of the command specified by the command specification unit is encrypted. An encryption on / off determination unit that turns on the encryption unit in order to encrypt and transfer the divided data, and the hard disk drive includes the instruction information indicating no encryption. Information stored in which the non-encrypted divided data transferred by the command and the encrypted divided data transferred by the command indicating that the instruction information is encrypted are stored. It is a processing device.
本発明によれば、キューイングされたコマンドの順番を並び替えてコマンドを実行することができるハードディスクドライブにおいて、転送されるデータの中に暗号化するデータと暗号化しないデータとが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送できる。 According to the present invention, in the hard disk drive that can execute the commands by rearranging the order of the queued commands, when data to be encrypted and data to be encrypted are mixed in the transferred data, Data to be encrypted can be transferred after being encrypted, and data that is not encrypted can be transferred without being encrypted.
以下、図面に基づいて本発明の実施形態を詳細に説明する。図1は本発明の一実施形態に係る情報処理装置1の構成を示すブロック図である。情報処理装置1は例えば、コピー、プリンタ、スキャナ及びファクシミリの機能を有する画像形成装置に適用することができる。情報処理装置1はCPU(Central Processing Unit)3、メモリ5、ハードディスクドライブ(以下、HDDと記載する)7及び暗号化復号化装置9を備える。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. FIG. 1 is a block diagram showing a configuration of an
CPU3は情報処理装置1を動作させるために必要な制御を、情報処理装置1を構成する上記ハードウェア及び図示しないハードウェア(メインメモリ、ROM(Read Only Memory)等)に対して実行する。
The
メモリ5は例えばDRAM(Dynamic Random Access Memory)であり、HDD7との間でデータが転送される。メモリ5からHDD7へのデータD1の転送とは、メモリ5に記憶されたデータD1を読み出して、HDD7に書き込む処理である。HDD7からメモリ5へのデータD2の転送とは、HDD7に記憶されたデータD2を読み出して、メモリ5に書き込む処理である。
The memory 5 is, for example, a DRAM (Dynamic Random Access Memory), and data is transferred to and from the
HDD7は例えば、SATAのNCQに対応するHDDであり、メモリ5との間でデータを転送するために発行されたコマンドをキューイングし、キューイングされたコマンドの順番を並び替えてコマンドを実行することにより、メモリ5との間でデータを転送する。SATAのNCQでは最大32個のコマンドをキューイングすることができる。メモリ5とHDD7との間でデータが転送される場合、データをセクタに記憶される単位で分割した分割データ毎に転送される。
For example, the
暗号化復号化装置9はメモリ5からHDD7に転送されるデータD1を暗号化し、HDD7からメモリ5に転送されるデータD2を復号化する。暗号化復号化装置9は例えば、ASIC(Application Specific Integrated Circuit)を用いて構成されており、SATAホストコントローラ(以下、ホストコントローラと記載する)11、初期ベクトル供給部13、暗号化部15、復号化部17及び暗号鍵記憶部19を備える。
The encryption /
ホストコントローラ11は例えば、SATAのAHCI(Advanced Host Controller Interface)規約に従って構成されている。ホストコントローラ11はコマンド発行部21を備える。ホストコントローラ11はCPU3からのアクセス要求REQに応じて、コマンド発行部21にコマンドを発行させる。ホストコントローラ11は発行されたコマンドのリストを作成すると共に発行されたコマンドをHDD7に送信する。
For example, the
図2はコマンドのリストの一例を示す図である。この例では4つのコマンド0〜3を用いてメモリ5とHDD7との間でデータを転送する。メモリ5とHDD7の間で転送されるデータは分割データに分けられて転送される。
FIG. 2 shows an example of a command list. In this example, data is transferred between the memory 5 and the
図3はコマンド0〜3の内容の一例を示している。データにはメモリアドレスADD「10000000−10004FFF,30001000−30003FFF,C0000000−C0004FFF」が割り当てられている。メモリアドレスADDとはデータ(分割データ)に割り当てられているメモリ5上のアドレスである。図1に示すように、メモリアドレスADDはデータを転送する際に、ホストコントローラ11からメモリ5に送られる。
FIG. 3 shows an example of the contents of the commands 0-3. The memory address ADD “10000000-10004FFF, 30001000-30003FFF, C0000000-C0004FFF” is assigned to the data. The memory address ADD is an address on the memory 5 assigned to data (divided data). As shown in FIG. 1, the memory address ADD is sent from the
分割データはデータをセクタに記憶される単位で分割したものである。セクタの容量が例えば512バイトとすれば、分割データのデータ量は512バイトである(16進数で表すと「1000」)。 The divided data is obtained by dividing data into units stored in sectors. If the sector capacity is, for example, 512 bytes, the data amount of the divided data is 512 bytes (“1000” in hexadecimal).
分割データのメモリアドレスADDの欄には各分割データに対して割り当てられているメモリアドレスADDが示されている。セクタのLBAの欄には各分割データに対して割り当てられたセクタのアドレスが示されている。各コマンドにおいてLBAは連続している。 The memory address ADD assigned to each divided data is shown in the column of the memory address ADD of the divided data. In the LBA column of the sector, the address of the sector assigned to each divided data is shown. In each command, the LBA is continuous.
スタートLBA(Start_LBA)はコマンド0〜3のそれぞれにおいて、LBAが連続する複数のセクタのうち先頭セクタのLBAである。
The start LBA (Start_LBA) is the LBA of the first sector among a plurality of sectors with consecutive LBAs in each of the
スタートアドレス(Start_Address)はコマンド0〜3のそれぞれにおいて、先頭セクタが割り当てられた分割データに対して割り当てられているメモリアドレスADDの先頭アドレスaddである。先頭アドレスaddについてコマンド0を例に説明すると、「30001000」、「30002000」及び「30003000」が先頭アドレスaddとなる。図1に示すように、先頭アドレスaddは分割データを転送する際に、ホストコントローラ11から初期ベクトル供給部13に送られる。
The start address (Start_Address) is the start address add of the memory address ADD assigned to the divided data to which the start sector is assigned in each of the
図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は異なる。
FIG. 4 is a plan view of the hard disk showing the position of the
図3に示す指示情報は転送される分割データについて暗号化の有無を指示するものであり、本実施形態において、指示情報は転送される分割データについて暗号化しないことを指示するものである。指示情報はコマンド発行部21がコマンドを発行する際にコマンド毎に付加することができる。指示情報は例えばAHCI規格のコマンドリストを拡張して、コマンドのリザーブ領域にフラグを用いて指示することができる。なお、指示情報は暗号化の有無を示すビット又はフラグ等のデータをコマンドに付加しないことによって、暗号化をする又はしないを示す情報であってもよい。
The instruction information shown in FIG. 3 indicates whether or not the divided data to be transferred is encrypted, and in this embodiment, the instruction information indicates that the divided data to be transferred is not encrypted. The instruction information can be added for each command when the
コマンド0は指示情報を含む。これはメモリアドレスADDが「30001000−30003FFF」に格納されているデータであるファイルは機密性を有しておらず、そのファイルは暗号化しないことを意味する。これに対して、コマンド1,2,3は指示情報を含まない。これはメモリアドレスADDが「C0000000−C0004FFF」及び「10000000−10004FFF」に格納されているデータであるファイルは機密性を有しており、暗号化することを意味する。
ファイルには予め暗号化するか否かの設定がされている。メモリ5からHDD7に複数のファイルを含むデータを転送する場合、ディスクリプタには、ファイル毎にファイルに割り当てられているメモリアドレスADDとセクタ23のLBAが記録されると共に暗号化するか否かが記録される。ディスクリプタはホストコントローラ11又はHDD7に格納される。コマンド発行部21はコマンドを発行する際にディスクリプタを参照して、コマンドに指示情報を付加するか否かを選択する。
Whether or not to encrypt the file is set in advance. When data including a plurality of files is transferred from the memory 5 to the
図1の説明に戻る。暗号鍵記憶部19は例えば、RAM(Random Access Memory)又はレジスタ等の記憶手段によって構成されており、暗号化及び復号化に用いる暗号鍵KEが予め記憶されている。
Returning to the description of FIG. The encryption
暗号化部15はメモリ5とホストコントローラ11との間に設けられている。暗号化部15は転送される分割データをブロック単位で暗号化するに際して、先頭ブロックについては初期ベクトル供給部13から供給された(言い換えれば図5の初期ベクトル生成部37で生成された)初期ベクトルIVを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、メモリ5からHDD7に転送する分割データ毎に実行する。本実施形態では、暗号化部15は暗号鍵記憶部19に記憶されている暗号鍵KEと、初期ベクトル供給部13から供給された初期ベクトルIVとに基づいて、ホストコントローラ11から出力されたメモリアドレスADDに応じてメモリ5からホストコントローラ11に転送されるデータD1を、転送される分割データ毎にリアルタイムで暗号化してホストコントローラ11へ出力する。暗号化部15はブロック暗号化方式として、例えばAESのCBCモードを用いる。
The
復号化部17はホストコントローラ11とメモリ5との間に設けられている。復号化部17は暗号化部15で暗号化されてHDD7に記憶された分割データについて、初期ベクトル供給部13から供給された(言い換えれば図5の初期ベクトル生成部37で生成された)初期ベクトルIVを利用して復号化することを、HDD7からメモリ5に転送する分割データ毎に実行する。本実施形態では、復号化部17は暗号鍵記憶部19に記憶されている暗号鍵KEと、初期ベクトル供給部13から供給された初期ベクトルIVとに基づいて、ホストコントローラ11から出力されたメモリアドレスADDに応じてホストコントローラ11からメモリ5に転送されるデータD2を、転送される分割データ毎にリアルタイムで復号化してメモリ5へ出力する。
The
復号化部17は暗号化部15と同じ暗号化方式を用いて復号化を行う。なお、暗号化部15及び復号化部17はAESのCBCモードに限らない。データをブロック単位で暗号化する暗号化方式であって、先頭ブロックについては初期ベクトルIVを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化するブロック暗号化方式であればよい。
The
初期ベクトル供給部13は例えば種々の論理回路及び順序回路等を用いて構成される。図5は初期ベクトル供給部13の構成の一例を示すブロック図である。初期ベクトル供給部13は情報テーブル31、コマンド特定部33、LBA算出部35、初期ベクトル生成部37及び暗号化オンオフ判定部39を備える。
The initial
初期ベクトル供給部13はCPU3からのホストコントローラ11へのアクセス要求REQ(図1)を監視し、アクセス要求REQに応じてコマンド発行部21によってコマンドが発行された場合、コマンドの転送情報を読み取って得られたコマンド情報を、情報テーブル31に記憶する。AHCI規格であれば、初期ベクトル供給部13はコマンドリスト内のコマンドヘッダ並びに、コマンドテーブル内のコマンドFIS及びPRDT(Physical Region Descriptor Table)を読み取ってコマンド情報を作成する。コマンド情報はスタートLBA、スタートアドレス及び、複数のセクタ23のデータ量、を特定するための情報並びに指示情報の有無をコマンド毎について得たものである。
The initial
図6はコマンド情報の一例を示す図である。コマンド情報はHDD7にキューイングできる最大数である32個のコマンドについて示される。Exist[I]はコマンドI(Iはコマンド番号であり、0〜31)が存在するか否かを示す情報である。Exist[I]:1であれば、そのコマンドは存在する。Exist[I]:0であれば、そのコマンドは存在しない。スタートLBA(Start_LBA)、スタートアドレス(Start_Address)及び指示情報については既に説明した。
FIG. 6 is a diagram illustrating an example of command information. The command information is shown for 32 commands, which is the maximum number that can be queued in the
セクタサイズ(Sector_Size)は複数のセクタ23のデータ量を特定するための情報の一例であり、各コマンドについてのセクタ23の数である。例えば、コマンド0であれば、セクタサイズが3なので、3(セクタ数)×512バイトがコマンド0についての複数のセクタ23のデータ量となる。
The sector size (Sector_Size) is an example of information for specifying the data amount of a plurality of
コマンド特定部33はHDD7がキューイングされたコマンド0〜3の順番を並び替えてそれらのコマンドを実行する際に、転送される分割データに割り当てられたメモリアドレスADDの先頭アドレスaddと情報テーブル31に記憶されているコマンド情報とを用いて、転送される分割データに対応するコマンドが、コマンド発行部21により発行された複数のコマンドのうちのいずれであるかを特定することを、転送される分割データ毎に実行する。
When the
コマンドの特定には下記式が用いられる。 The following formula is used to specify the command.
Start_Address[I]≦add<Start_Address[I]+Sector_Size×1000・・・(1) 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に対応すると特定できる。
Equation (1) shows a case where the capacity of one sector is 512 bytes. “1000” represents 512 in hexadecimal. For example, if the start address add shown in FIG. 3 is divided data with “3000000000”, the equation (1) is established in the case of
LBA算出部35はコマンド特定部33で特定されたコマンドについてのコマンド情報と転送される分割データに割り当てられたメモリアドレスADDの先頭アドレスaddとを用いて、転送される分割データに割り当てられたセクタ23のLBAを算出することを、転送される分割データ毎に実行する。
The
LBAの演算には下記式が用いられる。 The following formula is used for the calculation of LBA.
LBA=Start_LBA[I]+(add− Start_Address[I])/1000・・・(2) 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」となる。
For example, if the start address add shown in FIG. 3 is divided data with “3000000000”, it corresponds to the
初期ベクトル生成部37はLBA算出部35で算出されたLBAから初期ベクトルIVを生成することを、転送される分割データ毎に実行する。詳細には、初期ベクトル生成部37はLBA算出部35により算出されたLBAに、所定の演算処理、例えば排他的論理和演算等の演算処理をして、初期ベクトルIVを生成し、暗号化部15及び復号化部17に供給する。これにより、暗号強度を向上させる。なお、初期ベクトル生成部37は、LBAを、そのまま初期ベクトルIVとして出力する構成としてもよい。
The initial
暗号化オンオフ判定部39はメモリ5からHDD7にデータを転送する際に、情報テーブル31に記憶されているコマンド情報を参照して、コマンド特定部33で特定されたコマンドに指示情報が付加されているか否か判定する。指示情報とは分割データを暗号化しないことを指示する情報である。暗号化オンオフ判定部39は指示情報が付加されていると判定した場合、暗号化部15にOFF信号を送り、暗号化部15をオフさせる。これにより、その分割データについては暗号化されずに転送される。これに対して、暗号化オンオフ判定部39は指示情報が付加されていないと判定した場合、暗号化部15にON信号を送り、暗号化部15をオンさせる。これにより、その分割データについては暗号化されて転送される。
When the encryption on / off
HDD7からメモリ5にデータを転送する場合、暗号化オンオフ判定部39は情報テーブル31に記憶されているコマンド情報を参照して、コマンド特定部33で特定されたコマンドに指示情報が付加されているか否か判定する。暗号化オンオフ判定部39は指示情報が付加されていると判定した場合、復号化部17にOFF信号を送り、復号化部17をオフさせる。これにより、その分割データについては復号化されずに転送される。一方、暗号化オンオフ判定部39は指示情報が付加されていないと判定した場合、復号化部17にON信号を送り、復号化部17をオンさせる。これにより、その分割データについては復号化されて転送される。
When data is transferred from the
以上のように、暗号化オンオフ判定部39は情報テーブル31に記憶されているコマンド情報を基にして、コマンド特定部33で特定されたコマンドの指示情報が暗号化無しを示す場合、そのコマンドで転送される分割データについては暗号化及び復号化を実行しないために暗号化部15及び復号化部17を停止させる。
As described above, when the command indication information specified by the
次に、本実施形態に係る情報処理装置1がデータを転送する動作について説明する。コマンドの内容は図3に示す通りであり、コマンド情報は図6に示す通りとする。まず、メモリ5から仮想メモリであるHDD7にデータを転送する動作を説明する。
Next, an operation in which the
図1に示すCPU3がホストコントローラ11に、メモリ5からHDD7にデータを転送するためのアクセス要求REQを送信すると、そのアクセス要求REQに応じて、コマンド発行部21はコマンドを発行する。そのコマンドを基にしてホストコントローラ11は図2に示すコマンドリストを作成すると共にそのコマンドをHDD7に送信する。
When the
初期ベクトル供給部13はアクセス要求REQを監視し、コマンド発行部21によってコマンドが発行されると、図6に示すコマンド情報を情報テーブル31に記憶する。
The initial
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に記憶される。
FIG. 8 is a diagram showing data transfer from the memory 5 to the
次に、HDD7がコマンド0を実行することにより、ホストコントローラ11は分割データd3、分割データd4、分割データd5の順でメモリ5からHDD7に転送する。これにより、分割データd3はLBAが「K」のセクタ23に記憶され、分割データd4はLBAが「K+1」のセクタ23に記憶され、分割データd5はLBAが「K+2」のセクタ23に記憶される。
Next, when the
そして、HDD7はコマンド3を実行することにより、ホストコントローラ11は分割データd6、分割データd7、分割データd8の順でメモリ5からHDD7に転送する。これにより、分割データd6はLBAが「N」のセクタ23に記憶され、分割データd7はLBAが「N+1」のセクタ23に記憶され、分割データd8はLBAが「N+2」のセクタ23に記憶される。
Then, when the
最後に、HDD7がコマンド1を実行することにより、ホストコントローラ11は分割データd9、分割データd10、分割データd11、分割データd12、分割データd13の順でメモリ5からHDD7に転送する。これらの分割データも、上記と同様に割り当てられたセクタ23に記憶される。
Finally, when the
分割データd1〜d13はそれぞれ、転送される際に暗号化される。但し、対応するコマンドが分割データについて暗号化しないことを指示する指示情報が付加されていれば、暗号化されずに転送される。これについて説明する。図9は暗号化処理を説明するフローチャートである。 Each of the divided data d1 to d13 is encrypted when transferred. However, if the corresponding command is added with instruction information for instructing not to encrypt the divided data, it is transferred without being encrypted. This will be described. FIG. 9 is a flowchart for explaining the encryption processing.
図8に示す分割データd1を転送する場合、コマンド特定部33は図6に示すコマンド情報と上記式(1)とを用いて、分割データd1に対応するコマンドを特定する(ステップS1)。これは、HDD7がコマンドの順番を並び替えているので、ホストコントローラ11はどのコマンドが実行されているかを認識できないからである。分割データd1の先頭アドレスaddが「10000000」なので、分割データd1に対応するコマンドはコマンド2であることが特定できる。
When transferring the divided data d1 shown in FIG. 8, the
暗号化オンオフ判定部39は情報テーブル31を参照して、コマンド特定部33で特定されたコマンドが指示情報を含むか否か判定する(ステップS3)。コマンド2は指示情報を含まないので(ステップS3でNO)、すなわち、暗号化の対象となるので、暗号化オンオフ判定部39はON信号を生成し(ステップS5)、ON信号を暗号化部15に送り、暗号化部15を動作させる。メモリ5からHDD7への転送では復号化処理がないので、復号化部17は停止されている。
The encryption on / off
LBA算出部35は図6に示すコマンド情報と上記式(2)とを用いて、分割データd1に割り当てられたセクタ23のLBAを算出する(ステップS7)。分割データd1に対応するコマンドはコマンド2である。スタートLBA[2]は「C」、スタートアドレス[2]は「10000000」、先頭アドレスaddは「10000000」である。従って、分割データd1に割り当てられたセクタ23のLBAは「C」と算出される。
The
次に、初期ベクトル生成部37によって、予め設定された所定の演算処理Make_Ivが、ステップS7で算出されたLBAに施されて、初期ベクトルIVが生成され(ステップS9)、初期ベクトルIVが暗号化部15及び復号化部17へ出力される(ステップS11)。
Next, the initial
以上により分割データ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に記憶させる。
Thus, the initial vector IV of the divided data d1 is obtained. The divided data d1 is stored in a register provided in the
分割データd1の次に分割データd2が転送されるが、分割データd2は分割データd1と同様に暗号化されて、分割データd2はLBAが「C+1」のセクタ23に記憶される。
The divided data d2 is transferred next to the divided data d1, and the divided data d2 is encrypted in the same manner as the divided data d1, and the divided data d2 is stored in the
コマンド2の実行が終了すると、HDD7はコマンド0を実行する。まず、図8に示す分割データd3が転送される。
When the execution of the
コマンド特定部33は図6に示すコマンド情報と上記式(1)とを用いて、分割データd3に対応するコマンドを特定する(ステップS1)。分割データd3の先頭アドレスaddが「30001000」なので、分割データd3に対応するコマンドはコマンド0であることが特定できる。
The
暗号化オンオフ判定部39は情報テーブル31を参照して、コマンド特定部33で特定されたコマンドが指示情報を含むか否か判定する(ステップS3)。コマンド0は指示情報を含むので(ステップS3でYES)、すなわち、暗号化しないので、暗号化オンオフ判定部39はOFF信号を生成し(ステップS13)、OFF信号を暗号化部15に送り、暗号化部15を停止させる。
The encryption on / off
暗号化部15は停止されているので、分割データd3は暗号化されないで、ホストコントローラ11に送られる。ホストコントローラ11は暗号化されていない分割データd3をHDD7に送り、HDD7はLBAが「K」のセクタ23に暗号化されていない分割データd3を記憶させる。
Since the
分割データd4,d5についても、分割データd3と同様に暗号化されずに、割り当てられたセクタ23に記憶される。
Similarly to the divided data d3, the divided data d4 and d5 are stored in the assigned
コマンド0の実行が終了すると、HDD7はコマンド3を実行し、次にコマンド1を実行する。コマンド3及びコマンド1は指示情報を含まないので、コマンド2と同様に処理される。これにより、コマンド3に対応する分割データd6,d7,d8は暗号化されて、割り当てられたセクタ23に記憶され、コマンド1に対応する分割データd9,d10,d11,d12,d13は暗号化されて、割り当てられたセクタ23に記憶される。
When the execution of the
以上によりメモリ5からHDD7へのデータの転送が終了する。HDD7におけるSATAのNCQによって、コマンドの実行順序が変更されているが、初期ベクトル生成部37によって、分割データの先頭アドレスaddに基づき正しい初期ベクトルIVが生成され、この正しい初期ベクトルIVに基づき、暗号化部15で暗号化が実行される。従って、正しくAESのCBCモードで暗号化された分割データを、HDD7に記憶させることができる。
Thus, the data transfer from the memory 5 to the
次に、仮想メモリであるHDD7からメモリ5にデータを転送する動作を説明する。図11はHDD7からメモリ5へのデータの転送を示す図である。上記の通り、メモリアドレスADDが「10000000−10004FFF,30001000−30003FFF,C0000000−C0004FFF」に割り当てられているデータはメモリ5からHDD7に転送されている。CPU3がそのデータをメモリ5から読み出す命令をした場合、そのデータはメモリ5に記憶されていないので、CPU3はホストコントローラ11に、HDD7からメモリ5にデータを転送するためのアクセス要求REQを送信する。
Next, an operation for transferring data from the
以降はメモリ5からHDD7へのデータの転送と同様である。すなわち、図2に示すコマンドのリストが作成され、コマンドは図3に示す内容を有しており、図6に示すコマンド情報が情報テーブル31(図5)に記憶され、図7に示すようにコマンドの順番が並び替えられてコマンドが実行される。
The subsequent processing is the same as the data transfer from the memory 5 to the
コマンドを実行する際に、図5に示す暗号化オンオフ判定部39はコマンドが指示情報を含むと判定すれば、そのコマンドで転送される分割データは暗号化されていないので、OFF信号を出力する。OFF信号により復号化部17が停止されるので、分割データは復号化されずに、転送される。一方、暗号化オンオフ判定部39はコマンドが指示情報を含まないと判定すれば、そのコマンドで転送される分割データは暗号化されているので、ON信号を出力する。ON信号により復号化部17が動作されるので、分割データは復号化されて転送される。復号化のフローは図9に示す暗号化のフローと同じである。
When executing the command, if the encryption on / off
HDD7からメモリ5にデータを転送する場合も、HDD7におけるSATAのNCQによって、コマンドの実行順序が変更されているが、初期ベクトル生成部37によって、分割データの先頭アドレスaddに基づき正しい初期ベクトルIVが生成され、この正しい初期ベクトルIVに基づき、復号化部17で復号化が実行される。従って、正しくAESのCBCモードで復号化された分割データを、メモリ5に記憶させることができる。
Even when data is transferred from the
以上説明したように、本実施形態によれば、実行されたコマンドで転送される分割データについて暗号化しないことを指示する指示情報をコマンド毎に付加することができる。これにより、HDD7にキューイングされたコマンドのそれぞれについて、暗号化する分割データに対応するコマンド1,2,3と暗号化しない分割データに対応するコマンド0に分けることができる。従って、メモリ5とHDD7との間で転送するデータの中に、暗号化するデータ(例えばファイルA)と暗号化しないデータ(例えばファイルB)とが混在する場合、暗号化するデータは暗号化して転送し、暗号化しないデータは暗号化しないで転送することができる。復号化においても、暗号化されているデータは復号化して転送し、暗号化されていないデータは復号化しないで転送することができる。
As described above, according to the present embodiment, it is possible to add instruction information for instructing not to encrypt the divided data transferred by the executed command for each command. Thereby, each of the commands queued in the
1 情報処理装置
5 メモリ
7 HDD(ハードディスクドライブ)
9 暗号化復号化装置
23 セクタ
31 情報テーブル
1 Information processing device 5
9 Encryption /
Claims (3)
ハードディスクドライブと、
前記メモリとの間でデータを転送するために発行されたコマンドをキューイングし、キューイングされた前記コマンドの順番を並び替えて前記コマンドを実行することにより前記データを転送し、前記データを転送する場合に前記データをセクタに記憶される単位で分割した分割データ毎に転送する前記ハードディスクドライブに用いられる暗号化復号化装置と、を備える情報処理装置であって、
前記暗号化復号化装置は、
前記コマンドを発行し、前記コマンドで転送される前記分割データについて暗号化の有無を指示する指示情報を前記コマンド毎に付加することができるコマンド発行部と、
前記コマンド発行部によって前記コマンドが発行された場合、LBAが連続する複数の前記セクタのうち先頭セクタの前記LBAであるスタートLBA、当該先頭セクタが割り当てられた前記分割データに対して割り当てられているメモリアドレスの先頭アドレスであるスタートアドレス、及び、複数の前記セクタのデータ量、を特定するための情報並びに前記指示情報を前記コマンド毎について得たものであるコマンド情報が記憶される情報テーブルと、
キューイングされた前記コマンドの順番が並び替えられて前記コマンドが実行される際に、当該実行されたコマンドで転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスと前記情報テーブルに記憶されている前記コマンド情報とを用いて、転送される前記分割データに対応する前記コマンドが、前記コマンド発行部により発行された複数の前記コマンドのうちのいずれであるかを特定することを、転送される前記分割データ毎に実行するコマンド特定部と、
前記コマンド特定部で特定された前記コマンドについての前記コマンド情報と転送される前記分割データに割り当てられている前記メモリアドレスの前記先頭アドレスとを用いて、転送される前記分割データに割り当てられた前記セクタの前記LBAを算出することを、転送される前記分割データ毎に実行するLBA算出部と、
前記LBA算出部で算出された前記LBAから初期ベクトルを生成することを、転送される前記分割データ毎に実行する初期ベクトル生成部と、
転送される前記分割データをブロック単位で暗号化するに際して、先頭ブロックについては前記初期ベクトル生成部で生成された前記初期ベクトルを利用して暗号化し、残りのブロックについては暗号化された一つ前のブロックを利用して暗号化することを、前記メモリから前記ハードディスクドライブに転送する前記分割データ毎に実行する暗号化部と、
前記暗号化部で暗号化されて前記ハードディスクドライブに記憶された前記分割データについて、前記初期ベクトル生成部で生成された前記初期ベクトルを利用して復号化することを、前記ハードディスクドライブから前記メモリに転送する前記分割データ毎に実行する復号化部と、
前記メモリから前記ハードディスクドライブに前記分割データが転送される場合に、前記情報テーブルに記憶されている前記コマンド情報を参照して、(a)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化無しを示していれば、前記分割データを暗号化しないで転送するために、前記暗号化部をオフさせ、(b)前記コマンド特定部で特定された前記コマンドの前記指示情報が暗号化有りを示していれば、前記分割データを暗号化して転送するために、前記暗号化部をオンさせる暗号化オンオフ判定部と、を備え、
前記ハードディスクドライブには、前記指示情報が暗号化無しを示す前記コマンドで転送されてきた、暗号化されていない前記分割データと、前記指示情報が暗号化有りを示す前記コマンドで転送されてきた、暗号化されている前記分割データとが、記憶されている情報処理装置。 Memory,
A hard disk drive,
It queues the command issued to transfer data between the memory and transfers the data by rearranging the order of the commands queued to execute the command, transferring the data an information processing apparatus comprising an encryption decoder, the used the data to the hard disk drive to be transferred to each divided data obtained by dividing a unit stored in the sector when,
The encryption / decryption device comprises:
A command issuing unit that issues the command and can add instruction information for instructing the presence or absence of encryption of the divided data transferred by the command;
When the command is issued by the command issuing unit, LBA is assigned to the start LBA that is the LBA of the first sector among the plurality of consecutive sectors, and the divided data to which the first sector is assigned. An information table for storing command information that is obtained for each command and information for specifying a start address that is a start address of a memory address, and data amounts of a plurality of the sectors, and the instruction information;
When the order of the queued commands is rearranged and the command is executed, the start address and the information table of the memory address assigned to the divided data transferred by the executed command Identifying the command corresponding to the divided data to be transferred from among the plurality of commands issued by the command issuing unit using the command information stored in A command specifying unit to be executed for each divided data to be transferred;
The command assigned to the divided data to be transferred using the command information for the command specified by the command specifying unit and the start address of the memory address assigned to the divided data to be transferred. An LBA calculation unit that calculates the LBA of a sector for each of the divided data to be transferred;
An initial vector generation unit that executes generation of an initial vector from the LBA calculated by the LBA calculation unit for each of the divided data to be transferred;
When the divided data to be transferred is encrypted in units of blocks, the first block is encrypted using the initial vector generated by the initial vector generation unit, and the remaining blocks are encrypted immediately before. An encryption unit that executes encryption for each of the divided data transferred from the memory to the hard disk drive,
Decrypting the divided data encrypted by the encryption unit and stored in the hard disk drive using the initial vector generated by the initial vector generation unit from the hard disk drive to the memory A decoding unit to be executed for each of the divided data to be transferred;
When the divided data is transferred from the memory to the hard disk drive, referring to the command information stored in the information table, (a) the instruction information of the command specified by the command specifying unit Indicates that no encryption is performed, the encryption unit is turned off to transfer the divided data without encryption, and (b) the instruction information of the command specified by the command specification unit is encrypted. An encryption on / off determination unit that turns on the encryption unit in order to encrypt and transfer the divided data .
To the hard disk drive, the instruction information has been transferred with the command indicating that there is no encryption, the divided data that has not been encrypted, and the instruction information has been transferred with the command that indicates that there is encryption, An information processing apparatus in which the divided data that has been encrypted is stored .
The information processing apparatus according to claim 1, wherein an encryption method in the encryption unit and the decryption unit is an AES CBC mode.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010257928A JP5481354B2 (en) | 2010-11-18 | 2010-11-18 | Information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010257928A JP5481354B2 (en) | 2010-11-18 | 2010-11-18 | Information processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012108779A JP2012108779A (en) | 2012-06-07 |
JP5481354B2 true JP5481354B2 (en) | 2014-04-23 |
Family
ID=46494324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010257928A Expired - Fee Related JP5481354B2 (en) | 2010-11-18 | 2010-11-18 | Information processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5481354B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5524122B2 (en) * | 2011-04-06 | 2014-06-18 | 京セラドキュメントソリューションズ株式会社 | Information processing apparatus and information processing method |
JP5524127B2 (en) * | 2011-04-27 | 2014-06-18 | 京セラドキュメントソリューションズ株式会社 | Information processing apparatus and information processing method |
JP6192617B2 (en) * | 2014-08-04 | 2017-09-06 | 京セラドキュメントソリューションズ株式会社 | Information processing apparatus and transfer control method |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001325207A (en) * | 2000-05-17 | 2001-11-22 | Hitachi Ltd | Switch with built-in cache, computer system and switch control method for switch with built-in cache |
WO2008114329A1 (en) * | 2007-02-19 | 2008-09-25 | Pioneer Corporation | Data encryption recording device and its method |
JP5117748B2 (en) * | 2007-03-29 | 2013-01-16 | 株式会社日立製作所 | Storage virtualization device with encryption function |
JP5017136B2 (en) * | 2008-02-08 | 2012-09-05 | 京セラドキュメントソリューションズ株式会社 | Encryption / decryption device for hard disk drive and hard disk drive device |
JP2010256652A (en) * | 2009-04-27 | 2010-11-11 | Renesas Electronics Corp | Cryptographic processing apparatus and method for storage medium |
-
2010
- 2010-11-18 JP JP2010257928A patent/JP5481354B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012108779A (en) | 2012-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2803012B1 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
US9342466B2 (en) | Multiple volume encryption of storage devices using self encrypting drive (SED) | |
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 (en) | Data storage apparatus having cryption and method thereof and system,solid state disk drive,computer readable medium using the data storage apparatus | |
EP2365444B1 (en) | Dma engine capable of concurrent data manipulation | |
JP2012090286A (en) | Memory system having encryption/decryption function of in stream data | |
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 (en) | Memory system having in-stream data encryption / decryption function | |
JP2008524969A5 (en) | ||
JP5481354B2 (en) | Information processing device | |
KR101496975B1 (en) | Solid-state-disk and input/output method thereof | |
JP5017136B2 (en) | Encryption / decryption device for hard disk drive and hard disk drive device | |
KR101126596B1 (en) | Dual mode aes implementation to support single and multiple aes operations | |
US10929030B2 (en) | Computer and control method | |
JP2007336446A (en) | Data encryption apparatus | |
JP4853026B2 (en) | Information processing apparatus and program | |
JP2008009933A (en) | Memory device and its control method | |
US9058295B2 (en) | Encrypt data of storage device | |
JP2007208696A (en) | Encryption processing circuit and printer | |
CN101727408A (en) | Data encryption method based on hard disk interface controller | |
JP2009075474A (en) | Cryptography processor | |
JP2009037173A (en) | Data processing apparatus |
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 |