# Supporting Privacy of Computations in Mobile Big Data Systems +
## 4 Secure and Verifiable Cloud Computing for Mobile Systems
### Summary of Our Proposed System  
We summarize our secure cloud computing model in this subsection.  
1. The client chooses \(\{p_{1},p_{2},\ldots,p_{n},p_{c},p_{e}\}\), a set of \((n+2)\) servers in the cloud. Then, to each server \(p_{i}\)\((1\leq i\leq n)\), the client provides a unique seed value \(s_{i}\), and a description of the desired computation. To each pair of servers, \((p_{i},p_{k}),(1\leq i,k\leq n)\), the client also provides another seed value \(s_{ik}\).
2. For the requested computation, each server, \(p_{i}\)\((1\leq i\leq n)\), creates (or retrieves from its repository, if available already) a corresponding Boolean circuit (\(B\)).
3. Using the pseudo random generator of Blum, Blum, Shub, each server, \(p_{i}\)\((1\leq i\leq n)\), uses the seed value \(s_{i}\) to generate its shares for the pair of garbled values and a \(\lambda\) value for each wire in the circuit (\(B\)). Each server, \(p_{i}\), generates a pseudorandom bit sequence of length \(W(2k+1)\) bits using seed value \(s_{i}\); here \(W\) denotes the number of wires in the Boolean circuit (\(B\)).
4. The client instructs the \(n\) servers \(p_{i}\)\((1\leq i\leq n)\) to construct the shares (\(GC_{i}\)) of a BMR garbled circuit, \(GC\), using their shares as private inputs for the secure multiparty computation protocol of Goldreich. Each pair of servers, \((p_{i},p_{k}),(1\leq i,k\leq n)\), generates pseudorandom bits using pairwise seed values \(s_{ik}\) while using the protocol of Goldreich. Let \(A_{i}=(A_{00})_{i}||(A_{01})_{i}||(A_{10})_{i}||(A_{11})_{i}\) denote the shares of server \(p_{i}\) corresponding to the four garbled table entries of gate \(A\). Then, \(GC_{i}\) equals the concatenation of all bit strings of the form \(A_{i}\), where the concatenation operation is carried out over all the gates in the circuit.
5. The client instructs each of the \(n\) servers, \(p_{i}\)\((1\leq i\leq n)\) to send their shares \(GC_{i}\) to the server \(p_{c}\). Performing only \(XOR\) operations, the server \(p_{c}\) creates the desired circuit, \(GC=GC_{1}\oplus GC_{2}\oplus\ldots\oplus GC_{n}\), which is sent to server \(p_{e}\) for evaluation.
6. The client generates garbled input values for each input wire in the circuit using the unique seed values \(s_{i}\)\((1\leq i\leq n)\), and sends them to the server \(p_{e}\) for evaluation. The client also generates the \(\lambda\) values and the two possible garbled values for each output wire in the circuit using these seed values, and keeps the \(\lambda\) values as secret.
7. The server \(p_{e}\) evaluates \(GC\) using the garbled inputs to obtain the garbled output for every output wire in the circuit and sends them to the client. The client now translates these garbled values into plaintext bits, using the \(\lambda\) values, to recover the result of the requested computation.
8. For each output wire in the circuit, the client checks whether the garbled output that is received from the evaluator, \(p_{e}\), matches with one of the two expected garbled values that it computed on its own. If the client determines that there is a match for all output wires, it declares that the evaluator in fact carried out the computation.