In
cryptography
Cryptography, or cryptology (from grc, , translit=kryptós "hidden, secret"; and ''graphein'', "to write", or ''-logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of adve ...
, homomorphic secret sharing is a type of
secret sharing
Secret sharing (also called secret splitting) refers to methods for distributing a secret among a group, in such a way that no individual holds any intelligible information about the secret, but when a sufficient number of individuals combine th ...
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
in which the secret is encrypted via
homomorphic encryption
Homomorphic encryption is a form of encryption that permits users to perform computations on its encrypted data without first decrypting it. These resulting computations are left in an encrypted form which, when decrypted, result in an identical ...
. A
homomorphism
In algebra, a homomorphism is a structure-preserving map between two algebraic structures of the same type (such as two groups, two rings, or two vector spaces). The word ''homomorphism'' comes from the Ancient Greek language: () meaning "sa ...
is a transformation from one
algebraic structure
In mathematics, an algebraic structure consists of a nonempty set ''A'' (called the underlying set, carrier set or domain), a collection of operations on ''A'' (typically binary operations such as addition and multiplication), and a finite set ...
into another of the same type so that the structure is preserved. Importantly, this means that for every kind of manipulation of the original data, there is a corresponding manipulation of the transformed data.
Technique
Homomorphic secret sharing is used to transmit a secret to several recipients as follows:
# Transform the "secret" using a homomorphism. This often puts the secret into a form which is easy to manipulate or store. In particular, there may be a natural way to 'split' the new form as required by step (2).
# Split the transformed secret into several parts, one for each recipient. The secret must be split in such a way that it can only be recovered when all or most of the parts are combined. (See ''
Secret sharing
Secret sharing (also called secret splitting) refers to methods for distributing a secret among a group, in such a way that no individual holds any intelligible information about the secret, but when a sufficient number of individuals combine th ...
''.)
# Distribute the parts of the secret to each of the recipients.
# Combine each of the recipients' parts to recover the transformed secret, perhaps at a specified time.
# Reverse the homomorphism to recover the original secret.
Examples
Suppose a community wants to perform an election, using a decentralized voting protocol, but they want to ensure that the vote-counters won't lie about the results. Using a type of homomorphic secret sharing known as
Shamir's secret sharing
Shamir's Secret Sharing (SSS) is an efficient secret sharing algorithm for distributing private information (the "secret") in such a way that no individual holds intelligible information about the secret. To achieve this, the secret is converted ...
, each member of the community can add their vote to a form that is split into pieces, each piece is then submitted to a different vote-counter. The pieces are designed so that the vote-counters can't predict how any alterations to each piece will affect the whole, thus, discouraging vote-counters from tampering with their pieces. When all votes have been received, the vote-counters combine them, allowing them to recover the aggregate election results.
In detail, suppose we have an election with:
* Two possible outcomes, either ''yes'' or ''no''. We'll represent those outcomes numerically by +1 and −1, respectively.
* A number of authorities, ''k'', who will count the votes.
* A number of voters, ''n'', who will submit votes.
# In advance, each authority generates a publicly available numerical key, ''x
k''.
# Each voter encodes his vote in a polynomial ''p
n'' according to the following rules: The polynomial should have degree , its constant term should be either +1 or −1 (corresponding to voting "yes" or voting "no"), and its other coefficients should be randomly generated.
# Each voter computes the value of his polynomial ''p
n'' at each authority's public key ''x
k''.
#* This produces ''k'' points, one for each authority.
#* These ''k'' points are the "pieces" of the vote: If you know all of the points, you can figure out the polynomial ''p
n'' (and hence you can figure out how the voter voted). However, if you know only some of the points, you can't figure out the polynomial. (This is because you need ''n'' points to determine a degree- polynomial. Two points determine a line, three points determine a parabola, etc.)
# The voter sends each authority the value that was produced using the authority's key.
# Each authority collects the values that he receives. Since each authority only gets one value from each voter, he can't discover any given voter's polynomial. Moreover, he can't predict how altering the submissions will affect the vote.
# Once the voters have submitted their votes, each authority ''k'' computes and announces the sum ''A
k'' of all the values he's received.
# There are ''k'' sums, ''A
k''; when they are combined together, they determine a unique polynomial ''P''(''x'') – specifically, the sum of all the voter polynomials: ''P''(''x'') = ''p''
1(''x'') + ''p''
2(''x'') + ... + ''p''
''n''(''x'').
#* The constant term of ''P''(''x'') is in fact the sum of all the votes, because the constant term of ''P''(''x'') is the sum of the constant terms of the individual ''p
n''.
#* Thus the constant term of ''P''(''x'') provides the aggregate election result: if it is positive, more people voted for +1 than for −1; if it is negative, more people voted for −1 than for +1.
Features
This protocol works as long as not all of the ''k'' authorities are corrupt — if they were, then they could collaborate to reconstruct ''P''(''x'') for each voter and also subsequently alter the votes.
The
protocol
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
requires authorities to be completed, therefore in case there are authorities, authorities can be corrupted, which gives the protocol a certain degree of robustness.
The protocol manages the IDs of the voters (the IDs were submitted with the ballots) and therefore can verify that only legitimate voters have voted.
Under the assumptions on ''t'':
#A ballot cannot be backtracked to the ID so the privacy of the voters is preserved.
#A voter cannot prove how they voted.
#It is impossible to verify a vote.
The
protocol
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
implicitly prevents corruption of ballots.
This is because the authorities have no incentive to change the ballot since each authority has only a share of the ballot and has no knowledge how changing this share will affect the outcome.
Vulnerabilities
*The voter cannot be certain that their vote has been recorded correctly.
*The authorities cannot be sure the votes were legal and equal, for example the voter can choose a value that is not a valid option (i.e. not in ) such as −20, 50, which will tilt the results in their favor.
See also
*
End-to-end auditable voting systems
End-to-end auditable or end-to-end voter verifiable (E2E) systems are voting systems with stringent integrity properties and strong tamper resistance. E2E systems often employ cryptographic methods to craft receipts that allow voters to verify t ...
*
Electronic voting
Electronic voting (also known as e-voting) is voting that uses electronic means to either aid or take care of casting and counting ballots.
Depending on the particular implementation, e-voting may use standalone '' electronic voting machines'' ...
*
Certification of voting machines
Various governments require a certification of voting machines.
In the United States there is only a voluntary federal certification for voting machines and each state has ultimate jurisdiction over certification, though most states currently re ...
*
Techniques of potential election fraud through physical tampering with voting machines
*
Preventing Election fraud: Testing and certification of electronic voting
*
Vote counting system
Vote counting is the process of counting votes in an election. It can be done manually or by machines. In the United States, the compilation of election returns and validation of the outcome that forms the basis of the official results is call ...
*
E-democracy
E-democracy (a combination of the words electronic and democracy), also known as digital democracy or Internet democracy, is the use of information and communication technology (ICT) in political and governance processes. The term is be ...
*
Secure multi-party computation
Secure multi-party computation (also known as secure computation, multi-party computation (MPC) or privacy-preserving computation) is a subfield of cryptography with the goal of creating methods for parties to jointly compute a function over their ...
*
Mental poker
Mental poker is the common name for a set of cryptographic problems that concerns playing a fair game over distance without the need for a trusted third party. The term is also applied to the theories surrounding these problems and their possible s ...
References
{{DEFAULTSORT:Homomorphic Secret Sharing
Functions and mappings
Abstract algebra