JP7060115B2 - 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム - Google Patents

秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム Download PDF

Info

Publication number
JP7060115B2
JP7060115B2 JP2020565197A JP2020565197A JP7060115B2 JP 7060115 B2 JP7060115 B2 JP 7060115B2 JP 2020565197 A JP2020565197 A JP 2020565197A JP 2020565197 A JP2020565197 A JP 2020565197A JP 7060115 B2 JP7060115 B2 JP 7060115B2
Authority
JP
Japan
Prior art keywords
array
secret
tag
value
address
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
JP2020565197A
Other languages
English (en)
Other versions
JPWO2020145340A1 (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2020145340A1 publication Critical patent/JPWO2020145340A1/ja
Application granted granted Critical
Publication of JP7060115B2 publication Critical patent/JP7060115B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

この発明は、暗号応用技術に関し、特にアクセスした位置を明かすことなく配列に対するデータの読み込みや書き込みを行う技術に関する。
暗号化された数値を復元することなく特定の演算結果を得る方法として、秘密計算と呼ばれる方法がある(例えば、非特許文献1参照)。非特許文献1に記載された方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、3つの秘密計算装置が協調計算を行うことにより、数値を復元することなく、加減算、定数加算、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。
アクセスした位置jを明かすことなく、配列のj番目のデータの読み込みや値wの書き込みを行う場合、アクセスの度にランダムな要素にアクセスしたように見せかけることがよく行われる(例えば、非特許文献2、3参照)。
千田浩司、濱田浩気、五十嵐大、高橋克巳、"軽量検証可能3パーティ秘匿関数計算の再考"、CSS、2010年 Oded Goldreich and Rafail Ostrovsky, "Software protection and simulation on oblivious rams." J. ACM, Vol. 43, No. 3, pp. 431-473, 1996. Samee Zahur, Xiao Shaun Wang, Mariana Raykova, Adria Gasc'on, Jack Doerner, David Evans, and Jonathan Katz, "Revisiting square-root ORAM: efficient random access in multi-party computation." In IEEE Symposium on Security and Privacy, SP 2016, pp. 218-234, May 22-26, 2016.
しかしながら、従来技術では、大きさnの配列へのアクセスにΩ(log n)の通信段数が必要であった。そのため、通信遅延が大きい環境では、配列へのアクセスに要する時間が大きくなることが課題であった。
この発明の目的は、定数段の通信で、アクセスした位置を明かすことなく、配列へのデータの読み込みと書き込みを効率よく行うことができる秘密配列アクセス技術を実現することである。
上記の課題を解決するために、この発明の一態様の秘密配列アクセス装置は、配列x'の秘匿値の配列[x']と、秘匿値の配列[x']の各要素に対応するアドレスの配列a'とを記憶する記憶部と、ランダムな置換をρ、配列x'を置換ρで置換した配列をx、アドレスの配列a'を置換ρで置換したアドレスの配列をa、F'をパラメータとしてアドレスからタグへの単射を表す関数をTagF’、ランダムなパラメータをF、関数TagFによりアドレスの配列aの各要素から計算した公開タグの配列をbとするとき、パラメータFの秘匿値[F]と、配列xの秘匿値の配列[x]と、公開タグの配列bとを求めるリフレッシュ部と、入力されたアクセス位置jの秘匿値[j]から関数Tagとパラメータの秘匿値[F]により計算したタグに対応する秘匿値の配列[x]の要素に対して所望のアクセスを行うアクセス部と、を含む。
この発明の秘密配列アクセス技術によれば、定数段の通信で、アクセスした位置を明かすことなく、配列へのデータの読み込みと書き込みを効率よく行うことができる。
図1は、第一実施形態の秘密配列アクセス装置の機能構成を例示する図である。 図2は、第一実施形態の秘密配列アクセス方法の処理手順を例示する図である。 図3は、秘密配列アクセス方法のうちリフレッシュ時に実行される処理手順を例示する図である。 図4は、リフレッシュ部により生成されるデータを例示する図である。 図5は、秘密配列アクセス方法のうち読み込み時に実行される処理手順を例示する図である。 図6は、秘密配列アクセス方法のうち書き込み時に実行される処理手順を例示する図である。 図7は、第二実施形態の秘密配列アクセス装置の機能構成を例示する図である。 図8は、第二実施形態の秘密配列アクセス方法の処理手順を例示する図である。 図9は、秘密配列アクセス方法のうち事前計算時に実行される処理手順を例示する図である。 図10は、秘密配列アクセス方法のうち事前計算時に実行される処理手順を例示する図である。
この発明の実施の形態を説明する前に、この明細書における表記方法および用語の定義について説明する。
<表記方法>
文中で使用する記号「」(上付き矢印)は、本来直前の文字の真上に記載されるべきものであるが、テキスト記法の制限により、当該文字の直後に記載する。数式中においてはこれらの記号は本来の位置、すなわち文字の真上に記述している。例えば、「a」は数式中では次式で表される。
Figure 0007060115000001
ある値aを暗号化や秘密分散などにより秘匿化した値をaの秘匿値と呼び、[a]と表記する。また、aを[a]の平文と呼ぶ。秘匿化が秘密分散である場合は、[a]により各秘密計算装置が持つ秘密分散の断片の集合を参照する。ベクトルa=(a[0], a[1], …)のi番目の要素をa[i]により参照する。ベクトルa=(a[1], a[2], …, a[n])と全単射π: [1, n]→[1, n]に対して、ベクトルa=(b[π(1)], b[π(2)], …, b[π(n)])であるようなベクトルbをb=πaと表記する。ベクトルaの要素の数を|a|と表記する。
<復元>
aの秘匿値[a]を入力とし、c=aとなる値cを計算する処理を次式で記述する。
Figure 0007060115000002
<算術演算>
加算、減算、乗算の各演算は、2つの値a, bの秘匿値[a], [b]を入力とし、それぞれa+b, a-b, abの計算結果c1, c2, c3の秘匿値[c1], [c2], [c3]を計算する。これらの演算の実行をそれぞれ次式のように記述する。
Figure 0007060115000003
誤解を招く恐れのない場合は、Add([a], [b]), Sub([a], [b]), Mul([a], [b])をそれぞれ[a]+[b], [a]-[b], [a]×[b]と略記する。
<等号判定>
等号判定の演算は、2つの値a, bの秘匿値[a], [b]を入力とし、a=bの真偽値c∈{0, 1}の秘匿値[c]を計算する。真偽値は真のとき1、偽のとき0とする。この演算の実行を次式のように記述する。
Figure 0007060115000004
<選択>
選択の演算は、真偽値c∈{0, 1}の秘匿値[c]と2つの値a, bの秘匿値[a], [b]を入力とし、次式を満たすdの秘匿値[d]を計算する。
Figure 0007060115000005
この演算の実行を次式のように記述する。
Figure 0007060115000006
この演算は次式により実現できる。
Figure 0007060115000007
<置換の適用>
n個の秘匿値の列[a]=([a[1]], [a[2]], …, [a[n]])と全単射π: {1, 2, …, n}→{1, 2, …, n}を表す秘匿値[π]を入力とし、b=πaとなる秘匿値を計算する処理を次式で記述する。
Figure 0007060115000008
<逆置換>
全単射π: {1, 2, …, n}→{1, 2, …, n}を表す秘匿値[π]を入力とし、σ=π-1となる全単射を表す秘匿値[σ]を計算する処理を次式で記述する。
Figure 0007060115000009
<置換の合成>
全単射π:{1, 2, …, n}→{1, 2, …, n}を表す秘匿値[π]と全単射ρ: {1, 2, …, n}→{1, 2, …, n}を表す秘匿値[ρ]を入力とし、σ=ρ○πとなる全単射を表す秘匿値[σ]を計算する処理を次式で記述する。なお、○は写像の合成を表す演算子である。
Figure 0007060115000010
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
<第一実施形態>
第一実施形態の秘密配列アクセス装置1は、配列からの読み込みを行う場合、アクセス位置を表す秘匿値[j]を入力とし、アクセス位置に対応する配列の要素を出力する。秘密配列アクセス装置1は、配列への書き込みを行う場合、アクセス位置を表す秘匿値[j]と書き込む値の秘匿値[w]とを入力とし、アクセス位置に対応する配列の要素を書き込む値に更新する。秘密配列アクセス装置1は、図1に例示するように、記憶部10、リフレッシュ部11、およびアクセス部12を備える。この秘密配列アクセス装置1が、図2に例示する各ステップの処理を行うことにより第一実施形態の秘密配列アクセス方法が実現される。
秘密配列アクセス装置1は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密配列アクセス装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密配列アクセス装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密配列アクセス装置1の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。秘密配列アクセス装置1が備える各記憶部は、例えば、RAM(Random Access Memory)などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ(Flash Memory)のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
記憶部10には、n個の秘匿値の配列[x']=([x'[1]], [x'[2]], …, [x'[n]])と、秘匿値の配列[x']の各要素に対応するアドレスの配列a'=(a'[1], a'[2], …, a'[n])とが記憶されている。ただし、nは所定の自然数である。a'の各要素は互いに異なるものとする。
ステップS11において、リフレッシュ部11は、記憶部10に記憶されている秘匿値の配列[x']とアドレスの配列a'とを用いて、秘匿値の配列[x']の平文x'を置換した配列x=(x[1], x[2], …, x[n])の秘匿値[x]=([x[1]], [x[2]], …, [x[n]])と、置換後の秘匿値の配列[x]の各要素に対応するアドレスの配列をa=(a[1], a[2], …, a[n])として置換後のアドレスの配列aの各要素に一対一に対応する公開タグの配列b=(b[1], b[2], …, b[n])と、を生成する。以下、図3を参照して、リフレッシュ部11の動作を詳細に説明する。
ステップS111において、リフレッシュ部11は、ランダムな置換ρを表す秘匿値[ρ]を生成する。
ステップS112において、リフレッシュ部11は、記憶部10に記憶されているアドレスの配列a'の各要素を秘匿化し、アドレスの秘匿値の配列[a']を得る。
ステップS113において、リフレッシュ部11は、記憶部10に記憶されている秘匿値の配列[x']に対して置換[ρ]を適用し、置換後の秘匿値の配列[x]を得る。すなわち、リフレッシュ部11は、式(1)を計算する。
Figure 0007060115000011
また、リフレッシュ部11は、アドレスの秘匿値の配列[a']に対して置換[ρ]を適用し、置換後のアドレスの秘匿値の配列[a]を得る。すなわち、リフレッシュ部11は、式(2)を計算する。
Figure 0007060115000012
ステップS114において、リフレッシュ部11は、ランダムなパラメータFを表す秘匿値[F]を用いて、置換後のアドレスの秘匿値の配列[a]に対して関数Tag[F]([a])を計算し、その計算結果を復元して公開タグの配列b=(b[1], b[2], …, b[n])を得る。ここで、関数Tag[F]は、アドレスからタグへの単射を表す関数であり、その動作がパラメータ[F]により制御されるものである。関数Tag[F]は、入力が秘匿値である場合、入力値を秘匿したまま関数内の各演算を実行するものとする。また、関数Tag[F]は、入力が配列である場合、配列の各要素に対して関数内の各演算を計算するものとする。すなわち、リフレッシュ部11は、1以上n以下の各整数iについて、式(3)を計算する。
Figure 0007060115000013
図4に、リフレッシュ部11により生成されるデータを例示する。置換前の秘匿値の配列[x']とアドレスの配列a'とはそれぞれ同じ置換ρにより並べ替えられ、置換後の秘匿値の配列[x]と置換後のアドレスの配列aとが生成される。すなわち、秘匿値[x'[i]]とアドレスa'[i]の組み合わせが維持されるようにそれぞれ置換される。次に、置換後のアドレスの配列aの各要素から関数TagFにより一対一に対応する公開のタグが計算され、公開タグの配列bが生成される。なお、アドレスの配列a'の並び替えは、安全性を考慮して、上述のように一旦秘匿化した上で秘密計算により実行することが望ましい。
ステップS12aにおいて、アクセス部12は、アクセス位置jを表す秘匿値[j]を入力とし、アクセス位置jに対応する秘匿値の配列[x]の要素を読み込み、出力する。以下、図5を参照して、読み込み時のアクセス部12の動作を詳細に説明する。
ステップS121aにおいて、アクセス部12は、アクセス位置jを表す秘匿値[j]を入力として受け取る。
ステップS122aにおいて、アクセス部12は、パラメータFを表す秘匿値[F]を用いて、アクセス位置jを表す秘匿値[j]に対して関数Tag[F]([j])を計算し、その計算結果を復元してタグtを得る。すなわち、アクセス部12は、式(4)を計算する。
Figure 0007060115000014
ステップS123aにおいて、アクセス部12は、タグtに対応する秘匿値の配列[x]の要素[x[d]]の値を読み込み、出力する。なお、「タグtに対応する」とは、公開タグの配列bのうちタグtと一致する公開タグb[d]を生成したアドレスa[d]と組になっている、という意味である。
ステップS12bにおいて、アクセス部12は、アクセス位置jを表す秘匿値[j]と書き込む値wを表す秘匿値[w]とを入力とし、アクセス位置jに対応する秘匿値の配列[x]の要素を書き込む値[w]で書き換える。以下、図6を参照して、書き込み時のアクセス部12の動作を詳細に説明する。
ステップS121bにおいて、アクセス部12は、アクセス位置jを表す秘匿値[j]と書き込む値wを表す秘匿値[w]とを入力として受け取る。
ステップS122bにおいて、アクセス部12は、パラメータFを表す秘匿値[F]を用いて、アクセス位置jを表す秘匿値[j]に対して関数Tag[F]([j])を計算し、その計算結果を復元してタグtを得る。すなわち、アクセス部12は、上記式(4)を計算する。
ステップS123bにおいて、アクセス部12は、タグtに対応する秘匿値の配列[x]の要素[x[d]]の値を書き込む値[w]に更新する。
<第二実施形態>
第一実施形態の秘密配列アクセス装置1は、リフレッシュ部11が実行されるために必要なパラメータを都度生成するよう構成されていた。第二実施形態では、リフレッシュ部11が用いるパラメータのうち事前に生成できるものについては予め生成して記憶しておく。予め計算しておいたパラメータを用いることにより、リフレッシュ部11の動作を高速にすることができる。
第二実施形態の秘密配列アクセス装置2は、図7に例示するように、第一実施形態の記憶部10、リフレッシュ部11、およびアクセス部12に加えて、事前計算部13を備える。この秘密配列アクセス装置2が、図8に例示する各ステップの処理を行うことにより第二実施形態の秘密配列アクセス方法が実現される。
ステップS13において、事前計算部13は、まず、記憶部10に記憶されているアドレスの配列a'を0番目のアドレスの配列a→(0)に設定する。そして、1以上m以下の各整数kについて、下記の計算を行う。ただし、mは所定の自然数である。mは、配列への想定アクセス数とリフレッシュを行う頻度に従って任意に設定される。
第一に、事前計算部13は、k番目のランダムなパラメータF(k)を表す秘匿値[F(k)]を生成する。第二に、事前計算部13は、k番目のランダムな置換ρ(k)を表す秘匿値[ρ(k)]を生成する。第三に、事前計算部13は、k番目の置換[ρ(k)]に対応するようにアドレスの配列a'を並べ替えたk番目のアドレスの配列a→(k)を生成する。最後に、事前計算部13は、k番目のアドレスの配列a→(k)の各要素から計算したk番目の公開タグの配列b→(k)を計算する。すなわち、事前計算部13は、k回目の実行の際に、1以上n以下の各整数iについて、式(5)を計算する。
Figure 0007060115000015
アドレスの配列a→(k)は、具体的には、k-1番目のアドレスの配列a→(k-1)をk番目の置換[ρ(k)]で置換して計算する。すなわち、式(6)によりアドレスの配列a→(k)を計算する。
Figure 0007060115000016
アドレスの配列a→(k)は、以下のように計算してもよい。まず、k番目のランダムな置換π(k)を表す秘匿値[π(k)]を生成する。次に、k-1番目の置換[π(k-1)]の逆置換Inv([π(k-1)])とk番目の置換[π(k)]とを合成してk番目の置換[ρ(k)]を計算する。すなわち、式(7)により置換[ρ(k)]を計算する。
Figure 0007060115000017
そして、0番目のアドレスの配列a→(0)を置換[π(k)]で置換してアドレスの配列a→(k)を計算する。すなわち、式(8)によりアドレスの配列a→(k)を計算する。
Figure 0007060115000018
後者の手順であれば、k番目のアドレスの配列a→(k)を計算する際にk-1番目のアドレスの配列a→(k-1)を必要としないため、複数のアドレスの配列a→(k)を並列に計算することができる。したがって、事前計算部13の処理をより高速に行うことができる。
ステップS11において、リフレッシュ部11は、k回目の実行の際に、下記の計算を行う。第一に、リフレッシュ部11は、k番目のパラメータ[F(k)]を関数Tag[F]のパラメータ[F]とする。第二に、リフレッシュ部11は、k番目の公開タグの配列b→(k)を公開タグの配列bとする。最後に、リフレッシュ部11は、秘匿値の配列[x']をk番目の置換[ρ(k)]で置換した秘匿値の配列[x]を求める。すなわち、リフレッシュ部11は、式(9)を計算する。
Figure 0007060115000019
<第三実施形態>
第一実施形態および第二実施形態では、前のリフレッシュが行われてから次のリフレッシュが行われるまでは、同じアクセス位置へのアクセスは同じタグを参照することになる。そのため、あるアクセス位置へ複数回アクセスを行うとアクセス位置が推測され易くなるおそれがある。第三実施形態では、同じアクセス位置へのアクセスであっても異なるタグを参照することで、アクセス位置をより推測され難くし、安全性を向上する。
第三実施形態では、関数TagFをAES-128とし、Fを暗号化鍵とする。N, Tを自然数とし、n=N+Tとする。アドレスの配列aをa[i]=i(i∈[1, n])とし、アクセス位置jをj∈[1,N]とする。
第三実施形態の事前計算部13は、mを十分に大きな自然数として、各k∈[1, k]について、第二実施形態で説明した処理を実行する。
第三実施形態のリフレッシュ部11は、第二実施形態で説明した処理を実行する。また、第三実施形態のリフレッシュ部11は、アクセス済みのタグを記憶するための集合Sを空集合に初期化する。
第三実施形態のアクセス部12は、以下のようにして、秘匿値の配列[x]への読み込みまたは書き込みを行う。第一に、アクセス部12は、パラメータFを表す秘匿値[F]を用いて、アクセス位置jを表す秘匿値[j]に対して関数Tag[F]([j])を計算し、タグtの秘匿値[t]を得る。すなわち、アクセス部12は、式(10)を計算する。
Figure 0007060115000020
第二に、アクセス部12は、パラメータFを表す秘匿値[F]を用いて、N+|S|に対して関数Tag[F](N+|S|)を計算し、タグsの秘匿値[s]を得る。すなわち、アクセス部12は、式(11)を計算する。
Figure 0007060115000021
第三に、アクセス部12は、t∈Sならばc=1、そうでなければc=0であるような真偽値cの秘匿値[c]を計算する。例えば、アクセス部12は、c←0とし、各t'∈Sについて、式(12)を計算する。
Figure 0007060115000022
第四に、アクセス部12は、c=1ならばタグsを選択し、c=0ならばタグtを選択して、その選択結果を復元したタグpを得る。すなわち、アクセス部12は、式(13)を計算する。
Figure 0007060115000023
第五に、アクセス部12は、S←S∪{p}を計算し、集合Sにタグpを追加する。
読み込みを行う場合、アクセス部12は、集合Sに含まれる公開タグを持つ秘匿値の配列[x]の要素の中から、公開タグがタグtと一致する要素の値の秘匿値[r]を計算する。例えば、アクセス部12は、[r]←0とし、各t'∈Sについて、iをb[i]=t'である数として、式(14)を計算する。
Figure 0007060115000024
書き込みを行う場合、アクセス部12は、集合Sに含まれる公開タグを持つ秘匿値の配列[x]の要素の中から、公開タグがタグtと一致する要素の値を書き込む値の秘匿値[w]に書き換える。例えば、アクセス部12は、各t'∈Sについて、iをb[i]=t'である数として、式(15)を計算する。
Figure 0007060115000025
最後に、アクセス部12は、|S|≧Tならば、集合Sを空集合に初期化し、リフレッシュ部11を実行する。
第三実施形態の構成では、アドレスを秘匿したままの読み書きを、O(1)の通信ラウンドで実現できる。通信ラウンドが小さいため、直列での読み書きが効率的に実現できる。
各実施形態の秘密配列アクセス装置および方法は、秘匿値の配列を予めランダムな置換でシャッフルしてあるため、配列の要素から生成したタグを開示しても配列の要素の並びに関する情報は漏洩しない。開示されたタグへの探索は平文で実行でき、また、タグの計算にAES等の定数ラウンドの手法を用いれば、タグの計算やタグに対応した要素の探索に再帰的な処理を含まない。そのため、全体でも定数の通信ラウンドを達成することができる。従来技術ではタグの公開を行うことなく直接要素の位置を計算していたため、要素の位置の計算に再帰的な処理を含む。その結果、定数よりも大きい通信ラウンドが必要とされる。
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (6)

  1. 配列x'の秘匿値の配列[x']と、上記秘匿値の配列[x']の各要素に対応するアドレスの配列a'とを記憶する記憶部と、
    ランダムな置換をρ、上記配列x'を上記置換ρで置換した配列をx、上記アドレスの配列a'を上記置換ρで置換したアドレスの配列をa、F'をパラメータとしてアドレスからタグへの単射を表す関数をTagF’、ランダムなパラメータをF、上記関数TagFにより上記アドレスの配列aの各要素から計算した公開タグの配列をbとするとき、上記パラメータFの秘匿値[F]と、上記配列xの秘匿値の配列[x]と、上記公開タグの配列bとを求めるリフレッシュ部と、
    入力されたアクセス位置jの秘匿値[j]から上記関数Tagと上記パラメータの秘匿値[F]により計算したタグに対応する上記秘匿値の配列[x]の要素に対して所望のアクセスを行うアクセス部と、
    を含む秘密配列アクセス装置。
  2. 請求項1に記載の秘密配列アクセス装置であって、
    上記アドレスの配列a'を0番目のアドレスの配列a→(0)とし、mを自然数とし、1以上m以下の各整数kについて、上記関数Tagのランダムなパラメータ[F(k)]と、ランダムな置換[ρ(k)]と、上記置換[ρ(k)]に対応するように上記アドレスの配列a'を並べ替えたアドレスの配列a→(k)の秘匿値[a→(k)]と、上記パラメータ[F(k)]を用いる上記関数Tagにより上記アドレスの配列a→(k)の秘匿値[a→(k)]の各要素から計算した公開タグの配列b→(k)と、を計算する事前計算部をさらに含み、
    上記リフレッシュ部は、k回目の実行の際に、上記パラメータ[F(k)]を上記関数Tagのパラメータ[F]とし、上記公開タグの配列b→(k)を上記公開タグの配列bとし、上記秘匿値の配列[x']を上記置換[ρ(k)]で置換した秘匿値の配列[x]を求めるものである、
    秘密配列アクセス装置。
  3. 請求項2に記載の秘密配列アクセス装置であって、
    上記事前計算部は、k-1番目のアドレスの配列a→(k-1)をk番目の置換[ρ(k)]で置換してk番目のアドレスの配列a→(k)を計算するものである、
    秘密配列アクセス装置。
  4. 請求項2に記載の秘密配列アクセス装置であって、
    上記事前計算部は、k番目のランダムな置換[π(k)]を生成し、k-1番目の置換[π(k-1)]の逆置換Inv([π(k-1)])とk番目の置換[π(k)]とを合成して上記置換[ρ(k)]を計算し、
    上記アドレスの配列a→(0)をk番目の置換[π(k)]で置換してk番目のアドレスの配列a→(k)を計算するものである、
    秘密配列アクセス装置。
  5. 記憶部に、配列x'の秘匿値の配列[x']と、上記秘匿値の配列[x']の各要素に対応するアドレスの配列a'とが記憶されており、
    リフレッシュ部が、ランダムな置換をρ、上記配列x'を上記置換ρで置換した配列をx、上記アドレスの配列a'を上記置換ρで置換したアドレスの配列をa、F'をパラメータとしてアドレスからタグへの単射を表す関数をTagF’、ランダムなパラメータをF、関数TagFにより上記アドレスの配列aの各要素から計算した公開タグの配列をbとするとき、上記パラメータFの秘匿値[F]と、上記配列xの秘匿値の配列[x]と、上記公開タグの配列bとを求め、
    アクセス部が、入力されたアクセス位置jの秘匿値[j]から上記関数Tagと上記パラメータの秘匿値[F]により計算したタグに対応する上記秘匿値の配列[x]の要素に対して所望のアクセスを行う、
    秘密配列アクセス方法。
  6. 請求項1から4のいずれかに記載の秘密配列アクセス装置としてコンピュータを機能させるためのプログラム。
JP2020565197A 2019-01-10 2020-01-09 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム Active JP7060115B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2019002450 2019-01-10
JP2019002450 2019-01-10
PCT/JP2020/000432 WO2020145340A1 (ja) 2019-01-10 2020-01-09 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2020145340A1 JPWO2020145340A1 (ja) 2021-10-28
JP7060115B2 true JP7060115B2 (ja) 2022-04-26

Family

ID=71520528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020565197A Active JP7060115B2 (ja) 2019-01-10 2020-01-09 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム

Country Status (6)

Country Link
US (1) US20220114110A1 (ja)
EP (1) EP3910512B1 (ja)
JP (1) JP7060115B2 (ja)
CN (1) CN113518991B (ja)
AU (1) AU2020205530B2 (ja)
WO (1) WO2020145340A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230403143A1 (en) * 2020-11-20 2023-12-14 Nec Corporation Secure computation system, secure computation server apparatus, secure computation method, and secure computation program
WO2023062835A1 (ja) * 2021-10-15 2023-04-20 日本電信電話株式会社 キュー計算システム、キュー計算装置、キュー計算方法、及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364979B1 (en) 2009-04-27 2013-01-29 Stealth Software Technologies, Inc. Apparatus, system, and method to efficiently search and modify information stored on remote servers, while hiding access patterns

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2792141B1 (fr) * 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
CA2305078A1 (en) * 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
EP2048811A4 (en) * 2006-07-21 2015-10-21 Nec Corp ENCRYPTING DEVICE, PROGRAM AND METHOD
JP2010231717A (ja) * 2009-03-30 2010-10-14 Hitachi Ltd 情報秘匿装置、情報秘匿方法、情報秘匿プログラム、および記録媒体
CN101778142B (zh) * 2009-12-11 2012-10-24 东南大学 比特串和哈希函数组合的网络地址前缀保留的匿名化方法
JP5800721B2 (ja) * 2012-01-24 2015-10-28 三菱電機株式会社 検索装置、検索端末装置、データ登録装置、検索方法、検索プログラム、データ登録方法およびデータ登録プログラム
US9015853B2 (en) * 2012-06-15 2015-04-21 The Regents Of The University Of California Concealing access patterns to electronic data storage for privacy
JP5860378B2 (ja) * 2012-10-16 2016-02-16 日本電信電話株式会社 秘密計算システム、集約関数装置、秘密計算方法、およびプログラム
KR101356795B1 (ko) * 2012-11-05 2014-01-28 한국과학기술원 보안태그 생성방법과 복원방법
EP2945313B1 (en) * 2013-01-12 2017-09-06 Mitsubishi Electric Corporation Key generation device, key generation program, concealed data search system, and key distribution method
US9514169B2 (en) * 2013-09-23 2016-12-06 Protegrity Corporation Columnar table data protection
GB201400992D0 (en) * 2014-01-21 2014-03-05 Metaforic Ltd Method of protecting dynamic cryptographic keys
US10372886B2 (en) * 2015-05-05 2019-08-06 Nxp B.V. Protecting the input/output of modular encoded white-box RSA/ECC
US10140437B2 (en) * 2015-05-05 2018-11-27 Nxp B.V. Array indexing with modular encoded values
US10657847B2 (en) * 2015-10-13 2020-05-19 Nippon Telegraph And Telephone Corporation Secret random number synthesizing device, secret random number synthesizing method, and program

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364979B1 (en) 2009-04-27 2013-01-29 Stealth Software Technologies, Inc. Apparatus, system, and method to efficiently search and modify information stored on remote servers, while hiding access patterns

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHAN, T-H. H. et al.,More is Less: Perfectly Secure Oblivious Algorithms in the Multi-Server Setting,arXiv,[online],2018年09月,pp.1-36,<URL:https://arxiv.org/abs/1809.00825>
TOPLE, S. et al.,PermuteRam: Optimizing Oblivious Computation for Efficiency,Cryptology ePrint Archive,Report 2017/885, Ver:20170917:161845,2017年09月,pp.1-17,<URL:https://eprint.iacr.org/2017/885/20170917:161845>
濱田浩気,劣線形通信量で定数ラウンドの秘密計算配列アクセスアルゴリズム,コンピュータセキュリティシンポジウム2017論文集,2017年10月16日,第2017巻 第2号,pp.757-764

Also Published As

Publication number Publication date
AU2020205530A1 (en) 2021-06-10
AU2020205530B2 (en) 2022-05-19
WO2020145340A8 (ja) 2021-09-16
CN113518991A (zh) 2021-10-19
JPWO2020145340A1 (ja) 2021-10-28
US20220114110A1 (en) 2022-04-14
EP3910512A4 (en) 2022-10-05
EP3910512B1 (en) 2023-11-29
CN113518991B (zh) 2024-05-28
EP3910512A1 (en) 2021-11-17
WO2020145340A1 (ja) 2020-07-16

Similar Documents

Publication Publication Date Title
Wang et al. Improved division property based cube attacks exploiting algebraic properties of superpoly
Keller et al. Efficient, oblivious data structures for MPC
US10489604B2 (en) Searchable encryption processing system and searchable encryption processing method
Goodrich et al. Privacy-preserving group data access via stateless oblivious RAM simulation
Keller et al. Efficient maliciously secure multiparty computation for RAM
Law et al. Secure collaborative training and inference for xgboost
JP7060115B2 (ja) 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム
US20220292362A1 (en) Secret softmax function calculation system, secret softmax calculation apparatus, secret softmax calculation method, secret neural network calculation system, secret neural network learning system, and program
JP6585846B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
Lapworth Parallel encryption of input and output data for HPC applications
Wu et al. A forward and backward private oblivious RAM for storage outsourcing on edge-cloud computing
CN105917400A (zh) 元素复制装置、元素复制方法、以及程序
EP3686870B1 (en) Secure reading apparatus, secure writing apparatus, method thereof, and program
JP6981473B2 (ja) 秘密読み書き装置、秘密読み書き方法、およびプログラム
Schmid et al. Towards Private Deep Learning-Based Side-Channel Analysis Using Homomorphic Encryption: Opportunities and Limitations
Grubbs et al. Modifying an enciphering scheme after deployment
JP7359225B2 (ja) 秘密最大値計算装置、方法及びプログラム
Song et al. Searchable Symmetric Encryption with Tunable Leakage Using Multiple Servers
JP7173328B2 (ja) 秘密除算システム、秘密計算装置、秘密除算方法、およびプログラム
WO2022254691A1 (ja) 秘密計算装置、秘密計算システム、秘密計算方法、およびプログラム
Dalai et al. Wip: Degree evaluation of Grain-v1
US20230099543A1 (en) Application-specific computer memory protection
Sumongkayothin M-oram revisited: security and construction updates
Stoian Efficient Memory Encryption for Neural Network Accelerators
仲野有登 Design and Analysis of Memory Access Pattern Protection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210518

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: 20220315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R150 Certificate of patent or registration of utility model

Ref document number: 7060115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150