Verifiable computing (or verified computation or verified computing) enables a
computer
A computer is a machine that can be Computer programming, programmed to automatically Execution (computing), carry out sequences of arithmetic or logical operations (''computation''). Modern digital electronic computers can perform generic set ...
to
offload the
computation
A computation is any type of arithmetic or non-arithmetic calculation that is well-defined. Common examples of computation are mathematical equation solving and the execution of computer algorithms.
Mechanical or electronic devices (or, hist ...
of some function, to other perhaps untrusted
clients, while maintaining verifiable results. The other clients evaluate the function and return the result with a proof that the
computation
A computation is any type of arithmetic or non-arithmetic calculation that is well-defined. Common examples of computation are mathematical equation solving and the execution of computer algorithms.
Mechanical or electronic devices (or, hist ...
of the function was carried out correctly. The introduction of this notion came as a result of the increasingly common phenomenon of "
outsourcing
Outsourcing is a business practice in which companies use external providers to carry out business processes that would otherwise be handled internally. Outsourcing sometimes involves transferring employees and assets from one firm to another ...
" computation to untrusted users in projects such as
SETI@home
SETI@home ("SETI at home") is a project of the Berkeley SETI Research Center to analyze radio signals with the aim of Search for extraterrestrial intelligence, searching for signs of extraterrestrial intelligence. Until March 2020, it was run ...
and also to the growing desire to enable computationally-weak devices to outsource computational tasks to a more powerful computation service, as in
cloud computing
Cloud computing is "a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to International Organization for ...
. The concept dates back to work by Babai et al., and has been studied under various terms, including "checking computations" (Babai et al.), "delegating computations", "certified computation",
and verifiable computing. The term ''verifiable computing'' itself was formalized by Rosario Gennaro,
Craig Gentry, and Bryan Parno,
[
] and echoes Micali's "certified computation".
Motivation and overview
The growing desire to outsource computational tasks from a relatively weak computational device (client) to a more powerful computation services (worker), and the problem of dishonest workers who modify their client's software to return plausible results without performing the actual work motivated the formalization of the notion of Verifiable Computation.
[
Verifiable computing is not only concerned with getting the result of the outsourced function on the client's input and the ]proof
Proof most often refers to:
* Proof (truth), argument or sufficient evidence for the truth of a proposition
* Alcohol proof, a measure of an alcoholic drink's strength
Proof may also refer to:
Mathematics and formal logic
* Formal proof, a co ...
of its correctness, but also with the client being able to verify the proof with significantly less computational effort than computing the function from scratch.
Considerable attention has been devoted in verifying the computation of functions performed by untrusted workers including the use of secure coprocessors, Trusted Platform Module
A Trusted Platform Module (TPM) is a secure cryptoprocessor that implements the ISO/IEC 11889 standard. Common uses are verifying that the boot process starts from a trusted combination of hardware and software and storing disk encryption keys.
...
s (TPMs), interactive proofs, probabilistically checkable proofs, efficient arguments,[J. Kilian (1992). "A note on efficient zero-knowledge proofs and arguments (extended abstract)." In ''Proceedings of the ACM Symposium on Theory of Computing (STOC)''][J. Kilian (1995). "Improved efficient arguments (preliminary version)." In ''Proceedings of Crypto'', London, UK, pp. 311–324. Springer-Verlag] and Micali's CS proofs.[S. Micali (1994). "CS proofs (extended abstract)." In ''Proceedings of the IEEE Symposium on Foundations of Computer Science'', pp. 436-453.] These verifications are either interactive which require the client to interact with the worker to verify the correctness proof,[ or are non-interactive protocols which can be proven in the ]random oracle
In cryptography, a random oracle is an oracle (a theoretical black box) that responds to every ''unique query'' with a (truly) random response chosen uniformly from its output domain. If a query is repeated, it responds the same way every tim ...
model.[
]
Verification by replication
The largest verified computation (SETI@home
SETI@home ("SETI at home") is a project of the Berkeley SETI Research Center to analyze radio signals with the aim of Search for extraterrestrial intelligence, searching for signs of extraterrestrial intelligence. Until March 2020, it was run ...
) uses verification by replication.
The SETI@home verification process involves one client machine and many worker machines.
The client machine sends identical workunits to multiple computers (at least 2).
When not enough results are returned in a reasonable amount of time—due to machines accidentally turned off, communication breakdowns, etc.—or the results do not agree—due to computation errors, cheating by submitting false data without actually doing the work, etc.—then the client machine sends more identical workunits to other worker machines.
Once a minimum quorum (often 2) of the results agree, then the client assumes those results (and other identical results for that workunit) are correct.
The client grants credit to all machines that returned the correct results.
Verifiable computation
Gennaro et al.[ defined the notion of verifiable computation scheme as a protocol between two polynomial time parties to collaborate on the computation of a function F: n → m. This scheme consists of three main phases:
# Preprocessing. This stage is performed once by the client in order to calculate some auxiliary information associated with F. Part of this information is public to be shared with the worker while the rest is private and kept with the client.
# Input preparation. In this stage, the client calculates some auxiliary information about the input of the function. Part of this information is public while the rest is private and kept with the client. The public information is sent to the worker to compute F on the input data.
# Output computation and verification. In this stage, the worker uses the public information associated with the function F and the input, which are calculated in the previous two phases, to compute an ]encoded
In communications and information processing, code is a system of rules to convert information—such as a letter, word, sound, image, or gesture—into another form, sometimes shortened or secret, for communication through a communication ...
output
Output may refer to:
* The information produced by a computer, see Input/output
* An output state of a system, see state (computer science)
* Output (economics), the amount of goods and services produced
** Gross output in economics, the valu ...
of the function F on the provided input. This result is then returned to the client to verify its correctness by computing the actual value of the output by decoding the result returned by the worker using the private information calculated in the previous phases.
The defined notion of verifiable computation scheme minimizes the interaction between the client and the worker into exactly two messages, where a single message is sent from each party to the other party during the different phases of the protocol.[
]
An example scheme based on fully homomorphic encryption
Gennaro et al.[ defined a verifiable computation scheme for any function ''F'' using Yao's garbled circuit][A. Yao (1982). "Protocols for secure computations." In ''Proceedings of the IEEE Symposium on Foundations of Computer Science'', pp. 160-164][A. Yao (1986). "How to generate and exchange secrets." In ''Proceedings of the IEEE Symposium on Foundations of Computer Science'', pp. 162-167] combined with a fully homomorphic encryption system.
This verifiable computation scheme VC is defined as follows:[
''VC'' = (KeyGen, ProbGen, Compute, Verify) consists of four algorithms as follows:
# KeyGen(F, λ) → (PK, SK): The randomized key generation algorithm generates two keys, public and private, based on the ]security parameter
In cryptography, a security parameter is a way of measuring of how "hard" it is for an adversary to break a cryptographic scheme. There are two main types of security parameter: ''computational'' and ''statistical'', often denoted by \kappa and ...
λ. The public key
Public-key cryptography, or asymmetric cryptography, is the field of cryptographic systems that use pairs of related keys. Each key pair consists of a public key and a corresponding private key. Key pairs are generated with cryptographic alg ...
encodes the target function F and is sent to the worker to compute F. On the other hand, the secret key
A key in cryptography is a piece of information, usually a string of numbers or letters that are stored in a file, which, when processed through a cryptographic algorithm, can encode or decode cryptographic data. Based on the used method, the key c ...
is kept private by the client.
# ProbGen(SK, x) → (σx, τx): The problem generation algorithm encodes the function input x into two values, public and private, using the secret key SK. The public value σx is given to the worker to compute F(x) with, while the secret value τx is kept private by the client.
# Compute(PK, σx) → σy: The worker computes an encoded value σy of the function's output y = F(x) using the client's public key PK and the encoded input σx.
# VerifySK (τx, σy) → y ∪ ⊥: The verification algorithm converts the worker's encoded output σy into the actual output of the function F using both the secret key SK and the secret “decoding” τx. It outputs y = F(x) if the σy represents a valid output of F on x, or outputs ⊥ otherwise.
The protocol of the verifiable computations scheme defined by Gennaro et al.[ works as follows:
The function F should be represented as a ]Boolean circuit
In computational complexity theory and circuit complexity, a Boolean circuit is a mathematical model for combinational digital logic circuits. A formal language can be decided by a family of Boolean circuits, one circuit for each possible inpu ...
on which the key generation
Key generation is the process of generating keys in cryptography. A key is used to encrypt and decrypt whatever data is being encrypted/decrypted.
A device or program used to generate keys is called a key generator or keygen.
Generation in crypt ...
algorithm would be applied. The key generation algorithm runs Yao's garbling procedure over this Boolean circuit to compute the public and secret keys. The public key (PK) is composed of all the ciphertexts that represent the garbled circuit, and the secret key (SK) is composed of all the random wire labels. The generated secret key is then used in the problem generation algorithm. This algorithm first generates a new pair of public and secret keys for the homomorphic encryption scheme, and then uses these keys with the homomorphic scheme to encrypt the correct input wires, represented as the secret key of the garbled circuit. The produced ciphertexts represent the public encoding of the input (σx) that is given to the worker, while the secret key (τx) is kept private by the client. After that, the worker applies the computation steps of the Yao's protocol over the ciphertexts generated by the problem generation algorithm. This is done by recursively decrypting the gate ciphertexts until arriving to the final output wire values (σy). The homomorphic properties of the encryption scheme enable the worker to obtain an encryption of the correct output wire. Finally, the worker returns the ciphertexts of the output to the client who decrypts them to compute the actual output y = F(x) or ⊥.
The definition of the verifiable computation scheme states that the scheme should be both correct and secure. Scheme Correctness is achieved if the problem generation algorithm produces values that enable an honest worker to compute encoded output values that will verify successfully and correspond to the evaluation of F on those inputs. On the other hand, a verifiable computation scheme is ''secure'' if a malicious worker cannot convince the verification algorithm to accept an incorrect output for a given function F and input x.
Practical verifiable computing
Although it was shown that verifiable computing is possible in theory (using fully homomorphic encryption
Homomorphic encryption is a form of encryption that allows computations to be performed on encrypted data without first having to decrypt it. The resulting computations are left in an encrypted form which, when decrypted, result in an output th ...
or via probabilistically checkable proofs), most of the known constructions are very expensive in practice. Recently, some researchers have looked at making verifiable computation practical. One such effort is the work of UT Austin researchers.[
] The authors start with an argument system based on probabilistically checkable proofs and reduce its costs by a factor of 1020. They also implemented their techniques in th
Pepper
system. The authors note that "Our conclusion so far is that, as a tool for building secure systems, PCPs and argument systems are not a lost cause."
The overall area, which now includes a number of implementations by different groups, has been surveyed.
In the 2010s, verifiable computing techniques have seen an increase of practical applications in blockchain technology.[
]
References
{{Reflist, 40em
Secure communication
Distributed computing