Question: Assume a university want to elect the student council. This was done via paper ballot and there is a need to reach more students for voting, so electronic voting is on the table.

While researching existing solutions I came across Helios: [helios voting](https://vote.heliosvoting.org/) and [agora voting](http://agoravoting.org/)

Both seem to implement somewhat peer-reviewed schemes to do a online vote, but my impression is that the devil might hide in the details. 

Has anyone here experience using these schemes? 
We plan to implement such an online voting scheme and would authenticate the voters via the university LDAP. Which cryptographic obstacles or security problems could we face?

Answer: 
You shouldn't use advanced crypto nor specialist algorithms here else you will be seriously over engineering and actually increasing the risks you face not reducing them. Seasoned security engineers would strongly recommend the "[KISS principle](https://en.m.wikipedia.org/wiki/KISS_principle)". It's better to do something simple with a low error rate than attempt something complex and maybe have a bug whereby there is a huge flaw in your approach that you miss and an attacker finds. With a real world public election the eligible voters are a class of citizens; registering them to vote and giving them secure credentials is hard. You know the exact population of eligible voters and they are already registered on and using the college network where they have set their own passwords already. So you have none of the complications of a real election and you have only a basic authentication problem; is the person casting the vote authenticated as a college student. This problem should already been solved by your college. 

The most important outcome is confidence in the election results with maximum participation. That's not the same success criteria as a "perfect vote count". Let's say you use some complex techniques and some noisy looser of the election declares that the complex algorithm was badly implemented and led to a flawed outcome when infact it all worked perfectly: you will have a world of pain and a likely outcome is that you are fired and the election is rerun as a paper election. That may or may not vindicate you as the publicity around the claims that the original election was unfair may boost the vote of the candidate who claimed the original vote was bad. That's a form of social engineering attack. She can claim "victory" no matter what the actual facts of the matter and increase her vote share. So it is better that you do something "low tech" that people have confidence was properly implemented the do anything complex and novel. 

Here is a list of ways to solve your problem:

1. If your college has a way that sudents can login and submit course work just have them login and submit the name of the candidate they are voting for; and you are done. Counting the votes is a bit more complex as they may be bad submissions but you can publish all the submissions anonymised and anyone can validate them or recount them and the outcome of the election won't be in dispute.
2. If your college has a system were users can login and answer multiple choice questions then use that.
3. If your college systems use a single sign-on API such as SAML you can use that to secure your own voting web page; students authenticate to the college system with their college password and your web page is secured via a standard authentication API.
4. If all students have a college email address create a unique random ID per student and email them a link to vote that uses their unique ID.p in the link. Ensure that page at the link only allows one vote to be cast per student.

Sure some students will have obtained the network password of other students (such is life) and can steal a few votes. Yet if a noisy looser says "the vote was stolen" when you used the colleges authentication system they are challenging the integrity of the college authentication systems and ability to stop cheating etc so the college will robustly investigate and defend the outcome. The cheater risks being expelled from college for subverting the college authentication systems so that's a deterrent; but they may think it's a safe game to attack a custom system you built. If caught they can claim that they are a hero white hat hacker improving the world by testing your system and that they always intended to tell the world that they rigged the vote after the results were declared giving you longer to discover their playful attack.
For starters: you should look up posts and papers related to "[LDAP Security](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Further_reading)" using your favorite search engine.

I will say I like the solution that crypto has come up with in the form of not being able to spend the same BTC twice. Something involving that and user verification would be ideal for online voting although those two are very different technologies. Luckily math has the answer. 

Now, whether that will be a sustainable solution without any security issues is probably not realistic but you bring up an important point and something that needs attention not just in your domain but in other domains as well. Maybe "quantum" DNA verification and multifactor authentication…