Questions on code structure and designing a sidebar feature

30 views
Skip to first unread message

Harry Tian

unread,
Mar 8, 2021, 8:22:01 PM3/8/21
to Helios Voting
Hello,

We are a group of students working on a project that examines and tests attacks against electronic voting machines through modifying Helios. We have some questions regarding the code.

Firstly, why are there separate encryption/decryption/verification algorithms for python (in helios/crypto) and javascript (in heliosbooth/js/jscrypto)? Where does the python encryption functions get used?

We were also interested in implementing a descriptive runtime output sidebar feature in Helios. The sidebar will comprehensively report to the user what Helios is doing at each step of execution, such as election fingerprint verification, ballot encryption, auditing, etc. Where/which files should we look to modify for this? Is there a main javascript file containing all the event functions for Helios?

Thank you!

Best,
Harry. T

Warwick McNaughton

unread,
Mar 10, 2021, 12:23:51 AM3/10/21
to helios...@googlegroups.com
Hi Harry

You might be interested in a collation of academic studies of Helios which I have put together here:


This paper discusses the use of cryptography in the browser (in section 4.2):


My understanding is that the voting booth is decoupled from the server until the vote is cast and the encryption of the vote is undertaken totally in the browser using javascript rather than in the server using python.

Warwick


--
--
Helios Voting Google Group
To post: helios...@googlegroups.com
To unsubscribe: helios-votin...@googlegroups.com
More: http://groups.google.com/group/helios-voting?hl=en

---
You received this message because you are subscribed to the Google Groups "Helios Voting" group.
To unsubscribe from this group and stop receiving emails from it, send an email to helios-votin...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/helios-voting/39af1af0-0291-47cf-8d38-20dcbab2998bn%40googlegroups.com.

Ben Adida

unread,
Mar 10, 2021, 5:43:08 PM3/10/21
to Helios Voting

Hi Harry,

A couple of quick answers:

- the cryptography in JavaScript is used in the browser, while in Python it's used on the server. The server-side functions are needed for homomorphic tabulation, decryption, and proofs. There is also a fallback for super old web clients where the ballot encryption is done on the server, but I don't think there are any remaining browsers that need this.

- there isn't one file that contains all of the events in Helios. Helios is written in 12+ year old JavaScript, so no great framework to manage the client-side app back then. At some point, it will be nice to build a more modern client, of course.

-Ben

--
Reply all
Reply to author
Forward
0 new messages