7.6 KiB
System Overview
The goal is to create a platform where citizens can anonymously submit opinions on legislative matters, with those opinions influencing lawmakers, while guaranteeing transparency and security. Zero-Knowledge Proofs, a cryptographic tool, enable participants to prove eligibility and uniqueness without revealing their identities. The system integrates digital credentials, blind signatures, and ZKPs, optionally leveraging a blockchain for decentralization and auditability.
Key Features
- Anonymity: Participants’ identities remain hidden, even from the system and authorities.
- Eligibility: Only authorized individuals (e.g., citizens) can participate.
- Uniqueness: Each participant submits only one opinion per legislative matter.
- Transparency: All submissions and proofs are publicly verifiable.
- Security: Cryptographic methods prevent fraud, manipulation, or duplicate submissions.
System Components
- Participants: Individuals with a digital credential (e.g., issued by a trusted authority based on citizenship).
- Trusted Authority: Issues credentials and blind signatures to ensure eligibility.
- Public Ledger (Optional Blockchain): Stores commitments, submissions, and proofs for transparency and verification.
- Legislative Matters: Each matter (e.g., a proposed law) has a unique identifier, called a “matter ID.”
How the System Works
The system operates in two main phases: Setup and Opinion Submission.
1. Setup Phase
For each legislative matter identified by a unique matter ID:
- Credential Issuance: Each participant has a digital credential from a trusted authority, proving eligibility (e.g., citizenship). This credential is private and tied to their identity initially but anonymized in later steps.
- Token and Commitment Generation:
- For each matter, the participant generates:
- A unique token (a random value specific to that matter).
- A secret key (a private value known only to them).
- They create a commitment—a cryptographic hash of the token and secret key combined with the matter ID. This commitment hides the token and key but can later be proven to match them.
- For each matter, the participant generates:
- Blind Signature Request:
- The participant sends the commitment and matter ID to the authority, with the token portion blinded (using a blind signature scheme like Chaum’s blind signatures).
- The authority verifies that this credential hasn’t requested a signature for this matter ID before, then issues a partially blind signature. The signature includes the matter ID (visible to the authority) and the blinded commitment.
- The participant unblinds the signature, obtaining a valid signature on their commitment tied to the matter ID.
- Publishing Commitments:
- The participant publishes the commitment and its blind signature to a public ledger (e.g., a blockchain or database).
- The authority ensures each credential gets only one signature per matter, limiting each participant to one commitment per matter.
At the end of the setup phase, there’s a public list of commitments for each matter, each with a valid blind signature, ensuring only eligible participants contribute exactly one commitment.
2. Opinion Submission Phase
When a participant wants to submit an opinion on a legislative matter:
- Submission Content:
- The participant reveals their token for that matter.
- They provide their opinion (e.g., “yes,” “no,” or a short statement).
- They generate a Zero-Knowledge Proof (ZKP) that proves:
- There exists a commitment in the public list for this matter ID where the revealed token matches the committed token.
- They know the secret key associated with that commitment.
- Verification:
- The system (or a smart contract on a blockchain) verifies:
- The commitment referenced by the ZKP has a valid blind signature from the authority.
- The ZKP is correct, confirming the token’s legitimacy and the participant’s knowledge of the secret key.
- The token hasn’t been used before for this matter (checked against a list of used tokens).
- The system (or a smart contract on a blockchain) verifies:
- Recording:
- If valid, the system accepts the opinion, records it publicly with the token and ZKP, and marks the token as used.
Ensuring Core Requirements
-
Anonymity:
- Blind signatures ensure the authority doesn’t link commitments to participants.
- The ZKP hides which commitment corresponds to the submission, mixing it among all participants’ commitments.
- Tokens are unique per matter and unlinkable across matters, preventing profiling.
-
Eligibility:
- Only participants with a valid credential can obtain blind signatures and publish commitments.
-
Uniqueness:
- The authority issues one blind signature per credential per matter, limiting each participant to one commitment.
- The ZKP and token check ensure each commitment submits only one opinion per matter.
-
Transparency:
- All commitments, signatures, opinions, tokens, and ZKPs are public. Anyone can verify that submissions correspond to valid commitments and that no token is reused.
-
Security:
- ZKPs require knowledge of the secret key, preventing token theft.
- Blind signatures and commitments prevent the authority or outsiders from manipulating the process.
- A blockchain (if used) ensures tamper-proof records.
Optional Blockchain Integration
For enhanced transparency and decentralization:
- Commitments: Stored as transactions on the blockchain during setup.
- Submissions: Each opinion submission is a transaction, verified by a smart contract that checks the ZKP and token uniqueness.
- Auditability: The blockchain provides a tamper-proof log, allowing anyone to audit the process without trusting a central entity.
This reduces reliance on a single authority, though the authority still issues initial credentials and signatures. A fully decentralized identity system could further minimize this dependency.
Scalability and Efficiency
- Large Populations: For millions of participants, the system manages large lists of commitments and used tokens. Modern databases or blockchains (e.g., Ethereum with rollups) can handle this scale.
- Efficient ZKPs: Using zk-SNARKs or zk-STARKs, proofs are small (e.g., a few hundred bytes) and verification is fast (e.g., milliseconds), making the system practical.
- Setup Overhead: Participants generate commitments per matter, which could be streamlined with reusable credentials, but the current design prioritizes security and simplicity.
Example Workflow
-
Setup for Matter “Law123”:
- Alice, with credential C1, generates token T1 and secret key S1, commits to them as Com1 = Hash(T1, S1, “Law123”).
- She gets a blind signature Sig1 from the authority on Com1 for “Law123” and publishes (Com1, Sig1).
-
Submission:
- Alice submits her opinion “Yes” on “Law123” with:
- Token T1.
- ZKP proving T1 matches a commitment (e.g., Com1) and she knows S1.
- The system verifies Sig1, the ZKP, and that T1 is unused, then records “Yes” with T1.
- Alice submits her opinion “Yes” on “Law123” with:
-
Public Check:
- Anyone sees (Com1, Sig1) in the list, verifies Sig1, and confirms T1’s submission is valid and unique.
Conclusion
This system leverages ZKPs, blind signatures, and a public ledger to crowdsource public opinion securely and transparently. It ensures anonymity and fairness while allowing lawmakers to trust the authenticity of the input, making it a robust tool for democratic participation in legislation.