WO2024176307A1 - データ管理システム、方法、及びプログラム - Google Patents

データ管理システム、方法、及びプログラム Download PDF

Info

Publication number
WO2024176307A1
WO2024176307A1 PCT/JP2023/006016 JP2023006016W WO2024176307A1 WO 2024176307 A1 WO2024176307 A1 WO 2024176307A1 JP 2023006016 W JP2023006016 W JP 2023006016W WO 2024176307 A1 WO2024176307 A1 WO 2024176307A1
Authority
WO
WIPO (PCT)
Prior art keywords
secret value
value
key
data
secret
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.)
Ceased
Application number
PCT/JP2023/006016
Other languages
English (en)
French (fr)
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.)
NTT Inc
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
Priority to JP2025501937A priority Critical patent/JPWO2024176307A1/ja
Priority to PCT/JP2023/006016 priority patent/WO2024176307A1/ja
Publication of WO2024176307A1 publication Critical patent/WO2024176307A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Definitions

  • This disclosure relates to a data management system, method, and program.
  • Oblivious RAM is an algorithm that allows clients, who are the owners of data, to safely access the storage server where the data is stored.
  • ORAM is expected to be used in highly secure cloud storage, etc., due to its property of guaranteeing safe access (search) to data.
  • search safe access
  • Non-Patent Document 1 a method that reduces the amount of communication and the number of communication rounds in exchange for requiring a certain amount of spatial cost from the client
  • Non-Patent Document 2 a method that uses multiple servers
  • Non-Patent Document 1 can reduce the number of communication rounds to a constant, but has the problem that the memory capacity of the client is large and the amount of communication between the client and server is also large.
  • the method described in Non-Patent Document 2 has the problem that the amount of communication and the communication rounds between the client and server are both constant and the client does not need a large memory capacity, but the number of communication rounds between servers is large.
  • a data management system is a data management system that realizes a multi-server ORAM by a client and a plurality of servers that execute a secure computation protocol with each other, the client has an identification unit that identifies a hierarchical level t ⁇ ⁇ 0, ..., L - 1 ⁇ to which key k of data to be accessed belongs by using L data structures ⁇ 0 , ..., ⁇ L-1 representing a dictionary, and a distribution unit that distributes to the plurality of servers a secret value [[d]] of a one-hot vector d of length L+1 in which the t-th value is 1, a secret value [[op]] of op indicating whether the access operation is a read or write, and a secret value [[k]] of the key k, and the servers have arrays [[T 0 ]], ..., [[T L ]] that store anonymized data represented by key-value pairs , and plaintext arrays R 0 , ...
  • FIG. 1 is a diagram illustrating an example of an overall configuration of a data management system according to an embodiment of the present invention.
  • FIG. 13 is a diagram illustrating an example of a Build algorithm.
  • FIG. 2 is a diagram illustrating an example of the Lookup algorithm.
  • FIG. 1 illustrates an example of the Extract algorithm.
  • FIG. 13 is a diagram illustrating an example of an Access algorithm.
  • FIG. 1 illustrates an example of the Reshuffle algorithm.
  • FIG. 2 illustrates an example of a hardware configuration of a computer.
  • ORAM is a data access protocol that runs between a client that owns the data and a (non-trusted) server that holds the data.
  • the main purpose of ORAM is to conceal the memory reference locations (also called access patterns) observed by the server when accessing data.
  • ORAM The functionality of ORAM is defined by the following function F_RAM :
  • FRAM (op, k, v') has an array X of capacity N as its internal state, and executes the following (1) or (2) depending on the value of op.
  • (k, v) is also called a key-value pair or block, and is treated as one unit of data.
  • a complete dictionary ⁇ holds an arbitrary subset S ⁇ ⁇ 1, ..., N ⁇ for a certain universal set ⁇ 1, ..., N ⁇ , and holds a membership query ⁇ .
  • membership( A data structure that can respond to a membership query ⁇ .membership(k) [k ⁇ 1, ... ,N ⁇ ].
  • a complete dictionary ⁇ is a query requesting a determination of whether or not k is included in a set S held by the dictionary ⁇ .
  • the space cost of a complete dictionary ⁇ (i.e., the bit length of the data structure) can be kept to O(m ⁇ log(N/m)) if S holds m pieces of data.
  • Secure computation is a technique for performing various computations while keeping data encrypted.
  • secure computation is used that can perform at least the following operations: multiplication and accumulation, conditional selection, substitution, inverse substitution, and pseudorandom substitution.
  • An example of secure computation that can perform these computations is a method using a secret sharing scheme (Reference 2).
  • RSVP 2 multi-party computation
  • MPC multi-party computation
  • this is not limited to this, and any method having equivalent functions can be used.
  • multi-party computation using a secret sharing scheme may be called, for example, a secret multi-party computation.
  • the calculation unit 101 executes a part of the procedures included in an algorithm (an Access algorithm, which will be described later) that simulates the function FRAM .
  • the storage unit 102 stores data structures ⁇ 0 , . . . , ⁇ L-1 , which will be described later and are used as a dictionary (a group of dictionaries).
  • the server 20 has a calculation unit 201 and a storage unit 202.
  • the calculation unit 201 is realized by a process in which one or more programs installed in the server 20 are executed by a calculation device such as a CPU.
  • the storage unit 202 is realized by a storage device such as an HDD, SSD, or flash memory.
  • the calculation unit 201 and storage unit 202 of the server 20 m' (m' ⁇ 1, ..., M' ⁇ ) are represented as "calculation unit 201 m' " and "storage unit 202 m' ,” respectively.
  • the storage unit 202 stores data structures [[T 0 ]], ..., [[T L ]] described later for holding anonymized key-value pairs, and data structures R 0 , ..., R L described later for holding auxiliary information. In addition to these, the storage unit 202 also stores random permutations, secret keys, query counters, etc. described later.
  • the client 10 has L data structures ⁇ 0 , ..., ⁇ L-1 . That is, the client 10 has an L-stage hierarchical data structure ⁇ l (l is a lowercase "L”), where:
  • the memory capacity (storage size) of the memory unit 202 required by the client 10 is O(N) bits.
  • the server 20 has L+1 concealed arrays [[T 0 ]], ..., [[T L ]];
  • 2 l+1 and L+1 plaintext arrays R 0 , ..., R L ;
  • 2 l+1 . That is, the server 20 has an array [[T l ]] and an array R l which are L+1-stage hierarchical data structures.
  • the array [[T l ]] stores an anonymized key-value pair ([[k]], [[v]]), and the array R l stores auxiliary information for referencing [[T l ]]. Furthermore, the server 20 has a secret random permutation [[ ⁇ l ]], a private key [[s l ]], and a query counter ctr as information used when constructing the array [[T l ]].
  • the hierarchical data structure held by the server 20 can be managed by a simple algorithm using random permutation.
  • the Build algorithm, the Lookup algorithm, and the Extract algorithm described below do not require auxiliary input or auxiliary calculation based on communication with the client 10, and are realized by secret calculation between the servers 20 (i.e., for example, MPC using a secret sharing scheme).
  • [A]] is provided, for example, from the client 10.
  • n,
  • placed above a character will be written at the top left of the character. For example, when writing the left side of the above formula 4 in the text of the specification, it will be written as [[ ⁇ T]].
  • the calculation unit 201 of the server 20 generates a share [[ ⁇ ]] of the random permutation, and calculates [[T]] ⁇ Perm([[ ⁇ ]], [[ ⁇ T]]) and [[R]] ⁇ Perm([[ ⁇ ]], [[ ⁇ R]]) (line 3).
  • the calculation unit 201 of the server 20 stores [[T]], R, [[s]], [[ ⁇ ]], and ctr in its own memory unit 202 (line 5).
  • ⁇ Lookup Algorithm> The Lookup algorithm (Algorithm 2) for obtaining data matching query k from [[T]] is shown in Fig. 3.
  • the Lookup algorithm shown in Fig. 3 takes [[k]], [[d]], [[T]], R, [[s]], and ctr as inputs, and outputs ([[k]], [[v]]).
  • d ⁇ ⁇ 0, 1 ⁇ is assumed. Note that d is a flag indicating whether the query is a dummy or not, and is used to control the reference position.
  • the calculation unit 201 of the server 20 calculates [[ ⁇ k]] ⁇ IfElse([[d]], [[ ⁇ +ctr]], [[k]]) (line 2).
  • the calculation unit 201 of the server 20 calculates [[r]] ⁇ PRP([[s]], [[ ⁇ k]]) to obtain r ⁇ Reveal([[r]]) (line 3).
  • the calculation unit 201 of the server 20 also overwrites [[t i ]] with ([[ ⁇ ]], [[ ⁇ ]]) (line 5).
  • the calculation unit 201 of the server 20 calculates [[ ⁇ T]] ⁇ Unperm([[ ⁇ ]], [[T]]) and outputs the first n elements of [[ ⁇ T]] as an array [[A]] (first line).
  • Algorithm 3 extracts the input array A by performing the inverse of the permutation ⁇ used in constructing the array [[T]]. This makes it possible to extract all non-dummy data remaining in [[T]]. Note that the data referenced by the Lookup algorithm has been overwritten by dummy data.
  • the above Algorithms 1 and 3 can be executed with O(NB)-bit communication volume and O(1 round), respectively.
  • the above Algorithm 2 can be executed with O(B)-bit communication volume and O(1 round).
  • Access algorithm for the client 10 to access the data structure held by the server 20
  • This Access algorithm uses the above-mentioned Build algorithm, Lookup algorithm, and Extract algorithm as subroutines.
  • This Access algorithm also uses the Reshuffle algorithm for dismantling and reconstructing a hierarchy of the array [[T]] that has been accessed a large number of times as a subroutine.
  • the Access algorithm and the Reshuffle algorithm will be described below. In the following, it is assumed that the key-value pairs are held in the data structure on the server 20 side, and the client 10 side has a data structure (a group of dictionaries) linked to the data structure of the server 20.
  • ⁇ Access Algorithm> 5 shows an Access algorithm (Algorithm 4) for the client 10 to access the data structure of the server 20.
  • the Access algorithm shown in Fig. 5 takes op, k, and v' as input, and outputs (k, v).
  • the target level t is the hierarchy (level) of the data structure ⁇ l that holds the set S containing the key k.
  • the calculation unit 101 of the client 10 calculates a one-hot vector of length L+1 in which the t-th value is 1.
  • the calculation unit 201 of the server 20 transmits [[ . . . a]] to the client 10 (line 5).
  • the calculation unit 101 of the client 10 obtains (k, v) ⁇ Reveal([[ ⁇ a]]) as an output (line 6).
  • the calculation unit 201 of the server 20 executes Reshuffle([[ ⁇ a]]) as [[ ⁇ a]] ⁇ IfElse([[op]], ([[k]], [[v']]), [ [ ⁇ a ]]) (line 7).
  • Algorithm 4 is an algorithm for the client 10 to access a data structure held by the server 20, and is a secure computation protocol executed by the server 20 upon receiving auxiliary input (i.e., vector ⁇ d) from the client 10.
  • the client 10 identifies the hierarchy (level) at which the target data exists from its own dictionaries ⁇ 0 , ..., ⁇ L-1 , and provides this to the server 20 in the form of vector ⁇ d. This enables the server 20 to efficiently access data through secure computation (even without knowing the value of ⁇ d).
  • ⁇ Reshuffle Algorithm The Reshuffle algorithm (Algorithm 5) for dismantling and reconstructing a hierarchy of an array [[T]] with a high number of accesses is shown in Fig. 6.
  • the Reshuffle algorithm shown in Fig. 6 inputs [[ ⁇ a]].
  • an array [[T p ]] at a certain level p is unconstructed (i.e., it does not hold data), and all of [[T 0 ]], ..., [[T p-1 ]] have been constructed.
  • the calculation unit 201 of the server 20 constructs a data structure of level p using [[T p ]], R p , [[s p ]], [[ ⁇ p ]], ctr ⁇ Build([[A p ]]) (line 2).
  • Algorithm 5 is an algorithm for dismantling and reconstructing a layer with a high number of accesses, and randomizes the arrangement of accessed elements.
  • all data structures in the upper layers that have already been constructed are dismantled and pushed to the lower layers, making the upper layers available again.
  • the reconstruction of level p by this algorithm is executed once for every 2p accesses.
  • this algorithm which is a secure computation protocol on the server 20 side, on the client 10 side, the group of dictionaries ⁇ 0 , . . . ⁇ p-1 is dismantled and integrated into ⁇ p . This dismantling and integration of the group of dictionaries ⁇ 0 , . . .
  • ⁇ p-1 into ⁇ p can be performed in the same manner as the method described in the above non-patent document 1. Since the level p to be dismantled and integrated is unique based on the number of accesses, the client 10 can update the data structure (group of dictionaries) linked to the data structure of the server 20 without communicating with the server 20.
  • Algorithm 5 requires O(2 p B) bits and O(1) rounds of communication once every 2 p , so the amortized communication volume is O(B ⁇ logN) bits and the amortized round number is o(1). Therefore, the efficiency of the entire Algorithm 4 is O(B ⁇ logN) bits of amortized communication volume and o(1) number of amortized rounds.
  • the client 10 and the server 20 included in the data management system 1 can be realized, for example, by the hardware configuration of a computer 500 shown in Fig. 7.
  • the computer 500 shown in Fig. 7 has an input device 501, a display device 502, an external I/F 503, a communication I/F 504, a RAM (Random Access Memory) 505, a ROM (Read Only Memory) 506, an auxiliary storage device 507, and a processor 508.
  • each of these pieces of hardware is connected to each other via a bus 509 so as to be able to communicate with each other.
  • the input device 501 is, for example, a keyboard, a mouse, a touch panel, a physical button, etc.
  • the display device 502 is, for example, a display, a display panel, etc. Note that the computer 500 does not have to have at least one of the input device 501 and the display device 502, for example.
  • the external I/F 503 is an interface with external devices such as a recording medium 503a.
  • the computer 500 can read and write data from and to the recording medium 503a via the external I/F 503.
  • Examples of the recording medium 503a include a flexible disk, a CD (Compact Disc), a DVD (Digital Versatile Disk), an SD memory card (Secure Digital memory card), and a USB (Universal Serial Bus) memory card.
  • the communication I/F 504 is an interface for connecting the computer 500 to a communication network.
  • the RAM 505 is a volatile semiconductor memory (storage device) that temporarily stores programs and data.
  • the ROM 506 is a non-volatile semiconductor memory (storage device) that can store programs and data even when the power is turned off.
  • the auxiliary storage device 507 is, for example, a storage device (storage device) such as an HDD, SSD, or flash memory.
  • the processor 508 is, for example, a calculation device such as a CPU.
  • the client 10 and server 20 included in the data management system 1 can realize the various processes described above by having, for example, the hardware configuration of a computer 500 shown in FIG. 7.
  • the hardware configuration of the computer 500 shown in FIG. 7 is only an example and is not limited to this.
  • the computer 500 may have multiple auxiliary storage devices 507 and multiple processors 508, may not have some of the hardware shown in the figure, or may have various hardware other than the hardware shown in the figure.
  • Non-Patent Document 1 uses a single server, and the number of rounds of communication between the client and server is a constant (O(1)), but the client requires a memory capacity of O(N+ ⁇ (N)B) bits, and the amount of communication between the client and server is O(logN).
  • Non-Patent Document 2 requires multiple servers, but the amount of communication and communication rounds between the client and server are both constant, and the client does not need a large memory capacity, but the amount of communication and communication rounds between servers are both O(logN).
  • the storage size of the client 10 is reduced to O(N) bits, and the number of rounds and communication volume between the client 10 and the server 20 are both constant (O(1)).
  • Multi-server ORAM with constant rounds and communication volume O(logN) between servers In the data management system 1 according to this embodiment, the amount of communication between the servers 20 is O(log N), the number of rounds is a constant (O(1)), and the number of communication rounds for the entire access protocol is O(1).

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本開示の一態様によるデータ管理システムは、クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムであって、前記クライアントは、辞書を表すL個のデータ構造Φ,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定部と、t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散部と、を有し、前記サーバは、キー・バリューペアで表される秘匿化されたデータを格納する配列[[T]],・・・,[[T]]と、[[T]]を参照するための補助情報を格納する平文の配列R,・・・,Rと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するa=(k,v)の秘密値[[a]]を秘密値[[T]]から取得する取得部と、秘密値[[a]]=([[a]],・・・,[[a]])と、前記秘密値[[d]]との内積の秘密値[[a]]を前記クライアントに送信する内積計算部と、を有する。

Description

データ管理システム、方法、及びプログラム
 本開示は、データ管理システム、方法、及びプログラムに関する。
 Oblivious RAM(以下、ORAMという。)は、データの持ち主であるクライアントが、データの預け先であるストレージサーバに対して安全にアクセスを行うためのアルゴリズムである。ORAMは、データへの安全なアクセス(検索)を保証するという性質から高安全なクラウドストレージへの応用等が期待されている。その一方で、クライアントとサーバの間で大きな通信量、通信ラウンド及びクライアント側の計算資源を要するため、必ずしもクライアントの通信環境や端末性能が優れないクラウドサービスでの利用は容易ではないという問題がある。
 上記の問題を解決するため、クライアントに或る程度の空間コストを要求する代わりに通信量と通信ラウンドを削減する手法(非特許文献1)と、複数台のサーバを用いる手法(非特許文献2)との2つの手法が提案されている。
William Holland, Olga Ohrimenko, and Anthony Wirth. Single round-trip hierarchical oram via succinct indices, 2022. Thang Hoang, Ceyhun D. Ozkaptan, Attila A. Yavuz, Jorge Guajardo, and Tam Nguyen. S3oram: A computation-efficient and constant client bandwidth blowup oram with shamir secret sharing. In CCS, pp. 491-505, 2017.
 しかしながら、非特許文献1に記載されている手法は、通信ラウンドを定数まで削減することができるが、クライアントの記憶容量が大きく、かつ、クライアントとサーバ間の通信量も大きいという問題がある。一方で、非特許文献2に記載されている手法は、クライアントとサーバ間の通信量及び通信ラウンドはともに定数で、かつ、クライアントに大きな記憶容量は不要だが、サーバ間の通信ラウンドが大きいという問題がある。
 本開示は、上記の点に鑑みてなされたもので、効率的なORAMを実現する技術を提供する。
 本開示の一態様によるデータ管理システムは、クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムであって、前記クライアントは、辞書を表すL個のデータ構造Φ,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定部と、t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散部と、を有し、前記サーバは、キー・バリューペアで表される秘匿化されたデータを格納する配列[[T]],・・・,[[T]]と、[[T]]を参照するための補助情報を格納する平文の配列R,・・・,Rと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するa=(k,v)の秘密値[[a]]を秘密値[[T]]から取得する取得部と、秘密値[[a]]=([[a]],・・・,[[a]])と、前記秘密値[[d]]との内積の秘密値[[a]]を前記クライアントに送信する内積計算部と、を有する。
 効率的なORAMを実現する技術が提供される。
本実施形態に係るデータ管理システムの全体構成の一例を示す図である。 Buildアルゴリズムの一例を示す図である。 Lookupアルゴリズムの一例を示す図である。 Extractアルゴリズムの一例を示す図である。 Accessアルゴリズムの一例を示す図である。 Reshuffleアルゴリズムの一例を示す図である。 コンピュータのハードウェア構成の一例を示す図である。
 以下、本発明の一実施形態について説明する。
 <準備>
 まず、本実施形態の説明に必要な技術について説明する。
  ≪ORAM≫
 ORAMは、データの持ち主たるクライアントと、データを預かる(信頼できない)サーバとの間で実行されるデータアクセスプロトコルである。ORAMは、主に、データアクセス時にサーバ側で観測されるメモリ参照位置(これはアクセスパターンとも呼ばれる。)の秘匿を目的としている。
 ORAMの機能は次の関数FRAMで定義される。
 FRAM(op,k,v'):内部状態として容量Nの配列Xを持ち、opの値に応じて以下の(1)又は(2)を実行する。
 (1)op=readである場合、配列Xから組(k,v)を探し、出力する。配列Xに組(k,v)が存在しないときはダミー(⊥,⊥)を出力する。
 (2)op=writeである場合、配列Xから組(k,v)を削除し、組(k,v')で置き換える。配列Xに組(k,v)が存在しないときは単に配列Xに組(k,v')を追加する。
 なお、(k,v)はキー・バリューペアやブロック等とも呼ばれ、データの1単位として扱われる。
 アクセスの正当性のため各キーkは相異なる必要があるため、データの総数をNとすれば、ブロックサイズはB=Ω(logN)ビット必要である。ORAMではしばしば1回のアクセス(すなわち、1ブロックの取得)の際にアルゴリズムが必要とするブロック操作回数をオーバーヘッドと呼び、これを計算効率の指標としている。
  ≪Complete dictionary≫
 Complete dictionary Φは、或る全体集合{1,・・・,N}に対して、その任意の部分集合S⊆{1,・・・,N}を保持し、また所属判定クエリΦ.membership(k)=[k∈S]に対して応答できるデータ構造である。ここで、所属判定クエリΦ.membership(k)とは、任意のk∈{1,・・・,N}に対して、Complete dictionary Φが保持する集合Sにkが含まれるか否かの判定を要求するクエリのことである。
 また、Complete dictionary Φの空間コスト(つまり、データ構造のビット長)は、Sがm個のデータを保持する場合にはO(m×log(N/m))で抑えることができる。
 以上のようなデータ構造は、例えば、参考文献1等に記載されている方法で実現することができる。ただし、これに限られるものではなく、同等の機能を持つ方法であれば任意の方法で代替可能である。
  ≪秘密計算≫
 秘密計算は、データを暗号化したまま様々な計算を行う技術である。本実施形態では、以下で説明する積和、条件付き選択、置換、逆置換、疑似ランダム置換が少なくとも計算可能な秘密計算を用いる。これらの計算を可能とする秘密計算の一例としては、秘密分散法(参考文献2)を利用した手法等が挙げられる。以下では、秘密分散法を利用したマルチパーティ計算(MPC:multi-party computation)を想定する。ただし、これに限られるものではなく、同等の機能を持つ手法であれば任意の手法を用いることが可能である。なお、秘密分散法を利用したマルチパーティ計算は、例えば、秘匿マルチパーティ計算等と呼ばれてもよい。
 以下、或る値aを秘匿化した状態を
Figure JPOXMLDOC01-appb-M000001
で表すものとし、これを「aのシェア」又は単に「シェア」と呼ぶ。また、明細書のテキスト中では、aのシェアを[[a]]と表記することにする。
 また、aから[[a]]に変換する処理[[a]]←Share(a)を「分散」と呼び、[[a]]からaに変換する処理a←Reveal([[a]])を「復元」と呼ぶ。更に、配列A=(a,・・・,a)のシェア([[a]],・・・,[[a]])は、簡単のため、単に[[A]]と記述する。
 ・積和
 [[A]]、[[B]]をそれぞれ要素数nの配列のシェアとしたとき、両者の積和(内積)を以下のように表す。
 [[c]]←Prod([[A]],[[B]])
 これには、例えば、参考文献3に記載されている方法を用いることができる。
 ・条件付き選択
 条件付き選択を以下のように記述する。
 [[z]]←IfElse([[e]],[[x]],[[y]])
 ここで、入力[[x]]、[[y]]はuビットのシェア、[[e]]は1ビットのシェアとする。出力はe=1ならばz=x、そうでなければz=yを満たす。これには、例えば、参考文献4に記載されている方法を用いることができる。
 ・置換と逆置換
 [[A]]を要素数nの配列のシェアとし、[[π]]を置換π:[n]→[n]のシェアとする。このとき、[A]の置換と逆置換をそれぞれ以下で表す。
 [[πA]]←Perm([[π]],[[A]])
 [[π-1A]]←Unperm([[π]],[[A]])
 これには、例えば、参考文献5に記載されている方法を用いることができる。
 ・疑似ランダム置換
 秘密の鍵[[s]]とシェア[[x]]から疑似乱数値のシェアを得る処理を以下で表す。
 [[r]]←PRP([[s]],[[x]])
 これには、例えば、参考文献6に記載されている方法を用いることができる。
 以上の準備の下、以下、効率的なORAMを実現するデータ管理システム1について説明する。
 <データ管理システム1の全体構成例>
 本実施形態に係るデータ管理システム1の全体構成例を図1に示す。図1に示すように、本実施形態に係るデータ管理システム1には、クライアント10と、複数のサーバ20とが含まれている。また、クライアント10と各サーバ20は、例えば、インターネット等の通信ネットワーク30を介して相互に通信可能に接続される。なお、図1に示す例では、サーバ20、サーバ20、・・・、サーバ20M'が存在する場合を示している。ここで、M'(≧2)はサーバ20の総数である。以下では、各サーバ20m'(m'∈{1,・・・,M'})を総称して単に「サーバ20」と表記する。
 クライアント10は、ORAMのクライアントに相当するコンピュータ又はコンピュータシステムである。クライアント10には、例えば、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末、ウェアラブルデバイス、ゲーム機器、車載器、産業用機器等を用いることができる。
 サーバ20は、ORAMのサーバに相当するコンピュータ又はコンピュータシステムである。サーバ20には、例えば、データベースサーバやクラウドストレージサーバ等として機能する汎用サーバ等を用いることができる。
 ここで、本実施形態に係るクライアント10は、演算部101と、記憶部102とを有する。演算部101は、例えば、クライアント10にインストールされた1以上のプログラムが、CPU(Central Processing Unit)等の演算装置に実行させる処理により実現される。記憶部102は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等のストレージ装置により実現される。
 演算部101は、関数FRAMをシミュレートするアルゴリズム(後述するAccessアルゴリズム)に含まれる一部の手順を実行する。
 記憶部102は、辞書(辞書群)として利用される後述するデータ構造Φ,・・・,ΦL-1を記憶する。
 また、本実施形態に係るサーバ20は、演算部201と、記憶部202とを有する。演算部201は、サーバ20にインストールされた1以上のプログラムが、CPU等の演算装置に実行させる処理により実現される。記憶部202は、例えば、HDD、SSD、フラッシュメモリ等のストレージ装置により実現される。なお、図1に示す例では、サーバ20m'(m'∈{1,・・・,M'})の演算部201及び記憶部202をそれぞれ「演算部201m'」及び「記憶部202m'」と表している。
 演算部201は、後述するデータ構造の構築や参照を行うための各種アルゴリズム(後述するBuildアルゴリズム、Lookupアルゴリズム、Extractアルゴリズム)に含まれる手順を実行する。また、演算部201は、上記のAccessアルゴリズムに含まれる一部の手順を実行する。
 記憶部202は、秘匿化されたキー・バリューペアを保持するための後述するデータ構造[[T]],・・・,[[T]]と、補助情報を保持するための後述するデータ構造R,・・・,Rとを記憶する。また、これら以外にも、記憶部202は、後述するランダム置換や秘密鍵、クエリカウンタ等も記憶する。
 <データ構造>
 クライアント10が持つデータ構造とサーバ20が持つデータ構造について説明する。
  ≪クライアント10が持つデータ構造≫
 クライアント10は、L個のデータ構造Φ,・・・,ΦL-1を持つ。すなわち、クライアント10は、L段の階層型データ構造Φ(lは小文字の「L」)を持つ。ただし、
Figure JPOXMLDOC01-appb-M000002
である。
 また、各Φは最大で2個の要素を保持するものとする。このため、各Φの空間コストはO(2×log(N/2))となる。以下では、各ΦはComplete dictionaryであるものとする。ただし、これに限られるものではなく、同等の機能を持つデータ構造であれば任意のデータ構造で代替可能である。
 ここで、Φ,・・・,ΦL-1の合計空間コストに関して以下の式が成り立つ。
Figure JPOXMLDOC01-appb-M000003
 このため、クライアント10に要求される記憶部202の記憶容量(ストレージサイズ)はO(N)ビットである。
  ≪サーバ20が持つデータ構造≫
 サーバ20は、秘匿化されたL+1個の配列[[T]],・・・,[[T]];|T|=2l+1と、平文のL+1個の配列R,・・・,R;|R|=2l+1とを持つ。すなわち、サーバ20は、L+1段の階層型データ構造である配列[[T]]及び配列Rを持つ。
 配列[[T]]には秘匿化されたキー・バリューペア([[k]],[[v]])が格納され、また配列Rには[[T]]を参照するための補助情報が格納される。更に、サーバ20は、配列[[T]]を構築した際の情報として秘密のランダム置換[[π]]と秘密鍵[[s]]とクエリカウンタctrとを持つ。
 <配列[[T]]、Rの構築及び参照方法>
 本実施形態では、サーバ20が保持する階層型データ構造はランダム置換を利用したシンプルなアルゴリズムにより管理できる。以下で説明するBuildアルゴリズム、Lookupアルゴリズム及びExtractアルゴリズムはいずれもクライアント10との通信に基づく補助入力や補助計算を必要とせず、サーバ20間での秘密計算(つまり、例えば、秘密分散法を利用したMPC)で実現される。
  ≪Buildアルゴリズム≫
 以下では、表記の簡単のため或るlに関する[[T]]、Rをそれぞれ[[T]]、Rとして、[[T]]、Rを構築するためのBuildアルゴリズム(Algorithm1)を図2に示す。図2に示すBuildアルゴリズムは、[[A]]を入力として、[[T]],R,[[s]],[[π]],ctrを出力する。ただし、[[A]]=([[a]],・・・,[[a]])、[[a]]=([[k]],[[v]])、k∈[N]、かつ、全てのi,j≠iについてk≠⊥ならばk≠kであるものとする。また、このBuildアルゴリズムの実行によってA⊆Tが保証される。なお、[[A]]は、例えば、クライアント10から与えられる。
 まず、サーバ20の演算部201は、n個のダミーデータのシェア[[D]]=((⊥,⊥),・・・,(⊥,⊥));|D|=nを生成し、
Figure JPOXMLDOC01-appb-M000004
とする(1行目)。ここで、|| は配列の連結を表す。例えば、要素数nの配列をA,Bとすれば、C=A||Bは、先頭のn要素が配列Aの要素、残りのn要素が配列Bの要素である要素数2nの配列となる。以下、明細書のテキスト中では、文字の上に付与された「~」を文字の左上に記載する。例えば、上記の数4の左辺を明細書のテキスト中に記載する場合、[[T]]と記載する。
 次に、サーバ20の演算部201は、ランダムなシェア[[s]]を生成し、[[R]]=([[]],・・・,[[2n]]);[[]]=PRP([[s]],[[k]]) for 1≦i≦n,[[]]=PRP([[s]],[[⊥+j-n]]) for n+1≦j≦2nを計算する(2行目)。
 次に、サーバ20の演算部201は、ランダムな置換のシェア[[π]]を生成し、[[T]]←Perm([[π]],[[T]])と、[[R]]←Perm([[π]],[[R]])とを計算する(3行目)。
 次に、サーバ20の演算部201は、R←Reveal([[R]])とし、またクエリカウンタctr=0を準備する(4行目)。
 そして、サーバ20の演算部201は、[[T]]、R、[[s]]、[[π]]、ctrを自身の記憶部202に保存する(5行目)。
 このように、Algorithm1では、入力であるサイズnの配列に同数のダミーを追加した上でランダム置換を行うことでアクセス位置を秘匿可能にしている。これによって構築される配列[[T]]は、"各要素aごとに""重複なく一度まで"、最大n回の参照を許容すると共に、適宜ダミーの参照も(最大n回まで)可能としている。また、参照のための情報として疑似ランダム置換を用いたタグ付け(つまり、配列R)を行い、同一の置換πの元で配列Tと要素の並び順をリンクさせている。
  ≪Lookupアルゴリズム≫
 クエリkに合致するデータを[[T]]から取得するためのLookupアルゴリズム(Algorithm2)を図3に示す。図3に示すLookupアルゴリズムは、[[k]],[[d]],[[T]],R,[[s]],ctrを入力として、([[k]],[[v]])を出力する。ただし、d∈{0,1}であるものとする。なお、dは、クエリがダミーか否かを表すフラグであり、参照位置に制御に用いられる。
 まず、サーバ20の演算部201は、クエリカウンタをctr=ctr+1と更新する(1行目)。
 次に、サーバ20の演算部201は、[[k]]←IfElse([[d]],[[⊥+ctr]],[[k]])を計算する(2行目)。
 次に、サーバ20の演算部201は、[[r]]←PRP([[s]],[[k]])を計算し、r←Reveal([[r]])を得る(3行目)。
 次に、サーバ20の演算部201は、配列R=(r,・・・,r2n)からr=rなる値を探す。該当するrが存在しなければ停止(つまり、Algorithm2を終了)する(4行目)。
 そして、サーバ20の演算部201は、[[T]]=([[t]],・・・,[[t2n]])から([[k]],[[v]])=[[t]]を取得し、これを出力する。また、サーバ20の演算部201は、[[t]]を([[⊥]],[[⊥]])で上書きする(5行目)。
 このように、Algorithm2では、クエリkに対応するタグ(疑似乱数値)rを計算・公開し、同一の値となるrを配列Rから探索する。このとき、データt=(k,v)が配列Tに含まれる場合には必ずインデックスを持つrが存在する。また、ダミークエリである場合にはアクセス毎に別のダミーを参照する必要があるため、クエリカウンタにより参照位置を制御している。
  ≪Extractアルゴリズム≫
 配列[[A]]を取り出すためのExtractアルゴリズム(Algorithm3)を図4に示す。図4に示すExtractアルゴリズムは、[[T]],[[π]]を入力として、[[A]]を出力する。
 サーバ20の演算部201は、[[T]]←Unperm([[π]],[[T]])を計算し、[[T]]の先頭のn要素を配列[[A]]として出力する(1行目)。
 このように、Algorithm3では、配列[[T]]の構築で利用した置換πの逆を行うことで、入力配列Aを取り出す。これにより、[[T]]に残る全ての非ダミーデータを取り出すことができる。なお、Lookupアルゴリズムで参照されたデータはダミーによって上書きされていることに留意されたい。
  ≪Build、Lookup及びExtractアルゴリズムの効率≫
 上記のAlgorithm1,3はそれぞれO(NB)ビットの通信量とO(1)ラウンドで実行できる。また、上記のAlgorithm2はO(B)ビットの通信量とO(1)ラウンドで実行できる。
 <データ構造全体のアクセス>
 次に、クライアント10が、サーバ20が保持するデータ構造にアクセスするためのアルゴリズム(Accessアルゴリズム)について説明する。このAccessアルゴリズムは、上記のBuildアルゴリズム、Lookupアルゴリズム、Extractアルゴリズムをサブルーチンとして用いる。また、このAccessアルゴリズムは、配列[[T]]のアクセス回数の進んだ階層の解体・再構築を行うためのReshuffleアルゴリズムもサブルーチンとして用いる。以下、Accessアルゴリズム、Reshuffleアルゴリズムについて説明する。なお、以下では、キー・バリューペアがサーバ20側のデータ構造で保持されており、またクライアント10側はサーバ20のデータ構造とリンクしたデータ構造(辞書群)を有しているものとして説明する。
  ≪Accessアルゴリズム≫
 クライアント10がサーバ20のデータ構造にアクセスするためのAccessアルゴリズム(Algorithm4)を図5に示す。図5に示すAccessアルゴリズムは、op,k,v'を入力として、(k,v)を出力する。
 まず、クライアント10の演算部101は、l=0,・・・,L-1でΦ.membership(k)を実行し、ターゲットレベルt;argmin(k∈Φ)を得る(1行目)。ただし、k∈Φとなるlが存在しない場合、クライアント10の演算部101は、t=Lとする。なお、ターゲットレベルtとは、キーkが含まれる集合Sを保持するデータ構造Φの階層(レベル)のことである。
 次に、クライアント10の演算部101は、t番目の値が1となる長さL+1のOne-hotベクトル
Figure JPOXMLDOC01-appb-M000005
を生成し、シェア
Figure JPOXMLDOC01-appb-M000006
として、[[op]],[[k]],[[v']]と共にサーバ20に分散する(2行目)。以下、明細書のテキスト中では、文字の上に付与された「→」を文字の左上に記載する。例えば、上記の数5を明細書のテキスト中に記載する場合、dと記載する。
 次に、サーバ20の演算部201は、各l=0,・・・,Lにおいて並列に[[a]]←Lookup([[k]],[d],[[T]],R,[[s]],ctr)を実行する(3行目)。なお、a=(k,v)はキー・バリューペアである。
 次に、サーバ20の演算部201は、ベクトル[[a]]=([[a]],・・・,[[a]])と[[d]]の内積[[a]]←Prod([[a]],[[d]])を計算する(4行目)。
 次に、サーバ20の演算部201は、[[a]]をクライアント10に送信する(5行目)。
 そして、クライアント10の演算部101は、(k,v)←Reveal([[a]])を出力として得る(6行目)。
 また、サーバ20の演算部201は、[[a]]←IfElse([[op]],([[k]],[[v']]),[[a]])としてReshuffle([[a]])を実行する(7行目)。
 このように、Algorithm4は、サーバ20が保持するデータ構造にクライアント10がアクセスするためのアルゴリズムであり、サーバ20がクライアント10の補助入力(つまり、ベクトルd)を受けて実行する秘密計算プロトコルである。クライアント10は自身が持つ辞書群Φ,・・・,ΦL-1からターゲットとなるデータが存在する階層(レベル)を特定し、これをベクトルdという形でサーバ20に与える。これにより、サーバ20は(dの値は知らないままでも)秘密計算により効率的なデータアクセスが可能となる。
  ≪Reshuffleアルゴリズム≫
 配列[[T]]のアクセス回数の進んだ階層の解体・再構築を行うためのReshuffleアルゴリズム(Algorithm5)を図6に示す。図6に示すReshuffleアルゴリズムは、[[a]]を入力する。ここで、以下では、Reshuffleアルゴリズムが実行された時点で、或るレベルpにおいて配列[[T]]が未構築(つまり、データを保持していない状態)であり、かつ、全ての[[T]],・・・,[[Tp-1]]が構築済みであるものとする。
 まず、サーバ20の演算部201は、全てのl=0,・・・,p-1において[[A]]←Extract([[T]],[[π]])を並列に実行し、[[A]]=[[A]]||・・・||[[Ap-1]]||([[a]])とする(1行目)。これにより、各[[T]]は未構築状態に戻る。
 そして、サーバ20の演算部201は、[[T]],R,[[s]],[[π]],ctr←Build([[A]])によりレベルpのデータ構造を構築する(2行目)。
 このように、Algorithm5は、アクセス回数の進んだ階層を解体・再構築するためのアルゴリズムであり、アクセス済み要素の配置のランダマイズを行う。すなわち、構築済みの上層のデータ構造を全て解体し、下層へと押し込めることで、再度上層のデータ構造を利用可能としている。本アルゴリズムによるレベルpの再構築は2p回のアクセスごとに一度実行される。また、サーバ20側の秘密計算プロトコルである本アルゴリズムと並行して、クライアント10側では、辞書群Φ,・・・Φp-1の解体とΦへの統合が行われる。この辞書群Φ,・・・Φp-1の解体とΦへの統合は、上記の非特許文献1に記載されている方法と同様に行うことができる。この解体・統合の対象となるレベルpはアクセスの実行回数から一意であるため、クライアント10は、サーバ20と通信することなく、サーバ20のデータ構造とリンクしたデータ構造(辞書群)に更新することができる。
  ≪Access及びReshuffleアルゴリズムの効率≫
 まず、サーバ20側に掛かるコストとしては、Algorithm5では2に一度O(2B)ビット、O(1)ラウンドの通信を要するため、償却通信量はO(B×logN)ビット、償却ラウンド数はo(1)となる。したがって、Algorithm4全体の効率は償却通信量O(B×logN)ビット、償却ラウンド数o(1)となる。一方、クライアント10側に掛かるコストは、O(L+B)ビットの通信量とO(1)通信ラウンドとなる。ブロックサイズB=Ω(logN)ビットすれば、本実施形態のクライアント10-サーバ20間のオーバーヘッドはO(1)、サーバ20間のオーバーヘッドはO(logN)となる。
 <ハードウェア構成例>
 本実施形態に係るデータ管理システム1に含まれるクライアント10及びサーバ20は、例えば、図7に示すコンピュータ500のハードウェア構成により実現することができる。図7に示すコンピュータ500は、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、RAM(Random Access Memory)505と、ROM(Read Only Memory)506と、補助記憶装置507と、プロセッサ508とを有する。また、これらの各ハードウェアは、それぞれがバス509を介して通信可能に接続されている。
 入力装置501は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置502は、例えば、ディスプレイ、表示パネル等である。なお、コンピュータ500は、例えば、入力装置501及び表示装置502のうちの少なくとも一方を有していなくてもよい。
 外部I/F503は、記録媒体503a等の外部装置とのインタフェースである。コンピュータ500は、外部I/F503を介して、記録媒体503aの読み取りや書き込み等を行うことができる。記録媒体503aとしては、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
 通信I/F504は、コンピュータ500を通信ネットワークに接続させるためのインタフェースである。RAM505は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM506は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置507は、例えば、HDD、SSD、フラッシュメモリ等のストレージ装置(記憶装置)である。プロセッサ508は、例えば、CPU等の演算装置である。
 本実施形態に係るデータ管理システム1に含まれるクライアント10及びサーバ20は、例えば、図7に示すコンピュータ500のハードウェア構成を有することにより、上述した各種処理を実現することができる。ただし、図7に示すコンピュータ500のハードウェア構成は一例であって、これに限られるものではない。例えば、コンピュータ500は、複数の補助記憶装置507や複数のプロセッサ508を有していてもよいし、図示したハードウェアの一部を有していなくてもよいし、図示したハードウェア以外の様々なハードウェアを有していてもよい。
 <既存技術との比較>
 上記の非特許文献1に記載されている既存技術は、単一サーバ、かつ、クライアント-サーバ間の通信ラウンドが定数(O(1))であるが、クライアントにO(N+√(N)B)ビットの記憶容量が必要であり、かつ、クライアント-サーバ間にO(logN)の通信量が必要である。
 一方で、上記の非特許文献2に記載されている既存技術は、複数台のサーバが必要だがクライアント-サーバ間の通信量・通信ラウンドが共に定数、かつ、クライアントに大きな記憶容量が不要であるが、サーバ同士での通信量・通信ラウンドが共にO(logN)となる。
 上記の既存技術に対して、本実施形態に係るデータ管理システム1では、既存技術のそれぞれの要素を複合しており、定数ラウンドのマルチサーバORAMを実現している。既存技術に対する本実施形態に係るデータ管理システム1の貢献は主に以下の2点である。
 ・定数ラウンドとクライアント負荷軽減の両立
 本実施形態に係るデータ管理システム1では、クライアント10のストレージサイズをO(N)ビットに削減し、かつ、クライアント10-サーバ20間のラウンド数・通信量が共に定数(O(1))となる。
 ・サーバ間で定数ラウンドかつ通信量O(logN)のマルチサーバORAM
 本実施形態に係るデータ管理システム1では、サーバ20間の通信量がO(logN)、ラウンド数は定数(O(1))となり、アクセスプロトコル全体で通信ラウンド数がO(1)である。
 <まとめ>
 以上のように、本実施形態に係るデータ管理システム1は、既存技術と比較して効率的なマルチサーバORAMを実現することができる。このため、本実施形態に係るデータ管理システム1を用いて、安全かつ効率的な分散データベースを構築することが可能になり、例えば、安全かつ効率的なクラウドストレージサービス等への応用が期待できる。
 本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
 [参考文献1]
 参考文献1:Rasmus Pagh. Low redundancy in static dictionaries with constant query time. SIAM Journal on Computing, Vol. 31, No. 2, pp. 353-363, 2001.
 参考文献2:Adi Shamir. How to share a secret. Commun. ACM, Vol. 22, No. 11, pp. 612-613, 1979.
 参考文献3:Koji Chida, Daniel Genkin, Koki Hamada, Dai Ikarashi, Ryo Kikuchi, Yehuda Lindell, and Ariel Nof. Fast large-scale honest-majority mpc for malicious adversaries. In CRYPTO, pp. 34-64, 2018.
 参考文献4:Marcel Keller and Peter Scholl. Efficient, oblivious data structures for mpc. In ASIACRYPT, pp. 506-525, 2014.
 参考文献5:Koji Chida, Koki Hamada, Dai Ikarashi, Ryo Kikuchi, Naoto Kiribuchi, and Benny Pinkas. An efficient secure three-party sorting protocol with an honest majority. Cryptology ePrint Archive, 2019.
 参考文献6:Martin R. Albrecht, Christian Rechberger, Thomas Schneider, Tyge Tiessen, and Michael Zohner. Ciphers for mpc and fhe. In EUROCRYPT, pp. 430-454, 2015.
 1    データ管理システム
 10   クライアント
 20   サーバ
 30   通信ネットワーク
 101  演算部
 102  記憶部
 201  演算部
 202  記憶部
 500  コンピュータ
 501  入力装置
 502  表示装置
 503  外部I/F
 503a 記録媒体
 504  通信I/F
 505  RAM
 506  ROM
 507  補助記憶装置
 508  プロセッサ
 509  バス

Claims (7)

  1.  クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムであって、
     前記クライアントは、
     辞書を表すL個のデータ構造Φ,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定部と、
     t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散部と、を有し、
     前記サーバは、
     キー・バリューペアで表される秘匿化されたデータを格納する配列[[T]],・・・,[[T]]と、[[T]]を参照するための補助情報を格納する平文の配列R,・・・,Rと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するa=(k,v)の秘密値[[a]]を秘密値[[T]]から取得する取得部と、
     秘密値[[a]]=([[a]],・・・,[[a]])と、前記秘密値[[d]]との内積の秘密値[[a]]を前記クライアントに送信する内積計算部と、
     を有するデータ管理システム。
  2.  前記クライアントは、
     前記秘密値[[a]]を復元して前記キーkと前記アクセス対象のデータvとのキー・バリューペア(k,v)を計算する復元部、を更に有する請求項1に記載のデータ管理システム。
  3.  前記分散部は、
     前記opが表すアクセス操作がwriteである場合に書き込む値v'の秘密値[[v']]を更に前記複数のサーバに分散し、
     前記サーバは、
     前記秘密値[[op]]と、前記秘密値[[k]]と、前記秘密値[[v']]とを用いて、秘匿化されたキー・バリューペアが格納されているp個の前記配列[[T]],・・・,[[Tp-1]]と、(k,v')の秘密値とをキー・バリューペアが未だ格納されていない前記配列[[T]]に格納する格納部、を更に有する請求項1又は2に記載のデータ管理システム。
  4.  前記格納部は
     前記配列[[T]],・・・,[[Tp-1]]に格納されている秘匿化されたキー・バリューペアの配列をそれぞれ[[A]],・・・,[[Ap-1]]として、[[A]],・・・,[[Ap-1]]と(k,v')を要素とする配列とを結合した配列の秘密値[[A]]を計算し、
     前記秘密値[[A]]と、前記秘密値[[A]]の要素数と同数のダミーデータを要素とする配列の秘密値[[D]]とを結合した配列の秘密値[[T]]を計算し、
     前記秘密値[[T]]と、前記秘密値[[T]]と同数の疑似乱数値を要素とする配列の秘密値[[R]]とをそれぞれランダム置換し、
     前記ランダム置換した前記秘密値[[T]]を配列[[T]]、前記ランダム置換した前記秘密値[[R]]を復元した値RをRとして記憶部に保持する請求項3に記載のデータ管理システム。
  5.  前記取得部は、
     前記秘密値[[d]]=([[d]],・・・,[[dL+1]])を用いて、[[d]]により前記キーに合致するデータがダミーデータであるか否かを判定し、ダミーデータでない場合に前記キーkに合致するa=(k,v)の秘密値[[a]]を秘密値[[T]]から取得する、請求項4に記載のデータ管理システム。
  6.  クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムに用いられる方法であって、
     前記クライアントが、
     辞書を表すL個のデータ構造Φ,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定手順と、
     t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散手順と、を実行し、
     前記サーバが、
     キー・バリューペアで表される秘匿化されたデータを格納する配列[[T]],・・・,[[T]]と、[[T]]を参照するための補助情報を格納する平文の配列R,・・・,Rと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するa=(k,v)の秘密値[[a]]を秘密値[[T]]から取得する取得手順と、
     秘密値[[a]]=([[a]],・・・,[[a]])と、前記秘密値[[d]]との内積の秘密値[[a]]を前記クライアントに送信する内積計算手順と、
     を実行する方法。
  7.  コンピュータを、請求項1に記載のデータ管理システムに含まれるクライアント又はサーバとして機能させるプログラム。
PCT/JP2023/006016 2023-02-20 2023-02-20 データ管理システム、方法、及びプログラム Ceased WO2024176307A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2025501937A JPWO2024176307A1 (ja) 2023-02-20 2023-02-20
PCT/JP2023/006016 WO2024176307A1 (ja) 2023-02-20 2023-02-20 データ管理システム、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2023/006016 WO2024176307A1 (ja) 2023-02-20 2023-02-20 データ管理システム、方法、及びプログラム

Publications (1)

Publication Number Publication Date
WO2024176307A1 true WO2024176307A1 (ja) 2024-08-29

Family

ID=92500467

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/006016 Ceased WO2024176307A1 (ja) 2023-02-20 2023-02-20 データ管理システム、方法、及びプログラム

Country Status (2)

Country Link
JP (1) JPWO2024176307A1 (ja)
WO (1) WO2024176307A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021144905A1 (ja) * 2020-01-16 2021-07-22 日本電信電話株式会社 秘匿ハッシュテーブル構築システム、参照システム、およびそれらの方法
WO2022123744A1 (ja) * 2020-12-10 2022-06-16 日本電信電話株式会社 秘匿ハッシュテーブル構築装置、秘匿ハッシュテーブル構築システム、秘匿ハッシュテーブル構築方法、及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021144905A1 (ja) * 2020-01-16 2021-07-22 日本電信電話株式会社 秘匿ハッシュテーブル構築システム、参照システム、およびそれらの方法
WO2022123744A1 (ja) * 2020-12-10 2022-06-16 日本電信電話株式会社 秘匿ハッシュテーブル構築装置、秘匿ハッシュテーブル構築システム、秘匿ハッシュテーブル構築方法、及びプログラム

Also Published As

Publication number Publication date
JPWO2024176307A1 (ja) 2024-08-29

Similar Documents

Publication Publication Date Title
Zhang et al. Towards efficient verifiable forward secure searchable symmetric encryption
Liu et al. DivORAM: Towards a practical oblivious RAM with variable block size
US8811611B2 (en) Encryption/decryption of digital data using related, but independent keys
CN106127075B (zh) 一种云存储环境下基于隐私保护的可搜索加密方法
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
Ying et al. Reliable policy updating under efficient policy hidden fine-grained access control framework for cloud data sharing
US12333039B2 (en) Secret hash table construction system, reference system, methods for the same
CN107077469B (zh) 服务器装置、检索系统、终端装置以及检索方法
KR102308066B1 (ko) 저선형 공개-키 동작들을 사용하는 개인 정보 리트리벌
Hoang et al. Practical and secure dynamic searchable encryption via oblivious access on distributed data structure
US11250004B2 (en) Secure equijoin system, secure equijoin device, secure equijoin method, and program
Hetz et al. Scaling mobile private contact discovery to billions of users
JPWO2018047698A1 (ja) 暗号化メッセージ検索方法、メッセージ送受信システム、サーバ、端末、プログラム
KR20230058314A (ko) 다중 키 정보 검색
Hoang et al. Oblivious dynamic searchable encryption on distributed cloud systems
JP7060115B2 (ja) 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム
Huang et al. A searchable encryption scheme for outsourcing cloud storage
JP2023153025A (ja) 分散型マルチオーソリティの属性ベース内積関数型暗号化
Dowsley et al. A report on design and implementation of protected searchable data in iaas
CN112966294B (zh) 一种单轮交互的链表oram访问方法
WO2024176307A1 (ja) データ管理システム、方法、及びプログラム
Suganya et al. Security and privacy-efficient encryption algorithm for cloud data using genetic prime crossover technique
Yang et al. A light-weight solution to preservation of access pattern privacy in un-trusted clouds
Nguyen et al. Client-efficient online-offline private information retrieval
Hwang et al. Encrypted keyword search mechanism based on bitmap index for personal storage services

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23923963

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2025501937

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2025501937

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 23923963

Country of ref document: EP

Kind code of ref document: A1