Secure computation using a server module
10033708 ยท 2018-07-24
Assignee
Inventors
Cpc classification
H04L63/0428
ELECTRICITY
H04L9/0861
ELECTRICITY
International classification
H04L9/00
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
A server module evaluates a circuit based on concealed inputs provided by respective participant modules, to provide a concealed output. By virtue of this approach, no party to the transaction (including the sever module) discovers any other party's non-concealed inputs. In a first implementation, the server module evaluates a garbled Boolean circuit. This implementation also uses a three-way oblivious transfer technique to provide a concealed input from one of the participant modules to the serer module. In a second implementation, the server module evaluates an arithmetic circuit based on ciphertexts that have been produced using a fully homomorphic encryption technique. This implementation modifies multiplication operations that are performed in the evaluation of the arithmetic circuit by a modifier factor; this removes bounds placed on the number of the multiplication operations that can be performed.
Claims
1. A computing device configured to participate in a multi-party computation over a network, the computing device comprising: one or more processing devices configured via computer readable instructions to: designate a first input wire key to represent a first value for an input wire of a circuit; designate a second input wire key to represent a second value for the input wire of the circuit; designate a first output wire key to represent the first value for an output wire of the circuit and a second output wire key to represent the second value for the output wire of the circuit; determine a concealed input by mapping an input bit of an actual input that has the first value to the first input wire key; receive, over the network from a second computing device, a first public key and a second public key, the first public key corresponding to the first value and the second public key corresponding to the second value; encrypt the first input wire key with the first public key to provide a first ciphertext; encrypt the second input wire key with the second public key to provide a second ciphertext; provide the concealed input, the first ciphertext, and the second ciphertext over the network to a third computing device, the third computing device using the circuit to compute a computation output, the first input wire key allowing the third computing device to recover a computed output wire key representing an output bit of the computation output; receive the computation output over the network from the third computing device; and in an instance when the computed output wire key matches the first output wire key, determine that the output bit of the computation output has the first value.
2. The computing device of claim 1, the first value being 0 and the second value being 1.
3. The computing device of claim 2, wherein the one or more processing devices are configured via the computer readable instructions to: designate another first input wire key to represent the first value for another input wire of the circuit and another second input wire key to represent the second value for the another input wire of the circuit; and determine the concealed input by mapping another input bit of the actual input that has the second value to the another second input wire key, the concealed input comprising the first input wire key and the another second input wire key.
4. The computing device of claim 3, wherein the one or more processing devices are configured via the computer readable instructions to: receive, over the network from the second computing device, another first public key and another second public key, the another first public key corresponding to the first value and the another second public key corresponding to the second value; encrypt the another first input wire key with the another first public key to provide another first ciphertext; encrypt the another second input wire key with the another second public key to provide another second ciphertext; and provide the another first ciphertext and the another second ciphertext to the third computing device over the network before the third computing device computes the computed output.
5. The computing device of claim 4, wherein the one or more processing devices are configured via the computer readable instructions to: provide the circuit to the third computing device over the network in garbled form.
6. The computing device of claim 5, wherein the one or more processing devices are configured via the computer readable instructions to: garble the circuit.
7. The computing device of claim 6, wherein the circuit is configured to perform a Boolean operation.
8. A method performed by a first computing device to participate in a multi-party computation over a network, the method comprising: by the first computing device: designating different input wire keys to represent different values for different input wires of a circuit; designating different output wire keys to represent the different values for different output wires of the circuit; determining a concealed input by mapping an actual input to selected input wire keys, the concealed input comprising the selected input wire keys; receiving, over the network from a second computing device, different public keys for the different input wire keys, individual public keys received from the second computing device representing individual values for corresponding input wires of the circuit; encrypting the different input wire keys with associated public keys received from the second computing device to obtain ciphertexts; providing the concealed input and the ciphertexts to a third computing device over the network, the third computing device using the circuit, the ciphertexts, and the selected input wire keys of the concealed input to recover a garbled computation output comprising computed output wire keys; receiving the garbled computation output from the third computing device over the network; and recovering a plaintext computation output from the garbled computation output by mapping the computed output wire keys to respective output bit values represented by the computed output wire keys.
9. The method of claim 8, wherein designating the different input wire keys includes designating at least two first input wire keys representing the different values for a first input wire of the circuit, the first input wire being an input to a particular gate of the circuit.
10. The method of claim 9, wherein designating the different input wire keys includes designating at least two second input wire keys representing the different values for a second input wire that is also an input to the particular gate of the circuit.
11. The method of claim 10, wherein designating the different output wire keys includes designating at least two output wire keys representing the different values for an output wire of the particular gate of the circuit.
12. The method of claim 11, further comprising: by the first computing device, garbling the circuit and providing the circuit over the network to the third computing device in garbled form.
13. The method of claim 12, wherein garbling the circuit comprises encrypting the different output wire keys with the at least two second input wire keys to obtain intermediate results.
14. The method of claim 13, wherein garbling the circuit comprises encrypting the intermediate results with the at least two first input wire keys to obtain final results, the garbled circuit comprising the final results.
15. The method of claim 14, wherein the particular gate is a Boolean AND gate.
16. The method of claim 15, further comprising: by the first computing device: encrypting a zero-value output wire key with a zero-value second input wire key to provide a first intermediate result and encrypting the first intermediate result with a zero-value first input wire key to obtain a first final result; encrypting the zero-value output wire key with a one-value second input wire key to provide a second intermediate result and encrypting the second intermediate result with the zero-value first input wire key to obtain a second final result; encrypting the zero-value output wire key with the zero-value second input wire key to provide a third intermediate result and encrypting the third intermediate result with a one-value first input wire key to obtain a third final result; and encrypting a one-value output wire key with the one-value second input wire key to provide a fourth intermediate result and encrypting the fourth intermediate result with the one-value first input wire key to obtain a fourth final result, the garbled circuit comprising the first final result, the second final result, the third final result, and the fourth final result.
17. A computing device for participating in a multi-party computation over a network, the computing device comprising: one or more processing devices configured via computer readable instructions to: designate different input wire keys to represent different values for different input wires of a circuit; designate different output wire keys to represent the different values for different output wires of the circuit; determine a concealed input by mapping input bits of an actual input to selected input wire keys, the concealed input comprising the selected input wire keys; receive, over the network from a second computing device, different public keys for the different input wire keys, individual public keys received from the second computing device representing individual values for corresponding input wires of the circuit; encrypt the different input wire keys with associated public keys received from the second computing device to obtain ciphertexts; provide the concealed input and the ciphertexts over the network to a third computing device, the third computing device using the circuit, the ciphertexts, and the selected input wire keys of the concealed input to recover a garbled computation output comprising computed output wire keys; receive the garbled computation output over the network from the third computing device; and recover a plaintext computation output from the garbled computation output by mapping the computed output wire keys to respective output bit values represented by the computed output wire keys.
18. The computing device of claim 17, wherein the computer readable instructions configure the one or more processing devices to: designate at least two first input wire keys representing the different values for a first input wire of the circuit, the first input wire being an input to a particular gate of the circuit; designate at least two second input wire keys representing the different values for a second input wire that is also an input to the particular gate of the circuit; and designate at least two output wire keys representing the different values for an individual output wire of the particular gate of the circuit.
19. The computing device of claim 18, the at least two output wire keys comprising designated input wire keys for another gate of the circuit that uses output of the particular gate as input.
20. A system comprising the computing device of claim 17, the second computing device, and the third computing device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18) The same numbers are used throughout the disclosure and figures to reference like components and features. Series 100 numbers refer to features originally found in
DETAILED DESCRIPTION
(19) The disclosure is organized as follows. Section A describes general principles of a system for performing computations in a secure manner using a server module. Section B describes a first implementation of the principles of Section A using a concealed version of a Boolean circuit and a three-way oblivious transfer technique. Section C describes a second implementation of the principles of Section A using an arithmetic circuit in conjunction with a fully homomorphic encryption technique. Section D describes illustrative processing functionality that can be used to implement any aspect of the features described in Sections A-C.
(20) As a preliminary matter, some of the figures describe concepts in the context of one or more structural components, variously referred to as functionality, modules, features, elements, etc. The various components shown in the figures can be implemented in any manner. In one case, the illustrated separation of various components in the figures into distinct units may reflect the use of corresponding distinct components in an actual implementation. Alternatively, or in addition, any single component illustrated in the figures may be implemented by plural actual components. Alternatively, or in addition, the depiction of any two or more separate components in the figures may reflect different functions performed by a single actual component.
(21) Other figures describe the concepts in flowchart form. In this form, certain operations are described as constituting distinct blocks performed in a certain order. Such implementations are illustrative and non-limiting. Certain blocks described herein can be grouped together and performed in a single operation, certain blocks can be broken apart into plural component blocks, and certain blocks can be performed in an order that differs from that which is illustrated herein (including a parallel manner of performing the blocks). The blocks shown in the flowcharts can be implemented in any manner.
(22) The following explanation may identify one or more features as optional. This type of statement is not to be interpreted as an exhaustive indication of features that may be considered optional; that is, other features can be considered as optional, although not expressly identified in the text. Similarly, the explanation may indicate that one or more features can be implemented in the plural (that is, by providing more than one of the features). This statement is not be interpreted as an exhaustive indication of features that can be duplicated. Finally, the terms exemplary or illustrative refer to one implementation among potentially many implementations.
(23) A. Overview
(24)
(25) The server module 102 can represent any type of computing functionality. In one case, it corresponds to a computer server that includes processing functionality, input functionality, output functionality, storage functionality, etc. In one scenario, the sever module 102 may represent a processing resource in a cloud computing system, such as a data center that provides a cloud computing service. The server module 102 can represent a single resource provided at a single location or a distributed resource that is distributed over plural locations. For example, the server module 102 can correspond to a single physical machine; alternatively, the server module 102 can represent a virtual server module that maps to corresponding underlying computing hardware in any manner.
(26) Each participant module 104 can likewise represent any type of functionality that includes processing functionality, input functionality, output functionality, storage functionality, etc. In illustrative concrete examples, any participant module can correspond to a stationary personal computing device, a laptop or net book computing device, a personal digital assistant (PDA) computing device, a stylus-type computing device, a mobile phone device, a game console, a set-top box, and so on.
(27) The server module 102 is connected to P.sub.A 104 and P.sub.B 106 via any type of network 108. The network 108 may represent any type of point-to-point or multi-point coupling mechanism. In one implementation, the network 108 can correspond to a wide area network (e.g., the Internet), a local area network, or combination thereof. The network 108 can include any combination of wireless links, wired links, routers, gateways, etc., as governed by any protocol or combination of protocols. The server module 102 can represent a remote or local resource in relation to any of the participant modules.
(28) In a first scenario, a user or organizational entity may operate P.sub.A 104 to send input data to the server module 102 over the network 108. The server module 102 performs an operation on the input data to generate output data. The server module 102 sends back the output data to P.sub.A 104.
(29) In a second scenario, an entity associated with P.sub.A 104 and an entity associated with P.sub.B 106 may be interested in performing a processing task that involves input provided by both parties (P.sub.A 104 and P.sub.B 106). For example, consider the case in which P.sub.A 104 is associated with a first hospital and P.sub.B 106 is associated with a second hospital. Assume that both hospitals are located in the same city. These two hospitals may be interested in determining the average cost of care of a certain kind in the city, where that average is formed as function of a city-wide data set to which both hospitals contribute. This operation is an example of a joint computation that depends on the inputs of two separate entities. To perform this function, the first hospital uses P.sub.A 104 to send its patient records to the server module 102, and the second hospital uses P.sub.B 106 to send its patient records to the server module 102. The server module 102 then processes the joint inputs provided by these hospitals, produces an output result, and sends the output result to both hospitals. There are many other practical examples of a similar nature, some involving joint computations, and others involving non-joint (independent) computations.
(30) It can be appreciated that there are security concerns associated with outsourcing the type of processing task described above. For example, hospital A may not want to divulge the details about individual patient records to either the server module 102 or the hospital B. Similarly, hospital B may not want to divulge the details about individual patient records to either the server module 102 or hospital A.
(31) In a two-party or multi-party distributed setting (without a server), the above-described challenge is sometimes referred as the millionaire's problem. In this problem, two millionaires want to determine which one of them is richer, but neither wants to disclose his actual net worth to the other. Technology to address this situation in a two-party distributed setting is referred to as two-party computation. Technology which extends these security objectives to more than two participants is referred to as multi-party computation (MPC).
(32)
(33)
(34) Generally, the server module 102 is treated in a conservative manner as untrustworthy (meaning, for instance, that the server module 102 cannot be trusted to maintain the confidentiality of information provided to the sever module 102). However, in some scenarios, it will be assumed that the server module 102 does not collude with any participant module to circumvent the security provisions described herein. Further, in some scenarios, it will be assumed that the parties to the joint computation are semi-honest entities at worst. This means that the entities can be expected to follow the security protocol (described below). But the entities may try to leverage the information that they discover in the course of this protocol to uncover additional information (to which they are not entitled).
(35) In action 202, the server module 102 receives a circuit 110 that it uses to process the inputs provided by P.sub.A 104 and P.sub.B 106. At this juncture in the explanation, suffice it to say that the circuit is a collection of interconnected gates that perform the function. The first implementation uses a concealed version of a Boolean circuit, where the Boolean circuit includes a plurality of Boolean-type gates (e.g., any of AND, OR, NAND, NOR, etc.). The second implementation uses an arithmetic circuit that includes a plurality of arithmetic gates (e.g., any of addition, multiplication, etc.).
(36) The server module 102 can receive the circuit 110 from any source. For example, in the first implementation, the server module 102 receives a garbled version of the circuit 110 from one of the participant modules, e.g., P.sub.A 104.
(37) In action 204, each of the participant modules provides concealed inputs to the server module 102. In action 206, the server module 102 receives the concealed inputs. The concealed inputs express the inputs of P.sub.A 104 and P.sub.B 106 in a concealed form. Sections B and C will describe two different ways that this concealing operation can be performed.
(38) In action 208, the server module 102 evaluates the circuit 110 based on the concealed inputs received in action 206. This generates an output which is also expressed in a concealed form (e.g., comprising a concealed output).
(39) In action 210, the server module 210 sends the concealed output to the participant modules. In a symmetric case, the server module 210 sends the same output result to all of the participating modules. Otherwise, the server module 210 can send a first concealed output result y.sub.A to P.sub.A 104 and a second concealed output result y.sub.B to P.sub.B 106. In action 212, the participant modules (P.sub.A 104 and P.sub.B 106) receive the concealed output result(s). In action 214, the participant modules convert the concealed output to non-concealed form. Sections B and C will describe two ways that can be used to perform this conversion.
(40) The system 100 thereby maintains the secrecy of sensitive information provided by the participant modules, even though the server module 102 performs a processing task that may be based on the joint inputs provided by plural participant modules. Thus, the system 100 allows the participant modules to proceed as if the server module 102 was a trusted entity, which it is not. According to another potential merit, the system 100 delegates a significant portion of processing burden to the server module 102. This reduces the processing load that is placed on the participant modules. This also reduces resource requirements placed on the participant modules.
(41)
(42) The first implementation makes use of another collection of processing modules 310 for handling a three-way oblivious transfer technique (to be described below). Together these processing modules 310 describe a public encryption scheme, e.g., involving the use of a public key (pk) to encrypt a message and a secret key (sk) to decrypt the message. Although not shown, these processing modules 310 can include a key generating module (for generating pk and sk pairs), an encryption module, and a decryption module.
(43)
(44) B. Implementation I
(45)
(46) The server module 502 provides processing resources for use by two parties, participant module A 504 (P.sub.A) and participant module B 506 (P.sub.B). The server module 502 is assumed to be untrustworthy, but non-colluding. In one scenario, all of the entities are assumed to be semi-honest at worst.
(47) The component modules of the server module 502 can include: a server-participant (SP) module 508 for communicating with P.sub.A 104 and P.sub.B 106; a circuit evaluation module 510 for evaluating the Boolean circuit to generate a concealed output; an input reconstruction module 512 for reconstructing a garbled input (associated with an input from the P.sub.B 506); one or more data stores 514 for retaining information, etc.
(48) Each participant module can include: a participant-sever (PS) communication module 516 for communicating with the server module 502; a participant-participant (PP) communication module 518 for communicating with other participant modules; a circuit generation module 520 for generating the Boolean circuit (for transfer to the server module 502); a circuit concealment module 522 for garbling the Boolean circuit; an input concealment module 524 for concealing input provided to the server module 502; an output evaluation module 526 for processing concealed output from the server module 502; one or more data stores 528 for retaining information in concealed and/or non-concealed form, etc.
(49)
(50) Starting with
(51) In action 602, the P.sub.A 504 generates the Boolean circuit. In other implementations, other entities can create the Boolean circuit.
(52) In action 604, the P.sub.A 504 garbles the circuit to produce a garbled circuit, G(Circuit), also more generally referred to herein as a concealed version of the Boolean circuit. Garbling consists of encrypting the contents of the Boolean circuit in a manner to be described below. In action 606, the P.sub.A 504 sends the garbed circuit G(Circuit) to the server module 502. In action 608, the server module 502 receives and stores the garbed circuit G(Circuit).
(53) In action 610, the P.sub.A 504 produces a translation table. The translation table is used to map a garbled output of the garbled circuit to an actual (non-concealed) output result. In action 612, the P.sub.A 504 sends the translation table to P.sub.B 506 (for its eventual use in interpreting the garbled output produced by the sever module 502). In action 614, the P.sub.B 506 receives and stores the translation table.
(54) Advancing to
(55) More specifically, consider a portion 704 of a particular Boolean circuit 702 that includes three AND gates (where the actual Boolean circuit may include many more gates that are not shown, possibly of different kinds). In one implementation, each gate includes two input wires, each for receiving a binary input (e.g., 0 or 1). Further, each gate includes an output wire for providing a binary output (e.g., 0 or 1) which reflects an output of processing performed by the gate. For example, a first gate (g.sub.1) includes input wires w.sub.11 and w.sub.12, and output wire w.sub.13. A second gate (g.sub.2) includes input wires w.sub.21 and w.sub.22, and output wire w.sub.23. Further, in this case, assume that the first gate and the second gate are members of an input layer of the Boolean circuit that receives input supplied to the Boolean circuit. Hence, the wires w.sub.11, w.sub.12, w.sub.21, and w.sub.22 are referred to as input wires, representing a subset of such input wires provided by the Boolean circuit.
(56) A third gate (g.sub.3) receives, as its inputs, the output of gates g.sub.1 and g.sub.2. That is, the gate g.sub.3 includes input wires w.sub.13 (the output wire of the first gate g.sub.1) and w.sub.23 (the output wire of the second gate g.sub.2). For this reason, the third gate g.sub.3 is a member of a layer that this is subordinate to the input layer within the Boolean circuit.
(57) In the garbling action 604, the P.sub.A 504 first assigns keys to each of the wires in the Boolean circuit (a portion 704 of which is shown in
(58) The keys for some wires in lower layers may be defined by the keys already chosen for respective parent layers. For example, consider the keys for gate g.sub.3. Gate g.sub.3 includes input wires which correspond to the output wires of gates g.sub.1 and g. The P.sub.A 504 has already assigned keys K.sub.w13.sup.0 and K.sub.w13.sup.1 to the first input wire and the keys K.sub.w23.sup.0 and K.sub.w23.sup.1 to the second input wire. Hence, these same keys are used as the input wires to gate g.sub.3. However, the P.sub.A 504 assigns new keys (K.sub.w33.sup.0 and K.sub.w33.sup.1) to the output wire w.sub.33 of the third gate.
(59) In the next phase of action 604, the P.sub.A 504 garbles all of the gates in the Boolean circuit on the basis of the keys that have been assigned. The right-hand portion of
(60)
(61) In action 902, assume that the P.sub.A 104 identifies a non-concealed input string. Assume that this input string includes, as part thereof, the bit string 1011 to be fed to wires w.sub.11, w.sub.12, w.sub.21, and w.sub.22 of the Boolean circuit. In action 904, the P.sub.A 504 garbles the input string. This operation comprises mapping the input bits to the corresponding keys that have been assigned to these wires. This mapping process produces a garbled input that includes, in part, the keys K.sub.w11.sup.1, K.sub.w12.sup.0, K.sub.w21.sup.1, and K.sub.w22.sup.1. The P.sub.A 504 can then pass the garbled input to the server module 502.
(62) In action 906, the server module 502 operates on the garbled input to generate a garbled output. For example, consider the isolated case of the input of keys K.sub.w11.sup.1 and K.sub.w12.sup.0 supplied to gate g.sub.1. Possession of these keys allows the server module 502 to decrypt the key for the output wire w.sub.13, namely K.sub.w13.sup.0. Similarly, possession of keys K.sub.w21.sup.1 and K.sub.w22.sup.1 allows the server module 502 to decrypt the key for the output wire w.sub.23, namely K.sub.w23.sup.1. At this point, the server module 502 has extracted the keys for the input wires to gate g.sub.3, which allows it to decrypt the key K.sub.w33.sup.0 for the output wire w.sub.33. This process continues in an iterative manner until the server module 502 extracts a final set of keys for the gates in the last layer. The server module 502 can then pass these keys to the appropriate recipient, e.g., the P.sub.A 504. This output is in concealed form because it does not reveal the actual output values corresponding to the keys. In block 908, the recipient(s) of the concealed output (e.g., P.sub.A 504) uses a translation table to map the keys in the output to associated actual bit values.
(63) Note that a particular input string selectively empowers the server module 502 to only provide a specific output result. That is, the server module 502 is not in a position to perform computations unless it has keys corresponding to corresponding input values. In practice, the sever module 502 can use its set of received keys to try to decrypt what it can; some of these decryptions will work, while some will not. Thus, the server module 502 can proceed without knowing the meaning that is attached to each key (for example, whether a key is associated with a 0 bit or a 1 bit, etc.).
(64) With the above introduction, the explanation continues with a description of
(65) The next actions, enclosed by a dashed-line box, correspond to a three-way oblivious transfer technique 622. The three-way oblivious transfer technique 622 operates to handle a cooperative communication among P.sub.A 504, P.sub.B 506, and the server module 502 so as to transfer a garbed input x.sub.B from P.sub.B 506 to the server module 502, where x.sub.B corresponds to a strings of bits).
(66) This transfer is qualified in the following manner. First, the transfer is performed in such a manner that P.sub.A 504 does not learn the input (x.sub.B) of P.sub.B 506, and vice versa. Second, the server module 502 does not learn of anyone's inputs (in non-concealed form). This task is challenging because P.sub.A 504 is the agent which has generated the encryption keys for the wires. Thus, P.sub.B 506 is asked to conceal its inputs without having knowledge of the keys. The P.sub.A 504 can transfer all the keys to the P.sub.B 506, but this would empower the P.sub.B 506 to examine more information than it is entitled to possess. P.sub.A 504 can transfer a subset of the appropriate keys to P.sub.B 506, but this would inform P.sub.A 504 of the input x.sub.B of P.sub.g 506.
(67) Stated in another way, P.sub.B 506 seeks to select certain keys from the complete set of keys provided by P.sub.A 504. But P.sub.B 506 does not want P.sub.A 504 to know what keys it has selected. Further, P.sub.A 504 does not want to divulge to P.sub.B 506 the keys that are not being selected.
(68) In action 624, the P.sub.B 506 begins a process by which it transfers its garbed input to the sever module 502. However, as explained above, the P.sub.B 506 cannot perform this function in as direct a manner as P.sub.A 504, because it does not possess any of the keys to perform the mapping. So, in action 624, the P.sub.B 506 begins by generating secret keys and corresponding public keys for the input wires in the Boolean circuit (using the processing modules 310 associated with a public encryption scheme). That is, for a given input wire, the P.sub.B 506 generates two key pairs. The first pair comprises a secret key sk.sub.0 and a public key pk.sub.0 (associated with bit 0). A second pair (for the same wire) comprises a secret key sk.sub.1 and public key pk.sub.1 (associated with bit 1). In action 626, the P.sub.B 506 sends just the public keys to the P.sub.A 504. In action 626, the P.sub.A 504 receives these public keys.
(69) In action 620, the P.sub.A 504 uses the received public keys to encrypt corresponding Boolean circuit input keys (that have been previously assigned to the input wires). For example, consider the key K.sub.w11.sup.0 corresponding to input wire w.sub.11, associated with bit 0. The P.sub.A 504 encrypts this key using the corresponding public key provided by P.sub.B 506 to provide a ciphertext c. This produces a plurality of ciphertexts (c's). In action 632, the P.sub.A 504 permutes these ciphertexts into a random order. In action 634, the P.sub.A 504 transfers the permuted ciphertexts to the server module 502. In action 636, the P.sub.A 504 receives the ciphertexts.
(70) Next, in action 636, the P.sub.B 506 sends appropriate secret keys (sk's) corresponding to its own input (e.g., x.sub.B) to the server module 504. In other words, the P.sub.B 506 does not send all of the secret keys, but just those secret keys that map to the bits of x.sub.B. For example, if a particular wire is fed an input bit of 0 by x.sub.B, then P.sub.B 506 sends the secret key for this particular wire that corresponds to the 0 bit. In action 638, the server module 504 receives the selected secret keys (sk's).
(71) The three-way oblivious transfer technique concludes in action 642 (of
(72) In action 644, the server module 502 finally can feed the two garbed inputs, G(x.sub.A) and G(x.sub.B) to the garbed Boolean circuit G(Circuit). Upon evaluation, this produces a garbed output G(
(73) Accordingly, in action 646, the server module 502 sends garbed output y.sub.A to P.sub.A 504 and garbled output y.sub.B to P.sub.B 506, where y.sub.A may be the same as or different than y.sub.B. In action 648, the P.sub.A 504 receives the garbled input y.sub.A. In action 650, the P.sub.B 506 receives the garbled output y.sub.B.
(74) In action 652, the P.sub.A 504 uses the translation table to map the garbled output y.sub.A (which comprises a series of keys) to an actual (non-concealed) bit stream. In action 654, the P.sub.B 506 performs a similar function with respect to garbled output y.sub.B.
(75) C. Implementation II
(76)
(77) The server module 1002 communicates with any number of participant modules, such as, without limitation, participant module A 1004 (P.sub.A), participant module B 1006 (P.sub.B), and participant module C 1008 (P.sub.C). In one illustrative scenario, it is assumed that the server module 1002 is potentially untrustworthy, but that it does not collude with any of the participant modules.
(78) The server module 1002 can include a number of component modules enumerated in
(79) Any of the participant modules can likewise include a number of component modules. The component modules can include: a participant-server (PS) communication module 1016 for communicating with the server module 1002; a participant-participant (PP) module 1018 for communicating with other participant modules; a generating module 1020 (e.g., corresponding to the generating module 404 of
(80)
(81) In actions 1102 and 1104, each of the participant modules (P.sub.A 1004 and P.sub.B 1006) can run a distributed coin tossing protocol. This result in each participant module generating the same random string r.
(82) In actions 1106 and 1108, each of the participant modules (P.sub.A 1004 and P.sub.B 1006) uses the random string r and a security parameter k to generate a key K.sub.h. This key is produced using the generating module 404 of
(83) A fully homomorphic encryption technique has the following properties, defined with respect to an add (Add) operation and a multiplication (Mult) operation. To simplify, the explanation will first omit the role of the modifier factor (). The add operation, Add(
(84) In action 1110, the P.sub.A 1004 encrypts its input x.sub.A using the key K.sub.h to produce ciphertext c.sub.A. In action 1112, the P.sub.B 1006 encrypts its input x.sub.B using the key K.sub.h to produce ciphertext c.sub.B. In actions 1114 and 1116, the P.sub.A 1004 and P.sub.B 1006 send the ciphertexts (c.sub.A, c.sub.B) to the server module 1002. The P.sub.A 1004 and P.sub.B 1006 also send the modifier factor () to the server module 1002 (although, in another embodiment, only one of the participant modules sends the modifier factor to the server module 1002, since each participant module produces the same modifier factor). In action 1118, the server module 1002 receives these ciphertexts and modifier factor(s).
(85) In action 1120, the server module 1002 evaluates the arithmetic circuit based on the encrypted inputs received in action 1116. This produces an encrypted output, y. In action 1122, the server module 1002 sends the encrypted output y to the P.sub.A 1004 and the P.sub.B 1006. In actions 1124 and 1126, the P.sub.A 1004 and P.sub.B 1006 receive the encrypted output y.
(86) In action 1128, the P.sub.A 1004 decrypts the encrypted output y using the key K.sub.h. Likewise, in action 1130, the P.sub.B 1006 decrypts the encrypted output using the key K.sub.h. This is possible because of the characteristics of the fully homomorphic encryption technique described above. Namely, even though the original encrypted inputs may have been transformed using several addition and multiplication operations, the same key can be used to decrypt the final output result.
(87) Recall, based on the introduction provided with respect to
(88) Beginning with
(89) In action 1204, the generating module 404 provides a plurality of a values. These values correspond to locations along the x-axis of a polynomial function to be created in the encryption process. Note , e.g.,
, where k is a security parameter.
(90) In action 1206, the generating module 406 provides a set of noise indices (N). These indices identify random locations of noise values (where the noise values will be added, during encryption, to a ciphertext based on the random locations in the key K.sub.h). In one implementation, the generating module 406 can uniformly select n of these noise indices at random from a range (2k+1+n).
(91) In action 1208, the generating module 406 forms the key K.sub.h based on a combination of a and N. In other words, the key K.sub.h(
(92) In action 1210, the generating module 406 generates a modifier factor Tr. The modifier factor is a parameter that is produced by at least one of the participant modules (or some other entity), and provided to the server module 1002; thus the modifier factor is considered a public parameter. As will be described in greater detail below, the server module 1002 uses the modifier factor each time it multiplies two ciphertexts together using component-wise multiplication (for reasons described below).
(93)
(94) In action 1306, the encryption module 406 generates the ciphertext
(95)
(96) In action 1506, the decryption module 408 then evaluates the reconstructed polynomial function at =0 to extract the original message, e.g., p(0)=m.
(97)
(98) More specifically, in the course of evaluating the arithmetic circuit, the multiplication operation 1604 modifies each multiplication result (e.g., produced by the component-wise multiplication
(99) There are different ways to generate the modifier factor . Generally, the modifier factor is designed to satisfy two aims. First, the modifier factor is designed to reduce the degree of an underlying polynomial function that is associated with a product of a multiplication operation. Second, the modifier factor is designed so as not to disclose any information about the construction of the key K.sub.h. More specifically, it is designed so as not to disclose the location of the noise elements in a ciphertext (as governed by N in the key K.sub.h).
(100) One algorithm for generating the modifier factor is given by: =V.sup.N(
(101) 1. In this equation, let V.sub.N(
(102) 2. Let P be the projection matrix that maps (2k+1)-dimensional vectors
(103) 3. Let R be the (2k+1)(2k+1) matrix obtained by replacing the 1's in rows 2 thrown k+1 of the (2k+1)(2k+1) identity matrix with random values in F.
(104) 4. Let V.sup.N(
(105) D. Representative Processing Functionality
(106)
(107) The processing functionality 1700 can include volatile and non-volatile memory, such as RAM 1702 and ROM 1704, as well as one or more processing devices 1706. The processing functionality 1700 also optionally includes various media devices 1708, such as a hard disk module, an optical disk module, and so forth. The processing functionality 1700 can perform various operations identified above when the processing device(s) 1706 executes instructions that are maintained by memory (e.g., RAM 1702, ROM 1704, or elsewhere). More generally, instructions and other information can be stored on any computer readable medium 1710, including, but not limited to, static memory storage devices, magnetic storage devices, optical storage devices, and so on. The term computer readable medium also encompasses plural storage devices.
(108) The processing functionality 1700 also includes an input/output module 1712 for receiving various inputs from a user (via input modules 1714), and for providing various outputs to the user (via output modules). One particular output mechanism may include a presentation module 1716 and an associated graphical user interface (GUI) 1718. The processing functionality 1700 can also include one or more network interfaces 1720 for exchanging data with other devices via one or more communication conduits 1722. One or more communication buses 1724 communicatively couple the above-described components together.
(109) In closing, the description may have described various concepts in the context of illustrative challenges or problems. This manner of explication does not constitute an admission that others have appreciated and/or articulated the challenges or problems in the manner specified herein.
(110) More generally, although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.