(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶領域を、アクセス領域と非アクセス領域とに分割する記憶装置において、
前記非アクセス領域におけるデータのアドレスを記憶するアドレス置換テーブルであって、データを前記非アクセス領域に最初に読み込んで記憶させたときの元のアドレスと、データを移動させて記憶させたときの現在のアドレスとを対応付けるアドレス置換テーブルと、
前記アクセス領域から前記非アクセス領域に移動させたデータの履歴として、移動させたデータの前記現在のアドレスを記憶する履歴テーブルと、
前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動手段と、
前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記現在のアドレスを前記履歴テーブルに記憶させる復帰手段と、
前記復帰手段によって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替手段と、
一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動手段により前記一のデータを前記アクセス領域に移動させると共に、前記復帰手段及び前記入替手段により前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御手段と、
を備える記憶装置。
【請求項２】
前記アクセス制御手段は、
前記一のデータが非アクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中からランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記一のデータと前記履歴テーブルの中からランダムに選択したアドレスのデータとを前記移動手段によって移動させ、
前記一のデータがアクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中から前記一のデータを除いてランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記履歴テーブルの中からランダムに選択したアドレスのデータと、前記非アクセス領域の中からランダムに選択したデータとを前記移動手段によって移動させる、
請求項１に記載の記憶装置。
【請求項３】
前記非アクセス領域に記憶されているデータを、ランダムに並び替えると共に、並び替えられた前記現在のアドレスを、前記アドレス置換テーブルに記憶させる並び替え手段と、
前記アクセス領域に記憶されているデータを、保管されている前記現在のアドレスに基づいて前記非アクセス領域に移動させて書き出す書き出し手段と、をさらに備え、
前記アクセス制御手段は、初期状態において、前記並び替え手段によって前記非アクセス領域に記憶されているデータを並び替えると共に、前記非アクセス領域に記憶されているデータを、前記アクセス領域の記憶容量に応じてランダムに選択し、選択したデータを前記移動手段によって前記アクセス領域に移動させ、終了状態において、前記書き出し手段によって前記アクセス領域に記憶されているデータを前記非アクセス領域に書き出す、請求項１又は２に記載の記憶装置。
【請求項４】
請求項１に記載の記憶装置が実行する方法であって、
前記移動手段が、前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動ステップと、
前記復帰手段が、前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記元のアドレスを前記履歴テーブルに記憶させる復帰ステップと、
前記入替手段が、前記復帰ステップによって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替ステップと、
前記アクセス制御手段が、一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動ステップにより前記一のデータを前記アクセス領域に移動させると共に、前記復帰ステップ及び前記入替ステップにより前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御ステップと、
を備える方法。
【請求項５】
コンピュータに、請求項４に記載の方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃として、メモリアクセスを解析し秘密情報を復元する攻撃がある。そこで、メモリアクセスを攻撃者から保護するためにＯｂｌｉｖｉｏｕｓ  ＲＡＭで提案されている方式が注目を集めている。実用的なＯｂｌｉｖｉｏｕｓ  ＲＡＭの一つとして非特許文献１の方式があるが、この方式はプログラムがメモリに対して行うアクセスが一様に分布すると仮定し、検討されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｙｕｔｏ  Ｎａｋａｎｏ，  Ｃａｒｌｏｓ  Ｃｉｄ，  Ｓｈｉｎｓａｋｕ  Ｋｉｙｏｍｏｔｏ，  ａｎｄ  Ｙｕｔａｋａ  Ｍｉｙａｋｅ，  “Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｐａｔｔｅｒｎ  Ｐｒｏｔｅｃｔｉｏｎ  ｆｏｒ  Ｒｅｓｏｕｒｃｅ−ｃｏｎｓｔｒａｉｎｅｄ  Ｄｅｖｉｃｅｓ”，ＣＡＲＩＤＳ２０１２，  Ｓｐｒｉｎｇｅｒ，  ２０１２．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、実際のプログラムではメモリに対して行うアクセスに偏りが生じると考えられ、特定のアドレスに対するアクセスがほかのアドレスに対するアクセスよりも多くなることがある。長期的にアクセスを監視する攻撃者が存在する場合、どのアドレスに対するアクセスが多いかという情報が漏えいする。よって、非特許文献１の方式では安全性に影響を与える。
【０００５】
そこで、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能な装置が求められている。
【０００６】
本発明は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能な記憶装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、ストレージからロードされるデータ（ａ，ｂ）とそれらの実アドレスである現在のアドレス（ｉａ，ｉｂ）を、（ａ，ｉｂ）と（ｂ，ｉａ）とに入れ替えてバッファに格納し、ａとｉａ及びｂとｉｂの入れ替えた関係を、アドレス置換テーブルに記憶させる。そして、本発明は、データを非アクセス領域に移動させる際には元あったアドレスではなく、入れ替えたアドレスに移動させる。
具体的には、以下のような解決手段を提供する。
【０００８】
（１）  データを記憶する記憶領域を、アクセス領域と非アクセス領域とに分割する記憶装置において、前記非アクセス領域におけるデータのアドレスを記憶するアドレス置換テーブルであって、データを前記非アクセス領域に最初に読み込んで記憶させたときの元のアドレスと、データを移動させて記憶させたときの現在のアドレスとを対応付けるアドレス置換テーブルと、前記アクセス領域から前記非アクセス領域に移動させたデータの履歴として、移動させたデータの前記現在のアドレスを記憶する履歴テーブルと、前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動手段と、前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記現在のアドレスを前記履歴テーブルに記憶させる復帰手段と、前記復帰手段によって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替手段と、一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動手段により前記一のデータを前記アクセス領域に移動させると共に、前記復帰手段及び前記入替手段により前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御手段と、を備える記憶装置。
【０００９】
（１）の構成によれば、（１）に係る記憶装置は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブルに基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域及び履歴テーブルの記憶状態とに基づいて、移動手段により一のデータをアクセス領域に移動させると共に、復帰手段及び入替手段により非アクセス領域の記憶状態を変更して、一のデータへのアクセスを制御する。
【００１０】
したがって、（１）に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【００１１】
（２）  前記アクセス制御手段は、前記一のデータが非アクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中からランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記一のデータと前記履歴テーブルの中からランダムに選択したアドレスのデータとを前記移動手段によって移動させ、前記一のデータがアクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中から前記一のデータを除いてランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記履歴テーブルの中からランダムに選択したアドレスのデータと、前記非アクセス領域の中からランダムに選択したデータとを前記移動手段によって移動させる、（１）に記載の記憶装置。
【００１２】
したがって、（２）に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを確実に秘匿可能である。
【００１３】
（３）  前記非アクセス領域に記憶されているデータを、ランダムに並び替えると共に、並び替えられた前記現在のアドレスを、前記アドレス置換テーブルに記憶させる並び替え手段と、前記アクセス領域に記憶されているデータを、保管されている前記現在のアドレスに基づいて前記非アクセス領域に移動させて書き出す書き出し手段と、をさらに備え、前記アクセス制御手段は、初期状態において、前記並び替え手段によって前記非アクセス領域に記憶されているデータを並び替えると共に、前記非アクセス領域に記憶されているデータを、前記アクセス領域の記憶容量に応じてランダムに選択し、選択したデータを前記移動手段によって前記アクセス領域に移動させ、終了状態において、前記書き出し手段によって前記アクセス領域に記憶されているデータを前記非アクセス領域に書き出す、（１）又は（２）に記載の記憶装置。
【００１４】
したがって、（３）に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であっても、初期状態における処理と終了状態における処理とをさらに実行し、アクセスパターンを確実に秘匿可能である。
【００１５】
（４）  （１）に記載の記憶装置が実行する方法であって、前記移動手段が、前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動ステップと、前記復帰手段が、前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記元のアドレスを前記履歴テーブルに記憶させる復帰ステップと、前記入替手段が、前記復帰ステップによって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替ステップと、前記アクセス制御手段が、一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動ステップにより前記一のデータを前記アクセス領域に移動させると共に、前記復帰ステップ及び前記入替ステップにより前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御ステップと、を備える方法。
【００１６】
したがって、（４）に係る方法は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【００１７】
（５）  コンピュータに、（４）に記載の方法の各ステップを実行させるためのプログラム。
【００１８】
したがって、（５）に係るプログラムは、記憶するデータへのアクセスに偏りがある場合であっても、コンピュータにアクセスパターンを秘匿させることができる。
【発明の効果】
【００１９】
本発明によれば、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。本発明によって、ダミーのアクセスがなくともアドレスに対するアクセスの偏りを防ぐことができる。
さらに、暗号化プログラム等、重要データ（鍵）に対するアクセスをもつプログラムに本発明を適用すれば、鍵に対するアクセス回数と重要でないデータに対するアクセス回数が平準化される。これによって従来必要であったダミーアクセスが不要となり、パフォーマンスが向上する。このように、安全性向上による差別化や新規顧客獲得等におけるセキュリティソリューション、モバイルソリューション事業に適用できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態に係る記憶装置によるデータのアクセスを説明するための図である。
【図２】図１に続く、データのアクセスを説明するための図である。
【図３】本発明の一実施形態に係る記憶装置の構成を示すブロック図である。
【図４】本発明の一実施形態に係る記憶装置の初期処理を示すフローチャートである。
【図５】本発明の一実施形態に係る記憶装置のアクセス処理を示すフローチャートである。
【図６】本発明の一実施形態に係る記憶装置の終了処理を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について、図を参照しながら説明する。
図１は、本発明の一実施形態に係る記憶装置１０によるデータのアクセスを説明するための図である。図２は、図１に続く、データのアクセスを説明するための図である。アクセスパターン保護手法を図１及び図２を用いて説明する。
【００２２】
プログラムが直接アクセスする領域は図中のアクセス領域２０で示した領域のみであり、これ以外の領域にはアクセスしない。アクセスしようとしているデータがアクセス領域２０にある場合、ランダムに選択したデータをアクセス領域２０と非アクセス領域２１とで交換する。アクセスしようとしているデータがアクセス領域２０にない場合、アクセスしようとしているデータを含むデータをアクセス領域２０に移動し、アクセス領域２０にあったデータが非アクセス領域２１に書き出される。
以下で具体例を用いて説明する。１，２，…，９，Ａ，Ｂ，…，Ｆを非アクセス領域２１（例えば、メモリ）に保存されているデータとし、プログラムは５→Ｄ→８→５→Ａの順にデータにアクセスするとする。
【００２３】
まず、非アクセス領域２１内のデータをランダムに並び替える。
例えば、図１の様に元のアドレスｉ１番地〜ｉＦ番地に記憶状態１０１のように記憶されているデータ１〜データＦを、ランダムに並び替え、記憶状態１０２の様にする。この場合、アドレス置換テーブル５０は元のアドレスと現在のアドレスとを記憶状態５０２の様に対応付ける。
【００２４】
次にアクセス領域２０のサイズ分（例えば、４個分）だけランダムにデータ（例えば、データ３、データＢ、データ８、データ４）を選択し、アクセス領域２０に移動させる。アクセス領域２０は、記憶状態２０３のように表わされ、非アクセス領域２１は、記憶状態１０３のように表わされる。
【００２５】
以下、次の様な手順でアクセスが行われる。
１．例えば、データ５にアクセスする場合、データ５はアクセス領域２０にも、履歴テーブル３０にも記憶されていないため、データ５ともう一つランダムに選択されたデータ（履歴テーブル３０が空なので、非アクセス領域２１から例えば、データ２）を、アクセス領域２０に移動させる。
このとき、アクセス領域２０からランダムに選択された２つのデータ（例えば、データ４、データＢ）の現在のアドレスを入れ替えてアドレス置換テーブル５０に記憶させ、アドレス置換テーブル５０に基づいて非アクセス領域２１に移動させると共に、履歴テーブル３０に現在のアドレスを記憶させる。
非アクセス領域２１は記憶状態１０４１を経過して記憶状態１０４２となり、アクセス領域２０は記憶状態２０４となり、アドレス置換テーブル５０は記憶状態５０４となり、履歴テーブル３０は記憶状態３０４となる。プログラムはデータ５にアクセスする。
【００２６】
２．例えば、データＤにアクセスする場合、データＤはアクセス領域２０にも、履歴テーブル３０にも記憶されていないため、データＤをアクセス領域２０に移動させる。もう一つのデータは、履歴テーブル３０にアドレスが記憶されているので履歴テーブル３０からランダムに選択したアドレスに記憶されているデータ（例えば、データＢ）をアクセス領域２０に移動させる。
このとき、アクセス領域２０からランダムに選択された２つのデータ（例えば、データ５、データ８）の現在のアドレスを入れ替えてアドレス置換テーブル５０に記憶させ、アドレス置換テーブル５０に基づいて非アクセス領域２１に移動させると共に、履歴テーブル３０に現在のアドレスを記憶させる。
非アクセス領域２１は記憶状態１０５１を経過して記憶状態１０５２となり、アクセス領域２０は記憶状態２０５となり、アドレス置換テーブル５０は記憶状態５０５となり、履歴テーブル３０は記憶状態３０５となる。プログラムはデータＤにアクセスする。
【００２７】
３．データ８にアクセスする場合、データ８はアクセス領域２０には記憶されていないが、履歴テーブル３０に元のアドレスとして記憶されているため、もう一つのデータは履歴テーブル３０に記憶されていないデータ（例えば、データＡ）を非アクセス領域２１からランダムに選択し、アクセス領域２０に移動させる。
このとき、アクセス領域２０からランダムに選択された２つのデータ（例えば、データ３、データＢ）の現在のアドレスを入れ替えてアドレス置換テーブル５０に記憶させ、アドレス置換テーブル５０に基づいて非アクセス領域２１に移動させると共に、履歴テーブル３０に現在のアドレスを記憶させる。
非アクセス領域２１は記憶状態１０６１を経過して記憶状態１０６２となり、アクセス領域２０は記憶状態２０６となり、アドレス置換テーブル５０は記憶状態５０６となり、履歴テーブル３０は記憶状態３０６となる。プログラムはデータ８にアクセスする。
【００２８】
４．データ５にアクセスする場合、データ５はアクセス領域２０には記憶されていないが、履歴テーブル３０に元のアドレスとして記憶されているため、もう一つのデータは履歴テーブル３０に記憶されていないデータ（例えば、データ６）を非アクセス領域２１からランダムに選択し、アクセス領域２０に移動させる。
このとき、アクセス領域２０からランダムに選択された２つのデータ（例えば、データ２、データ８）の現在のアドレスを入れ替えてアドレス置換テーブル５０に記憶させ、アドレス置換テーブル５０に基づいて非アクセス領域２１に移動させると共に、履歴テーブル３０に現在のアドレスを記憶させる。
非アクセス領域２１は記憶状態１０７１を経過して記憶状態１０７２となり、アクセス領域２０は記憶状態２０７となり、アドレス置換テーブル５０は記憶状態５０７となり、履歴テーブル３０は記憶状態３０７となる。プログラムはデータ５にアクセスする。
【００２９】
５．データＡにアクセスする場合、データＡはアクセス領域２０に記憶されているため、非アクセス領域２１からランダムに選択されたデータ（例えば、データＦ）と、履歴テーブル３０からランダムに選択されたアドレスに記憶されているデータ（例えば、データ３）をアクセス領域２０に移動させる。
このとき、アクセス領域２０からランダムに選択された２つのデータ（例えば、データ６、データＤ）の現在のアドレスを入れ替えてアドレス置換テーブル５０に記憶させ、アドレス置換テーブル５０に基づいて非アクセス領域２１に移動させると共に、履歴テーブル３０に現在のアドレスを記憶させる。
非アクセス領域２１は記憶状態１０８１を経過して記憶状態１０８２となり、アクセス領域２０は記憶状態２０８となり、アドレス置換テーブル５０は記憶状態５０８となり、履歴テーブル３０は記憶状態３０８となる。プログラムはデータＡにアクセスする。
【００３０】
６．全ての処理が完了するとアクセス領域２０内の全てのデータを書き出し、終了する。非アクセス領域２１は記憶状態１０９となり、アクセス領域２０は記憶状態２０９となり、アドレス置換テーブル５０は記憶状態５０９となり、履歴テーブル３０は記憶状態３０９となる。
【００３１】
以上のように、データのアクセスの際に、アクセスするデータの現在のアドレスと、他のデータの現在のアドレスとを入れ替えて記憶させる。
したがってデータａに対して繰り返しアクセスが有ったとしても、データａの元のアドレスｉａ以外のアドレスに対してアクセスが行われるため、アクセスが全データ間で平準化されアクセスに偏りがある場合でもアクセスパターンを秘匿可能である。すなわち、特定のデータに対して複数回アクセスした場合の安全性を確保することが可能である。
【００３２】
図３は、本発明の一実施形態に係る記憶装置１０の構成を示すブロック図である。
記憶装置１０は、データを記憶する記憶領域を、アクセス領域２０と非アクセス領域２１とに分割する。アクセス領域２０を耐タンパ性を備えたＤＲＡＭ、ＳＲＡＭ等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置１０は、例えば、ＲＡＭ等の一般的な記憶装置ばかりでなく、ＳＩＭやＩＣカード等の記憶媒体も含むものである。
記憶装置１０は、アドレス置換テーブル５０と、履歴テーブル３０と、移動手段１２１と、復帰手段１２２と、入替手段１２３と、アクセス制御手段１２とを備える。以下、各手段ごとに詳述する。
【００３３】
アドレス置換テーブル５０は、非アクセス領域２１におけるデータのアドレスを記憶するアドレス置換テーブル５０であって、データを非アクセス領域２１に最初に読み込んで記憶させたときの元のアドレスと、データを移動させて記憶させたときの現在のアドレスとを対応付ける。
【００３４】
履歴テーブル３０は、アクセス領域２０から非アクセス領域２１に移動させたデータの履歴として、移動させたデータの現在のアドレスを記憶する。
【００３５】
移動手段１２１は、非アクセス領域２１に記憶されている複数のデータをアクセス領域２０に移動させる。移動手段１２１は、アクセス領域２０に移動させたデータの現在のアドレスを保管する。
【００３６】
復帰手段１２２は、アクセス領域２０に記憶されているデータを、現在のアドレスに移動させて復帰させ、復帰させたデータの現在のアドレスを履歴テーブル３０に記憶させる。
【００３７】
入替手段１２３は、復帰手段１２２によって復帰させる複数のデータにおいて現在のアドレスを互いに入れ替え、入れ替えた後の現在のアドレスをアドレス置換テーブル５０に記憶させる。
【００３８】
アクセス制御手段１２は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブル５０に基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域２０及び履歴テーブル３０の記憶状態とに基づいて、移動手段１２１により一のデータをアクセス領域２０に移動させると共に、復帰手段１２２及び入替手段１２３により非アクセス領域２１の記憶状態を変更して、一のデータへのアクセスを制御する。
【００３９】
アクセス制御手段１２は、一のデータが非アクセス領域２１に存在する場合に、アクセス領域２０に記憶されているデータの中からランダムに選択された複数のデータを復帰手段１２２によって復帰させると共に、復帰させることによって空になったアクセス領域２０の箇所に、一のデータと履歴テーブル３０の中からランダムに選択したアドレスのデータとを移動手段１２１によって移動させる。
【００４０】
アクセス制御手段１２は、一のデータがアクセス領域２０に存在する場合に、アクセス領域２０に記憶されているデータの中から一のデータを除いてランダムに選択された２つのデータを復帰手段１２２によって復帰させると共に、復帰させることによって空になったアクセス領域２０の箇所に、履歴テーブル３０の中からランダムに選択したアドレスのデータと、非アクセス領域２１の中からランダムに選択したデータとを移動手段１２１によって移動させる。
【００４１】
記憶装置１０は、並び替え手段１１と、書き出し手段１３とをさらに備える。
並び替え手段１１は、非アクセス領域２１に記憶されているデータを、ランダムに並び替えると共に、並び替えられた現在のアドレスを、アドレス置換テーブル５０に記憶させる。
【００４２】
書き出し手段１３は、アクセス領域２０に記憶されているデータを、保管されている現在のアドレスに基づいて非アクセス領域２１に移動させて書き出す。
【００４３】
アクセス制御手段１２は、初期状態において、並び替え手段１１によって非アクセス領域２１に記憶されているデータを並び替えると共に、非アクセス領域２１に記憶されているデータを、アクセス領域２０の記憶容量に応じてランダムに選択し、選択したデータを移動手段１２１によってアクセス領域２０に移動させ、終了状態において、書き出し手段１３によってアクセス領域２０に記憶されているデータを非アクセス領域２１に書き出す。
【００４４】
図４は、本発明の一実施形態に係る記憶装置１０の初期処理を示すフローチャートである。記憶装置１０は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部（例えば、ＣＰＵ）が、ＯＳの下で所定のソフトウェアに従い実行する処理である。本処理は、記憶装置１０による処理の最初に実行される。
【００４５】
ステップＳ１０１において、ＣＰＵ（アクセス制御手段１２）は、データを非アクセス領域２１に読み込み、アドレス置換テーブル５０を初期化する。
【００４６】
ステップＳ１０２において、ＣＰＵ（並び替え手段１１）は、非アクセス領域２１のデータをランダムに並び替え、アドレス置換テーブル５０を更新する。
【００４７】
ステップＳ１０３において、ＣＰＵ（アクセス制御手段１２）は、アクセス領域２０の容量に応じて、非アクセス領域２１からランダムに選択したデータをアクセス領域２０に移動させる。
【００４８】
図５は、本発明の一実施形態に係る記憶装置１０のアクセス処理を示すフローチャートである。本処理は、記憶装置１０に対する一のデータへのアクセスが元のアドレスにより要求されることにより実行される。
【００４９】
ステップＳ２０１において、ＣＰＵ（アクセス制御手段１２、復帰手段１２２、入替手段１２３）は、アクセス領域２０から非アクセス領域２１へデータを移動させ、履歴テーブル３０を更新し、移動させた複数のデータにおいて現在のアドレスを互いに入れ替え、入れ替えた後の現在のアドレスをアドレス置換テーブル５０に記憶させる。
【００５０】
ステップＳ２０２において、ＣＰＵ（アクセス制御手段１２）は、一のデータがアクセス領域２０に存在するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ２０６に移し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ２０３に移す。
【００５１】
ステップＳ２０３において、ＣＰＵ（アクセス制御手段１２）は、一のデータの現在のアドレスが履歴テーブル３０に存在するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ２０７に移し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ２０４に移す。
【００５２】
ステップＳ２０４において、ＣＰＵ（アクセス制御手段１２、移動手段１２１）は、非アクセス領域２１から、アクセスするデータと、ランダムに選択したデータ（履歴テーブル３０にアドレスが記憶されている場合、履歴テーブル３０からランダムに選択した現在のアドレスに記憶されているデータ）とをアクセス領域２０に移動させる。その後、ＣＰＵは、処理をステップＳ２０５に移す。
【００５３】
ステップＳ２０５において、ＣＰＵ（アクセス制御手段１２）は、データにアクセスする。その後、ＣＰＵは、処理を終了し、次のアクセスを待つ。
【００５４】
ステップＳ２０６において、ＣＰＵ（アクセス制御手段１２、移動手段１２１）は、非アクセス領域２１からランダムに選択した複数のデータ（履歴テーブル３０にアドレスが記憶されている場合、複数のうちの１個のデータは、履歴テーブル３０からランダムに選択した現在のアドレスに記憶されているデータ）をアクセス領域２０に移動させる。その後、ＣＰＵは、処理をステップＳ２０５に移す。
【００５５】
ステップＳ２０７において、ＣＰＵ（アクセス制御手段１２、移動手段１２１）は、履歴テーブル３０に現在のアドレスとして記憶されているデータ以外のデータであって非アクセス領域２１からランダムに選択されたデータと、アクセスするデータとをアクセス領域２０に移動させる。その後、ＣＰＵは、処理をステップＳ２０５に移す。
【００５６】
図６は、本発明の一実施形態に係る記憶装置１０の終了処理を示すフローチャートである。本処理は、記憶装置１０による処理の最後に実行される。
【００５７】
ステップＳ３０１において、ＣＰＵ（書き出し手段１３）は、アクセス領域２０の全てのデータを非アクセス領域２１に移動させる。その後、ＣＰＵは、処理を終了する。
【００５８】
本実施形態によれば、記憶装置１０は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブル５０に基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域２０及び履歴テーブル３０の記憶状態とに基づいて、移動手段１２１により一のデータをアクセス領域２０に移動させると共に、復帰手段１２２及び入替手段１２３により非アクセス領域２１の記憶状態を変更して、一のデータへのアクセスを制御する。
したがって、記憶装置１０は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【００５９】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００６０】
１０    記憶装置
１１    並び替え手段
１２    アクセス制御手段
１２１  移動手段
１２２  復帰手段
１２３  入替手段
１３    書き出し手段
２０    アクセス領域
２１    非アクセス領域
３０    履歴テーブル
５０    アドレス置換テーブル
【図１】
0006282197.tif 000002
【図２】
0006282197.tif 000003
【図３】
0006282197.tif 000004
【図４】
0006282197.tif 000005
【図５】
0006282197.tif 000006
【図６】
0006282197.tif 000007