(57)【特許請求の範囲】
【請求項１】
ページ単位でアクセスが可能な記憶装置に対し、当該記憶装置に記憶されるデータを、ストリーム暗号により暗号化して書き込み又は復号化して読み出しを行うデータ暗号化処理装置であって、
ブロック暗号のカウンタモードを使用して擬似乱数を生成する擬似乱数生成回路と、
前記擬似乱数を生成するための初期値を生成する初期値生成回路と、
前記擬似乱数と平文の排他的論理和をとって暗号文を出力、又は、前記擬似乱数と前記暗号文の排他的論理和をとって前記平文を出力する排他的論理和回路と、を備え、
前記暗号文に変換されて書き込まれ、または、読み出される前記データの前記ページ内における位置が、前記ページを前記ブロック暗号のブロック長と同じブロック長の複数のブロックに分割したページブロックのページブロック番号により特定され、
前記初期値生成回路は、書き込みまたは読み出し対象の前記ページのページ番号、前記ページブロック番号、及び、前記データ暗号化処理装置毎に異なるオフセット値の関数に基づいて、前記ページブロック毎に前記初期値を生成し、
前記排他的論理和回路は、前記ページブロック単位で前記平文または前記暗号文との排他的論理和を出力することを特徴とするデータ暗号化装置。
【請求項２】
前記初期値が、前記ページブロック番号の上位ビット側に前記ページ番号を連接して得られるプレ初期値に、前記オフセット値を加算した値として表されることを特徴とする請求項１に記載のデータ暗号化装置。
【請求項３】
前記初期値が、前記ページブロック番号の上位ビット側に前記ページ番号を連接して得られるプレ初期値と、前記オフセット値との排他的論理和で表されることを特徴とする請求項１に記載のデータ暗号化装置。
【請求項４】
前記ブロック暗号の暗号化アルゴリズムとしてＡＥＳを使用することを特徴とする請求項１〜３の何れか一項に記載のデータ暗号化装置。
【請求項５】
前記記憶装置、及び、請求項１〜４の何れか一項に記載のデータ暗号化装置を搭載してなるメモリカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機密情報を暗号化して格納することが可能な記憶装置に保存されたデータの暗号化および復号化装置に関し、特にそのデータ暗号化方法に関する。
【背景技術】
【０００２】
機密情報を記憶装置内に暗号化して保存する場合の暗号化方法には、公開鍵暗号と共通鍵暗号がある。共通鍵暗号では暗号化と復号化に同じ鍵を用いる。一方、公開鍵暗号では、２つの鍵の組を用いて暗号化および復号化を行う。即ち、暗号化と復号化とで異なる鍵を用いる。当該２つの鍵のうち、一方を公開鍵とし、他方を秘密鍵とする。公開鍵暗号では、機密情報を相手先に送信するといった場合、相手先の公開鍵を用いてデータを暗号化して相手先に送信する。すると、相手先は、自身の秘密鍵を用いて送信されたデータを復号化することができ、復号化された機密情報を得る。
【０００３】
一般に、公開鍵暗号は、認証、電子署名、或いは共通鍵の配送に利用されている。一方、共通鍵暗号は、公開鍵暗号と比べて高速なためデータ秘匿に利用されている。
【０００４】
また、共通鍵暗号にはブロック暗号とストリーム暗号がある。うちブロック暗号は、入力ブロックの１ビットが変わるだけで出力ブロックのデータが大きく変わるため暗号文から平文が推測されにくい特徴がある。しかし、ブロック毎の処理のため一定のデータがそろわないと暗号化処理を進めることができない。
【０００５】
一方、ストリーム暗号は、擬似乱数と平文との排他的論理和（ＸＯＲ）により暗号化および復号化を行うもので、疑似乱数列を先行して生成できることと変換処理がシンプルなため、大量のデータを高速に処理することが可能である。しかし、暗号時と復号時の擬似乱数の初期値（ＩＶ）を揃える必要が有り、また、送信エラー等が起った際はデータの先頭に戻って暗号化と復号化をやり直す必要が生じる。
【０００６】
更に、ブロック暗号の平文が推測されにくい特徴とストリーム暗号の高速性を組み合わせた、ブロック暗号によるＯＦＢ（Output Feedback）モード、ＣＦＢ（Cipher Feedback）モード、ＣＴＲ（Counter）モードを利用する方法が、非特許文献１により考案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２２５１４０号公報
【非特許文献】
【０００８】
【非特許文献１】Morris Dworkin, "Recommendation for Block Cipher Modes of Operation", NIST Special Publication 800-38A, 2001年.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一般的な用途として、ファイルの暗号等にはブロック暗号が、通信の暗号化など大量のデータの暗号化にはストリーム暗号が使用されている。
【００１０】
ここで、ページアクセスによりデータの書き込み、読み出しが行われるストレージデバイス（記憶装置）において暗号化装置を組み込み、データの暗号化を行うには、ページ毎にブロック暗号を用いて暗号化すればよい。しかし、ブロック暗号ではブロック長に相当するサイズのデータが揃ってからの暗号化処理となり、データへのアクセスが間欠動作になる。
【００１１】
一方、ストリーム暗号を用いる場合、初期値（ＩＶ）の生成以外はオーバーヘッドがないため高速なアクセスが可能になるが、常にデータの先頭からアクセスする必要があり、任意のページからのアクセスができない。
【００１２】
上記のストリーム暗号において任意の場所からアクセスできない課題に対し、特許文献１では、挿入情報識別情報と初期値（ＩＶ）の値をデータ列の中に埋め込むことにより、任意の位置からのアクセスを可能にしている。しかし、ストレージデバイスのページ毎に初期値（ＩＶ）を設定すると、ページをまたいで連続アクセスする場合に、その都度初期値（ＩＶ）の設定をし直すことによりオーバーヘッドが発生する。また、この挿入情報は冗長であり無駄なデータを保持することになる。
【００１３】
本発明は、上記の状況に鑑み、機密情報を含むデータの暗号化された書き込みおよび読み出しにおいて、任意のページへの高速アクセスを可能とするデータ暗号化装置、並びに、上記データ暗号化装置を搭載したメモリカードを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するための本発明に係るデータ暗号化装置は、ページ単位でアクセスが可能な記憶装置に対し、当該記憶装置に記憶されるデータを、ストリーム暗号により暗号化して書き込み又は復号化して読み出しを行うデータ暗号化処理装置であって、
ブロック暗号のカウンタモードを使用して擬似乱数を生成する擬似乱数生成回路と、
前記擬似乱数を生成するための初期値を生成する初期値生成回路と、
前記擬似乱数と平文の排他的論理和をとって暗号文を出力、又は、前記擬似乱数と前記暗号文の排他的論理和をとって前記平文を出力する排他的論理和回路と、を備え、
前記暗号文に変換されて書き込まれ、または、読み出される前記データの前記ページ内における位置が、前記ページを前記ブロック暗号のブロック長と同じブロック長の複数のブロックに分割したページブロックのページブロック番号により特定され、
前記初期値生成回路は、書き込みまたは読み出し対象の前記ページのページ番号、前記ページブロック番号、及び、前記データ暗号化処理装置毎に異なるオフセット値の関数に基づいて、前記ページブロック毎に前記初期値を生成し、
前記排他的論理和回路は、前記ページブロック単位で前記平文または前記暗号文との排他的論理和を出力することを特徴とする。
【００１５】
上記特徴のデータ暗号化装置に依れば、暗号方式としてストリーム暗号を使用しつつ、その擬似乱数列の生成にブロック暗号のＣＴＲ（カウンタ）モードを用いることにより、高速アクセスが可能なデータ暗号化装置が実現される。また、ページ番号とページブロック番号により初期値を定めることができるため、任意のページへのページをまたいだアクセスが可能となる。
【００１７】
さらに、上記特徴のデータ暗号化装置に依れば、初期値をオフセット値の関数とすることにより、暗号化装置毎に初期値が異なるためセキュリティの強度を上げることができる。
【００１８】
以下に上記初期値の関数形の例を示す。
【００１９】
例えば、前記初期値が、前記ページブロック番号の上位ビット側に前記ページ番号を連接した値として表されることが好ましい。このとき、ページ番号をｎＰＧ、ページブロック番号をｍＢＬＫ、及び、１ページ当りのページブロック数をＭとして、初期値ＩＶは、ＩＶ（ｎＰＧ，ｍＢＬＫ）＝ｎＰＧ・Ｍ＋ｍＢＬＫで表される。この場合、初期値ＩＶは、ページをまたぐ連続アクセスであっても、ＩＶを１ずつ増加させてくだけでよいため、カウンタと同じ動作になる。
【００２０】
更に、上記ＩＶがオフセット値ｏｆｆｓｅｔの関数でもある場合には、前記初期値が、前記ページブロック番号の上位ビット側に前記ページ番号を連接して得られるプレ初期値に、前記オフセット値を加算した値として表されることがより好ましい。このとき、初期値ＩＶは、ＩＶ（ｎＰＧ，ｍＢＬＫ，ｏｆｆｓｅｔ）＝ｎＰＧ・Ｍ＋ｍＢＬＫ＋ｏｆｆｓｅｔで表される。
【００２１】
或いは、プレ初期値とオフセット値を加算する代わりに、プレ初期値とオフセット値の排他的論理和をとったものを初期値ＩＶとしてもよい。即ち、前記初期値が、前記ページブロック番号の上位ビット側に前記ページ番号を連接して得られるプレ初期値と、前記オフセット値との排他的論理和で表されていてもよい。
【００２２】
上記特徴のデータ暗号化装置は、前記ブロック暗号の暗号化アルゴリズムとしてＡＥＳ（Advanced Encryption Standard）を使用することが好ましい。ＡＥＳ暗号を用いて擬似乱数列を生成することにより、セキュリティの高い暗号装置を実現できる。
【００２３】
また、本発明は、前記記憶装置、及び、上記特徴のデータ暗号化装置を搭載したメモリカードであり、上記特徴のデータ暗号化装置を、ＰＣ、デジタルカメラ、及び、携帯電話等の電子機器に着脱可能なメモリカードに搭載することで、セキュリティが高く、且つ、ランダムページアクセスと高速な読み出しを両立したメモリカードを実現できる。
【発明の効果】
【００２４】
従って、本発明に依れば、任意のページへの高速アクセスが可能なデータ暗号化装置、並びに、上記データ暗号化装置を搭載したメモリカードを提供することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明に係るデータ暗号化装置の回路構成の例を示すブロック図。
【図２】ページとページブロックとの関係を示す図。
【図３】擬似乱数の初期値ＩＶの設定例を示す図。
【図４】ＳＤカード内のデータの暗号化に本発明を用いる場合の、擬似乱数の初期値ＩＶの設定例を示す図。
【図５】本発明に係るデータ暗号化装置の回路構成の他の例を示すブロック図。
【図６】擬似乱数の初期値ＩＶの設定例の他の例を示す図。
【図７】擬似乱数の初期値生成回路の他の構成例を示す図。
【発明を実施するための形態】
【００２６】
〈第１実施形態〉
本発明の一実施形態に係るデータ暗号化装置１（以降、適宜「本発明装置１」と称する）の構成例を図１に示す。図１は本発明装置１の回路構成を示すブロック図であり、ブロック暗号のＣＴＲ（カウンタ）モードをデータの暗号化に用いる構成となっている。図１に示すように、本発明装置１は、初期値生成回路１１、擬似乱数生成回路１２、及び、排他的論理和回路１３を備える。更に、本発明装置１は、ページ単位でアクセスが可能な記憶装置１４（図示せず）とデータの送受信を行い、当該記憶装置に対し、暗号化された読み出しデータの復号化処理ないし保存されるべきデータの暗号化処理を行う。尚、記憶装置１４に保存されるデータの読み出し及び書き込み動作は、制御回路１５（図示せず）により制御され、読み出し動作では、本発明装置１は、制御回路１５を介して所定の読み出し対象アドレスのデータ（暗号文）を受信するとそれを復号化し、平文データに変換する。一方、書き込み動作では、本発明装置１は、保存されるべきデータ（平文）を暗号化し、当該暗号文を記憶装置１４の所定の書き込み対象アドレスへ書き込むために制御回路１５に送信する。従って、本発明装置１と記憶装置との接続は、ＰＣ等の電子機器に着脱可能なメモリカードのように、電気的な接続であってもよいし、有線あるいは無線ＬＡＮ経由でネットワーク接続されていても構わない。
【００２７】
以下において、データを暗号化して記憶装置の所定のアドレスに書き込む場合の本発明装置１の動作について説明する。
【００２８】
初期値生成回路１１は、アクセスするページのページ番号ｎＰＧ、及び、ページブロック番号ｍＢＬＫに基づき、ｎＰＧとｍＢＬＫの関数として初期値ＩＶ（ｎＰＧ，ｍＢＬＫ）を設定すると、擬似乱数生成回路１２は、当該ＩＶ（ｎＰＧ，ｍＢＬＫ）に基づいて、ブロック暗号のカウンタモードにより擬似乱数を生成する。当該擬似乱数のサイズは、使用されるブロック暗号のブロック長Ｌに等しい。また、ＩＶ（ｎＰＧ，ｍＢＬＫ）が、使用されるブロック暗号のカウンタモードにおけるカウント値に相当する。
【００２９】
ここで、当該ブロック暗号のブロック長の長さのブロック単位でデータの暗号化ないし復号化が行われるため、各ページを当該ブロック長Ｌの長さの複数のブロックに分割し、当該分割された各ブロックをページブロックと呼ぶ。ページ内において、分割された各ページブロックは、ページブロック番号により順序付けされ、これにより、ページ内における各ページブロックの位置が、ページブロック番号ｍＢＬＫにより特定される。
【００３０】
排他的論理和回路１３は、擬似乱数生成回路１２が生成した擬似乱数と平文との排他的論理和（ＸＯＲ）を取り、暗号文を出力する。当該暗号文が、ページ番号ｎＰＧ、及び、ページブロック番号ｍＢＬＫによって特定される記憶装置の所定のアドレスに、制御回路を介して書き込まれる。
【００３１】
次の連続した書き込みでは、更に、初期値生成回路１１は、ページブロック番号ｍＢＬＫを１加算して求められる初期値ＩＶ（ｎＰＧ，ｍＢＬＫ＋１）を設定し、擬似乱数生成回路１２は、当該ＩＶ（ｎＰＧ，ｍＢＬＫ＋１）に基づいて擬似乱数を生成する。そして、排他的論理和回路１３が、当該擬似乱数と平文との排他的論理和（ＸＯＲ）を取り、暗号文を出力する。
【００３２】
図２にページとページブロックとの関係を示す。ページサイズをＮとすると、各ページにおいて、分割されたページブロックの総数Ｍは、Ｍ＝Ｎ／Ｌとなる。例えばページ＃０からアクセスした場合、ページ＃０へのアクセスの間、ページブロック番号を示すカウント値が＃０〜＃Ｍ−１まで順次１加算される。ページ＃０、ページブロック番号＃Ｍ−１へのアクセス後、次の連続したアクセスでは、ページブロック番号を示すカウント値がリセットされ、ページブロック番号が＃０に戻る代わりにページ番号を示すカウント値が１だけ加算され、ページ＃１に属するページブロックへのアクセスが開始される。従って、ＩＶ（ｎＰＧ，Ｍ）＝ＩＶ（ｎＰＧ＋１，０）となっている。
【００３３】
図３において、初期値を設定するための関数ＩＶ（ｎＰＧ，ｍＢＬＫ）の一例を示す。図３に示す例では、初期値ＩＶはページ番号ｎＰＧとページブロック番号ｍＢＬＫを示す２進数を連接して設定される。具体的には、ＩＶ（ｎＰＧ，ｍＢＬＫ）＝ｎＰＧ・Ｍ＋ｍＢＬＫとなっている。これにより、ページ＃０、ページブロック番号＃Ｍ−１へのアクセス後、次の連続したアクセスでは、ページ＃１、ページブロック番号＃０のアクセスを開始することになるが、この場合においても、初期値ＩＶを１だけ加算するだけで足りる。
【００３４】
つまり、初期値ＩＶはこれまでの暗号文作成回数を示すカウント値と等価であり、ページをまたぐアクセスであっても、連続した書き込みでは初期値ＩＶを順次１加算していくことで暗号文作成を継続することが可能となる。これにより、連続アクセスしてもランダムアクセスしても一意の初期値ＩＶが設定される。
【００３５】
更に、上述の通り、初期値ＩＶはこれまでの暗号文作成回数を示すカウント値を示すため、初期値生成回路１１の構成としては、一のカウンタが利用できる。
【００３６】
また、書き込み途中でエラー等が生じた場合には、最初から書き込み動作をやり直す必要はなく、エラーが生じたページ番号ｎＰＧとページブロック番号ｍＢＬＫに戻って、カウンタの初期値をＩＶ（ｎＰＧ，ｍＢＬＫ）にセットして暗号文の生成をやり直すことができ、エラーが生じたページ番号ｎＰＧとページブロック番号から書き込み動作をやり直すことができる。
【００３７】
例えばメモリカードとしてのＳＤカードに本発明装置１を搭載し、ＰＣ（パーソナルコンピュータ）等で作成されたデータを暗号化して当該ＳＤカードに保存する場合を考える。ＳＤカードの１ページ当りのメモリサイズは５１２バイト（４０９６ビット）である。一方、暗号化アルゴリズムとして、ブロック長が１２８ビットのＡＥＳを用いるとする。従って、１ページ当り３２ページブロックを有する。この場合、図４に示すように、初期値ＩＶ（１２８ビット）の設定例として、下位５ビットであるビット＃０〜ビット＃４をページブロック番号に割り当て、上位ビットであるビット＃５〜ビット＃１２７をページ番号に割り当てるとよい。
【００３８】
〈第２実施形態〉
本発明の一実施形態に係るデータ暗号化装置２（以降、適宜「本発明装置２」と称する）の構成例を図５に示す。本発明装置２では、ページ番号ｎＰＧとページブロック番号ｍＢＬＫに加えて、任意のオフセット値ｏｆｆｓｅｔとの関数として、擬似乱数の初期値ＩＶが、初期値生成回路１６により設定される。
【００３９】
本発明装置２における初期値ＩＶの設定例を図６に示す。図６に示す例では、ページ番号ｎＰＧ、ページブロック番号ｍＢＬＫから設定される値（プレ初期値）に、更にオフセット値ｏｆｆｓｅｔを加算して初期値ＩＶを生成している。この場合、初期値ＩＶは、具体的にはＩＶ（ｎＰＧ，ｍＢＬＫ，ｏｆｆｓｅｔ）＝ｎＰＧ・Ｍ＋ｍＢＬＫ＋ｏｆｆｓｅｔとなる。
【００４０】
このオフセット値をデータ暗号化装置１毎に変えることにより、同じ暗号鍵でも異なる擬似乱数列を生成することができ、異なる暗号文が生成される。これにより、異なるデータ暗号化装置２により制御される記憶装置間において、記憶装置内のデータのデッドコピーを防ぐことができる。
【００４１】
図７にオフセット値ｏｆｆｓｅｔを入力とする初期値生成回路１６の他の例を示す。図６に示す初期値生成回路１６は、プレ初期値生成回路（カウンタ）１７と排他的論理和回路１８からなり、ページ番号ｎＰＧ、ページブロック番号ｍＢＬＫに基づきプレ初期値生成回路１７により設定されるプレ初期値Ｐｒｅ−ＩＶと、オフセット値ｏｆｆｓｅｔとの排他的論理和により初期値ＩＶ（ｎＰＧ，ｍＢＬＫ，ｏｆｆｓｅｔ）を生成する。
【００４２】
図３において、初期値生成回路１１が、初期値ＩＶをページ番号ｎＰＧとページブロック番号ｍＢＬＫの関数として設定したのと同様に、図７では、プレ初期値生成回路１７が、プレ初期値Ｐｒｅ−ＩＶをページ番号ｎＰＧとページブロック番号ｍＢＬＫの関数として設定することで、プレ初期値ＩＶはこれまでの暗号文作成回数を示すカウント値と等価であり、ページをまたぐアクセスであっても、連続した書き込みではプレ初期値Ｐｒｅ−ＩＶを順次１加算していくことで暗号文作成を継続することが可能となる。
【００４３】
更に、プレ初期値Ｐｒｅ−ＩＶとオフセット値ｏｆｆｓｅｔとの排他的論理和により初期値ＩＶを生成することで、データ暗号化装置毎にオフセット値を変えることでデータのデッドコピーを防止し、セキュリティの強度を上げることができる。
【００４４】
以上、本発明装置１または２がデータを暗号化して記憶装置に保存する場合を詳細に説明した。暗号化して保存されたデータを復号化して読み出す場合も、暗号文と平文の関係が逆になるだけであり、同じ構成が利用できる。即ち、初期値生成回路１１（１６）がページ番号とページブロック番号に基づき暗号化時と同じ初期値ＩＶを生成することができるため、擬似乱数生成回路１２が当該暗号化時と同じ初期値ＩＶを用いて擬似乱数を生成し、排他的論理和回路１３が当該擬似乱数と暗号文との排他的論理和をとることにより平文を復元できる。
【００４５】
以上、本発明の一実施形態について詳細に説明したが、これは本発明の好適な実施形態の一例である。本発明の実施形態はこれらに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形実施が可能である。
【００４６】
以下に、別実施形態について説明する。
【００４７】
〈１〉上記実施形態では、初期値ＩＶの設定例として、上位ビットをページ番号に割り当て、下位ビットをページブロック番号に割り当てる場合を例示したが、本発明はこれに限られるものではない。例えば、逆に上位ビットをページブロック番号に割り当て、下位ビットをページ番号に割り当ててもよいし、下位の奇数ビットをページブロック番号に割り当ててもよい。或いは、ページブロック番号あるいはページ番号に相当するビットを反転させたものを初期値ＩＶとして設定してもよい。ページ番号、及びページブロック番号の関数として初期値ＩＶを一意に定まることのできる限りにおいて、本発明を用可能である。
【産業上の利用可能性】
【００４８】
本発明は、記憶装置に保存されるデータの暗号化及び復号化に利用可能であり、特に機密情報を含むデータに対し、任意のページへの高速アクセスが可能で高セキュリティのメモリカードとしての利用が可能である。
【符号の説明】
【００４９】
１、２：  本発明に係るデータ暗号化装置
１１、１６：  初期値生成回路
１２：    擬似乱数生成回路
１３、１８：  排他的論理和回路
１７：    プレ初期値生成回路
ＩＶ：    擬似乱数の初期値
Ｍ：      １ページ当りのページブロック数
Ｎ：      ページサイズ
ｍＢＬＫ：  ページブロック番号
ｎＰＧ：  ページ番号
Ｐｒｅ−ＩＶ：  擬似乱数のプレ初期値
【図１】
0005167374.tif 000002
【図２】
0005167374.tif 000003
【図３】
0005167374.tif 000004
【図４】
0005167374.tif 000005
【図５】
0005167374.tif 000006
【図６】
0005167374.tif 000007
【図７】
0005167374.tif 000008