Hi All,
I run a political site that contains a voting element. It's fine as it stands but would be unacceptable as an 'official' site.
I am engaged in a project with a friend, to design a constitution for an imagined Direct Democracy of 10,000 and a way of implementing the governance of this community, that would be web-based.

One aspect of this would be the voting system, which needs to be secure, secret and ensure one-man-one-vote.

Does anybody have any ideas of the methodology for any part of this please? I am not asking for examples of code here, rateher, the way to go about things.

Thanks in advance.

Taffd

Dani AI

Generated

This thread is about building a secret, one-person‑one‑vote web system for a 10,000‑person community. is right to separate two goals: reliably proving who is eligible, and recording/counting ballots without linking them back to voters. ’s boolean “has voted” approach enforces one vote per account but does not protect ballot secrecy from admins or DB operators.

Useful, well-studied building blocks are: blind signatures or anonymous credentials to issue single‑use voting tokens (Blind signature); mixnets to shuffle and break linkability between token issuance and submitted ballots (Mix network); and homomorphic encryption or threshold decryption so tallies can be computed without ever exposing individual votes (Homomorphic encryption). Many real systems combine these techniques rather than relying on one alone.

A practical high‑level workflow: authenticate voters on an identity service; issue a short‑lived anonymous voting credential (blind‑signed or credentialed); voters create and submit client‑side encrypted ballots to a separate ballot server; the ballot server either homomorphically aggregates ciphertexts or runs a mixnet and then uses threshold decryption to produce a tally; finally publish encrypted ballots plus cryptographic proofs so anyone can verify the count without learning who voted what. Use threshold key shares so no single operator can decrypt ballots.

Caveats and operational notes: e‑voting is hard—do not roll your own crypto. Prefer audited, open-source systems or academic designs and run independent audits and pen tests. Consider usability, coercion risks, key management, server separation, and legal requirements before any “official” deployment; a practical open reference is Helios (Helios).

Recommended Answers

All 3 Replies

As it is a website where user have to have loging, you should just create instance of the table with users names, add extra column that will record if the user casted vote(Pre-request user have to log into website). This should do the trick

Peter_budo,
You've slightly missed the point.
I already have what you describe. One problem with the system is that I can tell who voted which way.

At an 'official' site, a vote would need to remain secret.

The computer needs to count the votes, 'for' or 'against' and record who votes but the vote itself should be secret to anyone who can access the database.

I was wondering if this was possible.

Nah, you missed on this one. The column which I mentioned to keep record of voting is just boolean not persons vote. So each members voting status on start of new vote will be FALSE, as they strat voting you will first check if person voted. If TRUE display message "You already voted can't do it again" (or similar), else members voting status FALSE then increment vote count for given vote and change members status to TRUE plus acknowledge message "Your vote been added"
Then in second table just keep actual count for each voting option.

Is it clear now?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.