Secure aggregation computational device and method

The secret aggregation computing device and method address the challenge of calculating rank functions in secure computing by employing secret sharing and homomorphic cryptography to sort and aggregate data, improving efficiency and reducing computational overhead.

WO2026078809A1PCT designated stage Publication Date: 2026-04-16NT T INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2024/036135
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-10-09
Publication Date
2026-04-16

AI Technical Summary

Technical Problem

Existing secure computing technologies lack the capability to efficiently calculate rank functions, particularly in the context of secure aggregation operations, which are essential for data analysis and privacy-preserving applications.

Method used

A secret aggregation computing device and method that utilizes secret sharing and homomorphic cryptography to perform sorting and aggregation operations, enabling the calculation of rank functions by generating sorted tables and applying boundary flags to determine group and subgroup boundaries, allowing for efficient computation of rank values.

Benefits of technology

Enables the efficient calculation of rank functions within secure computing environments, reducing data transfer and computational overhead, thereby enhancing the performance and efficiency of secure data analysis.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure JP2024036135_16042026_PF_FP_ABST
    Figure JP2024036135_16042026_PF_FP_ABST
Patent Text Reader

Abstract

A secure aggregation computational device 10 comprises: a sorting unit 1 that uses a share {→g} and a share {→o} to generate a sorted table in which rows of a table are sorted on the basis of an order key column →o and a group key column →g; a group boundary flag column generation unit 2 that generates a share [→b1] of a boundary flag column →b1 representing boundaries of groups in the sorted table; an intermediate aggregation result column generation unit 4 that generates a share {→p} of an intermediate aggregation result column →p representing an ordinal row position within each group; a subgroup boundary flag column generation unit 5 that generates a share [→b2] of a boundary flag column →b2 representing boundaries of subgroups within each group in the sorted table, a subgroup being a portion within each group where the value of an order key is the same value consecutively; and a final aggregation result column generation unit 6 that generates a share {→s} of a final aggregation result column →s representing an ordinal position of the value of each order key within each group.
Need to check novelty before this filing date? Find Prior Art

Description

Secret Aggregation Computing Device and Method

[0001] The disclosed technology relates to the technology of secure computing.

[0002] The Window function is a function that divides records into groups and performs aggregation within each group. There is a similar function called GROUPBY, but unlike GROUPBY, the Window function can output the aggregation result for each group for each record. Also, it is possible to specify a frame such as within what range (e.g., how many rows before and after a certain row) to perform aggregation within the group. This enables calculations such as ranking, moving average, and cumulative sum.

[0003] As research on realizing such a Window function in secure computing, Non-Patent Document 1 can be cited. In Non-Patent Document 1, an ascending rank function corresponding to the Row number function in the Window function is proposed.

[0004] Kikuchi Ryo, Hamada Hiroki, Igarashi Dai, Takahashi Hajime, Takahashi Katsumi, "Let's Try Cross-Flow Analysis with Secure Computing", In SCIS2020, pp. 1-8, 2020.

[0005] Although an ascending rank function is proposed in Non-Patent Document 1, the rank function has not been proposed.

[0006] The disclosed technology aims to provide a secret aggregation computing device and method capable of calculating the rank function.

[0007] The secret aggregation computing device according to one aspect of the disclosed technology, the table includes a share { → g} of the group key column → g, and a share { → o} of the order key column → o, and using the share { → g} and the share { → o}, a sorting unit that generates a sorted table by sorting the rows of the table based on the order key column → o and the group key column → g, and a share { → g'} of the sorted group key column→ Using g'}, a boundary flag column represents the group boundaries in the sorted table. → b 1 Share [ → b 1 A group boundary flag column generation unit that generates ] and share [ → b 1 The intermediate summary result column uses ] to indicate which row it is within each group. → p's share { → An intermediate aggregation result column generation unit that generates p}, and a sorted order key column included in the sorted table. → o's share { → o'} and share[ → b 1 Using ], the portion within each group where the order key value is the same consecutively is a subgroup, and the boundary flag column represents the boundary of the subgroup within each group in the sorted table. → b 2 Share [ → b 2 A subgroup boundary flag column generation unit that generates ] and share { → p} and share[ → b 2 The final aggregated result column uses ] to show the position of each order key value in each group. → s's share { → It comprises a final aggregate result column generation unit that generates s}.

[0008] According to the disclosed technology, the rank function can be calculated.

[0009] Figure 1 shows an example of the functional configuration of a secure tallying device. Figure 2 shows an example of the processing procedure for a secure tallying method. Figure 3 shows an example of processing. Figure 4 is a diagram illustrating an example of an algorithm. Figure 5 is a diagram illustrating an example of an algorithm. Figure 6 is a diagram illustrating an example of an algorithm. Figure 7 is a diagram illustrating an example of an algorithm. Figure 8 shows another example of the functional configuration of a secure tallying device. Figure 9 shows an example of the functional configuration of a computer.

[0010] Embodiments of the disclosed technology will be described below with reference to the drawings. Note that components having the same function are numbered identically in the drawings, and redundant explanations are omitted.

[0011] [Preparation] <Notation> Vectors → Let's denote it as x. The i-th element of the vector is x i It is represented as follows.

[0012] The symbol "→" used in text should ideally be placed directly above the following character, but due to limitations in text notation, it is placed immediately before the character. In mathematical formulas, these symbols are placed in their original position, that is, directly above the character. For example, in text, → "X" is written in mathematical formulas as follows: <Secret Sharing> Secret sharing is an encryption method that divides data into multiple values ​​and distributes them to multiple parties. For example, data can be encrypted using (k,n) threshold secret sharing. (k,n) threshold secret sharing is a secret sharing method that divides data into n random values ​​(called shares), and allows the original data to be reconstructed by collecting k or more shares, while information about the original data cannot be obtained from less than k shares. For example, Shamir secret sharing (see, for example, reference 1) and replication secret sharing (see, for example, references 2 and 3) are used.

[0013] [Reference 1] Adi Shamir, "How to share a secret", Communications of the ACM, Vol. 22, No. 11, pp. 612-613, 1979. [Reference 2] Mitsuru Ito, Akira Saito and Takao Nishizeki, "Secret sharing scheme realizing general access structure", Electronics and Communications in Japan (Part III: Fundamental Electronic Science), Vol. 72, No. 9, pp. 56-64, 1989. [Reference 3] Ronald Cramer, Ivan Damgard, and Yuval Ishai, "Share conversion, pseudorandom secret-sharing and applications to secure computation", In Theory of Cryptography Conference, pp. 342-362. Springer, 2005. Z p The share generated by the above secret sharing is denoted as {x}. The share generated by secret sharing on Z2 is denoted as [x] to distinguish it. This is because it is more efficient to use a dedicated secret sharing type to distribute values ​​on Z2. Similarly, the distribution of the substitution π is denoted as <π> to distinguish it. Also, → Share vectors obtained by secret sharing for each element of x { → This is represented as x. Values ​​that are not secret and should be known by all servers are called public values.

[0014] Furthermore, the calculation of secret sharing may be implemented using homomorphic cryptography performed by a single device.

[0015] <Local Operations> Due to the properties of secret sharing, the addition of shares, addition with public values, multiplication with public values, and sign inversion can be calculated locally using only the shares held by each party. Each operation is denoted as follows:

[0016] Addition: {x} + {y} = {x + y} Addition with public value: {x} + y = {x + y} Multiplication with public value: {x}・y = {x・y} Sign inversion: -{x} = {-x} <Multiplication> In Shamir secret sharing, multiplication of shares can be achieved using the method of Gennaro et al. (see, for example, reference 4), and in replication secret sharing, using the method of Chida et al. (see, for example, reference 5).

[0017] [Reference 4] Rosario Gennaro, Michael O. Rabin and Tal Rabin, "Simplified VSS and fact-track multiparty computations with applications to threshold cryptography", In PODC, pp. 101-111, 1998. [Reference 5] Koji Chida, Koki Hamada, Dai Ikarashi, Ryo Kikuchi and Benny Pinkas, "High-throughput secure AES computation", In Michael Brenner and Kurt Rohloff, editors, Proceedings of the 6th Workshop on Encrypted Computing & Applied Homomorphic Cryptography, WAHCCCS 2018, Toronto, ON, Canada, October 19, 2018, pp. 13-24. ACM, 2018. The multiplication of shares {x} and {y} is expressed as follows:

[0018] {x}・{y}={x・y} <Modulus transformation> Secret sharing on Z2[x] to Z p This is a protocol for converting the above secret sharing {x}. A specific method is known, as described in reference 6.

[0019] [Reference 6] Ryo Kikuchi, Dai Ikarashi, Takahiro Matsuda, Koki Hamada and Koji Chida, "Efficient bit-6 decomposition and modulus-conversion protocols with an honest majority", pp. 64-82, 2018. Modulus conversion (ModConv) is denoted as follows:

[0020] {x}←ModConv([x]) <Stable sort> Sorting is an operation that rearranges a share column in ascending or descending order. Known sorting methods include the method by Asharov et al., described in Reference 7.

[0021] [Reference 7] Gilad Asharov, Koki Hamada, Dai Ikarashi, Ryo Kikuchi, Ariel Nof, Benny Pinkas, Katsumi Takahashi and Junichi Tomida, "Efficient secure three-party sorting with applications to data analysis and heavy hitters", In Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security, New York, NY, USA, November 2022. ACM. Note that sorting can be divided into two phases: creating a substitution table and substitution. If a substitution table is created, only the substitution phase needs to be performed for other columns that are sorted according to the key. A vector of length m { → Generate a transposition table with x as the key, and use <π> for { → The operations for rearranging y are denoted as follows:

[0022] Permutation table generation:<π>←genPerm({ → x}) Rearrange:{ → y'}←sort(<π>,{ → y}) However, {→ y is { → It is a vector of the same length m as x.

[0023] <Equality Comparison> Equality can be determined by bit decomposition and calculation using a comparison circuit that takes the share of the bit sequence as input. The equality of {x} and {y} is denoted as [b]←Equality({x},{y}).

[0024] <aggregation>Aggregation operations (see, for example, reference 8) are performed on the elements of a vector { → This is an operation that aggregates x.

[0025] [Reference 8] Saikrishna Badrinarayanan, Sourav Das, Gayathri Garimella, Srinivasan Raghuraman and Peter Rindal, "Secret-shared joins with multiplicity from aggregation trees", Cryptology ePrint Archive, 2022. Aggregation operations use control bits to specify the aggregation range. → Taking b] and the binary operator ★ as arguments, { → This operation returns the aggregated result obtained by applying a binary operator to the elements within a given range for each i row of {x}.

[0026] The control bits are, for example, a bit vector with values ​​of 0 or 1, where 0 indicates the beginning of a group and 1 indicates being within a group. In other words, if a row is 0, that row is the beginning of a group, and if it is 1, the group consists of the sequence of 1s from the previous 0 to the row before the next 0.

[0027] A binary operator is an operator that takes two operands and produces a single result. An example of a binary operator is addition (+). In this case, the Sum function can be implemented. Another example of a binary operator is an operator that returns the larger of two operands. In this case, the Max function can be implemented. Other examples of binary operators are subtraction (-), multiplication (*), division ( / ), and exponentiation (^). Binary operators can also be operators other than those listed above. Such binary operators can be implemented, for example, using comparison operators and the If Gate function.

[0028] There are three types of aggregation operations: Prefix Aggregation, which aggregates from the first row to the current row; Suffix Aggregation, which aggregates from the current row to the last row; and Full Aggregation, which aggregates from the first row to the row before the last row.

[0029] In prefix aggregation, { → For each row of {x}, the elements of that row and the rows before it in the group to which that row belongs are counted. More specifically, j ≤ i is the first row of the group to which i belongs (starting from i, the first row b j Assuming that j) is such that = 0, in Prefix Aggregation, the following calculation using elements from j to row i is performed: { → This is performed for each i-th row of {x}.

[0030] { → y i }=★ k=j i { → x k }={ → x j }★{ → x j+1 }★…★{ → x i } [ → According to b], { → The execution of Prefix Aggregation using the binary operator ★ for x} is expressed as follows:

[0031] { → y}←prefixAgg({ → x},[ → b],★) …(1) In Suffix Aggregation, { → For each row of {x}, the elements of that row and the rows after it within the group to which that row belongs are aggregated. More specifically, assuming that h≧i is the end of the group to which i belongs, in Suffix Aggregation, the following calculation using the elements from row i to row h is performed: → This is performed for each i-th row of {x}.

[0032] { → y i}=★ k=i h { → x k}={ → x i}★{ → x i+1}★…★{ → x h} → b] according to, the execution of Suffix Aggregation using the binary operator ★ for { → x} is expressed as follows.

[0033] { → y}←suffixAgg({ → x}, → b],★) …(2) In Full Aggregation, for each row of { → x}, the elements of all rows within the group to which that row belongs are aggregated. More specifically, assuming j≦i is the start of the group to which i belongs (the j where b j =0 is first encountered when tracing back from i), and h≧i is the end of the group to which i belongs, in Full Aggregation, the following calculation using the elements from row j to row h is performed for each i-th row of { → x}.

[0034] { → y i}=★ k=h j { → x k}={ → x j}★{ → x j+1}★…★{ → x h} → b] according to, the execution of Full Aggregation using the binary operator ★ for { → x} is expressed as follows.

[0035] { → y}←fullAgg({ → x}, → b],★) …(3) Thus, after sorting, → By performing the aggregation operation using [b], the amount of data transferred can be reduced to O(l), resulting in higher computational efficiency than before.

[0036] Alternatively, these aggregation operations may be performed using the Aggregation Tree method described in Reference 8. This allows the communication time to be O(l log l) and the number of rounds to be O(log l), further increasing computational efficiency.

[0037] [Secret Aggregation Calculation Device and Method] The secret aggregation calculation device 10, as shown in Figure 1, includes, for example, a sorting unit 1, a group boundary flag column generation unit 2, an intermediate aggregation result column generation unit 4, a subgroup boundary flag column generation unit 5, and a final aggregation result column generation unit 6.

[0038] The secure tally calculation method is implemented, for example, by having each component of the secure tally calculation device 10 perform the processing shown in steps S1 to S6 in Figure 2.

[0039] The tables subject to the secret aggregation operation include a group key column. → g's share { → g} and the order key column → o's share { → o} is included. The table subject to this secret aggregation calculation is input to the sorting unit 1. For example, the table subject to the secret aggregation calculation is stored in the table storage unit 0. In this case, the table read from the table storage unit 0 is input to the sorting unit 1. In the example in Figure 1, the table storage unit 0 is located outside the secret aggregation calculation device 10, but the table storage unit 0 may be provided inside the secret aggregation calculation device 10.

[0040] An example of a table subject to confidential aggregation is the table in Figure 3(a). Note that in Figure 3, the share symbol and the vector symbol "→" have been omitted for simplicity.

[0041] Each component of the secure tallying device 10 performs, for example, the processing of algorithm 1 shown in Figure 4. The components of the secure tallying device 10 will be described below.

[0042] <Sort Unit 1> Sort Unit 1 contains share { → g} and share { → o} is entered.

[0043] Sorting unit 1 is share { → g} and share { → Using o}, the order key sequence → o and group key column → A sorted table is generated by sorting the rows of the table based on g (Step S1). The sorted group key column is included in the sorted table. → g's share { → g'} is output to the group boundary flag sequence generation unit 2.

[0044] The processing of sorting unit 1 corresponds to "1:" in algorithm 1 in Figure 4.

[0045] In the example shown in Figure 3, the sorted table will be the table shown in Figure 3(b).

[0046] The sorted table is { → g'},{ → Includes 'o'. → g'},{ → o'} is grouped by a group key, and then sorted within each group by an order key column.

[0047] The sorting unit 1 performs, for example, the processing of algorithm 2 shown in Figure 5. The processing of algorithm 2 shown in Figure 5 will be explained below.

[0048] Sorting unit 1 is share { → Using o}, the order key sequence → A permutation σ sorts each column based on o. o Share <σ o Calculate > (Algorithm 2, "1:").

[0049] Sorting unit 1 is share { → g} and share { → o} and share<σ o > and group key column → g is substituted σ o Column to which the condition was applied → g'' share { → g'' and the order key column → σ is substituted for o o Column to which the condition was applied → o'''s share { → Calculate o'' (Algorithm 2, "2:").

[0050] Sorting unit 1 is share { → Using g'', the column → A permutation σ sorts each column based on g''. g Share <σ g Calculate > (Algorithm 2, "3:").

[0051] Sorting unit 1 is share { → g''} and share { → o''} and share<σ g Using >, column → Substitution of g'' σ g Column to which the condition was applied → g's share { → g'} and the column → Replace o'' with σ g Column to which the condition was applied → o's share { → Calculate o' (Algorithm 2, "4:").

[0052] <Group Boundary Flag Column Generation Unit 2> The Group Boundary Flag Column Generation Unit 2 generates the sorted group key columns included in the sorted table. → g's share { → g'} is entered.

[0053] The group boundary flag column generation unit 2 generates the sorted group key column included in the sorted table. → g's share { → Using g'}, a boundary flag column represents the group boundaries in the sorted table. → b 1 Share [ → b 1 ] generates (step S2). Share [ → b 1 This is output to the intermediate aggregation result column generation unit 4.

[0054] The processing of the group boundary flag sequence generation unit 2 corresponds to "2:" in algorithm 1 in Figure 4.

[0055] The group boundary flag sequence generation unit 2 performs, for example, the processing of algorithm 3 as shown in Figure 6.

[0056] In the example shown in Figure 3, share [ → b 1 ] will look like Figure 3(c).

[0057] Specifically, first the group boundary flag sequence generation unit 2 generates the share [ → b 1 Set [1] to [0] (Algorithm 3's "1:"). Note that [ → b 1 i ]teeth, → b 1 i-th element → b 1 i It means share.

[0058] The group boundary flag column generation unit 2 is { → g' i-1 } and { → g' i Using}, { → g' i-1 }and{ → g' i If} is the same, then [1] → b 1 i Set to ], otherwise set to [ 0 → b 1 i Make it ] (Algorithm 3's "3:").

[0059] The process described in "3:" of Algorithm 3 is performed for each i from i=2 to i=l ("2:" to "4:" of Algorithm 3).

[0060] As in this example, the group boundary flag column generation unit 2 generates share { → Using g'}, a flag sequence [ where the first row of the group is 0 and the other rows are 1. → b 1 Generates ].

[0061] <Intermediate Aggregation Result Column Generation Unit 4> The Intermediate Aggregation Result Column Generation Unit 4 includes share [ → b 1 ] is entered.

[0062] Intermediate aggregation result column generation unit 4 generates share [ → b 1 The intermediate summary result column uses ] to indicate which row it is within each group. → p's share { → Generate p (step S4). Share { → p} is output to the subgroup boundary flag column generation unit 5 and the final aggregation result column generation unit 6.

[0063] The processing of the intermediate aggregation result column generation unit 4 corresponds to "3:" in algorithm 1 in Figure 4.

[0064] The intermediate aggregation result column generation unit 4 performs, for example, the processing of algorithm 3 as shown in Figure 6. Specifically, the intermediate aggregation result column generation unit 4 performs, → b 1 ] According to { → By performing Prefix Aggregation using the binary operator + on 1}, the share { → Generates p. → 1} is a vector → b 1 A vector composed of the same number of ones as the number of elements that make up the vector. → It has a 1 share.

[0065] In the example shown in Figure 3, share { → p} is as shown in Figure 3(d).

[0066] <Subgroup boundary flag column generation unit 5> The subgroup boundary flag column generation unit 5 includes share { → o'} and share[ → b 1 ] is entered.

[0067] The subgroup boundary flag column generation unit 5 generates the sorted order key column included in the sorted table. → o's share { → o'} and share[ → b 1 Using ], the portion within each group where the order key value is the same consecutively is a subgroup, and the boundary flag column represents the boundary of the subgroup within each group in the sorted table. → b 2 Share [ → b 2 Generate ] (step S5). Share [ → b 2 This is output to the final aggregation result column generation unit 6.

[0068] The processing of the subgroup boundary flag sequence generation unit 5 corresponds to "4:" in algorithm 1 in Figure 4.

[0069] The subgroup boundary flag sequence generation unit 5 performs, for example, the processing of algorithm 4 as shown in Figure 7.

[0070] Specifically, first the subgroup boundary flag sequence generation unit 5 generates the share [ → b 2 Set 1] to [0] (Algorithm 4's "1:"). Note that [ → b 2 i ]teeth, → b 2 i-th element → b 2 i It means share.

[0071] The subgroup boundary flag column generation unit 5 generates { → o' i-1 } and { → o' i Using}, { → o' i-1 }and{ → o' i If} is the same, then [1] → b 2 i Set to ], otherwise set to [ 0 → b 2 i Set it to ] (Algorithm 4's "3:").

[0072] The subgroup boundary flag column generation unit 5 is, → b 2 i ] and [ → b 1 i Using ], [ → b 2 i ] and [ → b 1 i If both of ] are [1] then [1] becomes the new [ → b 2 i Set to ], otherwise set [0] to a new [ → b 2 i Set it to ] (Algorithm 4's "4:").

[0073] The processes "3:" and "4:" of Algorithm 4 are performed for each i from i=2 to i=l ("2:" to "5:" of Algorithm 1).

[0074] In the example shown in Figure 3, share [ → b 2 ] will look like Figure 3(e).

[0075] <Final Aggregation Result Column Generation Unit 6> The final aggregation result column generation unit 6 includes share { → p} and share[ → b 2 ] is entered.

[0076] The final aggregation result column generation unit 6 generates share { → p} and share[ → b 2 The final aggregated result column uses ] to show the position of each order key value within each group. → s's share { → Generate s (step S6).

[0077] The processing of the final aggregate result column generation unit 6 corresponds to "5:" in algorithm 1 in Figure 4.

[0078] For example, the final aggregate result column generation unit 6 generates share [ → b 2 ] According to { → The execution of Prefix Aggregation using the binary operator OpDuPrev for { p} is performed as { → By doing this for each i row of p}, share { → Generates s.

[0079] In the example shown in Figure 3, share { → s} will be as shown in Figure 3(f).

[0080] OpDuPrev is a binary operator such that OpDupPrev(x,y)=x. In other words, OpDuPrev is an operator that outputs the left-hand operand of the two operands that are passed as arguments. By making OpDuPrev a binary operator, the Prefix Aggregation operation copies the aggregated value immediately preceding a row for rows in a subgroup where the order key column has the same value consecutively.

[0081] Thus, the first row of columns that have the same rank in the rank function { → The rank function can be implemented by copying the output value from {p}.

[0082] [Variations] The specific configuration of the embodiments of the disclosed technology is not limited to the configuration described above. The specific configuration of the embodiments of the disclosed technology can be modified as appropriate, without departing from the spirit of the embodiments of the disclosed technology.

[0083] As illustrated in Figure 8, the sorting unit 1 may be composed of a plurality of sorting units 11, ..., 1N, where N is a predetermined positive integer of 2 or more. Similarly, the group boundary flag column generation unit 2 may be composed of a plurality of group boundary flag column generation units 21, ..., 2N. Similarly, the intermediate aggregation result column generation unit 4 may be composed of a plurality of intermediate aggregation result column generation units 41, ..., 4N. Similarly, it may be composed of subgroup boundary flag column generation units 51, ..., 5N. Similarly, the final aggregation result column generation unit 6 may be composed of a plurality of final aggregation result column generation units 61, ..., 6N.

[0084] For example, let i = 1, ..., N, and assume that the sorting unit 1i, group boundary flag column generation unit 2i, intermediate aggregation result column generation unit 4i, subgroup boundary flag column generation unit 5i, and final aggregation result column generation unit 6i are provided in the secure computing device Ai.

[0085] In this case, multiple sorting units 11, ..., 1N may cooperate to perform the processing of sorting unit 1. Similarly, multiple group boundary flag column generation units 21, ..., 2N may cooperate to perform the processing of group boundary flag column generation unit 2. Similarly, multiple intermediate aggregation result column generation units 41, ..., 3N may cooperate to perform the processing of intermediate aggregation result column generation unit 4. Similarly, multiple subgroup boundary flag column generation units 51, ..., 5N may cooperate to perform the processing of subgroup boundary flag column generation unit 5. Similarly, multiple final aggregation result column generation units 61, ..., 6N may cooperate to perform the processing of final aggregation result column generation unit 6.

[0086] The various processes described in the embodiments of the disclosed technology may be performed not only in chronological order according to the order described, but also in parallel or individually as required by the processing capacity of the device performing the processes.

[0087] For example, data exchange between components of a secure aggregation device may occur directly or via a storage unit not shown in the diagram.

[0088] Furthermore, the present invention may also include a device (terminal) for using the apparatus, system, or method of the present invention via a network (telecommunication line). The "device (terminal) for use" may be equipped with functions necessary to obtain the effects of implementing the apparatus, system, or method of the present invention (for example, control functions, decoding functions, restoration functions, input / output functions, etc.).

[0089] It goes without saying that the invention may be modified as appropriate without departing from its spirit.

[0090] All documents, patent applications, and technical standards described herein are incorporated by reference to the same extent as if each individual document, patent application, and technical standard were specifically and individually described as being incorporated by reference.

[0091] [Programs, Recording Media] The functions realized by the components described herein may be implemented in a circuitry or processing circuitry, including a general-purpose processor, an application-specific processor, an integrated circuit, an ASIC (Application Specific Integrated Circuit), a CPU (a Central Processing Unit), conventional circuits, and / or a combination thereof, programmed to realize the functions described herein. A processor includes transistors and other circuits and is considered a circuitry or processing circuitry. A processor may be a programmed processor that executes a program stored in memory.

[0092] In this specification, circuitry, unit, and means are hardware programmed to perform or execute the functions described herein. Such hardware may be any hardware disclosed herein, or any hardware known to be programmed to perform or execute the functions described herein.

[0093] If the hardware is a processor that is considered to be a type of circuitry, then the circuitry, means, or unit is a combination of hardware and software used to constitute the hardware and / or processor.

[0094] The various processes described above can be carried out by loading a program that executes each step of the above method into the recording unit 2020 of the computer 2000 shown in Figure 9, and then causing the control unit 2010, input unit 2030, output unit 2040, display unit 2050, etc. to operate.

[0095] The program describing this process can be recorded on a computer-readable recording medium. Any computer-readable recording medium can be used, such as a magnetic recording device, optical disc, magneto-optical recording medium, or semiconductor memory.

[0096] Furthermore, this program may be distributed, for example, by selling, transferring, or lending portable recording media such as DVDs or CD-ROMs on which the program is recorded. Alternatively, the program may be stored in the storage device of a server computer and distributed by transferring the program from the server computer to other computers via a network.

[0097] A computer executing such a program may, for example, first store the program recorded on a portable storage medium or a program transferred from a server computer in its own storage device. Then, when processing is to be executed, the computer reads the program stored on its own storage medium and executes the processing according to the read program. Alternatively, the computer may directly read the program from the portable storage medium and execute the processing according to that program, or it may sequentially execute the processing according to the received program each time a program is transferred to it from a server computer. Furthermore, the processing may be executed using a so-called ASP (Application Service Provider) type service, where the processing function is realized only by issuing execution instructions and obtaining results, without transferring the program from the server computer to this computer.In addition, the processing may be executed using a so-called SaaS (Software as a Service) type service, where a part of the server computer is made available to the user along with the program. Furthermore, the term "program" in this form includes information used for processing by an electronic computer that is equivalent to a program (data, etc., that is not a direct instruction to the computer but has the property of defining the processing of the computer).

[0098] Furthermore, in this configuration, the device is configured by executing a predetermined program on a computer, but at least a part of these processes may be implemented in hardware.< / aggregation> ​

Claims

1. The table has a share of the group key column → , → g, and a share of the order key column → g, and a share of the order key column → o, and using the share { → o} and the share { → g}, a sorting unit that generates a sorted table by sorting the rows of the table based on the order key column → o and the group key column → o and the group key column → g; and a group boundary flag column generation unit that generates a share of the boundary flag column → g' representing the group boundary in the sorted table using the share of the sorted group key column → g' in the sorted table; and an intermediate aggregation result column generation unit that generates a share of the intermediate aggregation result column → b 1 representing the row number within each group using the share → b 1 ; and a subgroup boundary flag column generation unit that generates a share of the boundary flag column → b 1 representing the subgroup boundary within each group in the sorted table, where a part where the values of the order key are continuously the same within each group is a subgroup, using the share of the sorted order key column → o' in the sorted table and the share → p; and a final aggregation result column generation unit that generates a share of the final aggregation result column → o' representing the order of the value of each order key within each group using the share { → o'} of the sorted order key column included in the sorted table and the share → b 1 ; and a secret aggregation operation device including → b 2 ; and a final aggregation result column generation unit that generates a share of the final aggregation result column → b 2 representing the order of the value of each order key within each group using the share { → p} and the share → b 2 ; and a final aggregation result column generation unit that generates a share of the final aggregation result column s} → s representing the order of the value of each order key within each group using the share { → s}; and a secret aggregation operation device including.

2. The table has a group key column. → g's share { → g} and the order key column → o's share { → o} includes, and the sorting unit is the share { → g} and the aforementioned share { → Using o}, the order key sequence → o and the group key column → A sorting step generates a sorted table by sorting the rows of the table based on g, and a group boundary flag column generation unit generates the sorted group key column included in the sorted table. → g's share { → Using g'}, a boundary flag column representing the group boundaries in the sorted table. → b 1 Share [ → b 1 The group boundary flag column generation step generates the share[ → b 1 The intermediate summary result column uses ] to indicate which row it is within each group. → p's share { → The intermediate aggregation result column generation step generates p}, and the subgroup boundary flag column generation unit generates the sorted order key column included in the sorted table. → o's share { → o'} and the aforementioned share[ → b 1 Using ], the portion within each group where the order key value is the same consecutively is a subgroup, and the boundary flag column represents the boundary of the subgroup within each group in the sorted table. → b 2 Share [ → b 2 The subgroup boundary flag column generation step generates ] and the final aggregate result column generation unit generates the share { → p} and the aforementioned share[ → b 2 The final aggregated result column uses ] to show the position of each order key value in each group. → s's share { → A final aggregate result column generation step that generates s, and a secret aggregate operation method that includes .