Our internet voting system has solved this problem.
The votes secrecy is guaranteed by allowing citizens to vote multiple times and only the last vote is counted. No-one is obligated to vote on the internet and a paper system works in parallel. If you cast your vote on the internet AND with a paper ballot as well, the paper ballot is counted.
This guarantees no-one can be forced to vote, as they can simply vote again in the 7 day e-voting period.
Each vote is encrypted and signed, but in two different containers. The goverment public key is used to encrypt the vote. That container is then wrapped into another that is signed with the citizens private key. Before counting, the double-casts are filtered out and the votes are anonymized by removing the signed wrapper.
If you can vote online, and on paper, and the paper one always trumps the electronic one, then a fraudulent party would just fake the paper ballots and send them in for everyone in the country. Everyone who depended on the electronic vote would then no longer control their vote.
Our internet voting system has solved this problem. The votes secrecy is guaranteed by allowing citizens to vote multiple times and only the last vote is counted. No-one is obligated to vote on the internet and a paper system works in parallel. If you cast your vote on the internet AND with a paper ballot as well, the paper ballot is counted.
This guarantees no-one can be forced to vote, as they can simply vote again in the 7 day e-voting period.
Each vote is encrypted and signed, but in two different containers. The goverment public key is used to encrypt the vote. That container is then wrapped into another that is signed with the citizens private key. Before counting, the double-casts are filtered out and the votes are anonymized by removing the signed wrapper.
And, it's open source: https://github.com/vvk-ehk/evalimine