特許第6077405号(P6077405)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

<>
  • 特許6077405-記憶装置 図000002
  • 特許6077405-記憶装置 図000003
  • 特許6077405-記憶装置 図000004
  • 特許6077405-記憶装置 図000005
  • 特許6077405-記憶装置 図000006
  • 特許6077405-記憶装置 図000007
  • 特許6077405-記憶装置 図000008
  • 特許6077405-記憶装置 図000009
  • 特許6077405-記憶装置 図000010
  • 特許6077405-記憶装置 図000011
  • 特許6077405-記憶装置 図000012
  • 特許6077405-記憶装置 図000013
  • 特許6077405-記憶装置 図000014
  • 特許6077405-記憶装置 図000015
  • 特許6077405-記憶装置 図000016
  • 特許6077405-記憶装置 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6077405
(24)【登録日】2017年1月20日
(45)【発行日】2017年2月8日
(54)【発明の名称】記憶装置
(51)【国際特許分類】
   G06F 21/79 20130101AFI20170130BHJP
   G09C 1/00 20060101ALI20170130BHJP
【FI】
   G06F21/79
   G09C1/00 610Z
【請求項の数】12
【全頁数】18
(21)【出願番号】特願2013-138728(P2013-138728)
(22)【出願日】2013年7月2日
(65)【公開番号】特開2015-12558(P2015-12558A)
(43)【公開日】2015年1月19日
【審査請求日】2016年2月2日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100122426
【弁理士】
【氏名又は名称】加藤 清志
(72)【発明者】
【氏名】清本 晋作
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】三宅 優
【審査官】 中里 裕正
(56)【参考文献】
【文献】 米国特許出願公開第2015/0006905(US,A1)
【文献】 特開2013−117882(JP,A)
【文献】 米国特許第5123045(US,A)
【文献】 Pinkas, B. and Reinman, T.,Oblivious RAM Revisited,Cryptology ePrint Archive,[online],2010年 6月,Report 2010/366,[2015年3月23日検索],URL,http://eprint.iacr.org/2010/366
【文献】 NAKANO, Y. et al.,Memory Access Pattern Protection for Resource-Constrained Devices,[online],2012年,188-202,[2016年12月22日検索],URL,https://www.cardis.org/proceedings.html
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/79
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、
前記アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データを安全な領域に移動させるデータ移動手段と、
前記暗号化データを安全な領域に移動させた後に、データを復号する復号手段と、
該復号したデータxと前記データxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する保管手段と、
前記データxを用いた処理が完了し、データをメモリに移動させる際に、データの暗号化に用いる新たな鍵を生成する鍵生成手段と、
前記データxに前記シーケンス番号を付加した情報に対して、該生成した鍵を用いて暗号化した情報E(x)´を生成する暗号化手段と、
該暗号化手段により暗号化された情報E(x)´を元の前記アクセス領域に格納する格納手段と、
を備えたことを特徴とする記憶装置。
【請求項2】
メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、
前記アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データを安全な領域に移動させるデータ移動手段と、
前記暗号化データを安全な領域に移動させた後に、データを復号する復号手段と、
該復号したデータxと前記データxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する保管手段と、
前記データxを用いた処理が完了し、データをメモリに移動させる際に、データの暗号化に用いる新たな鍵を生成する鍵生成手段と、
前記データxと前記シーケンス番号との演算を行った情報に対して、該生成した鍵を用いて暗号化した情報E(x)´を生成する暗号化手段と、
該暗号化手段により暗号化された情報E(x)´を元の前記アクセス領域に格納する格納手段と、
を備えたことを特徴とする記憶装置。
【請求項3】
前記鍵生成手段が、
乱数を生成する乱数生成手段と、
秘密情報を格納した一方向性関数器と、
を備え、
該生成した乱数を前記一方向性関数器に入力して、前記新たな鍵を生成することを特徴とする請求項1または請求項2に記載の記憶装置。
【請求項4】
前記一方向性関数器が、複数直列に配置されるとともに、前記秘密情報が難読化処理されており、一連の鍵生成を終了したときに、前記秘密情報を最後の出力鍵に書き換えることを特徴とする請求項3に記載の記憶装置。
【請求項5】
前記一方向性関数器がsponge関数器であることを特徴とする請求項3または請求項4に記載の記憶装置。
【請求項6】
前記一方向性関数器がsponge関数器の出力レートが安全性を考慮した出力レートに設定されていることを特徴とする請求項5に記載の記憶装置。
【請求項7】
前記暗号化手段が、
前記鍵生成手段が新たに生成した鍵とCPUのワードサイズに相当する暗号化する情報とを入力する入力手段と、
複数の非線形関数器と、
前記暗号化する情報を攪拌する攪拌手段と、
を備えたことを特徴とする請求項1から請求項6のいずれかに記載の記憶装置。
【請求項8】
暗号化情報を出力する出力手段を備え、
前記攪拌手段が、偏りなく攪拌されるように、前記入力手段の出力部および前記出力手段の入力部に設けられた排他的論理和演算器であり、前記出力手段が該攪拌された情報と前記鍵生成手段が前記新たに生成した鍵とを入力して暗号化情報を出力することを特徴とする請求項7に記載の記憶装置。
【請求項9】
前記攪拌手段が、ShiftRowであって、攪拌後の情報をMixColumnで処理して、暗号化情報を出力することを特徴とする請求項7に記載の記憶装置。
【請求項10】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項9のいずれかに記載の記憶装置。
【請求項11】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項9のいずれかに記載の記憶装置。
【請求項12】
前記アクセスパターンの保護方法が、
初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、
前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、
1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第3のステップと、
アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、
を備えたことを特徴とする請求項1から請求項9のいずれかに記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アクセスパターンの保護に適した記憶装置に関する。
【背景技術】
【0002】
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃としては、メモリアクセスを解析し秘密情報を復元する攻撃がある。こうした攻撃に対応して、メモリアクセスを攻撃者から保護するためにOblivious RAMが注目を集めている(例えば、非特許文献1および非特許文献2参照。)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Oded Goldreich and Rafail Ostrovsky, “Software protection and simulation on oblivious RAMS,” J. ACM, 43(3):431−473, 1996.
【非特許文献2】Joan Daemen, Vincent Rijmen, “The design of Rijndael AES Advanced Encryption Standard“, Springer, 2002.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところが、非特許文献1などで検討されているOblivious RAMによるメモリの保護は、安全な暗号方式によってデータは保護されているとの前提のもとに、アクセスのパターンを保護することでメモリへのアクセスを保護している。ORAMによってデータにアクセスを行う場合、それがデータの変化を伴わない読み出し処理であっても、読み出し処理であったという事実を保護するためにデータをメモリに戻す際にデータが別の値に変化している必要がある。これを実現する最もシンプルな方法は、データごとに異なる鍵を予め用意し、アクセスのたびに鍵の更新と新しい鍵での再暗号化を行う方式である。しかし、この方式では、データの分だけ鍵を用意し、それを安全に保管しておく必要があるため、現実的ではない。また、単に鍵をプログラムに埋め込んだ場合には、それ以降の処理の安全性が保証されず、また実行時に同じ鍵を使うことは漏えいリスクと高める要因となる。
【0005】
そこで、本発明は、上述の課題に鑑みてなされたものであり、アクセスパターンの保護に適した記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【0007】
(1)本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、前記アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データを安全な領域に移動させるデータ移動手段と、前記暗号化データを安全な領域に移動させた後に、データを復号する復号手段と、該復号したデータxと前記データxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する保管手段と、前記データxを用いた処理が完了し、データをメモリに移動させる際に、データの暗号化に用いる新たな鍵を生成する鍵生成手段と、前記データxに前記シーケンス番号を付加した情報に対して、該生成した鍵を用いて暗号化した情報E(x)´を生成する暗号化手段と、該暗号化手段により暗号化された情報E(x)´を元の前記アクセス領域に格納する格納手段と、を備えたことを特徴とする記憶装置を提案している。
【0008】
(2)本発明は、メモリをデータのアクセス領域と非アクセス領域とに分割し、履歴データを記憶する記憶領域を備えた記憶装置であって、前記アクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、前記暗号化データを安全な領域に移動させるデータ移動手段と、前記暗号化データを安全な領域に移動させた後に、データを復号する復号手段と、該復号したデータxと前記データxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する保管手段と、前記データxを用いた処理が完了し、データをメモリに移動させる際に、データの暗号化に用いる新たな鍵を生成する鍵生成手段と、前記データxと前記シーケンス番号との演算を行った情報に対して、該生成した鍵を用いて暗号化した情報E(x)´を生成する暗号化手段と、該暗号化手段により暗号化された情報E(x)´を元の前記アクセス領域に格納する格納手段と、を備えたことを特徴とする記憶装置を提案している。
【0009】
(3)本発明は、(1)または(2)の記憶装置について、前記鍵生成手段が、乱数を生成する乱数生成手段と、秘密情報を格納した一方向性関数器と、を備え、該生成した乱数を前記一方向性関数器に入力して、前記新たな鍵を生成することを特徴とする記憶装置を提案している。
【0010】
(4)本発明は、(3)の記憶装置について、前記一方向性関数器が、複数直列に配置されるとともに、前記秘密情報が難読化処理されており、一連の鍵生成を終了したときに、前記秘密情報を最後の出力鍵に書き換えることを特徴とする記憶装置を提案している。
【0011】
(5)本発明は、(3)または(4)の記憶装置について、前記一方向性関数器がsponge関数器であることを特徴とする記憶装置を提案している。
【0012】
(6)本発明は、(5)の記憶装置について、前記一方向性関数器がsponge関数器の出力レートが安全性を考慮した出力レートに設定されていることを特徴とする記憶装置を提案している。
【0013】
(7)本発明は、(1)から(6)の記憶装置について、前記暗号化手段が、前記鍵生成手段が新たに生成した鍵とCPUのワードサイズに相当する暗号化する情報とを入力する入力手段と、複数の非線形関数器と、前記暗号化する情報を攪拌する攪拌手段と、を備えたことを特徴とする記憶装置を提案している。
【0014】
(8)本発明は、(7)の記憶装置について、暗号化情報を出力する出力手段を備え、前記攪拌手段が、偏りなく攪拌されるように、前記入力手段の出力部および前記出力手段の入力部に設けられた排他的論理和演算器であり、前記出力手段が該攪拌された情報と前記鍵生成手段が前記新たに生成した鍵とを入力して暗号化情報を出力することを特徴とする記憶装置を提案している。
【0015】
(9)本発明は、(7)の記憶装置について、前記攪拌手段が、ShiftRowであって、攪拌後の情報をMixColumnで処理して、暗号化情報を出力することを特徴とする記憶装置を提案している。
【0016】
(10)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【0017】
(11)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【0018】
(12)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
【発明の効果】
【0019】
本発明によれば、アクセスパターン保護向けの鍵の安全な更新が可能となる。アクセスパターン保護と組み合わせて利用することで、リモートストレージに対するアクセスの安全性を高めることができるという効果がある。
【0020】
また、本発明によれば、アクセスをするデータを安全な領域で復号し、メモリに移動させる際に、データとシーケンス番号を結合したもの、データとシーケンス番号とを演算したものを暗号化して格納する。そのため、シーケンス番号を知らない第三者(攻撃者)には、データの復号ができないため、安全性を担保することができるという効果がある。
【図面の簡単な説明】
【0021】
図1】本発明に係る記憶装置の構成を示す図である。
図2】本発明に係る記憶装置の処理の概略を示す図である。
図3】本発明に係る記憶装置における鍵生成部の概略を示す図である。
図4】本発明に係る記憶装置における暗号化の概略を示す図である。
図5】本発明に係る記憶装置における暗号化部の構成を示す図である。
図6】本発明に係る記憶装置における暗号化部の構成を示す図である。
図7】本発明に係る記憶装置における暗号化部による入力データと攪拌後のデータとの関係を示す図である。
図8】本発明の第1の実施形態に係るアクセスパターン保護部の構成を示す図である。
図9】本発明の第1の実施形態に係るアクセスパターン保護部の処理を示す図である。
図10】本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
図11】本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
図12】本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。
図13】本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。
図14】本発明の実施例に係るアクセス時の記憶領域内のデータの遷移を示す図である。
図15】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
図16】本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0023】
<記憶装置の構成>
図1から図7を用いて、本発明の記憶装置の構成について説明する。
本発明の記憶装置は、図1に示すように、アクセスパターン保護部100と、記憶領域200と、データ移動部10と、キャッシュ部20と、復号化部30と、保管部40と、暗号化部50と、鍵生成部60とから構成されている。なお、アクセスパターン保護部100の詳細については、後述する。
【0024】
記憶領域200は、データのアクセス領域と非アクセス領域と履歴領域とに分割されている。なお、アクセス領域、非アクセス領域、履歴領域は、DRAM、SRAM等の書き換え可能なメモリで構成される。また、アクセス領域を耐タンパ性を備えたDRAM、SRAM等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置は、例えば、RAM等の一般的な記憶装置ばかりでなく、SIMやICカード等の記憶媒体も含むものである。
【0025】
データ移動部10は、記憶領域200内のアクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、暗号化データを安全なキャッシュ部20(例えば、レジスタ)に移動させる。なお、アクセスパターンの保護方法については、その例を後述する。
【0026】
復号化部30は、安全なキャッシュ部20に移動された暗号化データを復号する。保管部40は、復号したデータxとデータxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する。なお、暗号化処理を行う前には、すべてのシーケンス番号を保管するが、暗号化処理後は、後述する暗号化方法のうち、データxとシーケンス番号とを演算した情報に対して、暗号化した場合にのみ、シーケンス番号を保管する。
【0027】
鍵生成部60は、データxを用いた処理が完了し、データをメモリに移動させる際に、データの暗号化に用いる新たな鍵を生成する。具体的には、図3に示すように、鍵生成部60は、乱数生成器61と、一方向性関数器62A、・・・、62Nと、秘密情報更新部63とから構成され、乱数生成器61が生成した乱数を一方向性関数器62A、・・・、62Nに入力して、新たな鍵を生成する。図3において、鍵1は、最初に生成される64*(n+1)ビットの鍵であり、一定期間後に次々と更新される。なお、AESをnラウンドの方式として使用する場合、64*(n+1)ビットの鍵の入力が必要となる。乱数生成器61は、プログラム起動時に、ランダムに乱数を生成する。一方向性関数器62A、・・・、62Nは、1ラウンド分用意され、秘密情報が格納されている。なお、一方向性関数としては、ハッシュ関数の一種であるsponge関数が好ましい。また、図3の例では、レート1/4の鍵生成(出力データの内の1/4が鍵として使用される)であるが、安全性と性能のトレードオフがあるため、より高いレートを用いても良い。さらに、秘密情報は、難読化等の手法によりプログラムの中に安全に埋め込まれるが、さらにプログラム終了時にこのデータを自ら書き換えることで、鍵の漏えいリスクを最小化する。なお、新たに埋め込む秘密情報は、上記関数の最終出力を利用する。
【0028】
暗号化部50は、データxにシーケンス番号を付加した情報あるいはデータxとシーケンス番号とを演算した情報に対して、生成した鍵を用いて暗号化した情報E(x)´を生成する。
【0029】
つまり、図2に示すように、データE(x)に対して、アクセスする場合には、このデータをまず、安全な領域であるキャッシュ部20に移動し、ここで、復号化してデータxを取り出す。データxに対して処理が終了すると、暗号化部50において、図4に例示するように、データxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報に対して、鍵生成部60が生成した鍵を用いて暗号化した情報E(x)´を生成し、これをメモリに戻す。なお、データE(x)の暗号化も上述の情報E(x)´の暗号化と同様の手法で行われる。したがって、アクセスデータに対する処理の前後において、異なった情報がメモリに戻されるため、例えば、不正な攻撃者にアクセスパターンが漏洩することを防止することができる。なお、暗号化部50については、その詳細を後述する。
【0030】
<暗号化部の構成>
図5および図6は、本発明の暗号化部50内部の構成の一例を示している。なお、図5および図6は、1ラウンド(ラウンド関数)を示した図であり、実際には、ラウンド関数を繰り返し適用してデータの暗号化を行う。ここで、各ラウンドで入力される鍵は鍵生成部60が生成する鍵である。本発明の暗号方式では、プログラムの実行中のみデータを保護出来れば良いため、従来よりも低い安全性の暗号方式でも十分であり、オーバーヘッドを小さく抑えるために各種パラメータをより高速化に適した設定にすることが望ましい。また、現在主流のブロック暗号は128ビットであり、128ビットを最小の処理単位としている。しかし、CPUのワードサイズは64ビットが主流であり、これに合わせたほうがより効率的である。
【0031】
図5に示す暗号化部50は、入力部51と、排他的論理和演算器(XOR)52a、52bと、非線形関数(S−Box)53a〜53hと、Mix Column54a、54bと、出力部55とから構成されている。ここで、入力データは、前述のデータxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報であり、これらが64bit単位のデータになっている。また、暗号化に用いられる鍵は、入力データ長と同様の64bitの鍵であり、鍵生成部60により生成された鍵が用いられる。
【0032】
図5のうち、2つの排他的論理和演算器(XOR)52a、52bは、データ攪拌を行っている。図5の例では、2つの排他的論理和演算器(XOR)52a、52bを用いることにより、偏りのないデータ攪拌を実現している。
【0033】
図6に示す暗号化部50は、入力部56と、非線形関数群(S−Box)57と、Shift Row58と、Mix Column59とから構成されている。ここで、入力データは、前述のデータxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報であり、これらが64bit単位のデータになっている。また、暗号化に用いられる鍵は、入力データ長と同様の64bitの鍵であり、鍵生成部60により生成された鍵が用いられる。
【0034】
図6のうち、Shift Row58は、データ攪拌を行っている。図6の例では、Shift Row58を用いることにより、図7に示すようなデータの攪拌を実現している。
【0035】
<第1の実施形態>
図8から図9を用いて、本発明の実施形態について説明する。
【0036】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部100は、図8に示すように、並べ替え部110と、移動部120と、制御部130と、書き出し部140と、保存部150とから構成されている。
【0037】
並べ替え部110は、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替える。移動部120は、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる。
【0038】
制御部130は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0039】
例えば、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【0040】
なお、制御部130は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、有効に、アクセスパターンを保護することができる。
【0041】
書き出し部140は、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す。保存部150は、アクセス領域から非アクセス領域に移動したデータを履歴領域に履歴データとして保存する。
【0042】
<アクセスパターン保護部の処理>
図9を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【0043】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS200)。
【0044】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS300)。
【0045】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS400)。
【0046】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0047】
<第2の実施形態>
図10から図11を用いて、本発明の実施形態について説明する。
【0048】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、図10に示すように、並べ替え部110と、移動部120と、制御部131と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
【0049】
制御部131は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0050】
例えば、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
【0051】
なお、制御部131は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【0052】
<記憶装置の処理>
図11を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
【0053】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS110)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS210)。
【0054】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS310)。
【0055】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS410)。
【0056】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0057】
<第3の実施形態>
図12から図13を用いて、本発明の実施形態について説明する。
【0058】
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、図12に示すように、並べ替え部110と、移動部120と、制御部132と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
【0059】
制御部132は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
【0060】
例えば、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する。
【0061】
なお、制御部132は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
【0062】
<アクセスパターン保護部の処理>
図13を用いて、本実施形態に係る記憶装置の処理について説明する。
【0063】
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS120)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS220)。
【0064】
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する(ステップS320)。
【0065】
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS420)。
【0066】
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域からランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
【0067】
<実施例>
図14から図16を用いて、本発明の実施例について説明する。
【0068】
図14は、1、2、・・・、9、A、B、・・・、Fをメモリに保存されているデータとしたときに、プログラムが、5→D→8→5→Aの順にデータにアクセスする場合のメモリの遷移を示したものである。以下、図14図15を用いて、この処理を例示とし、説明する。なお、図14の例にかかわらず、非アクセス領域をさらに複数に分割してもよい。
【0069】
まず、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替え(ステップS1100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS1200)。
【0070】
そして、まず、5にアクセスする場合には、5はアクセス領域に含まれないため、5ともう一つランダムに選択されたデータ(図14では、2)をアクセス領域に移動し、例えば、これにより、アクセス領域から移動する4とBとを履歴領域に保存して、5にアクセスする。このとき、アクセス領域内の他のデータ(図14では、2、3、8)に対してもアクセスを行う(ステップS1300)。
【0071】
次に、Dにアクセスする場合には、Dはアクセス領域に含まれないため、Dをアクセス領域に移動し、もう一つのデータは、履歴領域から選択する(例えば、図14では、B)。これにより、アクセス領域から移動する5と8とを履歴領域に保存して、Dにアクセスする。このとき、アクセス領域内の他のデータ(図14では、3、B、2)に対してもアクセスを行う(ステップS1400)。
【0072】
さらに、8にアクセスする場合には、8は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図14では、A)、アクセス領域に移動する。これにより、アクセス領域から移動する3とBとを履歴領域に保存して、8にアクセスする。このとき、アクセス領域内の他のデータ(図14では、A、D、2)に対してもアクセスを行う(ステップS1500)。
【0073】
さらに、5にアクセスする場合、5は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図14では、6)、アクセス領域に移動する。これにより、アクセス領域から移動する2と8とを履歴領域に保存して、5にアクセスする。また、アクセス領域内の他のデータ(図14では、A、D、6)に対してもアクセスを行う(ステップS1600)。
【0074】
最後に、Aにアクセスする場合、Aはアクセス領域に含まれているため、アクセス領域に含まれないランダムに選択したデータと履歴領域に保存されているデータとを(図14では、3、F)、アクセス領域に移動する。これにより、アクセス領域から移動する6とDとが非アクセス領域に書き出され、Aにアクセスする。また、アクセス領域内の他のデータ(図14では、5、F、3)に対してもアクセスを行う(ステップS1700)。
【0075】
そして、すべての処理が完了するとアクセス領域内の必要なデータを書き出して、終了する(ステップS1800)。
【0076】
したがって、本実施例によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができるという効果がある。また、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うことから、データのアクセスパターンを保護することができるという効果がある。さらに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うため、さらに、データのアクセスパターンを保護することができる。また、プログラムによってアクセスされるデータに対して、ランダムに選択したデータを取り込むことによって、安全性を保ちつつ、アクセスパターンの保護において、必要な保存領域を削減することができる。
【0077】
なお、記憶装置の処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを記憶装置に読み込ませ、実行することによって本発明の記憶装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0078】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0079】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0080】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0081】
10;データ移動部
20;キャッシュ部
30;復号化部
40;保管部
50;暗号化部
60;鍵生成部
61;乱数生成器
62;一方向性関数器
63;秘密情報更新部
100;アクセスパターン保護部
110;並べ替え部
120;移動部
130;制御部
131;制御部
132;制御部
140;書き出し部
150;保存部
200;記憶領域
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16