Cryptographic end-to-end voting system