WO2024176307A1 - データ管理システム、方法、及びプログラム - Google Patents
データ管理システム、方法、及びプログラム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
Description
まず、本実施形態の説明に必要な技術について説明する。
ORAMは、データの持ち主たるクライアントと、データを預かる(信頼できない)サーバとの間で実行されるデータアクセスプロトコルである。ORAMは、主に、データアクセス時にサーバ側で観測されるメモリ参照位置(これはアクセスパターンとも呼ばれる。)の秘匿を目的としている。
Complete dictionary Φは、或る全体集合{1,・・・,N}に対して、その任意の部分集合S⊆{1,・・・,N}を保持し、また所属判定クエリΦ.membership(k)=[k∈?S]に対して応答できるデータ構造である。ここで、所属判定クエリΦ.membership(k)とは、任意のk∈{1,・・・,N}に対して、Complete dictionary Φが保持する集合Sにkが含まれるか否かの判定を要求するクエリのことである。
秘密計算は、データを暗号化したまま様々な計算を行う技術である。本実施形態では、以下で説明する積和、条件付き選択、置換、逆置換、疑似ランダム置換が少なくとも計算可能な秘密計算を用いる。これらの計算を可能とする秘密計算の一例としては、秘密分散法(参考文献2)を利用した手法等が挙げられる。以下では、秘密分散法を利用したマルチパーティ計算(MPC:multi-party computation)を想定する。ただし、これに限られるものではなく、同等の機能を持つ手法であれば任意の手法を用いることが可能である。なお、秘密分散法を利用したマルチパーティ計算は、例えば、秘匿マルチパーティ計算等と呼ばれてもよい。
[[A]]、[[B]]をそれぞれ要素数nの配列のシェアとしたとき、両者の積和(内積)を以下のように表す。
これには、例えば、参考文献3に記載されている方法を用いることができる。
条件付き選択を以下のように記述する。
ここで、入力[[x]]、[[y]]はuビットのシェア、[[e]]は1ビットのシェアとする。出力はe=1ならばz=x、そうでなければz=yを満たす。これには、例えば、参考文献4に記載されている方法を用いることができる。
[[A]]を要素数nの配列のシェアとし、[[π]]を置換π:[n]→[n]のシェアとする。このとき、[A]の置換と逆置換をそれぞれ以下で表す。
[[π-1A]]←Unperm([[π]],[[A]])
これには、例えば、参考文献5に記載されている方法を用いることができる。
秘密の鍵[[s]]とシェア[[x]]から疑似乱数値のシェアを得る処理を以下で表す。
これには、例えば、参考文献6に記載されている方法を用いることができる。
本実施形態に係るデータ管理システム1の全体構成例を図1に示す。図1に示すように、本実施形態に係るデータ管理システム1には、クライアント10と、複数のサーバ20とが含まれている。また、クライアント10と各サーバ20は、例えば、インターネット等の通信ネットワーク30を介して相互に通信可能に接続される。なお、図1に示す例では、サーバ201、サーバ202、・・・、サーバ20M'が存在する場合を示している。ここで、M'(≧2)はサーバ20の総数である。以下では、各サーバ20m'(m'∈{1,・・・,M'})を総称して単に「サーバ20」と表記する。
クライアント10が持つデータ構造とサーバ20が持つデータ構造について説明する。
クライアント10は、L個のデータ構造Φ0,・・・,ΦL-1を持つ。すなわち、クライアント10は、L段の階層型データ構造Φl(lは小文字の「L」)を持つ。ただし、
サーバ20は、秘匿化されたL+1個の配列[[T0]],・・・,[[TL]];|Tl|=2l+1と、平文のL+1個の配列R0,・・・,RL;|Rl|=2l+1とを持つ。すなわち、サーバ20は、L+1段の階層型データ構造である配列[[Tl]]及び配列Rlを持つ。
本実施形態では、サーバ20が保持する階層型データ構造はランダム置換を利用したシンプルなアルゴリズムにより管理できる。以下で説明するBuildアルゴリズム、Lookupアルゴリズム及びExtractアルゴリズムはいずれもクライアント10との通信に基づく補助入力や補助計算を必要とせず、サーバ20間での秘密計算(つまり、例えば、秘密分散法を利用したMPC)で実現される。
以下では、表記の簡単のため或るlに関する[[Tl]]、Rlをそれぞれ[[T]]、Rとして、[[T]]、Rを構築するためのBuildアルゴリズム(Algorithm1)を図2に示す。図2に示すBuildアルゴリズムは、[[A]]を入力として、[[T]],R,[[s]],[[π]],ctrを出力する。ただし、[[A]]=([[a1]],・・・,[[an]])、[[ai]]=([[ki]],[[vi]])、ki∈[N]、かつ、全てのi,j≠iについてki≠⊥ならばki≠kjであるものとする。また、このBuildアルゴリズムの実行によってA⊆Tが保証される。なお、[[A]]は、例えば、クライアント10から与えられる。
クエリkに合致するデータを[[T]]から取得するためのLookupアルゴリズム(Algorithm2)を図3に示す。図3に示すLookupアルゴリズムは、[[k]],[[d]],[[T]],R,[[s]],ctrを入力として、([[k]],[[v]])を出力する。ただし、d∈{0,1}であるものとする。なお、dは、クエリがダミーか否かを表すフラグであり、参照位置に制御に用いられる。
配列[[A]]を取り出すためのExtractアルゴリズム(Algorithm3)を図4に示す。図4に示すExtractアルゴリズムは、[[T]],[[π]]を入力として、[[A]]を出力する。
上記の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のデータ構造とリンクしたデータ構造(辞書群)を有しているものとして説明する。
クライアント10がサーバ20のデータ構造にアクセスするためのAccessアルゴリズム(Algorithm4)を図5に示す。図5に示すAccessアルゴリズムは、op,k,v'を入力として、(k,v)を出力する。
配列[[T]]のアクセス回数の進んだ階層の解体・再構築を行うためのReshuffleアルゴリズム(Algorithm5)を図6に示す。図6に示すReshuffleアルゴリズムは、[[~a]]を入力する。ここで、以下では、Reshuffleアルゴリズムが実行された時点で、或るレベルpにおいて配列[[Tp]]が未構築(つまり、データを保持していない状態)であり、かつ、全ての[[T0]],・・・,[[Tp-1]]が構築済みであるものとする。
まず、サーバ20側に掛かるコストとしては、Algorithm5では2pに一度O(2pB)ビット、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を介して通信可能に接続されている。
上記の非特許文献1に記載されている既存技術は、単一サーバ、かつ、クライアント-サーバ間の通信ラウンドが定数(O(1))であるが、クライアントにO(N+√(N)B)ビットの記憶容量が必要であり、かつ、クライアント-サーバ間にO(logN)の通信量が必要である。
本実施形態に係るデータ管理システム1では、クライアント10のストレージサイズをO(N)ビットに削減し、かつ、クライアント10-サーバ20間のラウンド数・通信量が共に定数(O(1))となる。
本実施形態に係るデータ管理システム1では、サーバ20間の通信量がO(logN)、ラウンド数は定数(O(1))となり、アクセスプロトコル全体で通信ラウンド数がO(1)である。
以上のように、本実施形態に係るデータ管理システム1は、既存技術と比較して効率的なマルチサーバORAMを実現することができる。このため、本実施形態に係るデータ管理システム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.
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)
- クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムであって、
前記クライアントは、
辞書を表すL個のデータ構造Φ0,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定部と、
t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散部と、を有し、
前記サーバは、
キー・バリューペアで表される秘匿化されたデータを格納する配列[[T0]],・・・,[[TL]]と、[[Tl]]を参照するための補助情報を格納する平文の配列R0,・・・,RLと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するal=(kl,vl)の秘密値[[al]]を秘密値[[Tl]]から取得する取得部と、
秘密値[[a]]=([[a0]],・・・,[[aL]])と、前記秘密値[[d]]との内積の秘密値[[~a]]を前記クライアントに送信する内積計算部と、
を有するデータ管理システム。 - 前記クライアントは、
前記秘密値[[~a]]を復元して前記キーkと前記アクセス対象のデータvとのキー・バリューペア(k,v)を計算する復元部、を更に有する請求項1に記載のデータ管理システム。 - 前記分散部は、
前記opが表すアクセス操作がwriteである場合に書き込む値v'の秘密値[[v']]を更に前記複数のサーバに分散し、
前記サーバは、
前記秘密値[[op]]と、前記秘密値[[k]]と、前記秘密値[[v']]とを用いて、秘匿化されたキー・バリューペアが格納されているp個の前記配列[[T0]],・・・,[[Tp-1]]と、(k,v')の秘密値とをキー・バリューペアが未だ格納されていない前記配列[[Tp]]に格納する格納部、を更に有する請求項1又は2に記載のデータ管理システム。 - 前記格納部は
前記配列[[T0]],・・・,[[Tp-1]]に格納されている秘匿化されたキー・バリューペアの配列をそれぞれ[[A0]],・・・,[[Ap-1]]として、[[A0]],・・・,[[Ap-1]]と(k,v')を要素とする配列とを結合した配列の秘密値[[Ap]]を計算し、
前記秘密値[[Ap]]と、前記秘密値[[Ap]]の要素数と同数のダミーデータを要素とする配列の秘密値[[D]]とを結合した配列の秘密値[[~T]]を計算し、
前記秘密値[[~T]]と、前記秘密値[[~T]]と同数の疑似乱数値を要素とする配列の秘密値[[~R]]とをそれぞれランダム置換し、
前記ランダム置換した前記秘密値[[~T]]を配列[[Tp]]、前記ランダム置換した前記秘密値[[~R]]を復元した値RをRpとして記憶部に保持する請求項3に記載のデータ管理システム。 - 前記取得部は、
前記秘密値[[d]]=([[d0]],・・・,[[dL+1]])を用いて、[[dl]]により前記キーに合致するデータがダミーデータであるか否かを判定し、ダミーデータでない場合に前記キーkに合致するal=(kl,vl)の秘密値[[al]]を秘密値[[Tl]]から取得する、請求項4に記載のデータ管理システム。 - クライアントと互いに秘密計算プロトコルを実行する複数のサーバとによりマルチサーバORAMを実現するデータ管理システムに用いられる方法であって、
前記クライアントが、
辞書を表すL個のデータ構造Φ0,・・・,ΦL-1を用いて、アクセス対象のデータのキーkが所属する階層t∈{0,・・・,L-1}を特定する特定手順と、
t番目の値が1となる長さL+1のOne-hotベクトルdの秘密値[[d]]と、アクセス操作がread又はwriteのいずれであるかを表すopの秘密値[[op]]と、前記キーkの秘密値[[k]]とを前記複数のサーバに分散する分散手順と、を実行し、
前記サーバが、
キー・バリューペアで表される秘匿化されたデータを格納する配列[[T0]],・・・,[[TL]]と、[[Tl]]を参照するための補助情報を格納する平文の配列R0,・・・,RLと、前記秘密値[[d]]と、前記秘密値[[op]]と、前記秘密値[[k]]とを用いて、各l=0,・・・,Lにおいて並列に前記キーkに合致するal=(kl,vl)の秘密値[[al]]を秘密値[[Tl]]から取得する取得手順と、
秘密値[[a]]=([[a0]],・・・,[[aL]])と、前記秘密値[[d]]との内積の秘密値[[~a]]を前記クライアントに送信する内積計算手順と、
を実行する方法。 - コンピュータを、請求項1に記載のデータ管理システムに含まれるクライアント又はサーバとして機能させるプログラム。
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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021144905A1 (ja) * | 2020-01-16 | 2021-07-22 | 日本電信電話株式会社 | 秘匿ハッシュテーブル構築システム、参照システム、およびそれらの方法 |
| WO2022123744A1 (ja) * | 2020-12-10 | 2022-06-16 | 日本電信電話株式会社 | 秘匿ハッシュテーブル構築装置、秘匿ハッシュテーブル構築システム、秘匿ハッシュテーブル構築方法、及びプログラム |
-
2023
- 2023-02-20 WO PCT/JP2023/006016 patent/WO2024176307A1/ja not_active Ceased
- 2023-02-20 JP JP2025501937A patent/JPWO2024176307A1/ja active Pending
Patent Citations (2)
| 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 |





