An efficient blockchain-based fully anonymous self-counting voting method
By using group signatures and zero-knowledge proof on the blockchain, and improving computing efficiency with distributed encryption algorithms, the problems of insufficient anonymity, legality and low computing efficiency in the existing technology are solved, and an efficient and secure voting process is achieved.
Patent Information
- Application Number
- CN202310183118.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-03-01
- Publication Date
- 2025-04-08
- Estimated Expiration
- 2043-03-01
AI Technical Summary
The existing blockchain-based electronic voting protocols have problems such as insufficient anonymity, legality, failure to support abstention, and inefficient computing efficiency.
Group signatures and zero-knowledge proofs are used to ensure the anonymity and legitimacy of voters, and the signature algorithm is designed through distributed ElGamal encryption algorithm and Paillier encryption algorithm to improve the computing efficiency of voting results.
The complete anonymity and legality of voters is achieved, allowing abstention from arbitrage by arbitrary voters, and improving the calculation efficiency of the voting results.
Smart Images

Figure CN116318720B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the technical field of information security and cryptography, and in particular to an efficient blockchain-based completely anonymous self-counting voting method. Background Art
[0002] Electronic voting is an indispensable part of modern society. With the emergence of blockchain technology, blockchain-based electronic voting protocols have been widely proposed. In the existing blockchain-based electronic voting protocols, the decentralized and unalterable characteristics of blockchain are used to achieve the openness and transparency of the voting process. However, there are still many problems that have not been solved in the existing blockchain-based electronic voting protocols: first, the anonymity problem, because voting can easily be associated with a specific voter; second, the legitimacy problem, unauthorized users can also participate in voting without being discovered; third, it does not support abstentions by any voter. One of the cases is that if some voters abstain, the voting results cannot be calculated. Another case is that voters are not allowed to abstain, and even if they abstain, they must cast a blank ballot, which is unreasonable in practical applications; finally, the existing blockchain-based self-counting voting protocols are not efficient enough for practical applications, because in these protocols, discrete logarithms need to be cracked from the voting aggregate value to obtain the voting results, but solving the discrete logarithm problem is difficult and requires a lot of calculations.
[0003] Therefore, in order to solve the above problems, the present invention provides an efficient blockchain-based fully anonymous self-counting voting method, which achieves complete anonymity and legitimacy, and allows any voter to abstain and efficiently calculate the voting results. Summary of the invention
[0004] The present invention provides an efficient blockchain-based completely anonymous self-counting voting method. In the protocol, registered legal users form a voting group, and by using group signatures and zero-knowledge proofs, voters can safely distribute anonymous and unlinkable electronic ballots, thereby ensuring complete anonymity and legitimacy. At the same time, by combining the distributed ElGamal encryption algorithm and the Paillier encryption algorithm, a novel signcryption algorithm is designed, which improves the calculation efficiency of the voting results while protecting the privacy of the vote, and can correctly calculate the voting results even if some users abstain.
[0005] The present invention is achieved through the following technical solutions:
[0006] A. Voting initialization: The network initializes voting parameters and makes them public on the blockchain;
[0007] B. User registration: Users participating in the voting register their identities with the server and obtain authentication information. Legitimate users generate their own public and private key pairs and call the group signature algorithm to sign the public key.
[0008] C. Voting: Based on the selected voting content, the user generates its own encrypted ballot and a zero-knowledge proof to prove that the encrypted ballot is in the correct form;
[0009] D. Counting votes: After the voting is over, any user can verify the ballots and calculate the voting results. If all users submit legal ballots, the voting results are calculated; if some users abstain or some ballots are in the wrong format, the voting results are calculated from the legal ballots.
[0010] Specifically, step A includes: given the security parameter k, the server performs initialization work, generates public parameters params = (N, g, G, n), group public key gpk and its own key gmsk. Where N = Pq (p and q are two large prime numbers of equal length), g∈G is the generator of group G with order p, and n is the number of users participating in the vote. The server stores the public parameters params and group public key gpk on the blockchain.
[0011] Specifically, step B includes:
[0012] B1. User registration to obtain authentication information: The user submits a registration request, identity ID and other information to the server. After verifying that the user is a qualified user and that it is the first time to apply for registration, the server generates the corresponding authentication information and sends it to the user V through a secure channel. i , which includes the group private key gsk i and a secret parameter λ.
[0013] B2. User key generation: User end V i Randomly select x i ∈z p * as the private key and calculate the public key in The result of the operation is an element in the group G.
[0014] B3. User signed public key: User V i Generate public key y i The group signature σ i . And the public key y i and signature σ i Stored on the blockchain.
[0015] Specifically, step C includes:
[0016] C1. User side V i Select voting contenti ∈{0, 1} and calculate the encrypted vote in r i ∈Z p * is a random value, Z p * is a set of integers, Indicates w i x i Second power, Represents r i Nth power, All are components of encrypted ballots;
[0017] C2. User side V i Generate a zero-knowledge proof ZKP i To prove B i is the correct form. i Encrypted ballot B i and Zero Knowledge Proof ZKP i Publish them to the blockchain together.
[0018] Specifically, step D includes:
[0019] D1. Verify whether the vote is valid: Through each user V i The public key y i and group signature σ i , any user end can verify the group signature σ by calling the group signature verification algorithm i To authenticate V i The legitimacy of the vote is then verified by the zero-knowledge proof ZKP i Verification is performed to ensure that the ballot is in the correct form. Only after passing both verifications can the ballot be considered valid;
[0020] D2. Calculate voting results: If all users submit the correct form of ballots, any user can calculate all votes Then the final voting result is obtained through the Paillier algorithm The function
[0021] D3. Calculate legal votes: If some users abstain or some ballots are in the wrong format, assume that D (|D| < n) is the set of users who submitted valid votes during the voting phase. In order to calculate the final result of the vote, each user terminal V in D i Calculate and publish The final voting results are in
[0022] Compared with the prior art, the present invention has the following beneficial effects:
[0023] (1) The present invention introduces blockchain as a "bulletin board" for the voting process. At the same time, each user's vote is recorded in the blockchain network, which can be checked at any time and cannot be tampered with, thereby improving the fairness and security of voting.
[0024] (2) The present invention uses group signatures and zero-knowledge proofs to ensure the validity of the ballot and the unlinkability between the user identity and the ballot (i.e., complete anonymity).
[0025] (3) The present invention uses modified E1Gamal and Paillier algorithms to encrypt votes. On the one hand, the homomorphism of E1Gamal is used to implement self-counting. Even if some users abstain or cast invalid votes, the voting results can still be directly calculated by each user without restarting the protocol. On the other hand, each user can directly calculate the voting results using the Paillier algorithm instead of calculating the results by cracking the discrete logarithm from the aggregate value, which greatly reduces the computational overhead.
[0026] (4) The present invention does not require commitment and recovery phases to calculate voting results. It is simpler and more efficient than the existing blockchain-based self-counting protocol and is very practical in real-world scenarios. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] Figure 1 Schematic diagram of the system model of the present invention.
[0028] Figure 2 It is a schematic diagram of the process of the present invention.
[0029] Figure 3 This is a schematic diagram of the zero-knowledge proof process of the ballot of the present invention. DETAILED DESCRIPTION
[0030] The technical solution of the present invention is further described in detail below in conjunction with the accompanying drawings. The following embodiments or drawings are used to illustrate the present invention, but are not used to limit the scope of the present invention.
[0031] like Figure 1 As shown, there are four main entities in this embodiment: server, candidate, voter and blockchain. Their specific functions are described as follows:
[0032] Server: It is an entity whose main functions include generating and uploading public parameters in voting, reviewing the identity of voters and issuing authentication information.
[0033] Candidate: A qualified candidate who is able to participate in the voting for election.
[0034] Voters: A set of qualified users who are granted voting rights in an election and need to vote before the deadline, otherwise they will be regarded as abstentions and use V i (1≤i≤n) represents the voters.
[0035] Blockchain: Blockchain serves as a “bulletin board” for the voting process to publish voting records.
[0036] The process of the blockchain-based fully anonymous self-counting voting protocol of the present invention is as follows: Figure 2 As shown, the detailed workflow is:
[0037] Step A: Voting initialization:
[0038] Given the security parameter k, the server performs initialization work and generates public parameters params = (N, g, G, n), group public key gpk and its own key gmsk. Where N = pq (p and g are two large prime numbers of equal length), g∈G is the generator of group G of order p, and n is the number of users participating in the vote. The server stores the public parameters params and group public key gpk on the blockchain.
[0039] Step B: User registration:
[0040] B1. User registration and obtaining authentication information: The user submits a registration request, identity ID and other information to the server. After verifying that the user is a qualified user and that it is the first time to apply for registration, the server generates the corresponding authentication information and sends it to the user V through a secure channel. i , which includes the group private key gsk i and secret parameter λ;
[0041] B2. User key generation: User end V i Randomly select x i ∈z p * as the private key, and calculate As the public key, where is an element of the group G.
[0042] B3. User signed public key: User V i Generate public key y i The group signature σ i . And the public key y i and signature σ i Stored on the blockchain.
[0043] Step C: The user generates an encrypted ballot and the corresponding zero-knowledge proof:
[0044] C1. User side V i Select voting content i∈{0, 1} and calculate the encrypted vote in r i ∈Z p * is a random value, It is a component of encrypted ballots;
[0045] C2. User side V i Generate a zero-knowledge proof ZKP i To prove the encrypted vote is the correct form, that is, to prove that v i The value is 0 or 1, ZKP i Shape (like Figure 3 shown);
[0046] C3. User side V i Encrypted ballot B i and Zero Knowledge Proof ZKP i Publish them to the blockchain together.
[0047] Step D verifies the ballots and calculates the voting results:
[0048] D1. Verify whether the vote is valid: Through each user V i The public key y i and group signature σ i , any user end can verify the group signature σ by calling the group signature verification algorithm i To authenticate V i The legitimacy of the vote is then verified by the zero-knowledge proof ZKP i Verification is performed to ensure that the ballot is in the correct form. Only after passing both verifications can the ballot be considered valid;
[0049] D2. Calculate voting results: If all users submit the correct form of ballots, any user can calculate Then the final voting result is obtained through the Paillier algorithm The function
[0050] D3. Calculate legal votes: If some users abstain or some ballots are in the wrong format, assume that D (|D| < n) is the set of users who submitted valid votes during the voting phase. In order to calculate the final result of the vote, each user terminal V in D i Calculate and expose auxiliary values The final voting results are L -1 (g λ ),in
Claims
1. An efficient blockchain-based fully anonymous self-counting voting method, characterized in that: The steps include: A. Voting initialization: The network initializes voting parameters and makes them public on the blockchain; B. User registration: Users participating in the voting register their identities with the server and obtain authentication information. Legitimate users generate their own public and private key pairs and call the group signature algorithm to sign the public key. C. Voting: Based on the selected voting content, the user generates its own encrypted ballot and a zero-knowledge proof to prove that the encrypted ballot is in the correct form; D. Counting votes: After the voting is over, any user can verify the ballots and calculate the voting results. If all users submit legal ballots, the voting results are calculated; if some users abstain or some ballots are in the wrong format, the voting results are calculated from the legal ballots; Step A is as follows: Given security parameters k , the server performs initialization work and generates public parameters , group public key gpk And your own key gmsk ,in N = pq , p and q are two large prime numbers of equal length, It is p Group G The generator of n is the number of users who participated in the vote. The server will use the public parameter params and group public key gpk Stored on the blockchain; Step B is specifically as follows: B1. User registration to obtain authentication information: The user submits a registration request and identity ID information to the server. After verifying that the user is a qualified user and that it is the first time to apply for registration, the server generates the corresponding authentication information and sends it to the user through a secure channel. , which includes the group private key and secret parameters λ ; B2. User key generation: User end Random Selection ∈ as the private key and calculate the public key ,in It's a group G Elements in B3. User signed public key: User end Generate Public Key Group signature , and the public key and signature Stored on the blockchain; Step C is specifically as follows: C1. User side Choose voting content And calculate the encrypted votes ,in , ∈ is a random value, It is a component of encrypted ballots; C2. User side Generate a zero-knowledge proof To prove is the correct form, the client will encrypt the ballot and zero-knowledge proof Publish them to the blockchain together; Step D is specifically as follows: D1. Verify whether the vote is valid: For each user The public key and group signature , any user end verifies the group signature by calling the group signature verification algorithm Come to certify The legitimacy of the votes is then verified by the zero-knowledge proof Verification is carried out to ensure that the ballot is in the correct form. Only after passing both verifications can the ballot be considered valid; D2. Calculate voting results: If all users submit votes in the correct form, any user can calculate , and then the final voting result is obtained through the Paillier algorithm , where the function ; D3. Counting legal votes: If some users abstain or some votes are in the wrong format, D ( ) is the set of users who submitted valid votes during the voting phase. In order to calculate the final result of the voting, D Each client in Calculate and expose auxiliary values The final voting result is ,in .
Citation Information
Patent Citations
Encrypted electronic voting system and method based on alliance block chain technology
CN110245183A
Electronic voting method for encrypting vote information of voters
CN111612961A