【文献】
仲野 有登ほか,メモリに対するアクセスパターン秘匿手法の実装評価,2014年暗号と情報セキュリティシンポジウム (SCIS 2014) 概要集,[CD-ROM],2014年 1月21日
【文献】
仲野 有登ほか,アクセスの偏りを考慮したアクセスパターン保護手法,電子情報通信学会2014年通信ソサイエティ大会講演論文集2,2014年 9月 9日,p. 106
(58)【調査した分野】(Int.Cl.,DB名)
前記非アクセス領域に記憶されているデータを、ランダムに並び替えると共に、並び替えられた前記現在のアドレスを、前記アドレス置換テーブルに記憶させる並び替え手段と、
前記アクセス領域に記憶されているデータを、保管されている前記現在のアドレスに基づいて前記非アクセス領域に移動させて書き出す書き出し手段と、をさらに備え、
前記アクセス制御手段は、初期状態において、前記並び替え手段によって前記非アクセス領域に記憶されているデータを並び替えると共に、前記非アクセス領域に記憶されているデータを、前記アクセス領域の記憶容量に応じてランダムに選択し、選択したデータを前記移動手段によって前記アクセス領域に移動させ、終了状態において、前記書き出し手段によって前記アクセス領域に記憶されているデータを前記非アクセス領域に書き出す、請求項1又は2に記載の記憶装置。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、実際のプログラムではメモリに対して行うアクセスに偏りが生じると考えられ、特定のアドレスに対するアクセスがほかのアドレスに対するアクセスよりも多くなることがある。長期的にアクセスを監視する攻撃者が存在する場合、どのアドレスに対するアクセスが多いかという情報が漏えいする。よって、非特許文献1の方式では安全性に影響を与える。
【0005】
そこで、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能な装置が求められている。
【0006】
本発明は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能な記憶装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、ストレージからロードされるデータ(a,b)とそれらの実アドレスである現在のアドレス(ia,ib)を、(a,ib)と(b,ia)とに入れ替えてバッファに格納し、aとia及びbとibの入れ替えた関係を、アドレス置換テーブルに記憶させる。そして、本発明は、データを非アクセス領域に移動させる際には元あったアドレスではなく、入れ替えたアドレスに移動させる。
具体的には、以下のような解決手段を提供する。
【0008】
(1) データを記憶する記憶領域を、アクセス領域と非アクセス領域とに分割する記憶装置において、前記非アクセス領域におけるデータのアドレスを記憶するアドレス置換テーブルであって、データを前記非アクセス領域に最初に読み込んで記憶させたときの元のアドレスと、データを移動させて記憶させたときの現在のアドレスとを対応付けるアドレス置換テーブルと、前記アクセス領域から前記非アクセス領域に移動させたデータの履歴として、移動させたデータの前記現在のアドレスを記憶する履歴テーブルと、前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動手段と、前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記現在のアドレスを前記履歴テーブルに記憶させる復帰手段と、前記復帰手段によって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替手段と、一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動手段により前記一のデータを前記アクセス領域に移動させると共に、前記復帰手段及び前記入替手段により前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御手段と、を備える記憶装置。
【0009】
(1)の構成によれば、(1)に係る記憶装置は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブルに基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域及び履歴テーブルの記憶状態とに基づいて、移動手段により一のデータをアクセス領域に移動させると共に、復帰手段及び入替手段により非アクセス領域の記憶状態を変更して、一のデータへのアクセスを制御する。
【0010】
したがって、(1)に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【0011】
(2) 前記アクセス制御手段は、前記一のデータが非アクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中からランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記一のデータと前記履歴テーブルの中からランダムに選択したアドレスのデータとを前記移動手段によって移動させ、前記一のデータがアクセス領域に存在する場合に、前記アクセス領域に記憶されているデータの中から前記一のデータを除いてランダムに選択した複数のデータを前記復帰手段によって復帰させると共に、復帰させることによって空になった前記アクセス領域の箇所に、前記履歴テーブルの中からランダムに選択したアドレスのデータと、前記非アクセス領域の中からランダムに選択したデータとを前記移動手段によって移動させる、(1)に記載の記憶装置。
【0012】
したがって、(2)に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを確実に秘匿可能である。
【0013】
(3) 前記非アクセス領域に記憶されているデータを、ランダムに並び替えると共に、並び替えられた前記現在のアドレスを、前記アドレス置換テーブルに記憶させる並び替え手段と、前記アクセス領域に記憶されているデータを、保管されている前記現在のアドレスに基づいて前記非アクセス領域に移動させて書き出す書き出し手段と、をさらに備え、前記アクセス制御手段は、初期状態において、前記並び替え手段によって前記非アクセス領域に記憶されているデータを並び替えると共に、前記非アクセス領域に記憶されているデータを、前記アクセス領域の記憶容量に応じてランダムに選択し、選択したデータを前記移動手段によって前記アクセス領域に移動させ、終了状態において、前記書き出し手段によって前記アクセス領域に記憶されているデータを前記非アクセス領域に書き出す、(1)又は(2)に記載の記憶装置。
【0014】
したがって、(3)に係る記憶装置は、記憶するデータへのアクセスに偏りがある場合であっても、初期状態における処理と終了状態における処理とをさらに実行し、アクセスパターンを確実に秘匿可能である。
【0015】
(4) (1)に記載の記憶装置が実行する方法であって、前記移動手段が、前記非アクセス領域に記憶されている複数のデータを前記アクセス領域に移動させる移動ステップと、前記復帰手段が、前記アクセス領域に記憶されているデータを、前記現在のアドレスに移動させて復帰させ、復帰させたデータの前記元のアドレスを前記履歴テーブルに記憶させる復帰ステップと、前記入替手段が、前記復帰ステップによって復帰させる複数のデータにおいて前記現在のアドレスを互いに入れ替え、入れ替えた後の前記現在のアドレスを前記アドレス置換テーブルに記憶させる入替ステップと、前記アクセス制御手段が、一のデータへのアクセスが前記元のアドレスにより要求されると、前記元のアドレスを前記アドレス置換テーブルに基づいて前記現在のアドレスに置換し、置換した前記現在のアドレスと、前記アクセス領域及び前記履歴テーブルの記憶状態とに基づいて、前記移動ステップにより前記一のデータを前記アクセス領域に移動させると共に、前記復帰ステップ及び前記入替ステップにより前記非アクセス領域の記憶状態を変更して、前記一のデータへのアクセスを制御するアクセス制御ステップと、を備える方法。
【0016】
したがって、(4)に係る方法は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【0017】
(5) コンピュータに、(4)に記載の方法の各ステップを実行させるためのプログラム。
【0018】
したがって、(5)に係るプログラムは、記憶するデータへのアクセスに偏りがある場合であっても、コンピュータにアクセスパターンを秘匿させることができる。
【発明の効果】
【0019】
本発明によれば、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。本発明によって、ダミーのアクセスがなくともアドレスに対するアクセスの偏りを防ぐことができる。
さらに、暗号化プログラム等、重要データ(鍵)に対するアクセスをもつプログラムに本発明を適用すれば、鍵に対するアクセス回数と重要でないデータに対するアクセス回数が平準化される。これによって従来必要であったダミーアクセスが不要となり、パフォーマンスが向上する。このように、安全性向上による差別化や新規顧客獲得等におけるセキュリティソリューション、モバイルソリューション事業に適用できる。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態について、図を参照しながら説明する。
図1は、本発明の一実施形態に係る記憶装置10によるデータのアクセスを説明するための図である。
図2は、
図1に続く、データのアクセスを説明するための図である。アクセスパターン保護手法を
図1及び
図2を用いて説明する。
【0022】
プログラムが直接アクセスする領域は図中のアクセス領域20で示した領域のみであり、これ以外の領域にはアクセスしない。アクセスしようとしているデータがアクセス領域20にある場合、ランダムに選択したデータをアクセス領域20と非アクセス領域21とで交換する。アクセスしようとしているデータがアクセス領域20にない場合、アクセスしようとしているデータを含むデータをアクセス領域20に移動し、アクセス領域20にあったデータが非アクセス領域21に書き出される。
以下で具体例を用いて説明する。1,2,…,9,A,B,…,Fを非アクセス領域21(例えば、メモリ)に保存されているデータとし、プログラムは5→D→8→5→Aの順にデータにアクセスするとする。
【0023】
まず、非アクセス領域21内のデータをランダムに並び替える。
例えば、
図1の様に元のアドレスi1番地〜iF番地に記憶状態101のように記憶されているデータ1〜データFを、ランダムに並び替え、記憶状態102の様にする。この場合、アドレス置換テーブル50は元のアドレスと現在のアドレスとを記憶状態502の様に対応付ける。
【0024】
次にアクセス領域20のサイズ分(例えば、4個分)だけランダムにデータ(例えば、データ3、データB、データ8、データ4)を選択し、アクセス領域20に移動させる。アクセス領域20は、記憶状態203のように表わされ、非アクセス領域21は、記憶状態103のように表わされる。
【0025】
以下、次の様な手順でアクセスが行われる。
1.例えば、データ5にアクセスする場合、データ5はアクセス領域20にも、履歴テーブル30にも記憶されていないため、データ5ともう一つランダムに選択されたデータ(履歴テーブル30が空なので、非アクセス領域21から例えば、データ2)を、アクセス領域20に移動させる。
このとき、アクセス領域20からランダムに選択された2つのデータ(例えば、データ4、データB)の現在のアドレスを入れ替えてアドレス置換テーブル50に記憶させ、アドレス置換テーブル50に基づいて非アクセス領域21に移動させると共に、履歴テーブル30に現在のアドレスを記憶させる。
非アクセス領域21は記憶状態1041を経過して記憶状態1042となり、アクセス領域20は記憶状態204となり、アドレス置換テーブル50は記憶状態504となり、履歴テーブル30は記憶状態304となる。プログラムはデータ5にアクセスする。
【0026】
2.例えば、データDにアクセスする場合、データDはアクセス領域20にも、履歴テーブル30にも記憶されていないため、データDをアクセス領域20に移動させる。もう一つのデータは、履歴テーブル30にアドレスが記憶されているので履歴テーブル30からランダムに選択したアドレスに記憶されているデータ(例えば、データB)をアクセス領域20に移動させる。
このとき、アクセス領域20からランダムに選択された2つのデータ(例えば、データ5、データ8)の現在のアドレスを入れ替えてアドレス置換テーブル50に記憶させ、アドレス置換テーブル50に基づいて非アクセス領域21に移動させると共に、履歴テーブル30に現在のアドレスを記憶させる。
非アクセス領域21は記憶状態1051を経過して記憶状態1052となり、アクセス領域20は記憶状態205となり、アドレス置換テーブル50は記憶状態505となり、履歴テーブル30は記憶状態305となる。プログラムはデータDにアクセスする。
【0027】
3.データ8にアクセスする場合、データ8はアクセス領域20には記憶されていないが、履歴テーブル30に元のアドレスとして記憶されているため、もう一つのデータは履歴テーブル30に記憶されていないデータ(例えば、データA)を非アクセス領域21からランダムに選択し、アクセス領域20に移動させる。
このとき、アクセス領域20からランダムに選択された2つのデータ(例えば、データ3、データB)の現在のアドレスを入れ替えてアドレス置換テーブル50に記憶させ、アドレス置換テーブル50に基づいて非アクセス領域21に移動させると共に、履歴テーブル30に現在のアドレスを記憶させる。
非アクセス領域21は記憶状態1061を経過して記憶状態1062となり、アクセス領域20は記憶状態206となり、アドレス置換テーブル50は記憶状態506となり、履歴テーブル30は記憶状態306となる。プログラムはデータ8にアクセスする。
【0028】
4.データ5にアクセスする場合、データ5はアクセス領域20には記憶されていないが、履歴テーブル30に元のアドレスとして記憶されているため、もう一つのデータは履歴テーブル30に記憶されていないデータ(例えば、データ6)を非アクセス領域21からランダムに選択し、アクセス領域20に移動させる。
このとき、アクセス領域20からランダムに選択された2つのデータ(例えば、データ2、データ8)の現在のアドレスを入れ替えてアドレス置換テーブル50に記憶させ、アドレス置換テーブル50に基づいて非アクセス領域21に移動させると共に、履歴テーブル30に現在のアドレスを記憶させる。
非アクセス領域21は記憶状態1071を経過して記憶状態1072となり、アクセス領域20は記憶状態207となり、アドレス置換テーブル50は記憶状態507となり、履歴テーブル30は記憶状態307となる。プログラムはデータ5にアクセスする。
【0029】
5.データAにアクセスする場合、データAはアクセス領域20に記憶されているため、非アクセス領域21からランダムに選択されたデータ(例えば、データF)と、履歴テーブル30からランダムに選択されたアドレスに記憶されているデータ(例えば、データ3)をアクセス領域20に移動させる。
このとき、アクセス領域20からランダムに選択された2つのデータ(例えば、データ6、データD)の現在のアドレスを入れ替えてアドレス置換テーブル50に記憶させ、アドレス置換テーブル50に基づいて非アクセス領域21に移動させると共に、履歴テーブル30に現在のアドレスを記憶させる。
非アクセス領域21は記憶状態1081を経過して記憶状態1082となり、アクセス領域20は記憶状態208となり、アドレス置換テーブル50は記憶状態508となり、履歴テーブル30は記憶状態308となる。プログラムはデータAにアクセスする。
【0030】
6.全ての処理が完了するとアクセス領域20内の全てのデータを書き出し、終了する。非アクセス領域21は記憶状態109となり、アクセス領域20は記憶状態209となり、アドレス置換テーブル50は記憶状態509となり、履歴テーブル30は記憶状態309となる。
【0031】
以上のように、データのアクセスの際に、アクセスするデータの現在のアドレスと、他のデータの現在のアドレスとを入れ替えて記憶させる。
したがってデータaに対して繰り返しアクセスが有ったとしても、データaの元のアドレスia以外のアドレスに対してアクセスが行われるため、アクセスが全データ間で平準化されアクセスに偏りがある場合でもアクセスパターンを秘匿可能である。すなわち、特定のデータに対して複数回アクセスした場合の安全性を確保することが可能である。
【0032】
図3は、本発明の一実施形態に係る記憶装置10の構成を示すブロック図である。
記憶装置10は、データを記憶する記憶領域を、アクセス領域20と非アクセス領域21とに分割する。アクセス領域20を耐タンパ性を備えたDRAM、SRAM等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置10は、例えば、RAM等の一般的な記憶装置ばかりでなく、SIMやICカード等の記憶媒体も含むものである。
記憶装置10は、アドレス置換テーブル50と、履歴テーブル30と、移動手段121と、復帰手段122と、入替手段123と、アクセス制御手段12とを備える。以下、各手段ごとに詳述する。
【0033】
アドレス置換テーブル50は、非アクセス領域21におけるデータのアドレスを記憶するアドレス置換テーブル50であって、データを非アクセス領域21に最初に読み込んで記憶させたときの元のアドレスと、データを移動させて記憶させたときの現在のアドレスとを対応付ける。
【0034】
履歴テーブル30は、アクセス領域20から非アクセス領域21に移動させたデータの履歴として、移動させたデータの現在のアドレスを記憶する。
【0035】
移動手段121は、非アクセス領域21に記憶されている複数のデータをアクセス領域20に移動させる。移動手段121は、アクセス領域20に移動させたデータの現在のアドレスを保管する。
【0036】
復帰手段122は、アクセス領域20に記憶されているデータを、現在のアドレスに移動させて復帰させ、復帰させたデータの現在のアドレスを履歴テーブル30に記憶させる。
【0037】
入替手段123は、復帰手段122によって復帰させる複数のデータにおいて現在のアドレスを互いに入れ替え、入れ替えた後の現在のアドレスをアドレス置換テーブル50に記憶させる。
【0038】
アクセス制御手段12は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブル50に基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域20及び履歴テーブル30の記憶状態とに基づいて、移動手段121により一のデータをアクセス領域20に移動させると共に、復帰手段122及び入替手段123により非アクセス領域21の記憶状態を変更して、一のデータへのアクセスを制御する。
【0039】
アクセス制御手段12は、一のデータが非アクセス領域21に存在する場合に、アクセス領域20に記憶されているデータの中からランダムに選択された複数のデータを復帰手段122によって復帰させると共に、復帰させることによって空になったアクセス領域20の箇所に、一のデータと履歴テーブル30の中からランダムに選択したアドレスのデータとを移動手段121によって移動させる。
【0040】
アクセス制御手段12は、一のデータがアクセス領域20に存在する場合に、アクセス領域20に記憶されているデータの中から一のデータを除いてランダムに選択された2つのデータを復帰手段122によって復帰させると共に、復帰させることによって空になったアクセス領域20の箇所に、履歴テーブル30の中からランダムに選択したアドレスのデータと、非アクセス領域21の中からランダムに選択したデータとを移動手段121によって移動させる。
【0041】
記憶装置10は、並び替え手段11と、書き出し手段13とをさらに備える。
並び替え手段11は、非アクセス領域21に記憶されているデータを、ランダムに並び替えると共に、並び替えられた現在のアドレスを、アドレス置換テーブル50に記憶させる。
【0042】
書き出し手段13は、アクセス領域20に記憶されているデータを、保管されている現在のアドレスに基づいて非アクセス領域21に移動させて書き出す。
【0043】
アクセス制御手段12は、初期状態において、並び替え手段11によって非アクセス領域21に記憶されているデータを並び替えると共に、非アクセス領域21に記憶されているデータを、アクセス領域20の記憶容量に応じてランダムに選択し、選択したデータを移動手段121によってアクセス領域20に移動させ、終了状態において、書き出し手段13によってアクセス領域20に記憶されているデータを非アクセス領域21に書き出す。
【0044】
図4は、本発明の一実施形態に係る記憶装置10の初期処理を示すフローチャートである。記憶装置10は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部(例えば、CPU)が、OSの下で所定のソフトウェアに従い実行する処理である。本処理は、記憶装置10による処理の最初に実行される。
【0045】
ステップS101において、CPU(アクセス制御手段12)は、データを非アクセス領域21に読み込み、アドレス置換テーブル50を初期化する。
【0046】
ステップS102において、CPU(並び替え手段11)は、非アクセス領域21のデータをランダムに並び替え、アドレス置換テーブル50を更新する。
【0047】
ステップS103において、CPU(アクセス制御手段12)は、アクセス領域20の容量に応じて、非アクセス領域21からランダムに選択したデータをアクセス領域20に移動させる。
【0048】
図5は、本発明の一実施形態に係る記憶装置10のアクセス処理を示すフローチャートである。本処理は、記憶装置10に対する一のデータへのアクセスが元のアドレスにより要求されることにより実行される。
【0049】
ステップS201において、CPU(アクセス制御手段12、復帰手段122、入替手段123)は、アクセス領域20から非アクセス領域21へデータを移動させ、履歴テーブル30を更新し、移動させた複数のデータにおいて現在のアドレスを互いに入れ替え、入れ替えた後の現在のアドレスをアドレス置換テーブル50に記憶させる。
【0050】
ステップS202において、CPU(アクセス制御手段12)は、一のデータがアクセス領域20に存在するか否かを判断する。この判断がYESの場合、CPUは、処理をステップS206に移し、この判断がNOの場合、CPUは、処理をステップS203に移す。
【0051】
ステップS203において、CPU(アクセス制御手段12)は、一のデータの現在のアドレスが履歴テーブル30に存在するか否かを判断する。この判断がYESの場合、CPUは、処理をステップS207に移し、この判断がNOの場合、CPUは、処理をステップS204に移す。
【0052】
ステップS204において、CPU(アクセス制御手段12、移動手段121)は、非アクセス領域21から、アクセスするデータと、ランダムに選択したデータ(履歴テーブル30にアドレスが記憶されている場合、履歴テーブル30からランダムに選択した現在のアドレスに記憶されているデータ)とをアクセス領域20に移動させる。その後、CPUは、処理をステップS205に移す。
【0053】
ステップS205において、CPU(アクセス制御手段12)は、データにアクセスする。その後、CPUは、処理を終了し、次のアクセスを待つ。
【0054】
ステップS206において、CPU(アクセス制御手段12、移動手段121)は、非アクセス領域21からランダムに選択した複数のデータ(履歴テーブル30にアドレスが記憶されている場合、複数のうちの1個のデータは、履歴テーブル30からランダムに選択した現在のアドレスに記憶されているデータ)をアクセス領域20に移動させる。その後、CPUは、処理をステップS205に移す。
【0055】
ステップS207において、CPU(アクセス制御手段12、移動手段121)は、履歴テーブル30に現在のアドレスとして記憶されているデータ以外のデータであって非アクセス領域21からランダムに選択されたデータと、アクセスするデータとをアクセス領域20に移動させる。その後、CPUは、処理をステップS205に移す。
【0056】
図6は、本発明の一実施形態に係る記憶装置10の終了処理を示すフローチャートである。本処理は、記憶装置10による処理の最後に実行される。
【0057】
ステップS301において、CPU(書き出し手段13)は、アクセス領域20の全てのデータを非アクセス領域21に移動させる。その後、CPUは、処理を終了する。
【0058】
本実施形態によれば、記憶装置10は、一のデータへのアクセスが元のアドレスにより要求されると、元のアドレスをアドレス置換テーブル50に基づいて現在のアドレスに置換し、置換した現在のアドレスと、アクセス領域20及び履歴テーブル30の記憶状態とに基づいて、移動手段121により一のデータをアクセス領域20に移動させると共に、復帰手段122及び入替手段123により非アクセス領域21の記憶状態を変更して、一のデータへのアクセスを制御する。
したがって、記憶装置10は、記憶するデータへのアクセスに偏りがある場合であってもアクセスパターンを秘匿可能である。
【0059】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。