22.04.2014 Views

a590003

a590003

a590003

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

the clients jointly run a secure computation to verify the results of the computation sent by the server. The main<br />

issue with this approach is that this solution requires the clients to interact (heavily) with each other in the online<br />

phase - which we believe, as discussed earlier, to be a significant drawback.<br />

A Failed Approach. Towards that end, we consider the following approach. Let us consider the two-client<br />

setting first (where client D i holds input x i ). As before the clients will jointly generate the information needed<br />

for pre-processing via a secure computation protocol. Our first idea is to have each client independently generate<br />

a bit b i in the online phase and send either (Enc pk (x i ), Enc pk (r i )) or (Enc pk (r i ), Enc pk (x i )) to the server in the<br />

online phase. Now, the server instead of computing two outputs will compute 4 ciphertexts (since the server<br />

does not know bits b 1 and b 2 , it will compute ciphertexts corresponding to F (x 1 , x 2 ), F (x 1 , r 2 ), F (r 1 , x 2 ), and<br />

F (r 1 , r 2 ). The clients can then in the offline phase verify the appropriate responses of the server and accept<br />

F (x 1 , x 2 ) if all checks succeed.<br />

Unfortunately, this solution completely fails in the case when a client (say D 2 colludes with the server). Very<br />

briefly, the main problem with the above approach is that it does not guarantee any input independence, a key<br />

requirement for a secure computation protocol. To see the concrete problem, recall that in order to realize the<br />

standard real/ideal paradigm for secure computation, we need to construct a simulator that simulates the view<br />

of the adversary in such a manner that output distributions of the real and ideal world executions are indistinguishable.<br />

The standard way such a simulator works is by “extracting” the input of the adversary in order to<br />

compute the “correct” protocol output (by querying the ideal functionality), and then “enforcing” this output in<br />

the protocol. The main issue that arises in the above approach is that we cannot guarantee that the adversary’s<br />

input extracted by the simulator is consistent with the output of the honest client in the real world execution. In<br />

particular, note that in the real world execution, the clients simply check whether the output of the server contains<br />

the correct F (r 1 , r 2 ) value, and if the check succeeds, then they decrypt the appropriate output value and accept it<br />

as their final output. Then, to argue indistinguishability of the real and ideal world executions, we would need to<br />

argue that the simulator extracts the specific input of the corrupted client that was used to compute the output by<br />

the (colluding) worker. However, the above approach provides no way of enforcing this requirement. As such, a<br />

colluding server and client pair can lead the simulator to compute an output which is inconsistent with the output<br />

generated by the server, in which case the simulator must abort. Yet, in the real world execution, the honest client<br />

would have accepted the output of the server. Thus, the simulator fails to generate an indistinguishable view of<br />

the adversary.<br />

Indeed, the above attack demonstrates that when requiring simulation-based security against malicious coalitions,<br />

current techniques for single-client verifiable computation are not sufficient and new ideas are needed. The<br />

main contribution of our paper is a technique to overcome the above problem.<br />

Our Solution. On careful inspection of the above approach, one can observe that it does provide some weak<br />

form of guarantee – that the server actually correctly computes the function F ; however, F is computed correctly<br />

w.r.t. “some” input for the corrupted client. In particular, the input of corrupted client may not be chosen<br />

independently of the honest client’s input.<br />

In order to solve our problem, our main idea is to leverage the above weak guarantee by changing the functionality<br />

that is being delegated to the worker. Roughly speaking, we essentially “delegate the delegation functionality”.<br />

More concretely, we change the delegation functionality to G(X, Y ) = Eval pk (X, Y, F ), X, Y , where<br />

X and Y are encryptions of the inputs x and y of the clients under the public key pk of the FHE scheme.<br />

In order to understand why the above solution works, let us first consider an intermediate attempt where we<br />

delegate the functionality ¯F (x, y) = F (x, y), x, y. The underlying idea is to use the weak correctness guarantee<br />

(discussed above) to validate the input of the corrupted client. In more detail, note that if we delegate the functionality<br />

¯F , then in the real world execution, we can have the clients perform the check (during the verification<br />

protocol) that the output value contains the same y value that is extracted by the simulator. Indeed, a priori, it<br />

may seem that this approach should indeed solve the above problem as we obtain a guarantee that the input of<br />

the malicious party in the output value (y) was indeed the same input used in the computation (as we are guar-<br />

5<br />

11. How to Delegate Secure Multiparty Computation to the Cloud

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!