Queue calculation system, queue calculation device, queue calculation method, and program
Patent Information
- Application Number
- JP2023553888
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-10-15
- Publication Date
- 2025-03-27
- Estimated Expiration
- 2041-10-15
Smart Images

Figure 0007652280000001 
Figure 0007652280000002 
Figure 0007652280000003
Abstract
Description
[Technical field]
[0001] The present invention relates to a technique for realizing a data structure that keeps data secret from a server when storing data on a server such as a cloud server. [Background technology]
[0002] In the following description, the names of references are shown at the end of the specification together with their reference numbers, and when a reference is referred to within the specification, the reference number is written as "[1]", etc.
[0003] A priority queue is a data structure in which a "priority" is assigned to each piece of data and stored, and when retrieving data, the data with the lowest (or highest) "priority" is retrieved first.
[0004] Priority queues are used to implement sorting (heap sort) and solve graph problems such as the shortest path problem, and can also be used to store stream data and perform sequential sorting and sampling. They are a versatile technology that can be used in a variety of ways, including working well with sensing data using IoT.
[0005] There is a technology called oblivious priority queue [3,4,8,10,11] that uses such priority queues while entrusting data storage to unreliable external servers. This technology not only conceals data by encryption and stores it on the server, but also randomizes the algorithm when referencing data to realize queue operations while concealing the data operation order and the priority of each data from the server. [Prior art documents] [Non-patent literature]
[0006] [Non-Patent Document 1] Tomas Toft. Secure data structures based on multi-party computation. In PODC, pages 291-292,2011. Summary of the Invention [Problem to be solved by the invention]
[0007] The above-mentioned Non-Patent Document 1 (Reference
[10] ) discloses the first method to realize a conventional confidential priority queue. Although the technology disclosed in Non-Patent Document 1 is a highly secure method that does not cause probabilistic data structure corruption, the possible operations are minimal, i.e., data insertion and top-priority data deletion, and there is a problem that the information about "which operation is being performed (insertion or deletion)" is leaked to the server.
[0008] On the other hand, subsequent technologies ([3, 4, 8, 11]) that achieve the addition of functions (deletion of arbitrary data, changing priority) or concealment of operation contents have the problem that they all probabilistically corrupt data structures.
[0009] The present invention has been made in consideration of the above points, and aims to provide a technique that enables advanced operations on confidential priority queues without probabilistically damaging the data structure. [Means for solving the problem]
[0010] According to the disclosed technology, there is provided a queue calculation system that executes processing on a confidentiality priority queue, comprising: a storage unit for storing a data structure that combines a hierarchical randomized array and a binary tree; a calculation unit for performing an operation on the data structure, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node that can hold data, priority, position, and hierarchy information in the randomized array as element information. A queue calculation system is provided. Effect of the Invention
[0011] According to the disclosed technology, it becomes possible to perform advanced operations on confidential priority queues without probabilistically damaging the data structure. [Brief description of the drawings]
[0012] [Figure 1] FIG. 1 is a diagram illustrating an example of an apparatus configuration according to an embodiment of the present invention. [Diagram 2] FIG. 1 is a diagram illustrating an example of a network configuration according to an embodiment of the present invention. [Diagram 3] FIG. 13 is a diagram showing a data structure for implementing a confidentiality priority queue. [Figure 4] FIG. 11 is a diagram showing a processing procedure of the second embodiment. [Diagram 5] FIG. 1 is a diagram showing an overview of a second embodiment. [Figure 6] FIG. 11 is a diagram showing a processing procedure of the third embodiment. [Figure 7] FIG. 13 is a diagram showing a processing procedure of the fourth embodiment. [Figure 8] FIG. 23 is a diagram showing a processing procedure of the sixth embodiment. [Figure 9] FIG. 13 is a diagram showing a processing procedure of the seventh embodiment. [Figure 10] FIG. 13 is a diagram showing a processing procedure of the eighth embodiment. [Figure 11] FIG. 2 illustrates an example of a hardware configuration of the apparatus. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] Hereinafter, an embodiment of the present invention (the present embodiment) will be described with reference to the drawings. The embodiment described below is merely an example, and the embodiment to which the present invention is applied is not limited to the following embodiment.
[0014] (Outline of the embodiment) In this embodiment, we will explain a technology that realizes a confidential prioritized queue, which simultaneously satisfies three requirements that were not achieved with conventional technology: (1) a data structure that is not susceptible to probabilistic corruption, (2) the addition of a function to delete arbitrary data and change the priority, and (3) confidentiality of operation contents.
[0015] In the technology according to the present embodiment, for example, a case can be assumed in which a client entrusts data held by the client to a server. Here, the client and server may each be single or multiple. When there are multiple servers, the processing on the client side can be reduced by using multi-party computation technology (e.g.,
[12] ). In addition, by using multi-party computation, a confidential prioritized queue can be constructed between multiple servers even if no client exists.
[0016] (System configuration example) Fig. 1 shows an example of a functional configuration of a queue calculation system 100 according to this embodiment. As shown in Fig. 1, the queue calculation system 100 includes an input unit 110, a calculation unit 120, an output unit 130, and a storage unit 140. The queue calculation system may be called a "queue calculation device."
[0017] The input unit 110 inputs data required for processing. The storage unit 140 stores data having a data structure described in the first embodiment. The calculation unit 120 executes operations described in the second to eighth embodiments on the data stored in the storage unit 140. The output unit 130 outputs the calculation results.
[0018] The queue calculation system 100 may be a single server (computer) equipped with the function of executing an algorithm based on secure calculation, or may be a system consisting of multiple servers, or may be a system consisting of a client terminal and one or multiple servers as shown in Figure 2.
[0019] When the queue calculation system 100 is realized by a plurality of servers, the "calculation unit 120+storage unit 140" corresponds to the calculation function and storage function realized by the plurality of servers. When the queue calculation system 100 is realized by a client terminal and one or more servers, the "calculation unit 120+storage unit 140" corresponds to the calculation function and storage function realized by the client terminal and one or more servers.
[0020] (Prior art used in this embodiment) In this embodiment, several prior art technologies are used in the processing operations of the queue calculation system 100. Below, an overview of these prior art technologies will be described.
[0021] <Data concealment and restoration> Let [[x]] denote the concealment of plaintext x. Methods of concealment include symmetric key cryptography, public key cryptography (e.g., Reference [9]), and secret sharing (e.g., Reference [7]) in the case of multiple servers. However, any method that provides equivalent functionality and security can be used.
[0022] <Shuffle array> The concealed array [[A]]=([[a1]],...,[[a m ]]), the process of shuffling the elements while keeping their order secret is [[π]],[[A´]]←Shuffle([[A]]) And the reverse operation of the shuffle is [[A]]←Unshuffle([[π]],[[A´]]) Here, π is the information representing the permutation of the array, and A' = πA is satisfied.
[0023] To achieve the above, for example, a client-server protocol [6] or a protocol involving cooperation among multiple servers [5] can be used.
[0024] <Comparison (multi-party computation)> Comparison operations in multi-party computation are written as follows:
[0025] [[c]]←E Q ([[a]],[[b]]),[[d]]←L T ([[a]],[[b]]) Here, c is 1 if a=b, and 0 if a=b. Also, d is a <bならば1となり、a<bでなければ0となる。
[0026] To achieve the above, for example, the method described in reference [1] can be used.
[0027] <Conditional Selection (Multi-Party Computation)> We write conditional selection in multi-party computation as follows:
[0028] [[c]]←IfElse([[f]],[[a]],[[b]]) Here, let f∈{0,1}, and if f=1 then c=a, and if f=1 is not the case then c=b.
[0029] To achieve the above, for example, the method described in reference [4] can be used.
[0030] <Oblivious One-Time Memory> Oblivious One-Time Memory (OTM) is a data structure described in reference [2], which has the property that it is not prone to probabilistic corruption. OTM consists of the following three algorithms: Build, Lookup, and Getall. Note that OTM may also be called a randomized array. However, randomized arrays are not limited to OTM.
[0031] ·OTM.Build([[A]]): An algorithm for constructing the data structure OTM. If the number of elements in the input array [[A]] is m, then the constructed OTM has as its components an array [[T]] with 2m elements and an array [[Pos]] with m elements. At this time, the elements of the input [[A]] are stored somewhere in the array [[T]], and the remaining elements of [[T]] are filled with dummy data. Where the elements of [[A]] are located in [[T]] is recorded in [[Pos]].
[0032] ·OTM.Lookup([[pos]]): An algorithm that references the data structure OTM. The input pos is either an element of the above [[Pos]] or dummy information, and the algorithm Lookup (1) references the pos-th element of the array [[T]] if pos is normal (an element of [[Pos]]), and (2) references any dummy data in [[T]] if pos is dummy. At this time, data that has been referenced once is deleted from OTM (more strictly speaking, it is overwritten by the dummy data).
[0033] OTM.Getall(): An algorithm that dismantles the data structure OTM. It outputs an array with m elements that contains all the actual data remaining in OTM (the elements of the original array [[A]]).
[0034] Here, we assume that OTM has the arrays [[T]] and [[Pos]] as its components, but it may have any other components as well.
[0035] The storage location of [[T]], which stores the data body in OTM, is not limited to a specific location, but in this embodiment, as an example, it is assumed to be stored on the server side. Other elements may be stored on either the server or the client terminal.
[0036] In reference [2], the above algorithm is realized by cooperative computation between clients and servers. However, by simply replacing its constituent parts, shuffling and value comparison / selection on the client side, with shuffling, comparison, and conditional selection using multi-party computation, the equivalent functionality can be achieved using only multiple servers, without the involvement of clients.
[0037] Hereinafter, specific processing contents executed by the queue calculation system 100 will be explained with reference to Examples 1 to 8. In the following explanation, "data structure" may be used to mean data having that structure. Also, Examples 1 to 8 can be executed in any combination. Also, the queue calculation system 100 may have all the functions of Examples 1 to 8, or may have only some of the functions of Examples 1 to 8.
[0038] Example 1 In this embodiment, a data structure for realizing a new confidentiality priority queue will be described. Data of this data structure is stored in the storage unit 140 of the queue calculation system 100.
[0039] The data structure is shown in Figure 3. As shown in Figure 3, the data structure is a combination of OTM and binary tree data structures that exist in a hierarchical structure. As shown in reference [2], the OTM has one real data and one dummy data in the Level_1 hierarchy, and similarly, the Level_i hierarchy has two real data and one dummy data. i-1 Actual data and 2 i-1 In addition, in this embodiment, a binary tree graph node is assigned to each element of the data array [[T]], which is a component of the OTM, and the root of the binary tree is assigned as Level_0.
[0040] In this data structure, each data d is combined with its priority p ([[p]], [[d]]) and stored as a block in the OTM of one of the Levels. At each Level, the OTM is either in a "full" state (holding a specified number of data) or an "empty" state (containing no data at all).
[0041] Each node in the binary tree can hold only one pair ([[p]],[[d]],[[pos]],[[lv]]), where pos and lv are pieces of information indicating that "data ([[p]],[[d]]) is the pos-th element of the OTM of Level_lv." Of the four included in ([[p]],[[d]],[[pos]],[[lv]]), it is not necessary to hold [[d]].
[0042] Example 2 In this embodiment, a description will be given of an operation for updating a node of a binary tree in the data structure shown in embodiment 1. Fig. 4 is a flowchart showing the procedure of the operation executed by the queue calculation system 100.
[0043] In S201, an arbitrary binary tree node in the data structure of the first embodiment is input from the input unit 110. In S202, the calculation unit 120 judges whether the input node is a leaf node (corresponding to Level_L in FIG. 3). If the input node is a leaf node, the process proceeds to S203, and if it is not a leaf node, the process proceeds to S204.
[0044] In S203 (when the input node is a leaf node), the calculation unit 120 stores the OTM element ([[p]], [[d]]) corresponding to the node, its position pos, and the combination of the layer L ([[p]], [[d]], [[pos]], [[L]]) in the node.
[0045] In S204 (when the input node is not a leaf), the calculation unit 120 calculates the left and right child nodes of the node. l , node r Each holds data ([[pl ]],[[d l ]],[[pos l ]],[[lv l ]]) and ([[p r ]],[[d r ]],[[pos r ]],[[lv r ]]) and the OTM element ([[p]], [[d]]) corresponding to the node, select the data with the lowest priority and save it in the node. However, if ([[p]], [[d]]) has the lowest priority, the position information pos, lv of the data is added and saved, as in S203 above.
[0046] Fig. 5 shows an image of the process of S204. As shown in Fig. 5, data held by the node with the smallest priority value among the target node and its left and right child nodes is saved in the target node. Note that in this embodiment, the smaller the priority value for data, the higher the priority of that data.
[0047] In addition, the operations in Example 2 can be realized by, for example, in the case of a client-server model, the client terminal obtains the necessary data (OTM elements corresponding to node, child nodes of node) from the server, decrypts it to plain text, and performs a magnitude comparison. If there are multiple servers, the operations can also be performed by the servers themselves using magnitude comparison and conditional selection in multi-party computation.
[0048] Example 3 In this embodiment, the queue calculation system 100 executes a process of reproducing the “insertion” operation of the priority queue using the data structure of the embodiment 1, the algorithm of the embodiment 2, and each operation algorithm of the OTM. Fig. 6 is a flowchart showing the procedure of the insertion operation executed by the queue calculation system 100.
[0049] In S301, a pair of data d to be newly inserted and its priority p ([[p]], [[d]]) is input from the input unit 110.
[0050] In S302, the arithmetic unit 120 searches for the uppermost "empty" OTM in order from Level_1 in the data (data structure of Embodiment 1) stored in the storage unit 140. Here, assuming that the OTM which is the OTM of Level_i is the first empty OTM, for all OTMs before Level_i, the algorithm OTM i .Getall() is used to retrieve the data (0 < j < i), and all data columns are combined to create a large array (the number of elements is 2 j . After retrieving the data, all the OTMs i-1 return to the "empty" state. j
[0051] In S303, the arithmetic unit 120 combines the data (and its priority) to be newly inserted at the end of the array created in S302 to form an array [[A]] with 2 i-1 elements. Using this, the arithmetic unit 120 executes the algorithm OTM i .Build([[A]]) to set the OTM i to the "filled" state.
[0052] In S304, the arithmetic unit 120 updates all the nodes belonging to the same level in order from Level_i where the new data is stored to Level_0 by the method of Embodiment 2.
[0053] In this embodiment, the "empty" layer where the new data (inserted data) should be inserted is specified in S302. Next, in S303, all the data in the upper layer and the new data are combined and moved and stored to the "empty" layer. Finally, in S304, the relationship between the OTM-binary tree whose correspondence relationship has changed due to the data movement is refreshed to reproduce the insertion operation of the priority queue.
[0054] As long as the update operation of Embodiment 2 is maintained, each node of the binary tree always holds "the data with the lowest priority among its children", so the root node can hold "the data with the lowest priority in the data structure".
[0055] The operations of this embodiment, as well as its component algorithms, can all be implemented in a client-server model or in multi-party computation across servers.
[0056] Example 4 In this embodiment, the queue calculation system 100 executes a process of reproducing the “delete” operation of the priority queue by using the data structure of the embodiment 1, the algorithm of the embodiment 2, and each operation algorithm of the OTM. Fig. 7 is a flowchart showing the procedure of the delete operation executed by the queue calculation system 100.
[0057] In S401, the position of the data to be deleted is input from the input unit 110 ([[pos]], [[lv]]).
[0058] In S402, the calculation unit 120 calculates, for each i=1,...,L, [[pos i ]], (i) if i=lv then pos i = pos, and (ii) if i = lv or not, then pos i = ⊥, where ⊥ is a dummy value.
[0059] In S403, the calculation unit 120 calculates the OTM for each i=1,...,L. i .Lookup([[pos i ]]) and delete the target data (or dummy data) in each layer. At this time, you can also reference and save the target data as needed. In that case, it is judged whether the target data in each layer is dummy or not, and only the regular data that is not dummy is selected and saved.
[0060] In S404, the calculation unit 120 performs updates in the manner of the second embodiment on all nodes corresponding to the positions where references (deletions) occurred in each layer in S403 and all parent nodes thereof, starting from the lowest layer.
[0061] In this embodiment, in order to delete specific data from the data structure (while keeping the identity of the data secret), a uniform lookup (or deletion) is performed on all hierarchical levels. In order to prevent unnecessary data deletion, a dummy lookup is performed on hierarchical levels (i ≠ lv) that do not hold the target data. After that, since the priority relationship may have changed for all positions where a lookup has occurred (regardless of whether it is a dummy or non-dummy), node updates are performed tracing back to the root node.
[0062] The operations of this embodiment, as well as its component algorithms, can all be implemented in a client-server model or in multi-party computation across servers.
[0063] Example 5 In this embodiment, the queue computation system 100 executes a process to realize a "top priority data reference" operation of the prioritized queue on the data structure of the first embodiment. The top priority data reference does not take any particular input, and in this embodiment, it can be realized by simply "returning the data stored in the node of Level_0." Note that if each node of the binary tree does not hold [[d]], the "top priority data reference" operation can be realized by (1) extracting the top priority data using the method described in the sixth embodiment, and (2) reinserting the same data using the method described in the third embodiment.
[0064] The operations of this embodiment, as well as its component algorithms, can all be implemented in a client-server model or in multi-party computation across servers.
[0065] Example 6 In this embodiment, the queue calculation system 100 executes a process to realize a "top priority data retrieval" operation of the prioritized queue using the data structure of the first embodiment and the algorithms of the fourth and fifth embodiments. Fig. 8 is a flowchart showing the procedure of the "top priority data retrieval" operation executed by the queue calculation system 100. The retrieval of the top priority data does not require any particular input.
[0066] In S601, the calculation unit 120 acquires the position information [[pos]], [[lv]] of the highest priority data by the algorithm of the fifth embodiment.
[0067] In S601, the calculation unit 120 refers to the data at the position [[pos]], [[lv]] using the algorithm of the fourth embodiment, obtains the highest priority data ([[p]], [[d]]), and deletes it from the data structure.
[0068] The operations of this embodiment, as well as its component algorithms, can all be implemented in a client-server model or in multi-party computation across servers.
[0069] Example 7 In this embodiment, the queue calculation system 100 executes a process for implementing a “priority change” operation of a prioritized queue by using the data structure of the embodiment 1 and the algorithms of the embodiments 3 and 4. Fig. 9 is a flowchart showing the procedure of the “priority change” operation executed by the queue calculation system 100.
[0070] In S701, the position [[pos]], [[lv]] of the data to be changed, and the priority [[p′]] and data [[d]] after the change are input from the input unit 110.
[0071] In S702, the calculation unit 120 deletes the data at the position [[pos]], [[lv]] using the algorithm of the fourth embodiment.
[0072] In S703, the calculation unit 120 inserts ([[p']], [[d]]) according to the algorithm of the third embodiment.
[0073] The operation in this embodiment is to change the priority of specific data (p, d) stored in the priority queue to (p', d), and in this embodiment, this is realized by deleting the data, changing the priority, and reinserting it.
[0074] The operations of this embodiment, as well as its component algorithms, can all be implemented in a client-server model or in multi-party computation across servers.
[0075] Example 8 In this embodiment, the queue calculation system 100 integrates all the algorithms of the embodiments 2 to 7, and executes a process that can perform all operations while keeping even the "operation contents" of the priority queue secret from the server. Figure 10 is a flowchart showing the procedure of the operation of the embodiment 8 executed by the queue calculation system 100.
[0076] In S801, in addition to the position [[pos]], [[lv]], priority and data [[p]], [[d]] of any data, information expressing the operation content [[op]]; op∈{insert, delete, find_min, extract_min, update_priority} is input from input unit 110.
[0077] In S802, the calculation unit 120 replaces the input according to the value of op as follows.
[0078] (i) If op=insert, replace [[pos]], [[lv]] with dummy.
[0079] (ii) If op=delete, replace [[p]] and [[d]] with dummy variables.
[0080] (iii) If op=find_min or op=extract_min, replace [[p]], [[d]], [[pos]], and [[lv]] with dummy values. (However, this operation does not have to be performed if the input is guaranteed to be appropriate from the beginning.) In S803, the calculation unit 120 selects the data with the lowest priority ([[p min ]],[[d min ]]) and its position [[pos min ]],[[lv minIf each node of the binary tree does not hold [[d]], the position [[pos min ]],[[lv min ]] is only retrieved (does not reference / delete or reinsert).
[0081] In S804, the calculation unit 120 replaces the input according to the value of op as follows. That is, if op=extract_min, [[pos]], [[lv]] are replaced with [[pos min ]],[[lv min If each node of the binary tree does not hold [[d]], [[pos]], [[lv]] are replaced with [[pos min ]],[[lv min Replace with ]].
[0082] In S805, the calculation unit 120 refers to and deletes the data at the position [[pos]], [[lv]] according to the algorithm of the embodiment 4. The data referred to at this time is set as ([[p']], [[d']]).
[0083] In S806, the calculation unit 120 inserts ([[p]], [[d]]) according to the algorithm of the embodiment 3. If each node of the binary tree does not hold [[d]], if op=find_min, replace [[p]], [[d]] with [[p']], [[d']].
[0084] In S807, if op=find_min or op=extract_min, the calculation unit 120 min ]],[[d min ]]) is output from output unit 130, and a dummy is output if op=find_min or op=extract_min is not the case. If each node of the binary tree does not hold [[d]], then ([[p']], [[d']]) is output from output unit 130 if op=find_min or extract_min.
[0085] The algorithm of the eighth embodiment is a combination of the algorithms of the fifth, fourth, and third embodiments, and all operations can be simulated by controlling the input to these algorithms using dummies. The relationship between the operation contents and the embodiments is as follows: insert: third embodiment, delete: fourth embodiment, find_min: fifth embodiment, extract_min: sixth embodiment, update_priority: seventh embodiment.
[0086] In this embodiment, the conditional branching that replaces the input can be easily achieved by controlling the input value on the client side in a client-server model, and can be achieved by combining multiple comparisons and conditional selections in multi-party computation between servers. Therefore, together with other algorithms, the entire process can be executed in either a client-server model or multi-party computation between servers.
[0087] (Hardware configuration example) The queue calculation system 100 can be realized, for example, by executing a program on one or more computers. The computers may be physical computers or virtual machines on a cloud.
[0088] That is, the queue calculation system 100 can be realized by executing a program corresponding to the processing performed by the queue calculation system 100 using hardware resources such as a CPU and memory built into each of one or more computers. The above program can be recorded on a computer-readable recording medium (such as a portable memory) and stored or distributed. The above program can also be provided via a network such as the Internet or email.
[0089] Fig. 11 is a diagram showing an example of the hardware configuration of the computer. The computer in Fig. 11 includes a drive device 1000, an auxiliary storage device 1002, a memory device 1003, a CPU 1004, an interface device 1005, a display device 1006, an input device 1007, an output device 1008, and the like, all of which are interconnected via a bus BS.
[0090] The program for realizing the processing on the computer is provided by a recording medium 1001 such as a CD-ROM or a memory card. When the recording medium 1001 storing the program is set in the drive device 1000, the program is installed from the recording medium 1001 to the auxiliary storage device 1002 via the drive device 1000. However, the program does not necessarily have to be installed from the recording medium 1001, but may be downloaded from another computer via a network. The auxiliary storage device 1002 stores the installed program as well as necessary files, data, etc.
[0091] The memory device 1003 reads out and stores the program from the auxiliary storage device 1002 when an instruction to start the program is received. The CPU 1004 realizes functions related to the queue calculation system 100 in accordance with the program stored in the memory device 1003. The interface device 1005 is used as an interface for connecting to a network, etc. The display device 1006 displays a GUI (Graphical User Interface) or the like according to a program. The input device 1007 is composed of a keyboard and mouse, buttons, a touch panel, etc., and is used to input various operation instructions. The output device 1008 outputs the calculation results.
[0092] (Effects of the embodiment) According to the technology of the present embodiment, for example, a prioritized queue that allows data to be manipulated while remaining encrypted between a client and a server, or between multiple servers, can be realized. In so doing, it is possible to realize a data structure or an operation algorithm that can achieve all of the following things that were not achieved with conventional technology: (1) high security without probabilistic corruption, (2) advanced operations such as data deletion and priority change, and (3) confidentiality of the operation contents.
[0093] In other words, the novel data structure and operation algorithm according to this embodiment makes it possible to realize a confidential priority queue that combines high security and advanced functionality, something that has not been achieved in the past.
[0094] (Additional Note) This specification discloses at least the queue calculation system, queue calculation device, queue calculation method, and program described in the following sections. (Section 1) A queue calculation system for performing processing on a confidentiality priority queue, a storage unit for storing a data structure that combines a hierarchical randomized array and a binary tree; a calculation unit for performing an operation on the data structure, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node that can hold data, priority, position, and hierarchy information in the randomized array as element information. Queue calculation system. (Section 2) In an update operation, the calculation unit receives an update target node in the binary tree as an input, selects element information with the lowest priority from element information held by a left child node and a right child node of the update target node and element information of a randomized array corresponding to the update target node, and stores the element information in the update target node. 2. The queue calculation system according to claim 1. (Section 3) The calculation unit has a function of executing either one or both of an insert operation and a delete operation, In the insertion operation, the calculation unit receives new data to be newly inserted into the randomized array as input, identifies an empty hierarchical layer in the hierarchical randomized array, moves and stores the new data together with all data in layers above the identified hierarchical layer into the empty hierarchical layer, and updates all nodes belonging to the layers by the update operation, in order from the layer in which the new data is stored toward the upper layers; In the deletion operation, the calculation unit receives as input the position and hierarchical level of data to be deleted, which is data to be deleted from the randomized array, and performs reference to the position and data deletion in the hierarchical level that holds the data to be deleted, and performs dummy reference and data deletion in each hierarchical level that does not hold the data to be deleted, and updates the nodes by the update operation from the lower hierarchical level to the upper hierarchical level for all positions where references have occurred. 2. The queue calculation system according to claim 1. (Section 4) The computing unit returns data held by a node at the highest level in the data structure in a highest priority data reference operation. A queue calculation system according to any one of claims 1 to 3. (Section 5) The calculation unit has a function of executing at least one of a top priority data extraction operation, a priority change operation, and an operation content concealment operation, the calculation unit, in the highest priority data extraction operation, acquires the highest priority data and its location information by the highest priority data reference operation described in paragraph 4, and deletes the data at the location indicated by the location information by the deletion operation described in paragraph 3; the calculation unit, in the priority change operation, deletes data at a position to be changed by the delete operation described in paragraph 3, and inserts the changed priority and data by the insert operation described in paragraph 3; The calculation unit replaces input information corresponding to information expressing the operation content with a dummy in the operation content concealment operation, and executes the highest priority data reference operation described in paragraph 4, and the delete operation and the insert operation described in paragraph 3. A queue calculation system according to claim 4 which is dependent on claim 3. (Section 6) A queue calculation device that performs processing on a confidentiality priority queue, a storage unit for storing data having a data structure combining a hierarchical randomized array and a binary tree; A calculation unit that performs an operation on the data, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node that can hold data, priority, position, and hierarchy information in the randomized array. Cue calculation device. (Section 7) A queue calculation method in a queue calculation system that executes processing on a confidentiality priority queue, comprising: The queue calculation system includes a storage unit for storing a data structure that combines a hierarchical randomized array and a binary tree; The queue calculation method includes a calculation step of performing an operation on the data structure, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node capable of holding data, priority, position, and hierarchy information in the randomized array as element information; In the calculation step, as an update operation, a node to be updated in the binary tree is input, and element information with the lowest priority is selected from element information held by each of the left child node and the right child node of the node to be updated and element information of a randomized array corresponding to the node to be updated, and is stored in the node to be updated. Queue calculation method. (Section 8) A program for causing a computer to function as each part in the queue calculation system according to any one of claims 1 to 5.
[0095] Although the present embodiment has been described above, the present invention is not limited to such a specific embodiment, and various modifications and changes are possible within the scope of the gist of the present invention described in the claims.
[0096] (References) [1] Octavian Catrina and Sebastiaan de Hoogh. Improved primitives for secure multiparty integer computation. In Juan A. Garay and Roberto De Prisco, editors, Security and Cryptography for Networks,pp. 182-199, Berlin, Heidelberg, 2010. Springer Berlin Heidelberg. [2] T.-H. Hubert Chan, Kartik Nayak, and Elaine Shi. Perfectly secure oblivious parallel ram. In Amos Beimel and Stefan Dziembowski, editors, Theory of Cryptography, pp. 636-668, Cham, 2018. Springer International Publishing. [3] Zahra Jafargholi, Kasper Green Larsen, and Mark Simkin. Optimal oblivious priority queues. Cryptology ePrint Archive, Report 2019 / 237, 2019. https: / / eprint.iacr.org / 2019 / 237. [4] Marcel Keller and Peter Scholl. Efficient, oblivious data structures for MPC. In Advances in Cryptology - ASIACRYPT 2014, Part II, volume 8874 of Lecture Notes in Computer Science, pages 506-525, Kaoshiung, Taiwan, R.O.C., December 7-11, 2014. Springer, Heidelberg, Germany. [5] Peeter Laud. Parallel oblivious array access for secure multiparty computation and privacypreserving minimum spanning trees. Proceedings on Privacy Enhancing Technologies, Vol. 2015, No. 2, pp. 188-205, 2015. [6] Sarvar Patel, Giuseppe Persiano, and Kevin Yeo. CacheShuffle: A family of oblivious shuffles. In Ioannis Chatzigiannakis, Christos Kaklamanis, D ´ aniel Marx, and Donald Sannella, editors, ICALP 2018: 45th International Colloquium on Automata, Languages and Programming, volume 107 of LIPIcs, pages 161:1-161:13, Prague, Czech Republic, July 9-13, 2018. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik. [7] Adi Shamir. How to share a secret. Commun. ACM, Vol. 22, No. 11, p. 612-613, November 1979. [8] Elaine Shi. Path oblivious heap. IACR Cryptology ePrint Archive, 2019:274, 2019. [9] Gurpreet Singh and Supriya. A study of encryption algorithms (RSA, DES, 3DES and AES) for information security. Int. J. Comput. Appl., vol. 67, no. 19, pp. 975-8887, 2013.
[10] Tomas Toft. Secure data structures based on multi-party computation. In PODC, pages 291-292, 2011.
[11] Xiao Shaun Wang, Kartik Nayak, Chang Liu, TH. Hubert Chan, Elaine Shi, Emil Stefanov, and Yan Huang. Oblivious Data Structures. In CCS, 2014.
[12] Naoto Kiribuchi, Dai Igarashi, Hiroki Hamada, and Ryo Kikuchi. Programmable secure computation library MEVAL3. Proceedings of the Symposium on Cryptography and Information Security (SCIS) 2018 (2018). [Explanation of symbols]
[0097] 10-1~n Server 20 Client Terminals 30 Network 100 Queue Calculation System 110 Input section 120 Arithmetic section 130 Output section 140 Storage section 1000 Drive Device 1001 Recording media 1002 Auxiliary storage device 1003 Memory device 1004 CPU 1005 Interface device 1006 Display device 1007 Input Device 1008 Output device
Claims
1. A queue calculation system for performing processing on a confidentiality priority queue, a storage unit for storing a data structure that combines a hierarchical randomized array and a binary tree; a calculation unit for performing an operation on the data structure, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node that can hold data, priority, position, and hierarchy information in the randomized array as element information. Queue calculation system.
2. In an update operation, the calculation unit receives an update target node in the binary tree as an input, selects element information with the lowest priority from element information held by a left child node and a right child node of the update target node and element information of a randomized array corresponding to the update target node, and stores the element information in the update target node. The queue calculation system according to claim 1 .
3. The calculation unit has a function of executing either one or both of an insert operation and a delete operation, In the insertion operation, the calculation unit receives new data to be newly inserted into the randomized array as input, identifies an empty hierarchical layer in the hierarchical randomized array, moves and stores the new data together with all data in layers above the identified hierarchical layer into the empty hierarchical layer, and updates all nodes belonging to the layers by the update operation, in order from the layer in which the new data is stored toward the upper layers; In the deletion operation, the calculation unit receives as input the position and hierarchical level of data to be deleted, which is data to be deleted from the randomized array, and performs reference to the position and data deletion in the hierarchical level that holds the data to be deleted, and performs dummy reference and data deletion in each hierarchical level that does not hold the data to be deleted, and updates the nodes by the update operation from the lower hierarchical level to the upper hierarchical level for all positions where references have occurred. The queue calculation system according to claim 2 .
4. The computing unit returns data held by a node at the highest level in the data structure in a highest priority data reference operation.
4. A queue calculation system according to claim 1.
5. The calculation unit has a function of executing at least one of a top priority data extraction operation, a priority change operation, and an operation content concealment operation, In the highest priority data extraction operation, the calculation unit obtains the highest priority data and its position information by the highest priority data reference operation described in claim 4, and deletes the data at the position indicated by the position information by the deletion operation described in claim 3; In the priority change operation, the calculation unit deletes data at a position to be changed by the delete operation described in claim 3, and inserts the changed priority and data by the insert operation described in claim 3; The computing unit replaces input information corresponding to information expressing the operation content with a dummy in the operation content concealment operation, and executes the highest priority data reference operation according to claim 4, and the delete operation and the insert operation according to claim 3. A queue calculation system according to claim 4 dependent on claim 3.
6. A queue calculation device that performs processing on a confidentiality priority queue, a storage unit for storing data having a data structure combining a hierarchical randomized array and a binary tree; A calculation unit that performs an operation on the data, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node that can hold data, priority, position, and hierarchy information in the randomized array. Cue calculation device.
7. A queue calculation method in a queue calculation system that executes processing on a confidentiality priority queue, comprising: The queue calculation system includes a storage unit for storing a data structure that combines a hierarchical randomized array and a binary tree; The queue calculation method includes a calculation step of performing an operation on the data structure, In the data structure, each piece of data is stored in a randomized array of a certain hierarchy together with a priority, and each node in the binary tree is a node capable of holding data, priority, position, and hierarchy information in the randomized array as element information; In the calculation step, as an update operation, a node to be updated in the binary tree is input, and element information with the lowest priority is selected from element information held by each of the left child node and the right child node of the node to be updated and element information of a randomized array corresponding to the node to be updated, and is stored in the node to be updated. Queue calculation method.
8. A program for causing a computer to function as each unit in the queue calculation system according to any one of claims 1 to 5.
Citation Information
Patent Citations
Wireless traffic prioritization
US20070220153A1
Secret array access device, secret array access method, and program
WO2020145340A1