(57)【要約】【課題】メモリへのアクセスに対して、共通の評価指標に基づく所定の安全性を確保できるアクセスプログラム、保護装置、最適化装置、最適化方法及び最適化プログラムを提供する。【解決手段】メモリに格納された秘密情報へのアクセスを伴うプログラムを実行する秘密情報の保護装置１は、実行回数を記録する記録部１１１と、メモリに対するアクセスパターンにより秘密情報の復元を試行する第１の攻撃に関して、実行回数に応じた第１の攻撃の成功確率が所定値以上となる場合の実行を制限する制限部１１２と、を備える。【選択図】図１
2018207409.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納された秘密情報へのアクセスを伴う処理をコンピュータに実行させるためのプログラムであって、
実行回数を記録させる記録ステップと、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行を制限させる制限ステップと、を含むアクセスプログラム。
【請求項２】
前記所定値は、前記メモリからランダムに選択した情報から前記秘密情報の復元を試行する第２の攻撃を上限回数まで繰り返した場合に、当該第２の攻撃が成功する確率である請求項１に記載のアクセスプログラム。
【請求項３】
前記メモリは、既定のアクセス回数毎にダミーブロックを含むブロック位置をシャッフルし、前記既定のアクセス回数の間、同一のブロックへのアクセスをしないＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）である請求項１又は請求項２に記載のアクセスプログラム。
【請求項４】
前記第１の攻撃の成功確率は、攻撃者が前記アクセスパターンのうち、前記秘密情報の要素数に等しい数のアクセス位置のみが特定のブロック範囲に含まれる場合に前記第１の攻撃を行うと仮定した確率である請求項１から請求項３のいずれかに記載のアクセスプログラム。
【請求項５】
前記制限ステップにおいて、前記コンピュータに、前記制限させる実行回数毎に、前記秘密情報へのアクセスを伴うプログラム区間を更新させる請求項１から請求項４のいずれかに記載のアクセスプログラム。
【請求項６】
メモリに格納された秘密情報へのアクセスを伴うプログラムを実行する秘密情報の保護装置であって、
実行回数を記録する記録部と、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行を制限する制限部と、を備える保護装置。
【請求項７】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化装置であって、
前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する決定部を備える最適化装置。
【請求項８】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化方法であって、
コンピュータが前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する最適化方法。
【請求項９】
メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定するための最適化プログラムであって、
コンピュータに、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定させるための最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密情報にアクセスするプログラム、アクセスパターンを保護する装置、並びに当該プログラムを最適化するための装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来、メモリに対するアクセスパターンから、プログラムに関する秘密情報が漏えいすることが懸念されており、プログラム実行時のアクセスパターンを保護することが望まれている。アクセスパターンの保護手法は、以下の２つの要件を満たす必要がある。
（１）メモリのどのブロックにアクセスしたかが分からないこと。
（２）同じブロックに複数回アクセスしたことが分からないこと。
【０００３】
メモリに対するアクセスパターンの保護技術としては、ＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）が知られている（例えば、非特許文献１参照）。ＯＲＡＭは、一定のアクセス回数毎に、メモリのブロックをランダムにシャッフルすることで、要件（１）を満たす。また、ＯＲＡＭは、一部のブロックにダミーの情報を格納し、プログラムが同じブロックにアクセスする場合、擬似的にダミーの情報が格納されているダミーブロックにアクセスすることで、要件（２）を満たす。ＯＲＡＭは、ダミーブロックにアクセスする場合も、ブロックがシャッフルされるまでの間、同一のブロックにアクセスしないため、ブロックをシャッフルするまでのアクセス回数と、ダミーブロックの数とは等しく設計される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｏ．  Ｇｏｌｄｒｅｉｃｈ  ａｎｄ  Ｒ．  Ｏｓｔｒｏｖｓｋｙ，  “Ｓｏｆｔｗａｒｅ  Ｐｒｏｔｅｃｔｉｏｎ  ａｎｄ  Ｓｉｍｕｌａｔｉｏｎ  ｏｎ  Ｏｂｌｉｖｉｏｕｓ  ＲＡＭｓ，”  Ｊ．  ＡＣＭ，  ｖｏｌ．  ４３，  ｎｏ．  ３，  ｐｐ．  ４３１−４７３，  １９９６．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述のように、ＯＲＡＭは、上記の２つの要件を満たすとされているが、安全性解析は十分に行われておらず、安全性の評価指標も示されていなかった。
【０００６】
本発明は、メモリへのアクセスに対して、共通の評価指標に基づく所定の安全性を確保できるアクセスプログラム、保護装置、最適化装置、最適化方法及び最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るアクセスプログラムは、メモリに格納された秘密情報へのアクセスを伴う処理をコンピュータに実行させるためのプログラムであって、実行回数を記録させる記録ステップと、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行を制限させる制限ステップと、を含む。
【０００８】
前記所定値は、前記メモリからランダムに選択した情報から前記秘密情報の復元を試行する第２の攻撃を上限回数まで繰り返した場合に、当該第２の攻撃が成功する確率であってもよい。
【０００９】
前記メモリは、既定のアクセス回数毎にダミーブロックを含むブロック位置をシャッフルし、前記既定のアクセス回数の間、同一のブロックへのアクセスをしないＯＲＡＭであってもよい。
【００１０】
前記第１の攻撃の成功確率は、攻撃者が前記アクセスパターンのうち、前記秘密情報の要素数に等しい数のアクセス位置のみが特定のブロック範囲に含まれる場合に前記第１の攻撃を行うと仮定した確率であってもよい。
【００１１】
前記制限ステップにおいて、前記コンピュータに、前記制限させる実行回数毎に、前記秘密情報へのアクセスを伴うプログラム区間を更新させてもよい。
【００１２】
本発明に係る保護装置は、メモリに格納された秘密情報へのアクセスを伴うプログラムを実行する秘密情報の保護装置であって、実行回数を記録する記録部と、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行を制限する制限部と、を備える。
【００１３】
本発明に係る最適化装置は、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化装置であって、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する決定部を備える。
【００１４】
本発明に係る最適化方法は、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定する最適化方法であって、コンピュータが前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定する。
【００１５】
本発明に係る最適化プログラムは、メモリに格納された秘密情報へのアクセスを伴うプログラムの実行制限回数を決定するための最適化プログラムであって、コンピュータに、前記メモリに対するアクセスパターンにより前記秘密情報の復元を試行する第１の攻撃に関して、前記プログラムの実行回数に応じた当該第１の攻撃の成功確率が所定値以上となる場合の実行回数を、前記実行制限回数として決定させるためのものである。
【発明の効果】
【００１６】
本発明によれば、メモリへのアクセスに対して、共通の評価指標に基づく所定の安全性を確保できる。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係る保護装置の機能構成を示す図である。
【図２】実施形態に係るアクセスプログラムに実装される保護手法の第１の例を示すフローチャートである。
【図３】実施形態に係るアクセスプログラムに実装される保護手法の第２の例を示すフローチャートである。
【図４】実施形態に係る最適化装置の機能構成を示す図である。
【発明を実施するための形態】
【００１８】
［第１実施形態］
以下、本発明の第１実施形態について説明する。
本実施形態の保護手法が適用されたアクセスプログラムは、コンピュータに実行されることにより、ＯＲＡＭに格納された秘密情報にアクセスする。
ここで、本保護手法によりアクセスプログラムを実行できる回数が制限されることで、同一のプログラムを複数回実行した際に得られる複数のアクセスパターンを用いてメモリから秘密情報を復元する攻撃が抑制される。
【００１９】
まず、アクセスパターンの保護技術であるＯＲＡＭを、以下のように定義する。
メモリＭは、Ｎ＝ｍ＋ｄ個のブロックからなるとする。Ｍは次式で定義される。
Ｍ＝（Ｍ１，…，Ｍｉ，…，ＭＮ）
ただし、１番目からｍ番目のブロックには正しい情報が格納される。ｍ＋１番目からｍ＋ｄ番目のブロックにはダミーの情報が格納される。
【００２０】
ここで、観測されるメモリのブロックの位置を表す関数ｇを、次式で定義する。
ｇ（Ｍｉ）→ｉ
また、メモリのブロックの位置をランダムにシャッフルする置換関数πｋを、次式で定義する。
πｋ（ｇ（Ｍｉ））→ｊ，  ｊ∈｛１，…，Ｎ｝
ただし、置換関数はプログラムがメモリへｄ回アクセスする毎に更新され、ｋは、更新回数を示す。
【００２１】
ＯＲＡＭを適用後にあるプログラムを実行したときのメモリへのアクセスパターンは、次式で表される。
Ａ＝（ａ１，…，ａｄ，…，ａｋｄ＋１，…，ａｋｄ＋ｄ，…，ａｎｄ＋１，…，ａｎｄ＋ｄ）
ここで、各アクセスａｋｄ＋ｉは次式で表される。
ａｋｄ＋ｉ＝πｋ（ｇ（Ｍｉ））
ただし、ＯＲＡＭでは、置換関数が更新されるまでの間に、同一のブロックにアクセスしたことが分からないようにするために、ｋｄ＋１番目からｋｄ＋ｄ番目のアクセスの中で、プログラムが同一のブロックにアクセスする場合、ダミーの情報が格納されているブロックに擬似的にアクセスする。このため、次式が成立する。
ａｋｄ＋１≠…≠ａｋｄ＋ｄ
【００２２】
また、ＯＲＡＭ上の秘密情報の保護手法に関して、安全性の指標を算出するために、アクセスパターンを利用して秘密情報を復元する攻撃手法を、以下のように仮定する。
【００２３】
プログラムＲは、ｔ個の要素からなる秘密情報Ｓ＝｛Ｓ１，…Ｓｔ｝を取り扱う。プログラムＲは、一連のメモリアクセスにおけるある一部の区間［ｋｄ＋１，ｋｄ＋ｄ］において、メモリの同じブロックにはアクセスしない。プログラムＲは、区間［ｋｄ＋１，ｋｄ＋ｄ］において秘密情報Ｓの全ての要素にアクセスする。
攻撃者は、プログラムＲにおける区間［ｋｄ＋１，ｋｄ＋ｄ］の実行位置を知っているものとする。攻撃者は、プログラムＲが実行されたときのアクセスパターンＡ（Ｒ）から、秘密情報Ｓの全ての要素を推定することを目的とする。
【００２４】
攻撃は、以下のステップ１〜４のアルゴリズムで実行されるものとする。
（ステップ１）
攻撃者は、プログラムＲを実行し、アクセスパターンＡ（Ｒ）を得る。
【００２５】
（ステップ２）
攻撃者は、Ａ（Ｒ）のうち、区間［ｋｄ＋１，ｋｄ＋ｄ］に相当する部分的なアクセスパターン（ａｋｄ＋１，…，ａｋｄ＋ｄ）を観測する。これらのうち、ｔ回のアクセスが１番目からｍ番目のブロックに対するものであり、かつ、ｄ−ｔ回のアクセスがｍ＋１番目からｍ＋ｄ番目のブロックに対するものである場合（攻撃条件）、攻撃者は、１番目からｍ番目のブロックにアクセスしたｔ回のアクセスの位置を参照し、該当するブロックに格納されている情報を抽出する。
【００２６】
（ステップ３）
攻撃者は、ステップ２で抽出したｔ個の情報の全てが秘密情報の要素のいずれかに該当するか否かを判定する。秘密情報に該当する場合、攻撃者は、攻撃に成功し目的を達成したことになる。ただし、判定の回数の上限をｎとする。
【００２７】
（ステップ４）
攻撃に失敗した場合、攻撃者は、攻撃に成功するまでステップ１からステップ３までの処理を繰り返す。
【００２８】
次に、前述の攻撃に対する安全性指標、及び所定の安全性を持つ保護手法について説明する。
本実施形態では、攻撃者がプログラムＲを実行できる回数に制限を加えることで攻撃の成功確率の上昇を抑制する。この実行回数の上限をτとする。
【００２９】
プログラムＲをτ回実行して判定をτｕ＜ｎ回行った場合の攻撃成功確率は、次式で表される。
Ｐ１＝１−［１−（１／ｄＣｔ）］τｕ
ここで、ｕは、プログラムＲをτ回実行したときに、前述した攻撃のステップ２で攻撃条件に合うパターンが出現する確率であり、次式で求められる。
ｕ＝ｄＣｔ（Ｎ−ｄ）！ｔ！ｍＣｔ（ｄ−ｔ）！ｄＣｄ−ｔ／Ｎ！
【００３０】
τが小さいほど攻撃成功確率は小さくなるが、実行回数が制限されると利便性に影響が出る場合がある。ここで、比較対象として、アクセスパターンを利用せずにメモリのみから秘密情報を復元する単純な攻撃を考える。攻撃者は、メモリの１番目からＮ番目のブロックからｔ個のブロックをランダムに選択し、各ブロックに入っている情報を抽出する。これらｔ個の情報の全てが秘密情報の要素であれば攻撃成功となる。
ｔ個の情報が秘密情報の要素であるか否かの判定をｎ回行った場合の攻撃成功確率Ｐ２は、次式で表される。
Ｐ２＝１−［１−（１／ＮＣｔ）］ｎ
【００３１】
本実施形態の保護手法では、τを次の条件式を満たすように設定することで、一定の安全性が確保され、攻撃に耐性を持つＯＲＡＭが構築される。
Ｐ１≦Ｐ２
⇔τ≦ｌｏｇ［１−（１／ＮＣｔ）］ｎ／ｌｏｇ［１−（１／ｄＣｔ）］ｕ
【００３２】
本実施形態の保護手法は、メモリの秘密情報にアクセスするためのプログラム自体に実装され、コンピュータ（保護装置）により実行される。
【００３３】
図１は、本実施形態に係る保護装置１の機能構成を示す図である。
保護装置１は、制御部１１（例えば、ＣＰＵ）と記憶部１２とを備えた情報処理装置（コンピュータ）である。制御部１１は、記憶部１２に格納されたアクセスプログラムを読み込み実行する。
制御部１１は、アクセスプログラムの実行回数を記録する記録部１１１と、実行回数が上限を超えた場合にアクセスプログラムの実行を制限する制限部１１２とを備える。
【００３４】
図２は、本実施形態に係るアクセスプログラムに実装される保護手法の第１の例を示すフローチャートである。
ステップＳ１において、制御部１１は、アクセスプログラムの実行が指示された際に、記録部１１１により記録されている実行回数をカウントアップして、今回までの実行回数を取得する。
【００３５】
ステップＳ２において、制御部１１（制限部１１２）は、実行回数が上限τを超えたか否かを判定する。この判定がＹＥＳの場合、アクセスプログラムは終了し、判定がＮＯの場合、処理はステップＳ３に移る。
【００３６】
ステップＳ３において、制御部１１（記録部１１１）は、更新された実行回数を記録する。
ステップＳ４において、制御部１１は、アクセスプログラムの実行による秘密情報へのアクセスを許可し、メイン処理を実行する。
【００３７】
なお、ステップＳ２において実行を制限（拒否）した場合、制御部１１は、アクセスプログラムを実行できないことを示すエラー出力、及び秘密情報へアクセスするプログラム区間の更新を促す出力を行ってもよい。
ここで、プログラム区間の更新とは、例えば、プログラム中で秘密情報へアクセスするステップの位置（プログラム区間）を移動することである。
【００３８】
図３は、本実施形態に係るアクセスプログラムに実装される保護手法の第２の例を示すフローチャートである。
ステップＳ１１において、制御部１１は、アクセスプログラムの実行が指示された際に、記録部１１１により記録されている実行回数をカウントアップして、今回までの実行回数を取得する。
【００３９】
ステップＳ１２において、制御部１１（制限部１１２）は、実行回数が上限τを超えたか否かを判定する。この判定がＹＥＳの場合、処理はステップＳ１３に移り、判定がＮＯの場合、処理はステップＳ１５に移る。
【００４０】
ステップＳ１３において、制御部１１（制限部１１２）は、アクセスプログラムにおける秘密情報へのアクセス処理のステップを移動する。例えば、プログラムの実行順に関わる外部記憶パラメータ等を更新する。
ステップＳ１４において、制御部１１（記録部１１１）は、実行回数を初期化（１に更新）する。
【００４１】
ステップＳ１５において、制御部１１（記録部１１１）は、更新された実行回数を記録する。
ステップＳ１６において、制御部１１は、アクセスプログラムの実行による秘密情報へのアクセスを許可し、メイン処理を実行する。
【００４２】
本実施形態の保護手法は、メモリの秘密情報にアクセスするためのプログラム自体に実装されるものとして説明したが、本保護手法は、保護装置１がアクセスプログラムとは別の制御プログラムを実行することにより実現してもよい。
例えば、制御プログラムを実行する制御部１１は、制限対象のアクセスプログラムを終了させた後、更新してもよい。
【００４３】
［第２実施形態］
以下、本発明の第２実施形態について説明する。
本実施形態では、第１実施形態のアクセスプログラムにおける実行回数の上限を決定するための最適化装置を提供する。
【００４４】
図４は、本実施形態に係る最適化装置２の機能構成を示す図である。
最適化装置２は、制御部２１（例えば、ＣＰＵ）と、記憶部２２と、入力部２３と、出力部２４とを備えた情報処理装置（コンピュータ）である。
【００４５】
制御部２１は、記憶部２２に格納された最適化プログラムを読み込み実行することにより、決定部２１１として機能し、アクセスプログラムの実行回数の上限τを決定する。
入力部２３は、ユーザから、ＯＲＡＭのブロック構成等のパラメータ（例えば、前述のパラメータＮ，ｍ，ｄ，ｎ，ｔ等）を受け付け、決定部２１１に提供する。
出力部２４は、決定部２１１により決定された実行回数の上限τを出力する。
【００４６】
なお、制御部２１（決定部２１１）は、制限対象であるアクセスプログラム自体を入力とし、決定した実行回数の上限τを埋め込んで更新したアクセスプログラムを出力してもよい。
【００４７】
以上の実施形態によれば、同一のプログラムを複数回実行できる状況を想定し、同一のプログラムによるメモリへの複数のアクセスパターンを利用して秘密情報を復元する攻撃を仮定する。そして、評価指標として攻撃成功確率を導入し、この評価指標に基づき、同一のプログラムを実行できる回数に制限を加えることにより、攻撃に対して耐性のある所定の安全性が確保される。
【００４８】
また、実行回数に制限を加えると、プログラムを通常に利用するための利便性が損なわれる可能性があるため、アクセスパターンを用いない基準となるランダムな攻撃と同等以上の安全性を確保できる回数を上限とすることにより、利便性を損なうことなく、十分な安全性を確保できる。
【００４９】
さらに、実行回数が上限に達した場合に、アクセスプログラムを更新し、秘密情報にアクセスする区間を変更することにより、実行回数をリセットでき、アクセスプログラムの実行が妨げられないため、利便性が向上する。
【００５０】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【００５１】
保護装置１による保護方法、及び最適化装置２による最適化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置（コンピュータ）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【００５２】
１  保護装置
２  最適化装置
１１  制御部
１２  記憶部
２１  制御部
２２  記憶部
２３  入力部
２４  出力部
１１１  記録部
１１２  制限部
２１１  決定部
【図１】
2018207409.tif 000003
【図２】
2018207409.tif 000004
【図３】
2018207409.tif 000005
【図４】
2018207409.tif 000006