JP6077405B2 - 記憶装置 - Google Patents

記憶装置 Download PDF

Info

Publication number
JP6077405B2
JP6077405B2 JP2013138728A JP2013138728A JP6077405B2 JP 6077405 B2 JP6077405 B2 JP 6077405B2 JP 2013138728 A JP2013138728 A JP 2013138728A JP 2013138728 A JP2013138728 A JP 2013138728A JP 6077405 B2 JP6077405 B2 JP 6077405B2
Authority
JP
Japan
Prior art keywords
data
access area
area
access
accessed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013138728A
Other languages
English (en)
Other versions
JP2015012558A (ja
Inventor
清本 晋作
晋作 清本
有登 仲野
有登 仲野
三宅 優
優 三宅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2013138728A priority Critical patent/JP6077405B2/ja
Publication of JP2015012558A publication Critical patent/JP2015012558A/ja
Application granted granted Critical
Publication of JP6077405B2 publication Critical patent/JP6077405B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、アクセスパターンの保護に適した記憶装置に関する。
近年、暗号に対するサイドチャネル攻撃と呼ばれる攻撃が大きな問題となっている。ソフトウェアに対するサイドチャネル攻撃としては、メモリアクセスを解析し秘密情報を復元する攻撃がある。こうした攻撃に対応して、メモリアクセスを攻撃者から保護するためにOblivious RAMが注目を集めている(例えば、非特許文献1および非特許文献2参照。)。
Oded Goldreich and Rafail Ostrovsky, "Software protection and simulation on oblivious RAMS," J. ACM, 43(3):431−473, 1996. Joan Daemen, Vincent Rijmen, "The design of Rijndael AES Advanced Encryption Standard", Springer, 2002.
ところが、非特許文献1などで検討されているOblivious RAMによるメモリの保護は、安全な暗号方式によってデータは保護されているとの前提のもとに、アクセスのパターンを保護することでメモリへのアクセスを保護している。ORAMによってデータにアクセスを行う場合、それがデータの変化を伴わない読み出し処理であっても、読み出し処理であったという事実を保護するためにデータをメモリに戻す際にデータが別の値に変化している必要がある。これを実現する最もシンプルな方法は、データごとに異なる鍵を予め用意し、アクセスのたびに鍵の更新と新しい鍵での再暗号化を行う方式である。しかし、この方式では、データの分だけ鍵を用意し、それを安全に保管しておく必要があるため、現実的ではない。また、単に鍵をプログラムに埋め込んだ場合には、それ以降の処理の安全性が保証されず、また実行時に同じ鍵を使うことは漏えいリスクと高める要因となる。
そこで、本発明は、上述の課題に鑑みてなされたものであり、アクセスパターンの保護に適した記憶装置を提供することを目的とする。
本発明は、上記の課題を解決するために、以下の事項を提案している。
(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)本発明は、(3)または(4)の記憶装置について、前記一方向性関数器がsponge関数器であることを特徴とする記憶装置を提案している。
(6)本発明は、(5)の記憶装置について、前記一方向性関数器がsponge関数器の出力レートが安全性を考慮した出力レートに設定されていることを特徴とする記憶装置を提案している。
(7)本発明は、(1)から(6)の記憶装置について、前記暗号化手段が、前記鍵生成手段が新たに生成した鍵とCPUのワードサイズに相当する暗号化する情報とを入力する入力手段と、複数の非線形関数器と、前記暗号化する情報を攪拌する攪拌手段と、を備えたことを特徴とする記憶装置を提案している。
(8)本発明は、(7)の記憶装置について、暗号化情報を出力する出力手段を備え、前記攪拌手段が、偏りなく攪拌されるように、前記入力手段の出力部および前記出力手段の入力部に設けられた排他的論理和演算器であり、前記出力手段が該攪拌された情報と前記鍵生成手段が前記新たに生成した鍵とを入力して暗号化情報を出力することを特徴とする記憶装置を提案している。
(9)本発明は、(7)の記憶装置について、前記攪拌手段が、ShiftRowであって、攪拌後の情報をMixColumnで処理して、暗号化情報を出力することを特徴とする記憶装置を提案している。
(10)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域および履歴領域に存在せず、前記非アクセス領域に存在し、前記履歴領域に保存されたデータがある場合に、前記アクセスを行うデータと前記履歴領域に保存された任意のデータとを前記2つのデータとして選択して、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
(11)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、前記履歴領域に保存されていないデータをランダムに選択し、前記アクセスを行うデータと前記ランダムに選択したデータとを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記履歴領域に移動して保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
(12)本発明は、(1)から(9)の記憶装置について、前記アクセスパターンの保護方法が、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替える第1のステップと、前記非アクセス領域内のデータを前記アクセス領域のメモリサイズに応じて選択して、前記アクセス領域に移動させる第2のステップと、1つのデータにアクセスが生じたときに、2つのデータを選択し、前記アクセス領域と非アクセス領域との間でデータ交換を行う際に、前記アクセス領域内の他のデータについてもアクセスを行って、前記アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが前記アクセス領域に保存されている場合に、前記非アクセス領域と履歴領域とからランダムに選択したデータを前記2つのデータとし、前記アクセス領域に移動して、移動したデータサイズに応じて、前記アクセス領域にあった任意のデータを前記非アクセス領域に移動し、これらのデータを前記履歴領域に保存する第3のステップと、アクセスすべきデータへのアクセス処理が終了したときに、前記アクセス領域内の必要なデータを書き出す第4のステップと、を備えたことを特徴とする記憶装置を提案している。
本発明によれば、アクセスパターン保護向けの鍵の安全な更新が可能となる。アクセスパターン保護と組み合わせて利用することで、リモートストレージに対するアクセスの安全性を高めることができるという効果がある。
また、本発明によれば、アクセスをするデータを安全な領域で復号し、メモリに移動させる際に、データとシーケンス番号を結合したもの、データとシーケンス番号とを演算したものを暗号化して格納する。そのため、シーケンス番号を知らない第三者(攻撃者)には、データの復号ができないため、安全性を担保することができるという効果がある。
本発明に係る記憶装置の構成を示す図である。 本発明に係る記憶装置の処理の概略を示す図である。 本発明に係る記憶装置における鍵生成部の概略を示す図である。 本発明に係る記憶装置における暗号化の概略を示す図である。 本発明に係る記憶装置における暗号化部の構成を示す図である。 本発明に係る記憶装置における暗号化部の構成を示す図である。 本発明に係る記憶装置における暗号化部による入力データと攪拌後のデータとの関係を示す図である。 本発明の第1の実施形態に係るアクセスパターン保護部の構成を示す図である。 本発明の第1の実施形態に係るアクセスパターン保護部の処理を示す図である。 本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。 本発明の第2の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。 本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の構成を示す図である。 本発明の第3の実施形態に係る記憶装置におけるアクセスパターン保護部の処理を示す図である。 本発明の実施例に係るアクセス時の記憶領域内のデータの遷移を示す図である。 本発明の実施例に係るアクセスパターン保護部の処理を示す図である。 本発明の実施例に係るアクセスパターン保護部の処理を示す図である。
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<記憶装置の構成>
図1から図7を用いて、本発明の記憶装置の構成について説明する。
本発明の記憶装置は、図1に示すように、アクセスパターン保護部100と、記憶領域200と、データ移動部10と、キャッシュ部20と、復号化部30と、保管部40と、暗号化部50と、鍵生成部60とから構成されている。なお、アクセスパターン保護部100の詳細については、後述する。
記憶領域200は、データのアクセス領域と非アクセス領域と履歴領域とに分割されている。なお、アクセス領域、非アクセス領域、履歴領域は、DRAM、SRAM等の書き換え可能なメモリで構成される。また、アクセス領域を耐タンパ性を備えたDRAM、SRAM等の書き換え可能なメモリで構成してもよい。なお、本発明の記憶装置は、例えば、RAM等の一般的な記憶装置ばかりでなく、SIMやICカード等の記憶媒体も含むものである。
データ移動部10は、記憶領域200内のアクセス領域に格納されている暗号化データE(x)に対してアクセスを行う場合に、任意のアクセスパターンの保護方法を用いて、暗号化データを安全なキャッシュ部20(例えば、レジスタ)に移動させる。なお、アクセスパターンの保護方法については、その例を後述する。
復号化部30は、安全なキャッシュ部20に移動された暗号化データを復号する。保管部40は、復号したデータxとデータxに対して何度アクセスを行ったかを記録したシーケンス番号とを保管する。なお、暗号化処理を行う前には、すべてのシーケンス番号を保管するが、暗号化処理後は、後述する暗号化方法のうち、データxとシーケンス番号とを演算した情報に対して、暗号化した場合にのみ、シーケンス番号を保管する。
鍵生成部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が鍵として使用される)であるが、安全性と性能のトレードオフがあるため、より高いレートを用いても良い。さらに、秘密情報は、難読化等の手法によりプログラムの中に安全に埋め込まれるが、さらにプログラム終了時にこのデータを自ら書き換えることで、鍵の漏えいリスクを最小化する。なお、新たに埋め込む秘密情報は、上記関数の最終出力を利用する。
暗号化部50は、データxにシーケンス番号を付加した情報あるいはデータxとシーケンス番号とを演算した情報に対して、生成した鍵を用いて暗号化した情報E(x)´を生成する。
つまり、図2に示すように、データE(x)に対して、アクセスする場合には、このデータをまず、安全な領域であるキャッシュ部20に移動し、ここで、復号化してデータxを取り出す。データxに対して処理が終了すると、暗号化部50において、図4に例示するように、データxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報に対して、鍵生成部60が生成した鍵を用いて暗号化した情報E(x)´を生成し、これをメモリに戻す。なお、データE(x)の暗号化も上述の情報E(x)´の暗号化と同様の手法で行われる。したがって、アクセスデータに対する処理の前後において、異なった情報がメモリに戻されるため、例えば、不正な攻撃者にアクセスパターンが漏洩することを防止することができる。なお、暗号化部50については、その詳細を後述する。
<暗号化部の構成>
図5および図6は、本発明の暗号化部50内部の構成の一例を示している。なお、図5および図6は、1ラウンド(ラウンド関数)を示した図であり、実際には、ラウンド関数を繰り返し適用してデータの暗号化を行う。ここで、各ラウンドで入力される鍵は鍵生成部60が生成する鍵である。本発明の暗号方式では、プログラムの実行中のみデータを保護出来れば良いため、従来よりも低い安全性の暗号方式でも十分であり、オーバーヘッドを小さく抑えるために各種パラメータをより高速化に適した設定にすることが望ましい。また、現在主流のブロック暗号は128ビットであり、128ビットを最小の処理単位としている。しかし、CPUのワードサイズは64ビットが主流であり、これに合わせたほうがより効率的である。
図5に示す暗号化部50は、入力部51と、排他的論理和演算器(XOR)52a、52bと、非線形関数(S−Box)53a〜53hと、Mix Column54a、54bと、出力部55とから構成されている。ここで、入力データは、前述のデータxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報であり、これらが64bit単位のデータになっている。また、暗号化に用いられる鍵は、入力データ長と同様の64bitの鍵であり、鍵生成部60により生成された鍵が用いられる。
図5のうち、2つの排他的論理和演算器(XOR)52a、52bは、データ攪拌を行っている。図5の例では、2つの排他的論理和演算器(XOR)52a、52bを用いることにより、偏りのないデータ攪拌を実現している。
図6に示す暗号化部50は、入力部56と、非線形関数群(S−Box)57と、Shift Row58と、Mix Column59とから構成されている。ここで、入力データは、前述のデータxにシーケンス番号cを付加した情報あるいはデータxとシーケンス番号cとを演算した情報であり、これらが64bit単位のデータになっている。また、暗号化に用いられる鍵は、入力データ長と同様の64bitの鍵であり、鍵生成部60により生成された鍵が用いられる。
図6のうち、Shift Row58は、データ攪拌を行っている。図6の例では、Shift Row58を用いることにより、図7に示すようなデータの攪拌を実現している。
<第1の実施形態>
図8から図9を用いて、本発明の実施形態について説明する。
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部100は、図8に示すように、並べ替え部110と、移動部120と、制御部130と、書き出し部140と、保存部150とから構成されている。
並べ替え部110は、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替える。移動部120は、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる。
制御部130は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
例えば、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
なお、制御部130は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、有効に、アクセスパターンを保護することができる。
書き出し部140は、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す。保存部150は、アクセス領域から非アクセス領域に移動したデータを履歴領域に履歴データとして保存する。
<アクセスパターン保護部の処理>
図9を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS200)。
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS300)。
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS400)。
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域および履歴領域に存在せず、非アクセス領域に存在し、履歴領域に保存されたデータがある場合に、アクセスを行うデータと履歴領域に保存された任意のデータとを2つのデータとして選択して、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
<第2の実施形態>
図10から図11を用いて、本発明の実施形態について説明する。
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、図10に示すように、並べ替え部110と、移動部120と、制御部131と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
制御部131は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
例えば、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する。
なお、制御部131は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
<記憶装置の処理>
図11を用いて、本実施形態に係るアクセスパターン保護部の処理について説明する。
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS110)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS210)。
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存する(ステップS310)。
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS410)。
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータが履歴領域に保存されている場合に、履歴領域に保存されていないデータをランダムに選択し、アクセスを行うデータとランダムに選択したデータとを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
<第3の実施形態>
図12から図13を用いて、本発明の実施形態について説明する。
<アクセスパターン保護部の構成>
本実施形態に係るアクセスパターン保護部は、図12に示すように、並べ替え部110と、移動部120と、制御部132と、書き出し部140と、保存部150とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
制御部132は、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行う。
例えば、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する。
なお、制御部132は、他のプロセス、あるいは、他の時刻で使用されるデータを対象としてランダムにデータを選択する。これにより、ランダムなデータの付加を不要とすることができる。
<アクセスパターン保護部の処理>
図13を用いて、本実施形態に係る記憶装置の処理について説明する。
まず、初期状態において、1度だけ、前記非アクセス領域内のデータをランダムに並び替え(ステップS120)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS220)。
次に、1つのデータにアクセスが生じたときに、2つのデータを選択し、アクセス領域と非アクセス領域との間でデータ交換を行う際に、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うとともに、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域とからランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを非アクセス領域に移動し、これらのデータを履歴領域に保存する(ステップS320)。
そして、アクセスすべきデータへのアクセス処理が終了したときに、アクセス領域内の必要なデータを書き出す(ステップS420)。
以上、説明したように、本実施形態によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができる。また、アクセスを行うデータがアクセス領域に保存されている場合に、非アクセス領域と履歴領域からランダムに選択したデータを2つのデータとし、アクセス領域に移動して、移動したデータサイズに応じて、アクセス領域にあった任意のデータを履歴領域に移動して保存することから、有効に、アクセスパターンを保護することができる。
<実施例>
図14から図16を用いて、本発明の実施例について説明する。
図14は、1、2、・・・、9、A、B、・・・、Fをメモリに保存されているデータとしたときに、プログラムが、5→D→8→5→Aの順にデータにアクセスする場合のメモリの遷移を示したものである。以下、図14、図15を用いて、この処理を例示とし、説明する。なお、図14の例にかかわらず、非アクセス領域をさらに複数に分割してもよい。
まず、初期状態において、1度だけ、非アクセス領域内のデータをランダムに並び替え(ステップS1100)、非アクセス領域内のデータをアクセス領域のメモリサイズに応じて選択して、アクセス領域に移動させる(ステップS1200)。
そして、まず、5にアクセスする場合には、5はアクセス領域に含まれないため、5ともう一つランダムに選択されたデータ(図14では、2)をアクセス領域に移動し、例えば、これにより、アクセス領域から移動する4とBとを履歴領域に保存して、5にアクセスする。このとき、アクセス領域内の他のデータ(図14では、2、3、8)に対してもアクセスを行う(ステップS1300)。
次に、Dにアクセスする場合には、Dはアクセス領域に含まれないため、Dをアクセス領域に移動し、もう一つのデータは、履歴領域から選択する(例えば、図14では、B)。これにより、アクセス領域から移動する5と8とを履歴領域に保存して、Dにアクセスする。このとき、アクセス領域内の他のデータ(図14では、3、B、2)に対してもアクセスを行う(ステップS1400)。
さらに、8にアクセスする場合には、8は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図14では、A)、アクセス領域に移動する。これにより、アクセス領域から移動する3とBとを履歴領域に保存して、8にアクセスする。このとき、アクセス領域内の他のデータ(図14では、A、D、2)に対してもアクセスを行う(ステップS1500)。
さらに、5にアクセスする場合、5は履歴領域に含まれているため、もう一つのデータは履歴領域に含まれないデータをランダムに選択し(図14では、6)、アクセス領域に移動する。これにより、アクセス領域から移動する2と8とを履歴領域に保存して、5にアクセスする。また、アクセス領域内の他のデータ(図14では、A、D、6)に対してもアクセスを行う(ステップS1600)。
最後に、Aにアクセスする場合、Aはアクセス領域に含まれているため、アクセス領域に含まれないランダムに選択したデータと履歴領域に保存されているデータとを(図14では、3、F)、アクセス領域に移動する。これにより、アクセス領域から移動する6とDとが非アクセス領域に書き出され、Aにアクセスする。また、アクセス領域内の他のデータ(図14では、5、F、3)に対してもアクセスを行う(ステップS1700)。
そして、すべての処理が完了するとアクセス領域内の必要なデータを書き出して、終了する(ステップS1800)。
したがって、本実施例によれば、非アクセス領域内のデータの並べ替えを1度しか行わないため、所定のタイミングで、何度もデータの並べ替えを行うOblivious RAMのように、オーバーヘッドが大きくなることを防止することができるという効果がある。また、1つのデータにアクセスが生じたときに、アクセス領域と非アクセス領域との間でデータ交換を行うことから、データのアクセスパターンを保護することができるという効果がある。さらに、アクセス領域内の他のデータについてもアクセスを行って、アクセス領域と非アクセス領域との間でデータ交換を行うため、さらに、データのアクセスパターンを保護することができる。また、プログラムによってアクセスされるデータに対して、ランダムに選択したデータを取り込むことによって、安全性を保ちつつ、アクセスパターンの保護において、必要な保存領域を削減することができる。
なお、記憶装置の処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを記憶装置に読み込ませ、実行することによって本発明の記憶装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
10;データ移動部
20;キャッシュ部
30;復号化部
40;保管部
50;暗号化部
60;鍵生成部
61;乱数生成器
62;一方向性関数器
63;秘密情報更新部
100;アクセスパターン保護部
110;並べ替え部
120;移動部
130;制御部
131;制御部
132;制御部
140;書き出し部
150;保存部
200;記憶領域

Claims (12)

  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のいずれかに記載の記憶装置。
JP2013138728A 2013-07-02 2013-07-02 記憶装置 Active JP6077405B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013138728A JP6077405B2 (ja) 2013-07-02 2013-07-02 記憶装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013138728A JP6077405B2 (ja) 2013-07-02 2013-07-02 記憶装置

Publications (2)

Publication Number Publication Date
JP2015012558A JP2015012558A (ja) 2015-01-19
JP6077405B2 true JP6077405B2 (ja) 2017-02-08

Family

ID=52305315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013138728A Active JP6077405B2 (ja) 2013-07-02 2013-07-02 記憶装置

Country Status (1)

Country Link
JP (1) JP6077405B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123045A (en) * 1989-08-18 1992-06-16 Massachusetts Institute Of Technology Comprehensive software protection system
JP5204291B1 (ja) * 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
US9294266B2 (en) * 2013-06-27 2016-03-22 Qualcomm Incorporated Method and apparatus to encrypt plaintext data

Also Published As

Publication number Publication date
JP2015012558A (ja) 2015-01-19

Similar Documents

Publication Publication Date Title
US9712319B2 (en) Method and apparatus to encrypt plaintext data
US9515818B2 (en) Multi-block cryptographic operation
EP2619705B1 (en) A tweakable encryption mode for memory encryption with protection against replay attacks
US8718280B2 (en) Securing keys of a cipher using properties of the cipher process
US9692592B2 (en) Using state reordering to protect against white box attacks
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
JP4758904B2 (ja) 機密情報処理方法
CN106209346B (zh) 白盒密码技术交错查找表
CN108494546A (zh) 一种白盒加密方法、装置及存储介质
CN102629236B (zh) 基于不等长计数器的存储器保护方法
CN102224508B (zh) 在存储器装置中存储数据的方法及处理该数据的处理装置
US20210143978A1 (en) Method to secure a software code performing accesses to look-up tables
JP6077405B2 (ja) 記憶装置
JP6144126B2 (ja) 記憶装置
JP6106050B2 (ja) 記憶装置、記憶システム、記憶方法およびプログラム
CN108390942A (zh) 一种硬件加密的分布式云存储方法与装置
JP6077421B2 (ja) 記憶装置、記憶システムおよびプログラム
KR20060110383A (ko) 네트워크 보안 프로세서의 다중모드 암호화 장치
US11101824B2 (en) Encryption device and decryption device, and operation method thereof
JP2013152382A (ja) 記憶装置、データの保存方法およびプログラム
JP6181573B2 (ja) データ共有システム、データ共有方法およびプログラム
US20240064002A1 (en) Method for securing an execution of a cryptographic process
JP5908376B2 (ja) 秘密鍵生成装置、秘密鍵生成方法およびプログラム
Amola et al. Android Security: Security using Encryption (AES)
JP5990115B2 (ja) 記憶装置、アクセスパターンの秘匿方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170112

R150 Certificate of patent or registration of utility model

Ref document number: 6077405

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150