(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6809986
(24)【登録日】2020年12月14日
(45)【発行日】2021年1月6日
(54)【発明の名称】アクセスプログラム、保護装置、最適化装置、最適化方法及び最適化プログラム
(51)【国際特許分類】
H04L 9/10 20060101AFI20201221BHJP
G09C 1/00 20060101ALI20201221BHJP
G06F 12/14 20060101ALI20201221BHJP
【FI】
H04L9/00 621A
G09C1/00 660D
G06F12/14 510A
【請求項の数】9
【全頁数】10
(21)【出願番号】特願2017-113740(P2017-113740)
(22)【出願日】2017年6月8日
(65)【公開番号】特開2018-207409(P2018-207409A)
(43)【公開日】2018年12月27日
【審査請求日】2019年7月23日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】披田野 清良
(72)【発明者】
【氏名】清本 晋作
【審査官】
上島 拓也
(56)【参考文献】
【文献】
特開2014−067331(JP,A)
【文献】
特開2016−081192(JP,A)
【文献】
特開2016−081522(JP,A)
【文献】
仲野 有登,メモリに対するアクセスパターン秘匿手法の実装評価,2014年 暗号と情報セキュリティシンポジウム SCIS2014,日本,電子情報通信学会情報セキュリティ研究専門委員会,2014年 1月21日
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 12/14
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
メモリに格納された秘密情報へのアクセスを伴う処理をコンピュータに実行させるためのプログラムであって、
実行回数を記録させる記録ステップと、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行を制限させる制限ステップと、を含むアクセスプログラム。
【請求項2】
前記所定値は、前記メモリからランダムに選択した情報から前記秘密情報の復元を試行する第2の攻撃を上限回数まで繰り返した場合に、当該第2の攻撃が成功する確率である請求項1に記載のアクセスプログラム。
【請求項3】
前記メモリは、既定のアクセス回数毎にダミーブロックを含むブロック位置をシャッフルし、前記既定のアクセス回数の間、同一のブロックへのアクセスをしないORAM(Oblivious RAM)である請求項1又は請求項2に記載のアクセスプログラム。
【請求項4】
前記第1の攻撃の成功確率は、攻撃者が前記アクセスパターンのうち、前記秘密情報の要素数に等しい数のアクセス位置のみが特定のブロック範囲に含まれる場合に前記第1の攻撃を行うと仮定した確率である請求項1から請求項3のいずれかに記載のアクセスプログラム。
【請求項5】
前記制限ステップにおいて、前記コンピュータに、前記制限させる実行回数毎に、前記秘密情報へのアクセスを伴うプログラム区間を更新させる請求項1から請求項4のいずれかに記載のアクセスプログラム。
【請求項6】
メモリに格納された秘密情報へのアクセスを伴うプログラムを実行する秘密情報の保護装置であって、
実行回数を記録する記録部と、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行を制限する制限部と、を備える保護装置。
【請求項7】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化装置であって、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する決定部を備える最適化装置。
【請求項8】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化方法であって、
コンピュータが前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する最適化方法。
【請求項9】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定するための最適化プログラムであって、
コンピュータに、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定させるための最適化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密情報にアクセスするプログラム、アクセスパターンを保護する装置、並びに当該プログラムを最適化するための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、メモリに対するアクセスパターンから、プログラムに関する秘密情報が漏えいすることが懸念されており、プログラム実行時のアクセスパターンを保護することが望まれている。アクセスパターンの保護手法は、以下の2つの要件を満たす必要がある。
(1)メモリのどのブロックにアクセスしたかが分からないこと。
(2)同じブロックに複数回アクセスしたことが分からないこと。
【0003】
メモリに対するアクセスパターンの保護技術としては、ORAM(Oblivious RAM)が知られている(例えば、非特許文献1参照)。ORAMは、一定のアクセス回数毎に、メモリのブロックをランダムにシャッフルすることで、要件(1)を満たす。また、ORAMは、一部のブロックにダミーの情報を格納し、プログラムが同じブロックにアクセスする場合、擬似的にダミーの情報が格納されているダミーブロックにアクセスすることで、要件(2)を満たす。ORAMは、ダミーブロックにアクセスする場合も、ブロックがシャッフルされるまでの間、同一のブロックにアクセスしないため、ブロックをシャッフルするまでのアクセス回数と、ダミーブロックの数とは等しく設計される。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】O. Goldreich and R. Ostrovsky, “Software Protection and Simulation on Oblivious RAMs,” J. ACM, vol. 43, no. 3, pp. 431−473, 1996.
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述のように、ORAMは、上記の2つの要件を満たすとされているが、安全性解析は十分に行われておらず、安全性の評価指標も示されていなかった。
【0006】
本発明は、メモリへのアクセスに対して、共通の評価指標に基づく所定の安全性を確保できるアクセスプログラム、保護装置、最適化装置、最適化方法及び最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係るアクセスプログラムは、メモリに格納された秘密情報へのアクセスを伴う処理をコンピュータに実行させるためのプログラムであって、実行回数を記録させる記録ステップと、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行を制限させる制限ステップと、を含む。
【0008】
前記所定値は、前記メモリからランダムに選択した情報から前記秘密情報の復元を試行する第2の攻撃を上限回数まで繰り返した場合に、当該第2の攻撃が成功する確率であってもよい。
【0009】
前記メモリは、既定のアクセス回数毎にダミーブロックを含むブロック位置をシャッフルし、前記既定のアクセス回数の間、同一のブロックへのアクセスをしないORAMであってもよい。
【0010】
前記第1の攻撃の成功確率は、攻撃者が前記アクセスパターンのうち、前記秘密情報の要素数に等しい数のアクセス位置のみが特定のブロック範囲に含まれる場合に前記第1の攻撃を行うと仮定した確率であってもよい。
【0011】
前記制限ステップにおいて、前記コンピュータに、前記制限させる実行回数毎に、前記秘密情報へのアクセスを伴うプログラム区間を更新させてもよい。
【0012】
本発明に係る保護装置は、メモリに格納された秘密情報へのアクセスを伴うプログラムを実行する秘密情報の保護装置であって、実行回数を記録する記録部と、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行を制限する制限部と、を備える。
【0013】
本発明に係る最適化装置は、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化装置であって、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する決定部を備える。
【0014】
本発明に係る最適化方法は、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化方法であって、コンピュータが前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する。
【0015】
本発明に係る最適化プログラムは、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定するための最適化プログラムであって、コンピュータに、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第1の攻撃に関して、前記プログラムの実行回数に応じた当該第1の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定させるためのものである。
【発明の効果】
【0016】
本発明によれば、メモリへのアクセスに対して、共通の評価指標に基づく所定の安全性を確保できる。
【図面の簡単な説明】
【0017】
【
図1】実施形態に係る保護装置の機能構成を示す図である。
【
図2】実施形態に係るアクセスプログラムに実装される保護手法の第1の例を示すフローチャートである。
【
図3】実施形態に係るアクセスプログラムに実装される保護手法の第2の例を示すフローチャートである。
【
図4】実施形態に係る最適化装置の機能構成を示す図である。
【発明を実施するための形態】
【0018】
[第1実施形態]
以下、本発明の第1実施形態について説明する。
本実施形態の保護手法が適用されたアクセスプログラムは、コンピュータに実行されることにより、ORAMに格納された秘密情報にアクセスする。
ここで、本保護手法によりアクセスプログラムを実行できる回数が制限されることで、同一のプログラムを複数回実行した際に得られる複数のアクセスパターンを用いてメモリから秘密情報を復元する攻撃が抑制される。
【0019】
まず、アクセスパターンの保護技術であるORAMを、以下のように定義する。
メモリMは、N=m+d個のブロックからなるとする。Mは次式で定義される。
M=(M
1,…,M
i,…,M
N)
ただし、1番目からm番目のブロックには正しい情報が格納される。m+1番目からm+d番目のブロックにはダミーの情報が格納される。
【0020】
ここで、観測されるメモリのブロックの位置を表す関数gを、次式で定義する。
g(M
i)→i
また、メモリのブロックの位置をランダムにシャッフルする置換関数π
kを、次式で定義する。
π
k(g(M
i))→j, j∈{1,…,N}
ただし、置換関数はプログラムがメモリへd回アクセスする毎に更新され、kは、更新回数を示す。
【0021】
ORAMを適用後にあるプログラムを実行したときのメモリへのアクセスパターンは、次式で表される。
A=(a
1,…,a
d,…,a
kd+1,…,a
kd+d,…,a
nd+1,…,a
nd+d)
ここで、各アクセスa
kd+iは次式で表される。
a
kd+i=π
k(g(M
i))
ただし、ORAMでは、置換関数が更新されるまでの間に、同一のブロックにアクセスしたことが分からないようにするために、kd+1番目からkd+d番目のアクセスの中で、プログラムが同一のブロックにアクセスする場合、ダミーの情報が格納されているブロックに擬似的にアクセスする。このため、次式が成立する。
a
kd+1≠…≠a
kd+d
【0022】
また、ORAM上の秘密情報の保護手法に関して、安全性の指標を算出するために、アクセスパターンを利用して秘密情報を復元する攻撃手法を、以下のように仮定する。
【0023】
プログラムRは、t個の要素からなる秘密情報S={S
1,…S
t}を取り扱う。プログラムRは、一連のメモリアクセスにおけるある一部の区間[kd+1,kd+d]において、メモリの同じブロックにはアクセスしない。プログラムRは、区間[kd+1,kd+d]において秘密情報Sの全ての要素にアクセスする。
攻撃者は、プログラムRにおける区間[kd+1,kd+d]の実行位置を知っているものとする。攻撃者は、プログラムRが実行されたときのアクセスパターンA(R)から、秘密情報Sの全ての要素を推定することを目的とする。
【0024】
攻撃は、以下のステップ1〜4のアルゴリズムで実行されるものとする。
(ステップ1)
攻撃者は、プログラムRを実行し、アクセスパターンA(R)を得る。
【0025】
(ステップ2)
攻撃者は、A(R)のうち、区間[kd+1,kd+d]に相当する部分的なアクセスパターン(a
kd+1,…,a
kd+d)を観測する。これらのうち、t回のアクセスが1番目からm番目のブロックに対するものであり、かつ、d−t回のアクセスがm+1番目からm+d番目のブロックに対するものである場合(攻撃条件)、攻撃者は、1番目からm番目のブロックにアクセスしたt回のアクセスの位置を参照し、該当するブロックに格納されている情報を抽出する。
【0026】
(ステップ3)
攻撃者は、ステップ2で抽出したt個の情報の全てが秘密情報の要素のいずれかに該当するか否かを判定する。秘密情報に該当する場合、攻撃者は、攻撃に成功し目的を達成したことになる。ただし、判定の回数の上限をnとする。
【0027】
(ステップ4)
攻撃に失敗した場合、攻撃者は、攻撃に成功するまでステップ1からステップ3までの処理を繰り返す。
【0028】
次に、前述の攻撃に対する安全性指標、及び所定の安全性を持つ保護手法について説明する。
本実施形態では、攻撃者がプログラムRを実行できる回数に制限を加えることで攻撃の成功確率の上昇を抑制する。この実行回数の上限をτとする。
【0029】
プログラムRをτ回実行して判定をτu<n回行った場合の攻撃成功確率は、次式で表される。
P
1=1−[1−(1/
dC
t)]
τu
ここで、uは、プログラムRをτ回実行したときに、前述した攻撃のステップ2で攻撃条件に合うパターンが出現する確率であり、次式で求められる。
u=
dC
t(N−d)!t!
mC
t(d−t)!
dC
d−t/N!
【0030】
τが小さいほど攻撃成功確率は小さくなるが、実行回数が制限されると利便性に影響が出る場合がある。ここで、比較対象として、アクセスパターンを利用せずにメモリのみから秘密情報を復元する単純な攻撃を考える。攻撃者は、メモリの1番目からN番目のブロックからt個のブロックをランダムに選択し、各ブロックに入っている情報を抽出する。これらt個の情報の全てが秘密情報の要素であれば攻撃成功となる。
t個の情報が秘密情報の要素であるか否かの判定をn回行った場合の攻撃成功確率P
2は、次式で表される。
P
2=1−[1−(1/
NC
t)]
n
【0031】
本実施形態の保護手法では、τを次の条件式を満たすように設定することで、一定の安全性が確保され、攻撃に耐性を持つORAMが構築される。
P
1≦P
2
⇔τ≦log[1−(1/
NC
t)]
n/log[1−(1/
dC
t)]
u
【0032】
本実施形態の保護手法は、メモリの秘密情報にアクセスするためのプログラム自体に実装され、コンピュータ(保護装置)により実行される。
【0033】
図1は、本実施形態に係る保護装置1の機能構成を示す図である。
保護装置1は、制御部11(例えば、CPU)と記憶部12とを備えた情報処理装置(コンピュータ)である。制御部11は、記憶部12に格納されたアクセスプログラムを読み込み実行する。
制御部11は、アクセスプログラムの実行回数を記録する記録部111と、実行回数が上限を超えた場合にアクセスプログラムの実行を制限する制限部112とを備える。
【0034】
図2は、本実施形態に係るアクセスプログラムに実装される保護手法の第1の例を示すフローチャートである。
ステップS1において、制御部11は、アクセスプログラムの実行が指示された際に、記録部111により記録されている実行回数をカウントアップして、今回までの実行回数を取得する。
【0035】
ステップS2において、制御部11(制限部112)は、実行回数が上限τを超えたか否かを判定する。この判定がYESの場合、アクセスプログラムは終了し、判定がNOの場合、処理はステップS3に移る。
【0036】
ステップS3において、制御部11(記録部111)は、更新された実行回数を記録する。
ステップS4において、制御部11は、アクセスプログラムの実行による秘密情報へのアクセスを許可し、メイン処理を実行する。
【0037】
なお、ステップS2において実行を制限(拒否)した場合、制御部11は、アクセスプログラムを実行できないことを示すエラー出力、及び秘密情報へアクセスするプログラム区間の更新を促す出力を行ってもよい。
ここで、プログラム区間の更新とは、例えば、プログラム中で秘密情報へアクセスするステップの位置(プログラム区間)を移動することである。
【0038】
図3は、本実施形態に係るアクセスプログラムに実装される保護手法の第2の例を示すフローチャートである。
ステップS11において、制御部11は、アクセスプログラムの実行が指示された際に、記録部111により記録されている実行回数をカウントアップして、今回までの実行回数を取得する。
【0039】
ステップS12において、制御部11(制限部112)は、実行回数が上限τを超えたか否かを判定する。この判定がYESの場合、処理はステップS13に移り、判定がNOの場合、処理はステップS15に移る。
【0040】
ステップS13において、制御部11(制限部112)は、アクセスプログラムにおける秘密情報へのアクセス処理のステップを移動する。例えば、プログラムの実行順に関わる外部記憶パラメータ等を更新する。
ステップS14において、制御部11(記録部111)は、実行回数を初期化(1に更新)する。
【0041】
ステップS15において、制御部11(記録部111)は、更新された実行回数を記録する。
ステップS16において、制御部11は、アクセスプログラムの実行による秘密情報へのアクセスを許可し、メイン処理を実行する。
【0042】
本実施形態の保護手法は、メモリの秘密情報にアクセスするためのプログラム自体に実装されるものとして説明したが、本保護手法は、保護装置1がアクセスプログラムとは別の制御プログラムを実行することにより実現してもよい。
例えば、制御プログラムを実行する制御部11は、制限対象のアクセスプログラムを終了させた後、更新してもよい。
【0043】
[第2実施形態]
以下、本発明の第2実施形態について説明する。
本実施形態では、第1実施形態のアクセスプログラムにおける実行回数の上限を決定するための最適化装置を提供する。
【0044】
図4は、本実施形態に係る最適化装置2の機能構成を示す図である。
最適化装置2は、制御部21(例えば、CPU)と、記憶部22と、入力部23と、出力部24とを備えた情報処理装置(コンピュータ)である。
【0045】
制御部21は、記憶部22に格納された最適化プログラムを読み込み実行することにより、決定部211として機能し、アクセスプログラムの実行回数の上限τを決定する。
入力部23は、ユーザから、ORAMのブロック構成等のパラメータ(例えば、前述のパラメータN,m,d,n,t等)を受け付け、決定部211に提供する。
出力部24は、決定部211により決定された実行回数の上限τを出力する。
【0046】
なお、制御部21(決定部211)は、制限対象であるアクセスプログラム自体を入力とし、決定した実行回数の上限τを埋め込んで更新したアクセスプログラムを出力してもよい。
【0047】
以上の実施形態によれば、同一のプログラムを複数回実行できる状況を想定し、同一のプログラムによるメモリへの複数のアクセスパターンを利用して秘密情報を復元する攻撃を仮定する。そして、評価指標として攻撃成功確率を導入し、この評価指標に基づき、同一のプログラムを実行できる回数に制限を加えることにより、攻撃に対して耐性のある所定の安全性が確保される。
【0048】
また、実行回数に制限を加えると、プログラムを通常に利用するための利便性が損なわれる可能性があるため、アクセスパターンを用いない基準となるランダムな攻撃と同等以上の安全性を確保できる回数を上限とすることにより、利便性を損なうことなく、十分な安全性を確保できる。
【0049】
さらに、実行回数が上限に達した場合に、アクセスプログラムを更新し、秘密情報にアクセスする区間を変更することにより、実行回数をリセットでき、アクセスプログラムの実行が妨げられないため、利便性が向上する。
【0050】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【0051】
保護装置1による保護方法、及び最適化装置2による最適化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0052】
1 保護装置
2 最適化装置
11 制御部
12 記憶部
21 制御部
22 記憶部
23 入力部
24 出力部
111 記録部
112 制限部
211 決定部