(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6106050
(24)【登録日】2017年3月10日
(45)【発行日】2017年3月29日
(54)【発明の名称】記憶装置、記憶システム、記憶方法およびプログラム
(51)【国際特許分類】
G06F 21/79 20130101AFI20170316BHJP
G09C 1/00 20060101ALI20170316BHJP
【FI】
G06F21/79
G09C1/00 610Z
【請求項の数】14
【全頁数】20
(21)【出願番号】特願2013-174663(P2013-174663)
(22)【出願日】2013年8月26日
(65)【公開番号】特開2015-43514(P2015-43514A)
(43)【公開日】2015年3月5日
【審査請求日】2016年2月2日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100122426
【弁理士】
【氏名又は名称】加藤 清志
(72)【発明者】
【氏名】清本 晋作
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】三宅 優
【審査官】
中里 裕正
(56)【参考文献】
【文献】
特開2013−117882(JP,A)
【文献】
特開2006−303922(JP,A)
【文献】
米国特許第5123045(US,A)
【文献】
Pinkas, B. and Reinman, T.,Oblivious RAM Revisited,Cryptology ePrint Archive,[online],2010年 6月,Report 2010/366,[2015年3月23日検索],URL,http://eprint.iacr.org/2010/366
【文献】
NAKANO, Y. et al.,Memory Access Pattern Protection for Resource-Constrained Devices,[online],2012年,188-202,[2016年12月22日検索],URL,https://www.cardis.org/proceedings.html
【文献】
LORCH, J. R. et al.,Toward Practical Private Access to Data Centers via Parallel ORAM,Cryptology ePrint Archive,[online],2013年 1月,Report 2012/133,[2017年2月20日検索],URL,http://eprint.iacr.org/2012/133
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/79
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置であって、
動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する選択関数生成手段と、
該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する鍵生成手段と、
所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する鍵更新手段と、
を備えたことを特徴とする記憶装置。
【請求項2】
前記動作プログラムの終了時に、前記秘密情報を別の秘密情報に上書きする上書き手段を備えたことを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記鍵生成手段が、少なくとも1つの秘密情報により、鍵長分の長さのビットを選択して鍵を生成することを特徴とする請求項1に記載の記憶装置。
【請求項4】
前記選択関数生成手段が、起動時に生成された(a+b+c)ビットの乱数のうち、aビットの乱数を使って、aビット入力、kビット出力の選択関数を2b+m(mは、並列度を保証する固定値)個生成し、
前記鍵生成手段が、該生成された2b+m(mは、並列度を保証する固定値)個の選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する処理を各選択関数について、2c+n(nは、実行回数を保証する固定値)回実行し、それぞれの前記選択関数から出力されるkビットの値から、暗号化のためのkビットの鍵を生成することを特徴とする請求項1に記載の記憶装置。
【請求項5】
前記鍵生成手段が、それぞれの前記選択関数から出力されるkビットの値の排他的論理和演算を行い、暗号化のためのkビットの鍵を生成することを特徴とする請求項4に記載の記憶装置。
【請求項6】
メモリをデータのアクセス領域と履歴データを記憶する記憶領域とを備えた記憶装置と、リモートストレージとからなる記憶システムであり、前記リモートストレージに格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データをリモートストレージに移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記リモートストレージに格納する記憶システムであって、
前記記憶装置が、
動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する選択関数生成手段と、
該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する鍵生成手段と、
所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する鍵更新手段と、
を備えたことを特徴とする記憶システム。
【請求項7】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項5のいずれかに記載の記憶装置。
【請求項8】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項5のいずれかに記載の記憶装置。
【請求項9】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と前記履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項5のいずれかに記載の記憶装置。
【請求項10】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記リモートストレージに存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項6に記載の記憶システム。
【請求項11】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項6に記載の記憶システム。
【請求項12】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記リモートストレージと前記履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記リモートストレージに移動し、これらのデータを前記履歴領域に保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項6に記載の記憶システム。
【請求項13】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置における記憶方法であって、
動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する第1のステップと、
該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する第2のステップと、
所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する第3のステップと、
を備えたことを特徴とする記憶方法。
【請求項14】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置における記憶方法をコンピュータに実行させるためのプログラムであって、
動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する第1のステップと、
該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する第2のステップと、
所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する第3のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アクセスパターンの保護に適した記憶装置、記憶システム、記憶方法およびプログラムに関する。
【背景技術】
【0002】
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃としては、メモリアクセスを解析し秘密情報を復元する攻撃がある。こうした攻撃に対応して、メモリアクセスを攻撃者から保護するためにOblivious RAMが注目を集めている(例えば、非特許文献1および非特許文献2参照。)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Oded Goldreich and Rafail Ostrovsky, “Software protection and simulation on oblivious RAMS,” J. ACM, 43(3):431−473, 1996.
【非特許文献2】Joan Daemen, Vincent Rijmen, “The design of Rijndael AES Advanced Encryption Standard“, Springer, 2002.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところが、非特許文献1などで検討されているOblivious RAM(ORAM)によるメモリの保護は、安全な暗号方式によってデータは保護されているとの前提のもとに、アクセスのパターンを保護することでメモリへのアクセスを保護している。ORAMによってデータにアクセスを行う場合、それがデータの変化を伴わない読み出し処理であっても、読み出し処理であったという事実を保護するためにデータをメモリに戻す際にデータが別の値に変化している必要がある。これを実現する最もシンプルな方法は、データごとに異なる鍵を予め用意し、アクセスのたびに鍵の更新と新しい鍵での再暗号化を行う方式である。しかし、この方式では、データの分だけ鍵を用意し、それを安全に保管しておく必要があるため、現実的ではない。また、単に鍵をプログラムに埋め込んだ場合には、それ以降の処理の安全性が保証されず、また実行時に同じ鍵を使うことは漏えいリスクと高める要因となる。
【0005】
そこで、本発明は、上述の課題に鑑みてなされたものであり、アクセスパターンの保護に適した記憶装置、記憶システム、記憶方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【0007】
(1)本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置であって、動作プログラムの起動時に生成された乱数の一部を使って選択関数を構成する選択関数生成手段と、該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する鍵生成手段と、所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する鍵更新手段と、を備えたことを特徴とする記憶装置を提案している。
【0008】
(2)本発明は、(1)の記憶装置について、前記動作プログラムの終了時に、前記秘密情報を別の秘密情報に上書きする上書き手段を備えたことを特徴とする記憶装置を提案している。
【0009】
(3)本発明は、(1)の記憶装置について、前記鍵生成手段が、少なくとも1つの秘密情報により、鍵長分の長さのビットを選択して鍵を生成することを特徴とする記憶装置を提案している。
【0010】
(4)本発明は、(1)の記憶装置について、前記選択関数生成手段が、起動時に生成された(a+b+c)ビットの乱数のうち、aビットの乱数を使って、aビット入力、kビット出力の選択関数を2
b+m(mは、並列度を保証する固定値)個生成し、前記鍵生成手段が、該生成された2
b+m(mは、並列度を保証する固定値)個の選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する処理を各選択関数について、2
c+n(nは、実行回数を保証する固定値)回実行し、それぞれの前記選択関数から出力されるkビットの値から、暗号化のためのkビットの鍵を生成することを特徴とする記憶装置を提案している。
【0011】
(5)本発明は、(4)の記憶装置について、前記鍵生成手段が、それぞれの前記選択関数から出力されるkビットの値の排他的論理和演算を行い、暗号化のためのkビットの鍵を生成することを特徴とする記憶装置を提案している。
【0012】
(6)本発明は、メモリをデータのアクセス領域と履歴データを記憶する記憶領域とを備えた記憶装置と、リモートストレージとからなる記憶システムであり、前記リモートストレージに格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データをリモートストレージに移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記リモートストレージに格納する記憶システムであって、前記記憶装置が、動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する選択関数生成手段と、該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する鍵生成手段と、所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する鍵更新手段と、を備えたことを特徴とする記憶システムを提案している。
【0013】
(7)本発明は、(1)から(5)のいずれかの記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【0014】
(8)本発明は、(1)から(5)のいずれかの記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【0015】
(9)本発明は、(1)から(5)のいずれかの記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と前記履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【0016】
(10)本発明は、(6)の記憶システムについて、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記リモートストレージに存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶システムを提案している。
【0017】
(11)本発明は、(6)の記憶システムについて、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする請求項6に記載の記憶システムを提案している。
【0018】
(12)本発明は、(6)の記憶システムについて、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記リモートストレージ内のデータをランダムに並び替える第1のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記リモートストレージと前記履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記リモートストレージに移動し、これらのデータを前記履歴領域に保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする請求項6に記載の記憶システムを提案している。
【0019】
(13)本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置における記憶方法であって、動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する第1のステップと、該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する第2のステップと、所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する第3のステップと、を備えたことを特徴とする記憶方法を提案している。
【0020】
(14)本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備え、前記非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データをアクセス領域に移動させた後に、データを復号し、前記データxを用いた処理が完了し、データを非アクセス領域に移動させる際に、鍵を用いて暗号化した情報E(x)´を生成し、元の前記非アクセス領域に格納する記憶装置における記憶方法をコンピュータに実行させるためのプログラムであって、動作プログラムの起動時に生成された乱数の一部を使って選択関数を生成する第1のステップと、該生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する第2のステップと、所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する第3のステップと、をコンピュータに実行させるためのプログラムを提案している。
【発明の効果】
【0021】
本発明によれば、アクセスパターン保護向けの鍵の安全な更新が可能となる。アクセスパターン保護と組み合わせて利用することで、リモートストレージに対するアクセスの安全性を高めることができるという効果がある。
【図面の簡単な説明】
【0022】
【
図1】本発明に係る記憶装置の構成を示す図である。
【
図2】本発明に係る記憶装置の処理の概略を示す図である。
【
図3】本発明に係る記憶装置における暗号化の概略を示す図である。
【
図4】本発明に係る記憶装置における鍵部の構成を示す図である。
【
図5】本発明に係る記憶装置における鍵生成部の構成を示す図である。
【
図6】本発明の第1の実施形態に係るアクセスパターン保護部の構成を示す図である。
【
図7】本発明の第1の実施形態に係るアクセスパターン保護部の処理を示す図である。
【
図8】本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
【
図9】本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
【
図10】本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
【
図11】本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
【
図12】本発明の実施例に係るアクセス時の記憶領域内のデータの遷移を示す図である。
【
図13】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
【
図14】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0024】
<記憶装置の構成>
図1から
図5を用いて、本発明の記憶装置の構成について説明する。
本発明の記憶装置は、
図1に示すように、アクセスパターン保護部100と、記憶領域200と、鍵部300と、データ移動部10と、復号化部30と、保管部40と、暗号化部50とから構成されている。なお、アクセスパターン保護部100および鍵部300の詳細については、後述する。
【0025】
記憶領域200は、データのアクセス領域と非アクセス領域と履歴領域とに分割されている。なお、アクセス領域、非アクセス領域、履歴領域は、DRAM、SRAM等の書き換え可能なメモリで構成される。また、アクセス領域を耐タンパ性を備えたDRAM、SRAM等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置は、例えば、RAM等の一般的な記憶装置ばかりでなく、SIMやICカード等の記憶媒体も含むものである。
【0026】
データ移動部10は、記憶領域200内の非アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、暗号化データをアクセス領域に移動させる。なお、アクセスパターンの保護方法については、その例を後述する。
【0027】
復号化部30は、アクセス領域に移動された暗号化データを復号する。保管部40は、復号したデータxとデータxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する。なお、暗号化処理を行う前には、すべてのシーケンス番号を保管するが、暗号化処理後は、後述する暗号化方法のうち、データxとシーケンス番号とを演算した情報に対して、暗号化した場合にのみ、シーケンス番号を保管する。
【0028】
暗号化部50は、データxにシーケンス番号を付加した情報あるいはデータxとシーケンス番号とを演算した情報に対して、生成した鍵を用いて暗号化した情報E(x)´を生成する。
【0029】
つまり、
図2に示すように、データE(x)に対して、アクセスする場合には、このデータをまず、安全な領域であるアクセス領域に移動し、ここで、復号化してデータxを取り出す。データxに対して処理が終了すると、暗号化部50において、
図3に例示するように、データxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報に対して、鍵部300が生成した鍵を用いて暗号化した情報E(x)´を生成し、これを非アクセス領域に戻す。なお、データE(x)の暗号化も上述の情報E(x)´の暗号化と同様の手法で行われる。したがって、アクセスデータに対する処理の前後において、異なった情報が非アクセス領域に戻されるため、例えば、不正な攻撃者にアクセスパターンが漏洩することを防止することができる。
【0030】
<鍵部の構成>
図4および
図5を用いて、本発明の鍵部300の構成について説明する。
図4に示すように、本発明の鍵部300は、選択関数生成部310と、鍵生成部320と、鍵更新部330とから構成されている。
【0031】
選択関数生成部310は、起動時に生成された乱数の一部を使って選択関数を構成する。鍵生成部320は、生成した選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する。鍵更新部330は、所定の間隔ごとに、新たな鍵を生成させて、鍵を更新する。
【0032】
具体的には、選択関数生成部310は、起動時に生成された(a+b+c)ビットの乱数のうち、aビットの乱数を使って、aビット入力、kビット出力の選択関数を2
b+m(mは、並列度を保証する固定値)個生成する。鍵生成部320は、生成された2
b+m(mは、並列度を保証する固定値)個の選択関数を用いて、乱数と秘密情報とにより、鍵長分の長さのビットを選択して鍵を生成する処理を各選択関数について、2
c+n(nは、実行回数を保証する固定値)回実行し、それぞれの選択関数から出力されるkビットの値から、暗号化のためのkビットの鍵を生成する。
【0033】
なお、kビットの鍵は、それぞれの選択関数から出力されるkビットの値について、排他的論理和演算を行って求めてもよい。上記のような計算手法、計算回数自体に乱数性を持たせることにより、攻撃者による解析をより困難にすることができる。
【0034】
また、用いる秘密情報は、1つに限らず複数であってもよい。さらに、並列に処理される各行ごとに、異なる秘密情報を用いてもよい。
【0035】
また、選択関数としては、秘密情報が埋め込まれたNLFSR(非線形フィードバックシフトレジスタ)などが例示できる。例えば、
図5のような構成を1つの単位とし、並列度に従って実行する数を増やす。なお、
図5において、fは、非線形置換器である。
【0036】
また、秘密情報は、難読化等の手法によりプログラムの中に安全に埋め込まれるが、さらにプログラム終了時にこの秘密情報を自ら書き換えることにより、鍵の漏えいリスクを最小化する。なお、新たに埋め込む秘密情報は、上述した関数の最終出力を利用する。
【0037】
なお、上記においては、記憶装置が単独でその機能を果たす例について説明したが、上記の記憶装置における非アクセス領域に代えて、リモートストレージを設けたシステムとしてもよい。このようなシステムにすることにより、クラウドコンピューティングにも対応することが可能となる。
【0038】
<第1の実施形態>
図6から
図7を用いて、本発明の実施形態について説明する。
【0039】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部100は、
図6に示すように、並べ替え部110と、移動部120と、制御部130と、書き出し部140と、保存部150とから構成されている。
【0040】
並べ替え部110は、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替える。移動部120は、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる。
【0041】
制御部130は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0042】
例えば、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【0043】
なお、制御部130は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、有効に、アクセスパターンを保護することができる。
【0044】
書き出し部140は、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す。保存部150は、アクセス領域から非アクセス領域に移動したデータを履歴領域に履歴データとして保存する。
【0045】
<アクセスパターン保護部の処理>
図7を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【0046】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS200)。
【0047】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS300)。
【0048】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS400)。
【0049】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0050】
<第2の実施形態>
図8から
図9を用いて、本発明の実施形態について説明する。
【0051】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、
図8に示すように、並べ替え部110と、移動部120と、制御部131と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
【0052】
制御部131は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0053】
例えば、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【0054】
なお、制御部131は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【0055】
<アクセスパターン保護部の処理>
図9を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【0056】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS110)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS210)。
【0057】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS310)。
【0058】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS410)。
【0059】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0060】
<第3の実施形態>
図10から
図11を用いて、本発明の実施形態について説明する。
【0061】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、
図10に示すように、並べ替え部110と、移動部120と、制御部132と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
【0062】
制御部132は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0063】
例えば、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する。
【0064】
なお、制御部132は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【0065】
<アクセスパターン保護部の処理>
図11を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【0066】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS120)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS220)。
【0067】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する(ステップS320)。
【0068】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS420)。
【0069】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域からランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0070】
<実施例>
図12から
図14を用いて、本発明の実施例について説明する。
【0071】
図12は、1、2、・・・、9、A、B、・・・、Fをメモリに保存されているデータとしたときに、プログラムが、5→D→8→5→Aの順にデータにアクセスする場合のメモリの遷移を示したものである。以下、
図12、
図13を用いて、この処理を例示とし、説明する。なお、
図12の例にかかわらず、非アクセス領域をさらに複数に分割してもよい。
【0072】
まず、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替え(ステップS1100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS1200)。
【0073】
そして、まず、5にアクセスする場合には、5はアクセス領域に含まれないため、5ともう一つランダムに選択されたデータ(
図12では、2)をアクセス領域に移動し、例えば、これにより、アクセス領域から移動する4とBとを履歴領域に保存して、5にアクセスする。このとき、アクセス領域内の他のデータ(
図12では、2、3、8)に対してもアクセスを行う(ステップS1300)。
【0074】
次に、Dにアクセスする場合には、Dはアクセス領域に含まれないため、Dをアクセス領域に移動し、もう一つのデータは、履歴領域から選択する(例えば、
図12では、B)。これにより、アクセス領域から移動する5と8とを履歴領域に保存して、Dにアクセスする。このとき、アクセス領域内の他のデータ(
図12では、3、B、2)に対してもアクセスを行う(ステップS1400)。
【0075】
さらに、8にアクセスする場合には、8は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(
図12では、A)、アクセス領域に移動する。これにより、アクセス領域から移動する3とBとを履歴領域に保存して、8にアクセスする。このとき、アクセス領域内の他のデータ(
図12では、A、D、2)に対してもアクセスを行う(ステップS1500)。
【0076】
さらに、5にアクセスする場合、5は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(
図12では、6)、アクセス領域に移動する。これにより、アクセス領域から移動する2と8とを履歴領域に保存して、5にアクセスする。また、アクセス領域内の他のデータ(
図12では、A、D、6)に対してもアクセスを行う(ステップS1600)。
【0077】
最後に、Aにアクセスする場合、Aはアクセス領域に含まれているため、アクセス領域に含まれないランダムに選択したデータと履歴領域に保存されているデータとを(
図12では、3、F)、アクセス領域に移動する。これにより、アクセス領域から移動する6とDとが非アクセス領域に書き出され、Aにアクセスする。また、アクセス領域内の他のデータ(
図12では、5、F、3)に対してもアクセスを行う(ステップS1700)。
【0078】
そして、すべての処理が完了するとアクセス領域内の必要なデータを書き出して、終了する(ステップS1800)。
【0079】
したがって、本実施例によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができるという効果がある。また、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うことから、データのアクセスパターンを保護することができるという効果がある。さらに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うため、さらに、データのアクセスパターンを保護することができる。また、プログラムによってアクセスされるデータに対して、ランダムに選択したデータを取り込むことによって、安全性を保ちつつ、アクセスパターンの保護において、必要な保存領域を削減することができる。
【0080】
なお、記憶装置および記憶システムの処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを記憶装置および記憶システムに読み込ませ、実行することによって本発明の記憶装置および記憶システムを実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0081】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0082】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0083】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0084】
10;データ移動部
30;復号化部
40;保管部
50;暗号化部
100;アクセスパターン保護部
110;並べ替え部
120;移動部
130;制御部
131;制御部
132;制御部
140;書き出し部
150;保存部
200;記憶領域
300;鍵部
310;選択関数生成部
320;鍵生成部
330;鍵更新部