(57)【要約】【課題】アクセスパターンの保護に適した記憶装置、記憶システムおよびプログラムを提供する。【解決手段】非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、暗号化データを安全な領域に移動させ、暗号化データをアクセス領域に移動させた後に、データを復号する。次いで、変数値を生成し、復号したデータｘと、生成した変数値とを保管する。そして、データｘを用いた処理が完了し、データをアクセス領域に移動させる際に、データｘに変数値を付加した情報に対して、暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成し、暗号化された情報Ｅ（ｘ）´を元の非アクセス領域に格納する。【選択図】図３
2015040957.tif 000002
【特許請求の範囲】
【請求項１】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、
前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させるデータ移動手段と、
前記暗号化データをアクセス領域に移動させた後に、データを復号する復号手段と、変数値を生成する変数値生成手段と、
該復号したデータｘと、前記生成した変数値とを保管する保管手段と、
前記データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する暗号化手段と、
該暗号化手段により暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する格納手段と、
を備えたことを特徴とする記憶装置。
【請求項２】
履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムであって、
前記クライアント端末が、
前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させるデータ移動手段と、
移動したデータを復号する復号手段と、変数値を生成する変数値生成手段と、
該復号したデータｘと、前記生成した変数値とを保管する保管手段と、
前記データｘを用いた処理が完了し、データをリモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する暗号化手段と、
該暗号化手段により暗号化された情報Ｅ（ｘ）´を前記リモートストレージ記記憶装置の元のアクセス領域に格納する格納手段と、
を備えたことを特徴とする記憶システム。
【請求項３】
前記変数値生成手段が、乱数を発生させて、前記変数値を生成することを特徴とする請求項１に記載の記憶装置。
【請求項４】
前記変数値生成手段が、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することを特徴とする請求項１に記載の記憶装置。
【請求項５】
前記変数値生成手段が、乱数を発生させて、前記変数値を生成することを特徴とする請求項２に記載の記憶システム。
【請求項６】
前記変数値生成手段が、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することを特徴とする請求項２に記載の記憶システム。
【請求項７】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置における暗号化方法であって、
前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させる第１のステップと、
前記暗号化データをアクセス領域に移動させた後に、データを復号する第２のステップと、
変数値を生成する第３のステップと、
該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、
前記データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、
該暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する第６のステップと、
を備えたことを特徴とする暗号化方法。
【請求項８】
履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムにおける暗号化方法であって、
前記クライアント端末が、前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させる第１のステップと、
前記クライアント端末が、移動したデータを復号する第２のステップと、
前記クライアント端末が、変数値を生成する第３のステップと、
前記クライアント端末が、該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、
前記クライアント端末が、前記データｘを用いた処理が完了し、データを前記リモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、
前記クライアント端末が、該暗号化された情報Ｅ（ｘ）´を前記リモートストレージに格納する第６のステップと、
を備えたことを特徴とする暗号化方法。
【請求項９】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置における処理をコンピュータに実行させるためのプログラムであって、
前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させる第１のステップと、前記暗号化データをアクセス領域に移動させた後に、データを復号する第２のステップと、
変数値を生成する第３のステップと、
該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、
前記データｘを用いた処理が完了し、データをアクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、
該暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する第６のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１０】
履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムにおける処理をコンピュータに実行させるためのプログラムであって、
前記クライアント端末が、前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させる第１のステップと、
前記クライアント端末が、移動したデータを復号する第２のステップと、
前記クライアント端末が、変数値を生成する第３のステップと、
前記クライアント端末が、該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、
前記クライアント端末が、前記データｘを用いた処理が完了し、データを前記リモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、
前記クライアント端末が、該暗号化された情報Ｅ（ｘ）´を前記リモートストレージに格納する第６のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１１】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記２つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項１、請求項３、請求項４のいずれかに記載の記憶装置。
【請求項１２】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記リモートストレージに存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記２つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項２、請求項５、請求項６のいずれかに記載の記憶システム。
【請求項１３】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項１、請求項３、請求項４のいずれかに記載の記憶装置。
【請求項１４】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項２、請求項５、請求項６のいずれかに記載の記憶システム。
【請求項１５】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と前記履歴領域とからランダムに選択したデータを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項１、請求項３、請求項４のいずれかに記載の記憶装置。
【請求項１６】
前記アクセスパターンの秘匿方法が、
初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、
前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、
１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記リモートストレージと前記履歴領域とからランダムに選択したデータを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第３のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、
を備えたことを特徴とする請求項２、請求項５、請求項６のいずれかに記載の記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスパターンの保護に適した記憶装置、記憶システムおよびプログラムに関する。
【背景技術】
【０００２】
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃としては、メモリアクセスを解析し秘密情報を復元する攻撃がある。こうした攻撃に対応して、メモリアクセスを攻撃者から保護するためにＯｂｌｉｖｉｏｕｓ ＲＡＭが注目を集めている（例えば、非特許文献１および非特許文献２参照。）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｏｄｅｄ  Ｇｏｌｄｒｅｉｃｈ  ａｎｄ  Ｒａｆａｉｌ  Ｏｓｔｒｏｖｓｋｙ,  “Ｓｏｆｔｗａｒｅ  ｐｒｏｔｅｃｔｉｏｎ  ａｎｄ  ｓｉｍｕｌａｔｉｏｎ  ｏｎ  ｏｂｌｉｖｉｏｕｓ  ＲＡＭＳ,”  Ｊ. ＡＣＭ, ４３（３）：４３１−４７３, １９９６.
【非特許文献２】Ｅｌａｉｎｅ  Ｓｈｉ，Ｔ．?Ｈ．Ｈｕｂｅｒｔ  Ｃｈａｎ，Ｅｍｉｌ  Ｓｔｅｆａｎｏｖ，  Ｍｉｎｇｆｅｉ  Ｌｉ，  “Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ  ｗｉｔｈ  Ｏ（ｌｏｇＮ）３  Ｗｏｒｓｔ?Ｃａｓｅ  Ｃｏｓｔ”，Ｓｐｒｉｎｇｅｒ，２０１１．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、非特許文献１などで検討されているＯｂｌｉｖｉｏｕｓ ＲＡＭ（ＯＲＡＭ）によるメモリの保護は、安全な暗号方式によってデータは保護されているとの前提のもとに、アクセスのパターンを保護することでメモリへのアクセスを保護している。ＯＲＡＭによってデータにアクセスを行う場合、それがデータの変化を伴わない読み出し処理であっても、読み出し処理であったという事実を秘匿するためにデータをメモリに戻す際にデータが別の値に変化している必要がある。これを実現する最もシンプルな方法は、データごとに異なる鍵を用意し、アクセスのたびに鍵の更新と新しい鍵での再暗号化を行う方式である。しかし、この方式では、データの分だけ鍵を用意し、それを安全に保管しておく必要があるため、現実的ではない。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、アクセスパターンの保護に適した記憶装置、記憶システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００７】
（１）本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させるデータ移動手段と、前記暗号化データをアクセス領域に移動させた後に、データを復号する復号手段と、変数値を生成する変数値生成手段と、該復号したデータｘと、前記生成した変数値とを保管する保管手段と、前記データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する暗号化手段と、該暗号化手段により暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する格納手段と、を備えたことを特徴とする記憶装置を提案している。
【０００８】
（２）本発明は、履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムであって、前記クライアント端末が、前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させるデータ移動手段と、移動したデータを復号する復号手段と、変数値を生成する変数値生成手段と、該復号したデータｘと、前記生成した変数値とを保管する保管手段と、前記データｘを用いた処理が完了し、データをリモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する暗号化手段と、該暗号化手段により暗号化された情報Ｅ（ｘ）´を前記リモートストレージ記記憶装置の元のアクセス領域に格納する格納手段と、を備えたことを特徴とする記憶システムを提案している。
【０００９】
（３）本発明は、（１）の記憶装置について、前記変数値生成手段が、乱数を発生させて、前記変数値を生成することを特徴とする記憶装置を提案している。
【００１０】
（４）本発明は、（１）の記憶装置について、前記変数値生成手段が、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することを特徴とする記憶装置を提案している。
【００１１】
（５）本発明は、（２）の記憶システムについて、前記変数値生成手段が、乱数を発生させて、前記変数値を生成することを特徴とする記憶システムを提案している。
【００１２】
（６）本発明は、（２）の記憶システムについて、前記変数値生成手段が、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することを特徴とする記憶システムを提案している。
【００１３】
（７）本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置における暗号化方法であって、前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させる第１のステップと、前記暗号化データをアクセス領域に移動させた後に、データを復号する第２のステップと、変数値を生成する第３のステップと、該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、前記データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、該暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する第６のステップと、を備えたことを特徴とする暗号化方法を提案している。
【００１４】
（８）本発明は、履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムにおける暗号化方法であって、前記クライアント端末が、前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させる第１のステップと、前記クライアント端末が、移動したデータを復号する第２のステップと、前記クライアント端末が、変数値を生成する第３のステップと、前記クライアント端末が、該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、前記クライアント端末が、前記データｘを用いた処理が完了し、データを前記リモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、前記クライアント端末が、該暗号化された情報Ｅ（ｘ）´を前記リモートストレージに格納する第６のステップと、を備えたことを特徴とする暗号化方法を提案している。
【００１５】
（９）本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置における処理をコンピュータに実行させるためのプログラムであって、前記非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データをアクセス領域に移動させる第１のステップと、前記暗号化データをアクセス領域に移動させた後に、データを復号する第２のステップと、変数値を生成する第３のステップと、該復号したデータｘと、前記生成した変数値と、を保管する第４のステップと、前記データｘを用いた処理が完了し、データをアクセス領域に移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、該暗号化された情報Ｅ（ｘ）´を元の前記非アクセス領域に格納する第６のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００１６】
（１０）本発明は、履歴データを記憶する記憶領域とデータのアクセス領域とを備えたクライアント端末とリモートストレージとからなる記憶システムにおける処理をコンピュータに実行させるためのプログラムであって、前記クライアント端末が、前記リモートストレージに格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、前記暗号化データを前記クライアント端末に移動させる第１のステップと、前記クライアント端末が、移動したデータを復号する第２のステップと、前記クライアント端末が、変数値を生成する第３のステップと、前記クライアント端末が、該復号したデータｘと、前記生成した変数値とを保管する第４のステップと、前記クライアント端末が、前記データｘを用いた処理が完了し、データを前記リモートストレージに移動させる際に、前記データｘに前記変数値を付加した情報に対して、前記暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する第５のステップと、前記クライアント端末が、該暗号化された情報Ｅ（ｘ）´を前記リモートストレージに格納する第６のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００１７】
（１１）本発明は、（１）、（３）、（４）の記憶装置について、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、  １つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記２つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶装置を提案している。
【００１８】
（１２）本発明は、（２）、（５）、（６）の記憶システムについて、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および前記履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記２つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶システムを提案している。
【００１９】
（１３）本発明は、（１）、（３）、（４）の記憶装置について、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶装置を提案している。
【００２０】
（１４）本発明は、（２）、（５）、（６）の記憶システムについて、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶システムを提案している。
【００２１】
（１５）本発明は、（１）、（３）、（４）の記憶装置について、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替える第１のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と前記履歴領域とからランダムに選択したデータを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶装置を提案している。
【００２２】
（１６）本発明は、（２）、（５）、（６）の記憶システムについて、前記アクセスパターンの秘匿方法が、初期状態において、１度だけ、前記リモートストレージ内のデータをランダムに並び替える第１のステップと、前記リモートストレージ内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第２のステップと、１つのデータにアクセスが生じたときに、２つのデータを選択し、前記アクセス領域とリモートストレージとの間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域とリモートストレージとの間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記リモートストレージと前記履歴領域とからランダムに選択したデータを前記２つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第３のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第４のステップと、を備えたことを特徴とする記憶システムを提案している。
【発明の効果】
【００２３】
本発明によれば、アクセスパターン保護向けのデータ暗号化が可能となるという効果がある。また、アクセスパターン保護と組み合わせて利用することにより、リモートストレージに対するアクセスの安全性を高めることができるという効果である。
【図面の簡単な説明】
【００２４】
【図１】本発明に係る記憶装置の構成を示す図である。
【図２】本発明に係る記憶装置における変数値の保存形式を示す図である。
【図３】本発明に係る記憶装置の処理の概略を示す図である。
【図４】本発明に係る記憶システムの構成を示す図である。
【図５】本発明に係る記憶システムにおけるクライアント端末の構成を示す図である。
【図６】本発明に係る記憶システムの処理の概略を示す図である。
【図７】本発明の第１の実施形態に係るアクセスパターン保護部の構成を示す図である。
【図８】本発明の第１の実施形態に係るアクセスパターン保護部の処理を示す図である。
【図９】本発明の第２の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
【図１０】本発明の第２の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
【図１１】本発明の第３の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
【図１２】本発明の第３の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
【図１３】本発明の実施例に係るアクセス時の記憶領域内のデータの遷移を示す図である。
【図１４】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
【図１５】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２６】
＜記憶装置の構成＞
図１から図３を用いて、本発明の記憶装置について説明する。
本発明の記憶装置は、アクセスパターン保護部１００と記憶領域２００と、データ移動部１０と、復号化部３０と、変数値生成部４０と、保管部５０と、暗号化部６０と、格納部７０とから構成されている。なお、アクセスパターン保護部１００の詳細については、後述する。
【００２７】
記憶領域２００は、メモリをデータのアクセス領域と非アクセス領域と履歴領域とに分割されている。なお、アクセス領域、非アクセス領域、履歴領域は、ＤＲＡＭ、ＳＲＡＭ等の書き換え可能なメモリで構成される。また、アクセス領域を耐タンパ性を備えたＤＲＡＭ、ＳＲＡＭ等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置は、例えば、ＲＡＭ等の一般的な記憶装置ばかりでなく、ＳＩＭやＩＣカード等の記憶媒体も含むものである。
【００２８】
データ移動部１０は、非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、暗号化データをアクセス領域に移動させる。復号化部３０は、暗号化データを安全な領域に移動させた後に、データを復号する。
【００２９】
変数値生成部４０は、変数値を生成する。具体的には、乱数を発生させて、変数値を生成する、あるいは、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することが好ましい。
【００３０】
保管部５０は、復号したデータｘと、生成した変数値とを図２のように関連付けて保管する。暗号化部６０は、データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、データｘに変数値を付加した情報に対して、暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する。
【００３１】
具体的には、ブロック暗号Ｅに対して、数１に示すように、入力ｘ、鍵Ｋ、変数値Ｔの３つを入力する。
【００３２】
【数１】
2015040957.tif 000003
【００３３】
または、数２に示すように、数３を満たすハッシュ関数を用いて、暗号化をしてもよい。
【００３４】
【数２】
2015040957.tif 000004
【００３５】
【数３】
2015040957.tif 000005
【００３６】
格納部７０は、暗号化された情報Ｅ（ｘ）´を元の非アクセス領域に格納する。
【００３７】
＜記憶装置の処理＞
図３を用いて、記憶装置の処理について説明する。
【００３８】
まず、データ移動部１０は、非アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、暗号化データをアクセス領域に移動させる（ステップＳ１０）。
【００３９】
復号化部３０は、暗号化データをアクセス領域に移動させた後に、データを復号し（ステップＳ２０）、変数値生成部４０は、変数値を生成する（ステップＳ３０）。
【００４０】
保管部５０は、復号したデータｘと、生成した変数値とを保管し（ステップＳ４０）、暗号化部６０は、データｘを用いた処理が完了し、データを非アクセス領域に移動させる際に、データｘに変数値を付加した情報に対して、暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する（ステップＳ５０）。そして、格納部７０は、暗号化された情報Ｅ（ｘ）´を元の非アクセス領域に格納する（ステップＳ６０）。
【００４１】
＜記憶システムの構成＞
【００４２】
図４から図６を用いて、本発明の記憶システムについて説明する。
本発明の記憶システムは、クライアント端末５００とリモートストレージ４００とから構成されている。また、クライアント端末５００は、アクセスパターン保護部１００と記憶領域２００と、データ移動部１１と、復号化部３１と、変数値生成部４１と、保管部５１と、暗号化部６１と、格納部７１とから構成されている。
【００４３】
クライアント端末５００のデータ移動部１１は、アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、暗号化データをリモートストレージ４００に移動させる。
【００４４】
復号化部３１は、暗号化データを復号する。変数値生成部４１は、変数値を生成する。具体的には、乱数を発生させて、変数値を生成する、あるいは、直近に生成した変数値に任意の数値を加算又は減算して変数値を生成することが好ましい。
【００４５】
保管部５１は、復号したデータｘと、生成した変数値とを関連付けて保管する。暗号化部６１は、データｘを用いた処理が完了したときに、データｘに変数値を付加した情報に対して、暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する。格納部４７０は、暗号化された情報Ｅ（ｘ）´をリモートストレージ４００に格納する。
【００４６】
＜記憶システムの処理＞
図６を用いて、記憶システムの処理について説明する。
【００４７】
まず、クライント端末５００のデータ移動部１１は、アクセス領域に格納されている暗号化データＥ（ｘ）に対してアクセスを行う場合に、任意のアクセスパターンの秘匿方法を用いて、暗号化データを移動させる（ステップＳ１１）。
【００４８】
復号化部３１は、暗号化データを復号し（ステップＳ２１）、変数値生成部４１は、変数値を生成する（ステップＳ３１）。
【００４９】
保管部５１は、復号したデータｘと、生成した変数値とを保管し（ステップＳ４１）、暗号化部６１は、データｘを用いた処理が完了したときに、データｘに変数値を付加した情報に対して、暗号化データＥ（ｘ）を生成した際に用いた鍵と同一の鍵を用いて暗号化した情報Ｅ（ｘ）´を生成する（ステップＳ５１）。そして、格納部７０は、暗号化された情報Ｅ（ｘ）´をリモートストレージ４００に格納する（ステップＳ６１）。
【００５０】
＜第１の実施形態＞
図７から図８を用いて、本発明の実施形態について説明する。
【００５１】
＜アクセスパターン保護部の構成＞
本実施形態に係るアクセスパターン保護部１００は、図７に示すように、並べ替え部１１０と、移動部１２０と、制御部１３０と、書き出し部１４０と、保存部１５０とから構成されている。なお、クライアント端末とリモートストレージからなるシステムの場合には、非アクセス領域がリモートストレージとなる。
【００５２】
並べ替え部１１０は、初期状態において、１度だけ、非アクセス領域内のデータをランダムに並び替える。移動部１２０は、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる。
【００５３】
制御部１３０は、１つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【００５４】
例えば、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを２つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【００５５】
なお、制御部１３０は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、有効に、アクセスパターンを保護することができる。
【００５６】
書き出し部１４０は、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す。保存部１５０は、アクセス領域から非アクセス領域に移動したデータを履歴領域に履歴データとして保存する。
【００５７】
＜アクセスパターン保護部の処理＞
図８を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【００５８】
まず、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替え（ステップＳ１００）、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる（ステップＳ２００）。
【００５９】
次に、１つのデータにアクセスが生じたときに、２つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを２つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する（ステップＳ３００）。
【００６０】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す（ステップＳ４００）。
【００６１】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを１度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うＯｂｌｉｖｉｏｕｓ  ＲＡＭのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを２つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【００６２】
＜第２の実施形態＞
図９から図１０を用いて、本発明の実施形態について説明する。
【００６３】
＜アクセスパターン保護部の構成＞
本実施形態に係るアクセスパターン保護部は、図９に示すように、並べ替え部１１０と、移動部１２０と、制御部１３１と、書き出し部１４０と、保存部１５０とから構成されている。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。また、クライアント端末とリモートストレージからなるシステムの場合には、非アクセス領域がリモートストレージとなる。
【００６４】
制御部１３１は、１つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【００６５】
例えば、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【００６６】
なお、制御部１３１は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【００６７】
＜アクセスパターン保護部の処理＞
図１０を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【００６８】
まず、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替え（ステップＳ１１０）、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる（ステップＳ２１０）。
【００６９】
次に、１つのデータにアクセスが生じたときに、２つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する（ステップＳ３１０）。
【００７０】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す（ステップＳ４１０）。
【００７１】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを１度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うＯｂｌｉｖｉｏｕｓ  ＲＡＭのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【００７２】
＜第３の実施形態＞
図１１から図１２を用いて、本発明の実施形態について説明する。
【００７３】
＜アクセスパターン保護部の構成＞
本実施形態に係るアクセスパターン保護部は、図１１に示すように、並べ替え部１１０と、移動部１２０と、制御部１３２と、書き出し部１４０と、保存部１５０とから構成されている。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。また、クライアント端末とリモートストレージからなるシステムの場合には、非アクセス領域がリモートストレージとなる。
【００７４】
制御部１３２は、１つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【００７５】
例えば、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する。
【００７６】
なお、制御部１３２は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【００７７】
＜アクセスパターン保護部の処理＞
図１２を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【００７８】
まず、初期状態において、１度だけ、前記非アクセス領域内のデータをランダムに並び替え（ステップＳ１２０）、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる（ステップＳ２２０）。
【００７９】
次に、１つのデータにアクセスが生じたときに、２つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する（ステップＳ３２０）。
【００８０】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す（ステップＳ４２０）。
【００８１】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを１度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うＯｂｌｉｖｉｏｕｓ  ＲＡＭのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域からランダムに選択したデータを２つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【００８２】
＜実施例＞
図１３から図１５を用いて、本発明の実施例について説明する。
【００８３】
図１３は、１、２、・・・、９、Ａ、Ｂ、・・・、Ｆをメモリに保存されているデータとしたときに、プログラムが、５→Ｄ→８→５→Ａの順にデータにアクセスする場合のメモリの遷移を示したものである。以下、図１４、図１５を用いて、この処理を例示とし、説明する。なお、図１３の例にかかわらず、非アクセス領域をさらに複数に分割してもよい。
【００８４】
まず、初期状態において、１度だけ、非アクセス領域内のデータをランダムに並び替え（ステップＳ１１００）、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる（ステップＳ１２００）。
【００８５】
そして、まず、５にアクセスする場合には、５はアクセス領域に含まれないため、５ともう一つランダムに選択されたデータ(図１３では、２)をアクセス領域に移動し、例えば、これにより、アクセス領域から移動する４とＢとを履歴領域に保存して、５にアクセスする。このとき、アクセス領域内の他のデータ（図１３では、２、３、８）に対してもアクセスを行う（ステップＳ１３００）。
【００８６】
次に、Ｄにアクセスする場合には、Ｄはアクセス領域に含まれないため、Ｄをアクセス領域に移動し、もう一つのデータは、履歴領域から選択する（例えば、図１３では、Ｂ)。これにより、アクセス領域から移動する５と８とを履歴領域に保存して、Ｄにアクセスする。このとき、アクセス領域内の他のデータ（図１３では、３、Ｂ、２）に対してもアクセスを行う（ステップＳ１４００）。
【００８７】
さらに、８にアクセスする場合には、８は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図１３では、Ａ)、アクセス領域に移動する。これにより、アクセス領域から移動する３とＢとを履歴領域に保存して、８にアクセスする。このとき、アクセス領域内の他のデータ（図１３では、Ａ、Ｄ、２）に対してもアクセスを行う（ステップＳ１５００）。
【００８８】
さらに、５にアクセスする場合、５は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図１３では、６)、アクセス領域に移動する。これにより、アクセス領域から移動する２と８とを履歴領域に保存して、５にアクセスする。また、アクセス領域内の他のデータ（図１３では、Ａ、Ｄ、６）に対してもアクセスを行う（ステップＳ１６００）。
【００８９】
最後に、Ａにアクセスする場合、Ａはアクセス領域に含まれているため、アクセス領域に含まれないランダムに選択したデータと履歴領域に保存されているデータとを(図１３では、３、Ｆ)、アクセス領域に移動する。これにより、アクセス領域から移動する６とＤとが非アクセス領域に書き出され、Ａにアクセスする。また、アクセス領域内の他のデータ（図１３では、５、Ｆ、３）に対してもアクセスを行う（ステップＳ１７００）。
【００９０】
そして、すべての処理が完了するとアクセス領域内の必要なデータを書き出して、終了する（ステップＳ１８００）。
【００９１】
したがって、本実施例によれば、非アクセス領域内のデータの並べ替えを１度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うＯｂｌｉｖｉｏｕｓ  ＲＡＭのように、オーバーヘッドが大きくなることを防止することができるという効果がある。また、１つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うことから、データのアクセスパターンを保護することができるという効果がある。さらに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うため、さらに、データのアクセスパターンを保護することができる。また、プログラムによってアクセスされるデータに対して、ランダムに選択したデータを取り込むことによって、安全性を保ちつつ、アクセスパターンの保護において、必要な保存領域を削減することができる。
【００９２】
なお、記憶装置および記憶システムの処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを記憶装置および記憶システムに読み込ませ、実行することによって本発明の記憶装置および記憶システムを実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００９３】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００９４】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００９５】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００９６】
１０；データ移動部
１１；データ移動部
２０；キャッシュ部
３０；復号化部
４０；変数値生成部
５０；保管部
６０；暗号化部
７０；格納部
１００；アクセスパターン保護部
１１０；並べ替え部
１２０；移動部
１３０；制御部
１３１；制御部
１３２；制御部
１４０；書き出し部
１５０；保存部
２００；記憶領域
３００；記憶装置
４００；リモートストレージ
４２０；キャッシュ部
４３０；復号化部
４４０；変数値生成部
４５０；保管部
４６０；暗号化部
４７０；格納部
５００；クライアント端末
【図１】
2015040957.tif 000006
【図２】
2015040957.tif 000007
【図３】
2015040957.tif 000008
【図４】
2015040957.tif 000009
【図５】
2015040957.tif 000010
【図６】
2015040957.tif 000011
【図７】
2015040957.tif 000012
【図８】
2015040957.tif 000013
【図９】
2015040957.tif 000014
【図１０】
2015040957.tif 000015
【図１１】
2015040957.tif 000016
【図１２】
2015040957.tif 000017
【図１３】
2015040957.tif 000018
【図１４】
2015040957.tif 000019
【図１５】
2015040957.tif 000020