(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6249915
(24)【登録日】2017年12月1日
(45)【発行日】2017年12月20日
(54)【発明の名称】記憶装置、方法及びプログラム
(51)【国際特許分類】
H04L 9/10 20060101AFI20171211BHJP
H04L 9/20 20060101ALI20171211BHJP
G06F 21/75 20130101ALI20171211BHJP
G06F 21/62 20130101ALI20171211BHJP
【FI】
H04L9/00 621A
H04L9/00 653
G06F21/75
G06F21/62
【請求項の数】7
【全頁数】10
(21)【出願番号】特願2014-193697(P2014-193697)
(22)【出願日】2014年9月24日
(65)【公開番号】特開2016-66860(P2016-66860A)
(43)【公開日】2016年4月28日
【審査請求日】2017年1月18日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】清本 晋作
(72)【発明者】
【氏名】三宅 優
【審査官】
青木 重徳
(56)【参考文献】
【文献】
特開2013−152382(JP,A)
【文献】
特開2003−271459(JP,A)
【文献】
米国特許出願公開第2009/0113217(US,A1)
【文献】
米国特許第5123045(US,A)
【文献】
仲野 有登 ほか,メモリに対するアクセスパターン秘匿手法の実装評価,2014年 暗号と情報セキュリティシンポジウム SCIS2014 [CD−ROM],日本,電子情報通信学会情報セキュリティ研究専門委員会(ISEC研),2014年 1月21日,3C1−2,pp.1−7
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/62
G06F 21/75
H04L 9/20
(57)【特許請求の範囲】
【請求項1】
データに対するアクセスのパターンを保護するアクセスパターン保護手段を有するメモリに、データを秘匿して記憶する記憶装置であって、
乱数を生成する乱数生成手段と、
データに、前記乱数に基づくマスク値を用いてマスクをして秘匿データを作成し、又はマスクをしたときのマスク値を用いて、前記秘匿データからマスクを外すマスク処理手段と、
前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる記憶制御手段と、を備え、
前記記憶制御手段は、前記メモリ上の前記秘匿データに対するアクセスが検出された場合に、前記秘匿データから、前記秘匿データに対応付けて記憶されたマスク値を用いて前記マスク処理手段によりマスクを外し、元のデータを取り出す、
記憶装置。
【請求項2】
前記記憶制御手段は、前記秘匿データに対するアクセスが完了したことが検出されると、前記元のデータに、前記マスク処理手段によって新たな前記乱数に基づくマスクをさせて新たな前記秘匿データとし、新たな前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる、請求項1に記載の記憶装置。
【請求項3】
前記マスク処理手段は、データとマスク値との排他的論理和の演算をする請求項1又は2に記載の記憶装置。
【請求項4】
前記秘匿データを記憶する前記メモリのアドレスと、前記秘匿データの作成に用いられたマスク値を記憶する前記メモリのアドレスとを対応付ける対応テーブルをさらに備え、
前記記憶制御手段は、前記対応テーブルに基づいて、前記秘匿データに対応するマスク値を取得する、請求項1から3のいずれか一項に記載の記憶装置。
【請求項5】
前記メモリは、ORAM(Oblivious RAM)である請求項1から4のいずれか一項に記載の記憶装置。
【請求項6】
請求項1に記載された記憶装置が実行する方法であって、
前記乱数生成手段が、乱数を生成する乱数生成ステップと、
前記マスク処理手段が、データに、前記乱数に基づくマスク値を用いてマスクをして秘匿データを作成し、又はマスクをしたときのマスク値を用いて、前記秘匿データからマスクを外すマスク処理ステップと、
前記記憶制御手段が、前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる記憶制御ステップと、
前記記憶制御手段が、前記メモリ上の前記秘匿データに対するアクセスが検出された場合に、前記秘匿データから、前記秘匿データに対応付けて記憶されたマスク値を用いて前記マスク処理ステップによりマスクを外し、元のデータを取り出すステップと、
を備える方法。
【請求項7】
コンピュータに、請求項6に記載の方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置、方法及びプログラムに関する。
【背景技術】
【0002】
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃として、メモリアクセスを解析し秘密情報を復元する攻撃がある。そこで、メモリアクセスのパターンを攻撃者から保護するために、Oblivious RAM(ORAM)の技術や、非特許文献1及び特許文献1に開示されている技術が提案されている。
【0003】
非特許文献1などで検討されている方式やORAMによるメモリの保護は、安全な暗号方式によってデータが保護されているとの前提のもとに、アクセスのパターンを保護することでメモリ上のデータを秘匿している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2013−246698号公報
【非特許文献】
【0005】
【非特許文献1】Oded Goldreich and Rafail Ostrovsky,“Software protection and simulation on oblivious rams,”J. ACM, 43(3):431−473,1996
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、アクセスパターン保護に伴うデータの秘匿において、従来の暗号アルゴリズムをそのまま使用する方法は、鍵管理の煩雑性などから現実的ではない。
そこで、アクセスパターン保護に適したデータの秘匿をする装置が求められている。
【0007】
本発明は、アクセスパターン保護に適したデータの秘匿をする記憶装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
具体的には、以下のような解決手段を提供する。
(1) データに対するアクセスのパターンを保護するアクセスパターン保護手段を有するメモリに、データを秘匿して記憶する記憶装置であって、乱数を生成する乱数生成手段と、データに、前記乱数に基づくマスク値を用いてマスクをして秘匿データを作成し、又はマスクをしたときのマスク値を用いて、前記秘匿データからマスクを外すマスク処理手段と、前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる記憶制御手段と、を備え、前記記憶制御手段は、前記メモリ上の前記秘匿データに対するアクセスが検出された場合に、前記秘匿データから、前記秘匿データに対応付けて記憶されたマスク値を用いて前記マスク処理手段によりマスクを外し、元のデータを取り出す、記憶装置。
【0009】
(1)に係る記憶装置は、秘匿データ及び秘匿データの作成に用いられたマスク値を対応付けて、アクセスパターン保護によりメモリに記憶させる。さらに、(1)に係る記憶装置は、秘匿データに対するアクセスが検出された場合に、メモリに記憶された秘匿データから、秘匿データに対応付けて記憶されたマスク値を用いてマスク処理によりマスクを外し、元のデータを取り出す。
【0010】
アクセスパターン保護手段を有するメモリ(例えば、ORAM)では、データへのアクセスのパターンが秘匿されているため、攻撃者がメモリを監視している状況においても、どのデータがどの乱数によってマスクされているかは、攻撃者には不明である。
よって、(1)に係る記憶装置は、マスク値とデータとを同じメモリに安全に記憶させることができ、データそのものの秘匿化を高速に行うことができる。
したがって、(1)に係る記憶装置は、アクセスパターン保護に適したデータの秘匿をすることができる。
【0011】
(2) 前記記憶制御手段は、前記秘匿データに対するアクセスが完了したことが検出されると、前記元のデータに、前記マスク処理手段によって新たな前記乱数に基づくマスクをさせて新たな前記秘匿データとし、新たな前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる、(1)に記載の記憶装置。
【0012】
(2)に係る記憶装置は、データをメインメモリに戻す場合、過去と異なる乱数でマスクをすることによってデータの値を変化させる。このことにより、(2)に係る記憶装置は、メインメモリを監視している攻撃者が、データに対するアクセスが読み出しであったのか、書き出しであったのかを、判別できないようにすることができる。
したがって、(2)に係る記憶装置は、攻撃者が読み出しと書き出しとのアクセスのパターンを判別できないようにすることによって、アクセスパターン保護に適したデータの秘匿をすることができる。
【0013】
(3) 前記マスク処理手段は、データとマスク値との排他的論理和の演算をする(1)又は(2)に記載の記憶装置。
【0014】
(3)に係る記憶装置は、アクセスパターン保護に適したデータの秘匿を排他的論理和の演算で高速に処理することができる。
【0015】
(4) 前記秘匿データを記憶する前記メモリのアドレスと、前記秘匿データの作成に用いられたマスク値を記憶する前記メモリのアドレスとを対応付ける対応テーブルをさらに備え、前記記憶制御手段は、前記対応テーブルに基づいて、前記秘匿データに対応するマスク値を取得する、(1)から(3)のいずれか一に記載の記憶装置。
【0016】
(4)に係る記憶装置は、アクセスパターン保護に適したデータの秘匿を対応テーブルによって容易にすることができる。
【0017】
(5) 前記メモリは、ORAM(Oblivious RAM)である(1)から(4)のいずれか一に記載の記憶装置。
【0018】
(5)に係る記憶装置は、ORAMのアクセスパターン保護に適したデータの秘匿をすることができる。
【0019】
(6) (1)に記載された記憶装置が実行する方法であって、前記乱数生成手段が、乱数を生成する乱数生成ステップと、前記マスク処理手段が、データに、前記乱数に基づくマスク値を用いてマスクをして秘匿データを作成し、又はマスクをしたときのマスク値を用いて、前記秘匿データからマスクを外すマスク処理ステップと、前記記憶制御手段が、前記秘匿データ及び前記秘匿データの作成に用いられたマスク値を対応付けて、前記アクセスパターン保護手段により前記メモリに記憶させる記憶制御ステップと、前記記憶制御手段が、前記メモリ上の前記秘匿データに対するアクセスが検出された場合に、前記秘匿データから、前記秘匿データに対応付けて記憶されたマスク値を用いて前記マスク処理ステップによりマスクを外し、元のデータを取り出すステップと、を備える方法。
【0020】
(6)に係る方法は、アクセスパターン保護に適したデータの秘匿をすることができる。
【0021】
(7) コンピュータに、(6)に記載の方法の各ステップを実行させるためのプログラム。
【0022】
(7)に係るプログラムは、コンピュータに、アクセスパターン保護に適したデータの秘匿をさせることができる。
【発明の効果】
【0023】
本発明によれば、アクセスパターン保護に適したデータの秘匿をすることができる。
【図面の簡単な説明】
【0024】
【
図1】本発明の一実施形態に係る記憶装置の構成を示すブロック図である。
【
図2】本発明の一実施形態に係る対応テーブルと、秘匿データ及び秘匿データの作成に用いられたマスク値との例を示す図である。
【
図3】本発明の一実施形態に係る記憶装置の書き出し処理の例を示すフローチャートである。
【
図4】本発明の一実施形態に係る記憶装置の読み出し処理の例を示すフローチャートである。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態について、図を参照しながら説明する。
図1は、本発明の一実施形態に係る記憶装置10の構成を示すブロック図である。
記憶装置10は、乱数生成手段11と、マスク処理手段12と、記憶制御手段13と、対応テーブル21とを備え、データを秘匿してメインメモリ30に記憶する。各手段ごとに詳述する。
【0026】
記憶装置10は、データに対するアクセスのパターンを保護するアクセスパターン保護手段31を有するメインメモリ30に、データを秘匿して記憶する。
アクセスパターン保護手段31は、例えば、書き出し処理(例えば、データをキャッシュメモリ40からメインメモリ30に戻すとき)において、メインメモリ30へデータを書き出すときのアドレスを、メインメモリ30からデータを読み出したときのアドレスとは異なるアドレスに変更する。その結果、アクセスパターン保護手段31は、データを読み出すメインメモリ30のアドレスを都度変化させる。このように、アクセスパターン保護手段31は、読み出し処理及び書き出し処理におけるアドレスが同一のアドレスとなって、同じパターンのアクセスが発生することを防止する。アクセスパターン保護手段31は、例えば、ORAMにおいて実現されている。
【0027】
乱数生成手段11は、乱数生成装置により乱数を生成する。生成される乱数は、暗号学的に安全な乱数であることが望ましい。乱数生成手段11は、ストリーム暗号(初期鍵及び初期ベクトルに基づいて乱数を生成する)などを用いて乱数を生成してもよい。
【0028】
マスク処理手段12は、データに、乱数に基づくマスク値を用いてマスクをして秘匿データを作成する。又は、マスク処理手段12は、マスクをしたときのマスク値を用いて、秘匿データからマスクを外す。具体的には、マスク処理手段12は、データとマスク値との排他的論理和の演算をする。すなわち、マスク処理手段12は、データに、乱数に基づくマスク値を用いて排他的論理和の演算をして秘匿データを作成する。又は、マスク処理手段12は、秘匿データの作成に用いたマスク値と秘匿データとの排他的論理和の演算をし、秘匿データからマスクを外す。
【0029】
マスク値は、データと同じ長さの乱数であってよい。また、マスク値は、乱数に基づいて生成されてもよい。例えば、マスク値は、データ長が64ビットの場合、乱数生成装置により生成したデータ長が32ビットの乱数に基づいて、生成した乱数と加工した乱数とを結合するなどして、データ長が64ビットのマスク値にされたものであってもよい。この場合、乱数を生成する時間が、データと同じ長さの乱数を生成する時間よりも、短縮される。
マスク値のデータ長は、データに対するマスク処理の種類に応じて必要な長さ(例えば、排他的論理和の場合、データの長さとマスク値の長さとは同一)が確保されるとしてよい。
【0030】
記憶制御手段13は、秘匿データ及び秘匿データの作成に用いられたマスク値を対応付けて、アクセスパターン保護手段31によりメインメモリ30に記憶させる。記憶制御手段13は、秘匿データと、秘匿データの作成に用いられたマスク値との対応付けを、対応テーブル21に記憶させる。対応テーブル21は、秘匿データを記憶するメインメモリ30のアドレスと、秘匿データの作成に用いられたマスク値を記憶するメインメモリ30のアドレスとを対応付ける(後述する
図2参照)。
記憶制御手段13は、対応テーブル21に基づいて、秘匿データに対応するマスク値を取得する。
【0031】
記憶制御手段13は、メインメモリ30上の秘匿データに対するアクセスが検出された場合に、秘匿データから、秘匿データに対応付けて記憶されたマスク値を用いてマスク処理手段12によりマスクを外し、元のデータを取り出す。
具体的には、記憶制御手段13は、秘匿データに対する読み出し要求が検出された場合であって読み出すべきデータがキャッシュメモリ40に存在しない場合に、メインメモリ30に記憶された秘匿データ及び秘匿データに対応付けて記憶されたマスク値を読み出し、読み出した秘匿データとマスク値との排他的論理和の演算によって秘匿データからマスクを外し、元のデータを取り出し、取り出した元のデータをキャッシュメモリ40に移動させる。
【0032】
秘匿データに対するアクセスが完了したことが検出されると、記憶制御手段13は、元のデータに、マスク処理手段12によって新たな乱数に基づくマスクをさせて新たな秘匿データとし、新たな秘匿データ及び新たな秘匿データの作成に用いられたマスク値を対応付けて、アクセスパターン保護手段31によりメインメモリ30に記憶させる。
具体的には、キャッシュメモリ40からメインメモリ30への書き出し要求が検出されると、記憶制御手段13は、メインメモリ30へ書き出すべきデータに、新たな乱数に基づくマスク値を用いて、マスク処理手段12によって排他的論理和の演算をさせて、新たな秘匿データを作成させる。次に、記憶制御手段13は、新たな秘匿データと、新たな秘匿データの作成に用いられたマスク値とを対応付けて、メインメモリ30に記憶させ、対応関係を対応テーブル21に記憶させる。メインメモリ30では、秘匿データ及びマスク値は、アクセスパターン保護手段31により、例えば、メインメモリ30から読み出したときのアドレスとは異なるアドレスに記憶される。
【0033】
図2は、本発明の一実施形態に係る対応テーブル21と、秘匿データ及び秘匿データの作成に用いられたマスク値との例を示す図である。
図2(1)が示すように、対応テーブル21は、データアドレスと、マスク値格納アドレスとを対応付ける。データアドレスは、秘匿データを記憶するメインメモリ30のアドレスである。マスク値格納アドレスは、秘匿データの作成に用いられたマスク値を記憶するメインメモリ30のアドレスである。
図2(2)は、秘匿データから、対応テーブル21によって秘匿データに対応付けられたマスク値を用いてマスクを外し、元データを取り出したことを示す図である。
図2(2)が示すように、記憶装置10は、メインメモリ30から読み出した秘匿データとマスク値との排他的論理和の演算によりマスク値を外した元のデータをキャッシュメモリ40に移動させる。
図2(3)は、秘匿データと秘匿データの作成に用いられたマスク値とを対応付けてメインメモリ30に記憶させたことを示す図である。
図2(3)が示すように、記憶装置10は、キャッシュメモリ40の元のデータから排他的論理和の演算により秘匿データを作成し、秘匿データ及び秘匿データの作成に用いられたマスク値を対応付けてメインメモリ30に記憶させる。
【0034】
図3は、本発明の一実施形態に係る記憶装置10の書き出し処理の例を示すフローチャートである。記憶装置10は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成される。以下の処理は、制御部(例えば、CPU)が、所定のソフトウェアに従い実行する処理であり、所定のプログラムからの書き出し要求(例えば、秘匿データをキャッシュメモリ40からメインメモリ30へ書き出す要求など)を検出することによって起動される。
【0035】
ステップS101において、CPU(乱数生成手段11)は、キャッシュメモリ40からメインメモリ30への書き出し要求がされたデータについて、マスク値を作成するために、乱数を生成する。
【0036】
ステップS102において、CPU(マスク処理手段12)は、生成した乱数に基づくマスク値を用いて、データとマスク値との排他的論理和の演算をし、秘匿データを作成する。
【0037】
ステップS103において、CPU(記憶制御手段13)は、秘匿データ及び秘匿データの作成に用いられたマスク値を対応付けて、ORAMであるメインメモリ30に記憶させる。
【0038】
ステップS104において、CPU(記憶制御手段13)は、秘匿データ及び秘匿データの作成に用いられたマスク値の対応付けを対応テーブル21に記憶させる。その後、CPUは、処理を終了する。
【0039】
図4は、本発明の一実施形態に係る記憶装置10の読み出し処理の例を示すフローチャートである。以下の処理は、制御部(例えば、CPU)が、所定のソフトウェアに従い実行する処理であり、所定のプログラムからの読み出し要求(例えば、メインメモリ30からの読み出し要求など)を検出することによって起動される。
【0040】
ステップS201において、CPU(記憶制御手段13)は、秘匿データをメインメモリ30から読み出すと共に、秘匿データに対応付けられたマスク値を対応テーブル21に基づいて読み出す。
【0041】
ステップS202において、CPU(マスク処理手段12、記憶制御手段13)は、秘匿データとマスク値との排他的論理和の演算をして、秘匿データからマスクを外し、元のデータを取り出し、元のデータをキャッシュメモリ40に記憶させる。その後、CPUは、処理を終了する。
【0042】
本実施形態によれば、記憶装置10は、排他的論理和の演算がされた秘匿データ及び秘匿データの作成に用いられたマスク値を対応付けて、ORAMであるメインメモリ30に記憶させる。さらに、記憶装置10は、メインメモリ30のデータに対する読み出し要求が検出された場合に、メインメモリ30に記憶された秘匿データから、秘匿データに対応付けて記憶されたマスク値を用いて排他的論理和の演算をしてマスクを外し、元のデータを取り出し、キャッシュメモリ40に記憶させる。
さらに、記憶装置10は、キャッシュメモリ40からメインメモリ30への書き出し要求が検出されると、対象の元のデータに、新たな乱数に基づいて生成されたマスク値を用いて排他的論理和の演算をして新たな秘匿データを作成する。次に、記憶装置10は、新たな秘匿データ及び新たな秘匿データの作成に用いられたマスク値を対応付けて、ORAMであるメインメモリ30に記憶させると共に、対応付けを対応テーブル21に記憶させる。
よって、記憶装置10は、メインメモリ30に書き出すごとにデータの秘匿化を高速に行い、秘匿データと秘匿化に用いたマスク値とを対応付けてメインメモリ30に記憶させ、対応付けてメインメモリ30に記憶させた秘匿データとマスク値とによりメインメモリ30から元のデータを高速に取り出すことができる。
メインメモリ30は、アクセスのパターンが保護されているので、記憶装置10は、どのデータがどの乱数によってマスクされているかが攻撃者には不明なように、メインメモリ30に記憶させることができる。
したがって、記憶装置10は、アクセスパターン保護に適したデータの秘匿をすることができる。
【0043】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。
本実施形態では、記憶装置10と、メインメモリ30及びアクセスパターン保護手段31とを別にしたが、記憶装置10とアクセスパターン保護手段31とが組み合わされてもよい。組み合わされた装置は、アクセスパターン保護を行って秘匿データをメインメモリ30に記憶させることができる。さらに、記憶装置10と、メインメモリ30及びアクセスパターン保護手段31とを一体化させてもよい。一体化させた装置は、アクセスパターン保護を行って秘匿データを記憶することができる。
また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【0044】
記憶装置10による一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータなどにインストールされる。また、当該プログラムは、コンピュータ読み取り可能な記録媒体(例えば、CD−ROMのようなリムーバブルメディアなど)に記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【0045】
10 記憶装置
11 乱数生成手段
12 マスク処理手段
13 記憶制御手段
21 対応テーブル
30 メインメモリ
31 アクセスパターン保護手段
40 キャッシュメモリ