<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR503</article-id>
<article-id pub-id-type="doi">10.15388/22-INFOR503</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>SUVS: Secure Unencrypted Voting Scheme</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-7580-2532</contrib-id>
<name><surname>Larriba</surname><given-names>Antonio M.</given-names></name><email xlink:href="anlarflo@dsic.upv.es">anlarflo@dsic.upv.es</email><xref ref-type="aff" rid="j_infor503_aff_001"/><bio>
<p><bold>A.M. Larriba</bold> is a pre-doctoral researcher at the Universitat Politècnica de València (Spain), where he obtained his computer science degree in 2016 and a master’s degree in artificial intelligence in 2017. Currently, he is working on obtaining his PhD in computer science. He was awarded with a governmental grant for this purpose. His topics of interest include cryptography, artificial intelligence, and blockchain.</p></bio>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-3633-3862</contrib-id>
<name><surname>López</surname><given-names>Damián</given-names></name><email xlink:href="dlopez@dsic.upv.es">dlopez@dsic.upv.es</email><xref ref-type="aff" rid="j_infor503_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>D.López</bold> is an associate professor at the Universitat Politècnica de València (Spain), where he obtained his PhD in computer science in 2003. Currently, he is an accademic coordinator of the Computation Section at the Departamento de Sistemas Informáticos y Computación, and a member of the Valencian Research Institute for Artificial Intelligence (VRAIN). His research interests include cryptography, formal languages, and grammatical inference.</p></bio>
</contrib>
<aff id="j_infor503_aff_001">VRAIN – Valencian Research Institute for Artificial Intelligence, <institution>Universitat Politècnica de València</institution>, <country>Spain</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2022</year></pub-date><pub-date pub-type="epub"><day>7</day><month>12</month><year>2022</year></pub-date><volume>33</volume><issue>4</issue><fpage>749</fpage><lpage>769</lpage><history><date date-type="received"><month>12</month><year>2021</year></date><date date-type="accepted"><month>11</month><year>2022</year></date></history>
<permissions><copyright-statement>© 2022 Vilnius University</copyright-statement><copyright-year>2022</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>In this paper, we propose a light-weight electronic voting protocol. The approach used by our protocol to conceal the ballots does not imply encryption, and guarantees the privacy of the direction of the vote unless all the contestants (parties) agree to do so. Our method is based on the division of the ballot into different pieces of information, which separately reveal no information at all, and that can be latter aggregated to recover the original vote. We show that, despite its simplicity, this scheme is powerful, it does not sacrifice any of the security properties demanded in a formal electronic voting protocol, and, furthermore, even in post-quantum scenarios, neither the casted votes can be tampered with, nor the identity of any elector can be linked with the direction of her vote.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>electronic vote</kwd>
<kwd>blind signatures</kwd>
<kwd>interpolation</kwd>
<kwd>perfect secrecy</kwd>
<kwd>post-quantum cryptography</kwd>
</kwd-group>
<funding-group><funding-statement>Results related to Spanish Patent Application number P202131209.</funding-statement></funding-group>
</article-meta>
</front>
<body>
<sec id="j_infor503_s_001">
<label>1</label>
<title>Introduction</title>
<p>Electronic voting introduces a new set of cryptographic properties, to provide confidence to the electors, such as: universal verifiablity, accuracy or mathematically ensured privacy, that are unavailable to traditional voting. It also enables remote voting and multi-device access. Nevertheless, e-voting still fails to gain the trust from the electors and to incentive participation. Most people are reluctant to trust a critical part of democracy to a system they do not fully understand.<xref ref-type="fn" rid="j_infor503_fn_001">1</xref><fn id="j_infor503_fn_001"><label><sup>1</sup></label>
<p>Please note that as in many works in the literature and for the sake of clarity, we employ she/her when referring to the elector, and he/his when talking about parties and authorities.</p></fn></p>
<p>We introduce a voting scheme that makes no use of cryptography without compromising security. Inspired by the work by Shamir (<xref ref-type="bibr" rid="j_infor503_ref_016">1979</xref>), we are able to conceal the vote as fragmented pieces of information. These pieces do not reveal any information about the original vote separately. However, when the pieces are treated as a whole, the vote can be recovered.</p>
<p>Our goal is to create a new, simple, fast and lightweight voting scheme able to engage technology averse and reluctant sectors. The contributions of this paper can be summarized as follows: the voting scheme does not depend on encryption while guaranteeing security; the proposal takes into account that the ballot can be divided into pieces in such a way that any individual pieces does not reveal any vote information; the proposal allows the decentralization of the responsibility of processing the ballots. Overall, our proposal opens the possibility to less conventional electronic voting schemes, looking for other approaches to electronic elections which would reduce reluctance to novice profiles.</p>
<p>The rest of the paper is structured as follows: Section <xref rid="j_infor503_s_002">2</xref> reviews the most relevant literature in electronic voting, Section <xref rid="j_infor503_s_011">4</xref> introduces and fully details our voting protocol, Section <xref rid="j_infor503_s_017">5</xref> analyses the time-complexity of our approach. In Section <xref rid="j_infor503_s_018">6</xref>, we review and prove the security properties of our developed scheme. Finally, Section <xref rid="j_infor503_s_026">7</xref> reviews the contributions of our work and concludes the article.</p>
</sec>
<sec id="j_infor503_s_002">
<label>2</label>
<title>Related Work</title>
<p>In this section, we review the most relevant and similar works in the literature and study how they compare with our presented scheme. Electronic voting is a well-established area of research and many approaches have tackled the problem from different angles.</p>
<p>The first scheme we cite is the Three Ballot voting protocol by Rivest (<xref ref-type="bibr" rid="j_infor503_ref_014">2006</xref>). Although this protocol does not consider digital ballots nor remote casting of them, Rivest’s proposal conceals the electors’ votes without the need of any cryptography, and, therefore, it is related to our approach that neither does so.</p>
<p>Rivest proposes the election to be based on paper ballots. These ballots are formed by three sections which the elector fills according to some rules to show her approval, or rejection, of some candidates. When the ballot is correctly filled, its three sections are separated and casted independently. The elector gets a copy of one of these sections as receipt, to ensure all the votes are counted on the final tally. However, the receipt cannot convince anyone of the direction of the vote. This protocol is extended in Rivest and Smith (<xref ref-type="bibr" rid="j_infor503_ref_015">2007</xref>) in order to make it compatible with any kind of election (e.g.: Borda, Ranking, or Condorcet). Unfortunately, both approaches suffer from the so called “Thee Pattern Attack”, where a coercer may buy or influence votes by requiring the electors to fill the ballots in certain anomalous patterns. Later on, the attacker can check for these patterns on the public bulletin that contains the final tally. This attack does not succeed if the ballot is short, since each pattern is likely to occur many times. However, this short ballot assumption restricts the applicable scenarios for these protocols.</p>
<p>Despite this drawback, these two schemes present simple yet powerful voting protocols. They demonstrate that it is possible to ensure voter’s privacy and vote integrity without encrypting the vote. Similarly to Rivest’s protocol, we deconstruct the ballot in several shares that reveal no information until they are all assembled. However, our proposal allows for a complete electronic voting protocol that is compatible with remote voting and lacks the mentioned weakness that would allow a coercer to know the direction of an elector’s vote.</p>
<p>Rivest’s way of concealing the ballot has not been used outside his proposals. Usually the approach has been electronic and heavily based on cryptography. We now review recent solutions to electronic voting considering the techniques used.</p>
<sec id="j_infor503_s_003">
<label>2.1</label>
<title>Blind Signatures</title>
<p>Blind signatures were proposed by Chaum (<xref ref-type="bibr" rid="j_infor503_ref_003">1982</xref>), where he presents a method for signing a masked message that cannot be linked to the original content.</p>
<p>In Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_011">2009</xref>), Li et al. introduce a voting system that employs blind signatures to certify the ballot from the multiple authorities involved. The elector obtains a blank ballot from the authentication centre and proceeds to use blind signatures to certify the ballot. Then, the elector removes the blinding factor and the certified ballot is encrypted and sent to a tallying authority. The encryption is used to ensure that the result of the election is kept private until the final tallying. Finally, when the election process finishes, the certification authority reveals the secret key and the tallying authority decrypts, counts and records the votes.</p>
<p>In Nguyen and Dang (<xref ref-type="bibr" rid="j_infor503_ref_012">2013</xref>) the authors present another scheme that uses blind signatures for ballot certification and dynamic ballots to ensure elector’s privacy. Electors register using their personal identification to obtain a digital certificate. Then, to get the signature from the privacy authority, the elector hides his unique id through blind signatures, and sends it together with the serial number of the certificate. To avoid man in the middle attacks, they employ triple DES to encrypt sensible communications. Once the user gets the signature that entitles him to vote, he crafts a dynamic ballot (Cetinkaya and Doganaksoy, <xref ref-type="bibr" rid="j_infor503_ref_002">2006</xref>) and cast it to the ballot and casting centre. The ballot is encrypted and the elector is required to provide plain-text equivalence tests to proof that the unique identifications are valid.</p>
<p>Another protocol that also employs blind signatures to certify the ballots is described in Larriba <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_009">2020</xref>). In their work, the authors focus on the efficiency to propose a time-efficient voting scheme that only requires two authorities. In this protocol the elector builds the ballot according some fixed structure. This ballot is blindly signed by an authority that cannot reveal the direction of the vote. The signed ballot is then sent to the authority that plays the role of the polling station. Unless both authorities collude, the method holds all the desired properties.</p>
<p>Plenty of other voting schemes exploit the properties of blind signatures since they provide a flexible method for signing votes and avoiding double voting without compromising elector’s privacy (e.g.: Thi and Dang, <xref ref-type="bibr" rid="j_infor503_ref_018">2013</xref>; Aziz, <xref ref-type="bibr" rid="j_infor503_ref_001">2019</xref>; Cruz and Kaji, <xref ref-type="bibr" rid="j_infor503_ref_006">2017</xref>). Although we also use blind signatures in our scheme, unlike many of the protocols, we do not use them to hide the ballot from unauthorized access.</p>
</sec>
<sec id="j_infor503_s_004">
<label>2.2</label>
<title>Homomorphic Cryptography</title>
<p>Homomorphic cryptography allows us to operate with ciphertexts, and obtain, after decryption, the same results as we would obtain working with plain text. This allows to work with sensitive data without needing to know the actual content of the encrypted message. Indeed, blind signatures benefit from the homomorphic cryptography to achieve secure signing. However, please note that homomorphic cryptography allows for many features such as aggregation or proofs-of-inclusion. Many voting protocols employ homomorphic cryptography, usually to aggregate encrypted votes and only decrypt the final result.</p>
<p>In Cramer <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_005">1997</xref>), the author presents a voting scheme for Yes/No elections based on homomorphic properties. The votes, which are codified as 1 or −1, are encrypted using a threshold El Gamal cryptosystem (ElGamal, <xref ref-type="bibr" rid="j_infor503_ref_007">1985</xref>). Encrypted votes are then aggregated, since they can be summed as integers, and a final encrypted result is computed. At the end of the election, authorities collaborate to recover the secret key and decrypt the final result.</p>
<p>In Yang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_020">2017</xref>, <xref ref-type="bibr" rid="j_infor503_ref_021">2018</xref>), Yang et al. introduce a homomorphic voting scheme compatible with range voting. Range voting requires electors to assign a numerical score to all candidates for single seat elections. The candidate with the higher score wins. In this system, the votes are structured, and encrypted, as elements in a matrix in which rows represent candidates and columns represent the assigned score. Since votes for the same candidates are placed in the same rows of the matrix, they can be summed altogether to get the final results per candidate. At the end of the election, authorities collaborate to recover the secret key and decrypt the final matrix that agglutinates all the votes.</p>
</sec>
<sec id="j_infor503_s_005">
<label>2.3</label>
<title>Ring Signatures</title>
<p>Ring signatures are a special kind of digital signature that allow any user to sign as a member of a collective instead of an individual. The verifier can check that the user who wants to sign belongs to a given group, but cannot identify the signer among the group members.</p>
<p>Tornos <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_019">2014</xref>) propose a voting scheme that provides signer ambiguity by using ring signatures. A single registration authority is employed to handle proper identification of electors. After the identification process, electors use ring signatures to sign their valid votes privately. To prevent double-voting, they use linking tags in the ring signatures. These tags do not reveal personal information about the signer but prevent her from voting more than once using different rings of users.</p>
<p>In Chen <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_004">2008</xref>), a voting protocol with custom ring signatures is presented. They propose a ring signature scheme that can only be verified by some designated individuals. These verifiers cannot convince a third party of the integrity of a ring signature without revealing their private key. For the encryption of the vote they employ a threshold scheme in which authorities have to collaborate to recover the secret key at the end of the election. To prevent double voting, electors are required to link the vote with a commitment of their private key. This commitment does not reveal any information about the private key, but prevents malicious electors from voting multiple times. If two, or more, votes with the same commitment are detected, only the one with the latest timestamp will be considered.</p>
</sec>
<sec id="j_infor503_s_006">
<label>2.4</label>
<title>Blockchain</title>
<p>Blockchain technology provides a decentralized technology to store and share information. Multiple electronic voting schemes have used blockchain to carry out the election process since they provide a distributed public ledger than can be consulted by anyone. While blockchain is not a cryptographic scheme by itself, and all of these systems use other cryptographic primitives to achieve privacy, it is still a differentiating factor that suffices to make a distinction when studying these protocols.</p>
<p>In Yang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_022">2020</xref>), the authors propose a voting protocol for range voting that uses blockchain to structure the election process. In this scheme, each candidate receives a score (e.g.: token on the chain) from the electors and the candidate with the highest score wins the election. To preserve elector’s privacy, they employ an encryption system based on El Gamal and group-based encryption. They employ the homomorphic properties of El Gamal to compute the final tally without compromising individual electors.</p>
<p>In Gao <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_008">2019</xref>), the authors present an e-voting protocol based on blockchain technology, which also provides anti-quantum resistance properties. To achieve this, they base their method on an NP-complete problem (Niederreiter, <xref ref-type="bibr" rid="j_infor503_ref_013">1985</xref>) instead of using traditional public key cryptography. Their protocol is equipped with an audit function that allows to detect fraudulent voters while respecting their privacy.</p>
<p>In Larriba <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_010">2021</xref>), the authors propose a blockchain based scheme that introduces traditional parties inside the election process to raise confidence on the system. To protect elector’s privacy, they employ ring signatures, and to prevent double voting, they employ key images. Key images act as receipts of ring signatures that prevent the malicious elector from creating multiple signatures, without compromising her identity.</p>
<p>In the voting scheme presented here, we do not employ blockchain. However, the public bulletin that is used to communicate the election results, could be implemented using blockchain technology.</p>
</sec>
<sec id="j_infor503_s_007">
<label>2.5</label>
<title>System Comparison</title>
<p>Besides the literature review here introduced, we also present a comparison between the reviewed systems. The purpose of this comparison is twofold. First, it allows the reader to directly assess the presented systems. Secondly, it provides a common baseline to later compare the performance of our system, SUVS.</p>
<p>Nonetheless, comparing different systems is not a trivial task. These schemes are based on different cryptographic primitives, with different architectures that involve a custom number of involved parties. The authors not always report, or at least with the same level of detail, the asymptotical complexity of their works. Therefore, we chose the average number of messages sent in the protocol as basic unit for the comparison. Messaging between electors and parties is accessible to minutely measure and network delays can surpass computational times. The results of our analysis are depicted in Table <xref rid="j_infor503_tab_001">1</xref>.</p>
<table-wrap id="j_infor503_tab_001">
<label>Table 1</label>
<caption>
<p>Table representing the number of messages sent by the elector and the system. In the table: when the number of authorities is not fixed, they are represented as <italic>j</italic> in the table. <italic>v</italic> represents the number of processed votes. The ∗ symbol represents systems that are deployed employing blockchain technology.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Elector’s messages</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Total messages</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cryptographic primitives</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">Chaum (<xref ref-type="bibr" rid="j_infor503_ref_003">1982</xref>)</td>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_001"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$2v$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Blind signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_011">2009</xref>)</td>
<td style="vertical-align: top; text-align: left">5</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_002"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$3v$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Blind signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Nguyen and Dang (<xref ref-type="bibr" rid="j_infor503_ref_012">2013</xref>)</td>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_003"><alternatives><mml:math>
<mml:mn>7</mml:mn>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$7v$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Blind signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Larriba <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_009">2020</xref>)</td>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_004"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$2v+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Blind signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Cramer <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_005">1997</xref>)</td>
<td style="vertical-align: top; text-align: left">1</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_005"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi></mml:math><tex-math><![CDATA[$v+j$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Homomorphic prop.</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Yang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_020">2017</xref>, <xref ref-type="bibr" rid="j_infor503_ref_021">2018</xref>)</td>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_006"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$2(v+j)$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Homomorphic prop.</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Tornos <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_019">2014</xref>)</td>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_007"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$3v+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Ring signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Chen <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_004">2008</xref>)</td>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_008"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">j</mml:mi></mml:math><tex-math><![CDATA[$2+v+2j$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Ring signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Yang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_022">2020</xref>)*</td>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_009"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">j</mml:mi></mml:math><tex-math><![CDATA[$2j$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Homomorphic prop.</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Gao <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_008">2019</xref>)*</td>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><italic>v</italic></td>
<td style="vertical-align: top; text-align: left">Ring signatures</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Larriba <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor503_ref_010">2021</xref>)*</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor503_ineq_010"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$2+v$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Ring signatures</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="j_infor503_s_008">
<label>3</label>
<title>Background</title>
<p>In this section we introduce the fundamental cryptographic primitives that are employed in our protocol.</p>
<sec id="j_infor503_s_009">
<label>3.1</label>
<title>Shamir Secret Sharing Scheme</title>
<p>The reconstructive approach is based on Shamir’s <inline-formula id="j_infor503_ineq_011"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(j,d)$]]></tex-math></alternatives></inline-formula>-secret sharing work (Shamir, <xref ref-type="bibr" rid="j_infor503_ref_016">1979</xref>). This scheme allows to share a secret <italic>C</italic> among <italic>j</italic> players, in such a way that any subset of <inline-formula id="j_infor503_ineq_012"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$d+1$]]></tex-math></alternatives></inline-formula> players can recover <italic>C</italic>. The secret is encoded as the independent term of a polynomial <inline-formula id="j_infor503_ineq_013"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula> and the pieces of information distributed among players are points of the aforementioned polynomial. Any subset <inline-formula id="j_infor503_ineq_014"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$d+1$]]></tex-math></alternatives></inline-formula> can interpolate their set of points to recover <italic>C</italic>. Polynomial evaluation operations, as depicted in equation (<xref rid="j_infor503_eq_001">1</xref>), are carried out under modular arithmetic of a prime <italic>p</italic>: 
<disp-formula id="j_infor503_eq_001">
<label>(1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ q(x)={a_{d}}{x^{d}}+{a_{d-1}}{x^{d-1}}+\cdots +{a_{1}}{x^{1}}+C\hspace{1em}(\mathrm{mod}\hspace{2.5pt}p).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Given a sufficient set of points <inline-formula id="j_infor503_ineq_015"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({x_{i}},{y_{i}})$]]></tex-math></alternatives></inline-formula>, in order to interpolate the polynomial <inline-formula id="j_infor503_ineq_016"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula>, we suggest Lagrange’s method. The interpolation is depicted in equation (<xref rid="j_infor503_eq_002">2</xref>), and equation (<xref rid="j_infor503_eq_003">3</xref>) computes the Lagrange’s bases: 
<disp-formula id="j_infor503_eq_002">
<label>(2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ q(x)={\sum \limits_{i=0}^{j}}{y_{i}}{l_{i}}(x),\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<disp-formula id="j_infor503_eq_003">
<label>(3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∏</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mtable rowspacing="0" columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:munder><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {l_{i}}(x)=\prod \limits_{\substack{0\leqslant k\leqslant j\\ {} k\ne i}}\frac{x-{x_{k}}}{{x_{i}}-{x_{k}}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Please note that employing Shamir’s secret sharing scheme requires the use of modular arithmetic, however, it does not imply the use of encryption.</p>
</sec>
<sec id="j_infor503_s_010">
<label>3.2</label>
<title>Perfect Secrecy</title>
<p>Perfect secrecy notion directly derives from information-theory (Shannon, <xref ref-type="bibr" rid="j_infor503_ref_017">1949</xref>). It implies, as represented in equation (<xref rid="j_infor503_eq_004">4</xref>), that a priori probability of a given message <italic>m</italic>, in the space of all possible messages <inline-formula id="j_infor503_ineq_017"><alternatives><mml:math>
<mml:mi mathvariant="script">M</mml:mi></mml:math><tex-math><![CDATA[$\mathcal{M}$]]></tex-math></alternatives></inline-formula>, is equal to the a posteriori probability of the message given the ciphertext <italic>c</italic>, in the space of all possible ciphertexts <inline-formula id="j_infor503_ineq_018"><alternatives><mml:math>
<mml:mi mathvariant="script">C</mml:mi></mml:math><tex-math><![CDATA[$\mathcal{C}$]]></tex-math></alternatives></inline-formula>. 
<disp-formula id="j_infor503_eq_004">
<label>(4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="script">M</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="script">M</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P(\mathcal{M}=m)\equiv P(\mathcal{M}=m|\mathcal{C}=c),\]]]></tex-math></alternatives>
</disp-formula> 
and, thus, that the ciphertexts reveal no information about the message. All messages are equiprobable for a given ciphertext, making the scheme secure since the attacker has no method to obtain additional information, even with selected ciphertexts.</p>
<table-wrap id="j_infor503_tab_002">
<label>Table 2</label>
<caption>
<p>Notation employed in the article.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Symbol</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">References to</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><italic>v</italic></td>
<td style="vertical-align: top; text-align: left">Number of processed votes</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>j</italic></td>
<td style="vertical-align: top; text-align: left">Number of parties</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>C</italic></td>
<td style="vertical-align: top; text-align: left">Secret vote</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>p</italic></td>
<td style="vertical-align: top; text-align: left">Prime number</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor503_ineq_019"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Polynomial defined over <inline-formula id="j_infor503_ineq_020"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathbb{F}_{p}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>d</italic></td>
<td style="vertical-align: top; text-align: left">Degree of <inline-formula id="j_infor503_ineq_021"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>l</italic></td>
<td style="vertical-align: top; text-align: left">Number of generated points</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>v</italic></td>
<td style="vertical-align: top; text-align: left">RSA public view key</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>n</italic></td>
<td style="vertical-align: top; text-align: left">RSA modulus</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>s</italic></td>
<td style="vertical-align: top; text-align: left">RSA secret key</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>b</italic></td>
<td style="vertical-align: top; text-align: left">Election ballot</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor503_ineq_022"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">SP</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\textit{SP}_{i}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Non-overlapping set of points</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="j_infor503_s_011">
<label>4</label>
<title>Our Proposal</title>
<p>We devote this section to describe our proposal for a <italic>Secure Unencrypted Voting Scheme</italic> (<italic>SUVS</italic>). We present a protocol that requires minimum interaction from the elector and protects the vote using a constructive approach which does not require to encrypt/decrypt the votes. A summary of the notation used along this section can be found in Table <xref rid="j_infor503_tab_002">2</xref>.</p>
<p>The process is based on the generation of some pieces of information, which separately do not reveal any information about the elector and her vote, but, when combined, these pieces of information reveal the vote.</p>
<p>Our system consists on three different entities: the electors who cast their individual votes; an identification authority (IA) in charge of crediting valid electors and (blindly) certify the ballots; and the parties, whose purpose is twofold: first they represent themselves as an option in the election, and, second, they are responsible of recovering, validating and tallying the casted votes. These entities employ a Public Bulletin Board (PBB) to communicate public information regarding the election. As for the PBB implementation, we note that today multiple blockchain technologies provide the methods to implement a public and distributed bulletin.</p>
<p>SUVS consists on five sequential phases: the system setup; the ballot crafting; the ballot certification; the vote casting; and the tallying phase. Along these phases, the elector generates a private polynomial that acts as her own ballot. The polynomial enables the elector to conceal her vote as set of points and to cast it in the corresponding phase. We take advantage of the properties of polynomial interpolation, which make the recovery of the vote impossible if not all the points are known. In the last phase, parties collaborate to recover the secret polynomial, and its associated vote, from the received points. A scheme of the protocol’s interactions is depicted on Fig. <xref rid="j_infor503_fig_001">1</xref>. Example <xref rid="j_infor503_stat_001">1</xref> illustrate all the processes previous to the final tallying. Now, we describe in detail each one of the phases that define our method.</p>
<fig id="j_infor503_fig_001">
<label>Fig. 1</label>
<caption>
<p>Scheme representing the election phases, its associated agents and their message interchange.</p>
</caption>
<graphic xlink:href="infor503_g001.jpg"/>
</fig>
<sec id="j_infor503_s_012">
<label>4.1</label>
<title>System Setup</title>
<p>Before the election process, it is required to arrange and configure the methods that will be used to sign the electors’ ballots. The IA is responsible of the elector identification and ballot certification. For this purpose, the IA must generate the parameters to setup a digital signature scheme.</p>
<p>We employ blind signatures to prevent double voting without compromising electors’ privacy. This allow us to certify ballots from valid electors without being able to link the votes with their identity.</p>
<p>We consider in the description of our proposal a RSA cryptographic scheme to implement blind signatures because of its homomorphic properties under modular exponentiation.<xref ref-type="fn" rid="j_infor503_fn_002">2</xref><fn id="j_infor503_fn_002"><label><sup>2</sup></label>
<p>Of course, any other method with the same properties could be used instead.</p></fn> To carry out the blind signatures, the elector uses the public component of the IA signature key <italic>v</italic> and public RSA modulus <italic>n</italic> which will be used to certify the ballots.</p>
<p>The IA also states the hash function to be used, sets up the degree <italic>d</italic> of the polynomials to create, set the maximum number of points the user can generate <italic>l</italic>, being <inline-formula id="j_infor503_ineq_023"><alternatives><mml:math>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi></mml:math><tex-math><![CDATA[$l>d$]]></tex-math></alternatives></inline-formula>, as well as generates the prime <italic>p</italic> under which modulo operations will be carried out. Please note that the degree of the polynomial <italic>d</italic> must be, at least, equal to <inline-formula id="j_infor503_ineq_024"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$j-1$]]></tex-math></alternatives></inline-formula>, being <italic>j</italic> the number of involved parties on the election. This enforces the collaboration of all parties to recover the polynomial. Apart from this consideration, increasing <italic>d</italic> does not provide greater security. Please note that <italic>l</italic> is included as a security measure to prevent users generating too many points. Because of the polynomial’s degree <italic>d</italic> being public, this could give some small set of malicious parties the ability to collude and recover the votes before the tallying phase. While the integrity of the vote is preserved, it would affect the democracy of the scheme.</p>
<p>At the end of the setup phase, the IA publicly distributes <italic>v</italic>, <italic>n</italic>, <italic>d</italic> and <italic>p</italic> so that every elector can craft her own ballot.</p>
</sec>
<sec id="j_infor503_s_013">
<label>4.2</label>
<title>Ballot Crafting</title>
<p>Once an elector has decided on her vote, she encodes it as an integer <italic>C</italic>. Then, she proceeds to generate a d-degree polynomial as shown in equation (<xref rid="j_infor503_eq_005">5</xref>): 
<disp-formula id="j_infor503_eq_005">
<label>(5)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ q(x)={a_{d}}{x^{d}}+{a_{d-1}}{x^{d-1}}+\cdots +{a_{1}}x+C\hspace{1em}(\mathrm{mod}\hspace{2.5pt}p),\]]]></tex-math></alternatives>
</disp-formula> 
such that the independent term contains the encoded vote <italic>C</italic>. Please note that it is not necessary for all the coefficients to be non-null to deal with a <italic>d</italic>-grade polynomial. Also note that coefficients must be smaller than the prime <italic>p</italic>.</p>
<p>Then, the elector samples from the polynomial a minimum of <inline-formula id="j_infor503_ineq_025"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$d+1$]]></tex-math></alternatives></inline-formula> points (to a maximum of <italic>l</italic> points, see equation (<xref rid="j_infor503_eq_006">6</xref>)). For the sake of clarity, we assume in the rest of the article the user generated minimum <inline-formula id="j_infor503_ineq_026"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$d+1$]]></tex-math></alternatives></inline-formula> points. When necessary, we will order the set of points <italic>P</italic> taking into account the first coordinate, in order to transform, unequivocally, any set into a sequence of points. 
<disp-formula id="j_infor503_eq_006">
<label>(6)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">{</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P=\big\{\big({x_{1}},q({x_{1}})\big),\big({x_{2}},q({x_{2}})\big),\dots ,\big({x_{d+1}},q({x_{d+1}})\big)\big\}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Note that anybody who knows <italic>P</italic> can interpolate the original polynomial <inline-formula id="j_infor503_ineq_027"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula>, and therefore recover the vote.</p>
<p>The set is, actually, the ballot to be casted, which will be split in shares to be sent to the parties. In order to allow the reconstruction of the split vote, the elector digests the sorted set of points <italic>P</italic> using the hash function selected in the system set up phase. Please note the importance of the points being sorted for the hash function to produce consistent outputs. For this reason, we define a function <inline-formula id="j_infor503_ineq_028"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext></mml:math><tex-math><![CDATA[$\textit{shash}$]]></tex-math></alternatives></inline-formula>, that sorts, accordingly, the received input before applying the hash. The output of the <inline-formula id="j_infor503_ineq_029"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext></mml:math><tex-math><![CDATA[$\textit{shash}$]]></tex-math></alternatives></inline-formula> functions acts as a <italic>commitment</italic> of the points. This commitment acts as a receipt that ensures the set <italic>P</italic> has not been tampered and demonstrates the validity of the ballot when signed.</p>
</sec>
<sec id="j_infor503_s_014">
<label>4.3</label>
<title>Ballot Certification</title>
<p>In order to prevent double voting, each elector sends her ballot to the IA to be certified. In order to prevent the possibility of matching the ballot with the elector, our proposal blinds the ballots before sending them to the authority.</p>
<p>To do so, the elector selects a random invertible <italic>mask</italic>, considers the verification key <italic>v</italic> published by the IA and computes the ballot <italic>b</italic> as shown in equation (<xref rid="j_infor503_eq_007">7</xref>): 
<disp-formula id="j_infor503_eq_007">
<label>(7)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ b=\textit{shash}(P)\cdot {\textit{mask}^{v}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}n,\]]]></tex-math></alternatives>
</disp-formula> 
which is sent to the IA together with her identification through a secure channel.</p>
<p>The IA checks if the identification is valid and the elector is on the census of registered voters. If the identification is correct, the IA proceeds to sign the ballot as referenced in equation (<xref rid="j_infor503_eq_008">8</xref>): 
<disp-formula id="j_infor503_eq_008">
<label>(8)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo stretchy="false">≡</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo stretchy="false">≡</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo stretchy="false">≡</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">mask</mml:mtext>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}{b^{s}}& \equiv {\big(\textit{shash}(P)\cdot {\textit{mask}^{v}}\big)^{s}}\hspace{1em}(\mathrm{mod}\hspace{2.5pt}n),\\ {} {b^{s}}& \equiv \textit{shash}{(P)^{s}}\cdot {\big({\textit{mask}^{v}}\big)^{s}}\hspace{1em}(\mathrm{mod}\hspace{2.5pt}n),\\ {} {b^{s}}& \equiv \textit{shash}{(P)^{s}}\cdot \textit{mask}\hspace{1em}(\mathrm{mod}\hspace{2.5pt}n).\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Please note that, unless the IA gets to know the mask, the IA cannot never be aware of what message it is actually certifying. After the signature process, the IA replies the elector through a secure channel with the signed ballot. The IA also publishes on the PBB a tuple of the form <inline-formula id="j_infor503_ineq_030"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">⟨</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">⟩</mml:mo></mml:math><tex-math><![CDATA[$\langle id,b=\textit{shash}{(P)\cdot {\textit{mask}^{v}})^{s}}\rangle $]]></tex-math></alternatives></inline-formula>. The purpose of this publication is twofold: first, it allows the elector to check that her ballot was received as intended. Second, it proves that every ballot comes from a valid identity from the public census.</p>
<p>The elector receives the signed ballot and proceeds to recover the signed commitment which will certify her vote. Note that the elector is the only one who knows the mask and its inverse. Thus, the elector obtains the signed commitment as indicated in equation (<xref rid="j_infor503_eq_009">9</xref>): 
<disp-formula id="j_infor503_eq_009">
<label>(9)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">mask</mml:mtext>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {b^{s}}\cdot {\textit{mask}^{-1}}\equiv \textit{shash}{(P)^{s}}\cdot \textit{mask}\cdot {\textit{mask}^{-1}}\equiv \textit{shash}{(P)^{s}}\hspace{1em}(\mathrm{mod}\hspace{2.5pt}n).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>By following these steps, the elector obtains the certified (signed) commitment that will be used in the next phases. These steps are detailed on Algorithm <xref rid="j_infor503_fig_002">1</xref>. Note that, despite requiring her identity in order to sign the ballot, the IA has no means to link the commitment with the elector. Also note that the elector is able to check if the signed ballot was tampered during the way, because she is able to independently verify the integrity of the signed commitment.</p>
<fig id="j_infor503_fig_002">
<label>Algorithm 1</label>
<caption>
<p>Ballot certification</p>
</caption>
<graphic xlink:href="infor503_g002.jpg"/>
</fig>
</sec>
<sec id="j_infor503_s_015">
<label>4.4</label>
<title>Vote Casting</title>
<p>In this phase, the elector has a set <italic>P</italic> that can be used to recover her vote and the signed commitment of the set <inline-formula id="j_infor503_ineq_031"><alternatives><mml:math>
<mml:mtext mathvariant="italic">hash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$\textit{hash}{(P)^{s}}$]]></tex-math></alternatives></inline-formula>, which identifies her vote as a valid one.</p>
<p>To finally cast the vote, the elector sends a partition of <italic>P</italic> (shares of the ballot) together with the certified commitment to all the parties implied in the election tallying. Note that a basic property of polynomial interpolation states the impossibility to recover a <italic>d</italic> degree polynomial with <italic>d</italic> or less points of such polynomial. This allows to send different shares of information to different parties with certainty that no information of the original vote will be revealed unless all the parties collaborate to do so.</p>
<p>Thus, taking into account that <italic>k</italic> parties are implied in the election, the elector partitions <italic>P</italic> into <italic>k</italic> non-overlapping subsets <inline-formula id="j_infor503_ineq_032"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">SP</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\textit{SP}_{i}}$]]></tex-math></alternatives></inline-formula>, such that <italic>P</italic> results as the ordered merge of the <inline-formula id="j_infor503_ineq_033"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">SP</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\textit{SP}_{i}}$]]></tex-math></alternatives></inline-formula> subsets. See equation (<xref rid="j_infor503_eq_010">10</xref>): 
<disp-formula id="j_infor503_eq_010">
<label>(10)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">{</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">⋃</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mo>∀</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mspace width="0.1667em"/>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">SP</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">}</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P=\bigg\{\bigcup \limits_{\forall i\hspace{0.1667em}1\leqslant i\leqslant k}{\textit{SP}_{i}}\bigg\}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Each one of the parties receive a share <inline-formula id="j_infor503_ineq_034"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mtext mathvariant="italic">SP</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\textit{SP}_{i}}$]]></tex-math></alternatives></inline-formula> of <italic>P</italic> together with the hash and the certified hash: <inline-formula id="j_infor503_ineq_035"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="2.5pt"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\textit{shash}(P),\textit{shash}{(P)^{s}}\hspace{2.5pt}(\mathrm{mod}\hspace{2.5pt}n)$]]></tex-math></alternatives></inline-formula>. Please note that the certified hash operates as digital signature of the hash, and that both are sent and needed to check its validity. Also note that the elector can freely decide which subset is sent to each party.</p>
<p>We also note that it is possible to reduce the number of shares to put aside from the process those parties which receive no share of the elector’s ballot. Note also that this does not affect the validity of the vote, but the transparency of the process. However, we force that every party receives one share. By doing this, we ensure that the vote requires the collaboration of all the parties to be recovered. Thus, no subset of malicious parties will be able to recover the vote before the tallying phase.</p>
<p>When all the subsets are sent, the vote has been cast. Note that, unlike what happens in the ballot certification phase, no personal information goes along with the shares of the vote. Thus, parties have no means to associate the received shares with an elector’s identity.<xref ref-type="fn" rid="j_infor503_fn_003">3</xref><fn id="j_infor503_fn_003"><label><sup>3</sup></label>
<p>Please note that while parties cannot identify voters, they can reject invalid messages by leveraging the digital signature of the commitment. Invalid signatures must be rejected and this can be used as defense against DDOS attacks.</p></fn> The casting process is depicted on Algorithm <xref rid="j_infor503_fig_003">2</xref>.</p>
<fig id="j_infor503_fig_003">
<label>Algorithm 2</label>
<caption>
<p>Casting a vote</p>
</caption>
<graphic xlink:href="infor503_g003.jpg"/>
</fig>
</sec>
<sec id="j_infor503_s_016">
<label>4.5</label>
<title>Tallying</title>
<p>Once the election is over, no new votes are accepted. The parties can proceed to reconstruct the votes and compute the final tally.</p>
<p>In the first place, the parties consider the certification that accompanies the shares to find the set of shares (each one of them received by a different party) that allow to reconstruct each ballot <italic>P</italic>. Note that the original sequence can be easily obtained, by ordering the set <italic>P</italic>, and that is possible to check the validity of the certification.</p>
<p>A set of points <italic>P</italic> such that its certified commitment <inline-formula id="j_infor503_ineq_036"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="2.5pt"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\textit{shash}{(P)^{s}}\hspace{2.5pt}(\mathrm{mod}\hspace{2.5pt}n)$]]></tex-math></alternatives></inline-formula> is not correct, or that its cardinality exceeds the defined maximum <inline-formula id="j_infor503_ineq_037"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(|P|>l)$]]></tex-math></alternatives></inline-formula>, is discarded. Parties can now, individually, use the points in <italic>P</italic> to recover the original polynomial <inline-formula id="j_infor503_ineq_038"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula> which contains the vote as its independent term <italic>C</italic>. To recover a polynomial from a set of points: 
<disp-formula id="j_infor503_eq_011">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">}</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P=\big\{{p_{1}}=({x_{1}},{y_{1}}),{p_{2}}=({x_{2}},{y_{2}}),\dots ,{p_{j}}=({x_{j}},{y_{j}})\big\},\]]]></tex-math></alternatives>
</disp-formula> 
we suggest to use Lagrange’s polynomials (see equations (<xref rid="j_infor503_eq_012">11</xref>) and (<xref rid="j_infor503_eq_013">12</xref>)): 
<disp-formula id="j_infor503_eq_012">
<label>(11)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ q(x)={\sum \limits_{i=0}^{j}}{y_{i}}{l_{i}}(x),\]]]></tex-math></alternatives>
</disp-formula> 
where: 
<disp-formula id="j_infor503_eq_013">
<label>(12)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∏</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mtable rowspacing="0" columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:munder><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {l_{i}}(x)=\prod \limits_{\substack{0\leqslant k\leqslant j\\ {} k\ne i}}\frac{x-{x_{k}}}{{x_{i}}-{x_{k}}},\]]]></tex-math></alternatives>
</disp-formula> 
that, when <inline-formula id="j_infor503_ineq_039"><alternatives><mml:math>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$q(x)$]]></tex-math></alternatives></inline-formula> is interpolated, allow to recover the encoded vote <italic>C</italic> as illustrated in equation (<xref rid="j_infor503_eq_014">13</xref>). 
<disp-formula id="j_infor503_eq_014">
<label>(13)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="1em"/>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ C=q(0)\hspace{1em}(\mathrm{mod}\hspace{2.5pt}p).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Please note that the interpolation operations are not carried out modulo <italic>p</italic>. When we forced, on the ballot crafting, the coefficients of the polynomial <inline-formula id="j_infor503_ineq_040"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${a_{d}}$]]></tex-math></alternatives></inline-formula> to be smaller than <italic>p</italic>, we made sure that we would interpolate the exact same polynomial without the need of modular arithmetic. Otherwise, we could interpolate a different polynomial, congruent mod <italic>p</italic>, but with a different encoded vote <italic>C</italic>.</p>
<p>The parties publish on the PBB, a 3-tuple per vote containing: the certification of the ballot (i.e. the signed commitment); the ballot itself (i.e. the set of points <italic>P</italic> that conceal the ballot); and the reconstructed vote <italic>C</italic>. The final tally obtained by each party can also be published. The PBB is available to everyone to check that their votes have been counted as intended, and to verify the integrity of the final tally. Algorithm <xref rid="j_infor503_fig_004">3</xref> contains the steps to compute the final tally.</p>
<fig id="j_infor503_fig_004">
<label>Algorithm 3</label>
<caption>
<p>Tallying votes</p>
</caption>
<graphic xlink:href="infor503_g004.jpg"/>
</fig>
<statement id="j_infor503_stat_001"><label>Example 1.</label>
<p>In order to depict the process, let us consider an election with three competing candidates. To setup the system, the IA generates a RSA signature key with, respectively, <inline-formula id="j_infor503_ineq_041"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">⟨</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo fence="true" stretchy="false">⟩</mml:mo></mml:math><tex-math><![CDATA[$\langle v,n\rangle $]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor503_ineq_042"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">⟨</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo fence="true" stretchy="false">⟩</mml:mo></mml:math><tex-math><![CDATA[$\langle d\rangle $]]></tex-math></alternatives></inline-formula> as public and private keys. Neither the particular values of the key, nor the hash function <italic>h</italic> used provide special information in this example and will be referenced as is. Finally, the authority publishes that the degree to use is <inline-formula id="j_infor503_ineq_043"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>4</mml:mn></mml:math><tex-math><![CDATA[$d=4$]]></tex-math></alternatives></inline-formula> and the modulus <inline-formula id="j_infor503_ineq_044"><alternatives><mml:math>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>47</mml:mn></mml:math><tex-math><![CDATA[$p=47$]]></tex-math></alternatives></inline-formula>.</p>
<p>Once the system has been set up and the values published to the electors, in order to prepare the ballot, each user encodes her vote as an integer modulus <italic>p</italic>. Let this be <inline-formula id="j_infor503_ineq_045"><alternatives><mml:math>
<mml:mi mathvariant="italic">C</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>23</mml:mn></mml:math><tex-math><![CDATA[$C=23$]]></tex-math></alternatives></inline-formula> in this example. Then the elector randomly generates her polynomial with the codification of her vote as the independent term. Let in this example the polynomial be the following: 
<disp-formula id="j_infor503_eq_015">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>11</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>23</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ q(x)=11{x^{4}}+x+23\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\]]]></tex-math></alternatives>
</disp-formula> 
that is now used to generate five random points. Let these points ordered with respect to the first coordinate be the following: 
<disp-formula id="j_infor503_eq_016">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟨</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>27</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>13</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>12</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>29</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>45</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>31</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>17</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>45</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>9</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟩</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P=\big\langle (7,27),(13,12),(29,45),(31,17),(45,9)\big\rangle .\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>This set of values is actually the ballot the elector will split into pieces. To obtain a commitment of the ballot, the elector computes <inline-formula id="j_infor503_ineq_046"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\textit{shash}(P)$]]></tex-math></alternatives></inline-formula> and masks the digest using a private invertible integer modulus <italic>n</italic>: 
<disp-formula id="j_infor503_eq_017">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtext mathvariant="italic">commitment</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \textit{commitment}=\textit{shash}(P)\cdot {\textit{mask}^{v}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}n,\]]]></tex-math></alternatives>
</disp-formula> 
the results are then sent to the authority together with her identification in order to be blindly signed. Note that there is no way the authority can guess the direction of the vote since it just receives the masked commitment.</p>
<p>Once the usual checks are carried out, the authority computes the certificate signing the commitment using its signature private key: 
<disp-formula id="j_infor503_eq_018">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtext mathvariant="italic">pre</mml:mtext>
<mml:mtext>_</mml:mtext>
<mml:mtext mathvariant="italic">certificate</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \textit{pre}\text{\_}\textit{certificate}={(\textit{shash}(P)\cdot {\textit{mask}^{v}})^{s}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}n.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>As explained above, the elector can easily obtain the certificate of the ballot as: 
<disp-formula id="j_infor503_eq_019">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtext mathvariant="italic">certificate</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">pre</mml:mtext>
<mml:mtext>_</mml:mtext>
<mml:mtext mathvariant="italic">certificate</mml:mtext>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \textit{certificate}=\textit{pre}\text{\_}\textit{certificate}\cdot {\textit{mask}^{-1}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}n=\textit{shash}{(P)^{s}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}n.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The ballot is then split into three disjoint pieces (the number of candidates), for instance: 
<disp-formula id="j_infor503_eq_020">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟨</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>29</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>45</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>45</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>9</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟩</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟨</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>27</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟩</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟨</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>13</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>12</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>31</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>17</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⟩</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {P_{1}}=\big\langle (29,45),(45,9)\big\rangle ,\\ {} & {P_{2}}=\big\langle (7,27)\big\rangle ,\\ {} & {P_{3}}=\big\langle (13,12),(31,17)\big\rangle ,\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
which are sent to the respective candidates together with the certified commitment. Note that it is impossible for the candidates to obtain the direction of the vote unless they all agree to share the points in order to interpolate the polynomial. Note also that it is also infeasible any candidate to tamper with the ballot since it has not information to do so.</p>
<p>In order to rebuild the ballot, the candidates use the certified commitment to select the pieces of the same ballot, check its integrity and interpolate the polynomial using whichever available method.</p></statement>
</sec>
</sec>
<sec id="j_infor503_s_017">
<label>5</label>
<title>SUVS Complexity</title>
<p>We devote this section to analyse the time-complexity of our voting scheme. We prove that our protocol is highly efficient and requires minimal effort for the involved parties. We differentiate between the computational complexity related to each individual elector and the complexity of the whole system to process all votes.</p>
<p>We chose bit operation as the unit in our time-complexity analysis. As usual, <italic>n</italic> denotes the input of the operands and <inline-formula id="j_infor503_ineq_047"><alternatives><mml:math>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi></mml:math><tex-math><![CDATA[$\log n$]]></tex-math></alternatives></inline-formula> denote its number of bits.</p>
<p>To certify and cast a vote, the elector needs to carry out a series of steps: generate a polynomial, sample some points, compute a hash function, select some subsets, etc. However, we neglect some of these steps in the time-complexity analysis because of two main reasons: most of them can be performed off-line before the actual election process starts, and they are not relevant in terms of time-complexity analysis because other operations dominate the overall complexity. For example, the sort of a sequence, or hash, of length <italic>j</italic> is not comparable to the magnitude of <inline-formula id="j_infor503_ineq_048"><alternatives><mml:math>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi></mml:math><tex-math><![CDATA[$\log n$]]></tex-math></alternatives></inline-formula>. Therefore, its complexity can be neglected when compared with the rest of operations.</p>
<p>We only consider the mask generation and multiplication and exponentiation operations. They are the most costful operations and dominate the time-complexity functions:</p>
<list>
<list-item id="j_infor503_li_001">
<label>•</label>
<p>Mask generation. The user must generate a mask and search for its inverse to certify the ballot. To find the inverse, the Euclid’s algorithm which has a complexity of <inline-formula id="j_infor503_ineq_049"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{2}}n)$]]></tex-math></alternatives></inline-formula> bit operations is used. Only one iteration of the algorithm is needed to find an invertible mask, otherwise it would mean that we broke RSA (we found a factor of <italic>n</italic>).</p>
</list-item>
<list-item id="j_infor503_li_002">
<label>•</label>
<p>Modular exponentiation. To craft the ballot the user must perform a modular exponentiation (see Line 7 on Algorithm <xref rid="j_infor503_fig_002">1</xref>), which has a cost of <inline-formula id="j_infor503_ineq_050"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{3}}n)$]]></tex-math></alternatives></inline-formula> bit operations.</p>
</list-item>
<list-item id="j_infor503_li_003">
<label>•</label>
<p>Modular multiplication. In addition to the exponentiation, a modular multiplication is also required on Section <xref rid="j_infor503_s_014">4.3</xref>. This operation has cost of <inline-formula id="j_infor503_ineq_051"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{2}}n)$]]></tex-math></alternatives></inline-formula> bit operations.</p>
</list-item>
</list>
<p>Then, the complete time-complexity for an elector to cast a vote can be expressed as: 
<disp-formula id="j_infor503_eq_021">
<label>(14)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \mathcal{O}\big({\log ^{2}}n\big)+\mathcal{O}\big({\log ^{2}}n\big)+\mathcal{O}\big({\log ^{3}}n\big)\approx \mathcal{O}\big({\log ^{3}}n\big).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>We now consider the complexity of the whole system. To process a vote, SUVS must apply a blind signature to the ballot, and, at the end of the election it must interpolate a polynomial from a set of points. We do not consider the compilation of the shares with the same certified commitment in the complexity analysis, shares can be indexed and compiled in constant time.</p>
<list>
<list-item id="j_infor503_li_004">
<label>•</label>
<p>Ballot certification requires one modular exponentiation, which has a cost of <inline-formula id="j_infor503_ineq_052"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{3}}n)$]]></tex-math></alternatives></inline-formula> bit operations.</p>
</list-item>
<list-item id="j_infor503_li_005">
<label>•</label>
<p>Interpolation using Lagrange’s polynomial requires a linear number of non-modular operations. Addition and subtraction present a time-complexity of <inline-formula id="j_infor503_ineq_053"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}(\log n)$]]></tex-math></alternatives></inline-formula>, while multiplication and division have a complexity of <inline-formula id="j_infor503_ineq_054"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{2}}n)$]]></tex-math></alternatives></inline-formula> bit operations. These operations are affected by the number of shares <italic>j</italic> (equivalent to the number of parties), as can be observed in Section <xref rid="j_infor503_s_016">4.5</xref>. The complexity of this step can be expressed as <inline-formula id="j_infor503_ineq_055"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${(j(\mathcal{O}({\log ^{2}}n)+\mathcal{O}(\log n)))^{2}}={j^{2}}(\mathcal{O}({\log ^{4}}n)+\mathcal{O}(2{\log ^{3}}n)+\mathcal{O}({\log ^{2}}n))$]]></tex-math></alternatives></inline-formula>. However, since <italic>j</italic> is known to be a low and bounded number, we can treat it as a constant and simplify it in the complexity as <inline-formula id="j_infor503_ineq_056"><alternatives><mml:math>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathcal{O}({\log ^{4}}n)+\mathcal{O}(2{\log ^{3}}n)+\mathcal{O}({\log ^{2}}n)\approx \mathcal{O}({\log ^{4}}n)$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
<p>Thus, the total time-complexity of our scheme scales linearly with the number of processed votes <italic>v</italic> and can be expressed as: 
<disp-formula id="j_infor503_eq_022">
<label>(15)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ v\big(\mathcal{O}\big({\log ^{4}}n\big)+\mathcal{O}\big({\log ^{3}}n\big)\big)=v\mathcal{O}\big({\log ^{4}}n\big).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Please also note that the complete number messages sent by the elector in SUVS can be expressed as <inline-formula id="j_infor503_ineq_057"><alternatives><mml:math>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi></mml:math><tex-math><![CDATA[$1+j$]]></tex-math></alternatives></inline-formula>. While the total number of messages interchanged between the involved parties is simply <italic>j</italic>. These figures compare well with the results presented in Section <xref rid="j_infor503_s_007">2.5</xref> and shows that the message complexity of SUVS is not affected by the fact of not encrypting the votes. Also note that while additional messages can be required for the user, these are non-blocking communications. The elector sends the shares and does not requires any additional communication. No future steps are delayed by this aspect.</p>
</sec>
<sec id="j_infor503_s_018">
<label>6</label>
<title>Security Analysis</title>
<p>We now analyse the security properties of our presented voting scheme. We enumerate the desired properties of a secure election protocol, proving that our system meets them. Please note that the security of our scheme (except for the signature step) does fall under the information-theory paradigm. Therefore, and unlike other computational security-based schemes, we do not need security parameters. Once some basic constraints are achieved (e.g. <inline-formula id="j_infor503_ineq_058"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>⩾</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$d\geqslant j-1$]]></tex-math></alternatives></inline-formula>), the overall security does not rely on larger values to become more secure.</p>
<sec id="j_infor503_s_019">
<title>Verifiability</title>
<p>Verifiability is a property that ensures that an elector can verify the integrity of her vote at any given phase (casting, recording or tallying). If the audit is extended to any individual (elector or not), then is called universal verifiability. <statement id="j_infor503_stat_002"><label>Lemma 1.</label>
<p><italic>SUVS voting protocol is end-to-end verifiable.</italic></p></statement><statement id="j_infor503_stat_003"><label>Proof.</label>
<p>In order to prove the lemma we will prove, first, that after the identification stage, the elector can verify that her vote was not tampered with during the certification of the commitment, and, second, that at the end of the voting process, any vote was correctly recorded and tallied.</p>
<p>First, we note that during the process of commitment certification, the elector is the only one who knows the mask that conceals the commitment. Therefore, only she can remove the mask and apply the public key of the identification authority check if the commitment was correctly certified or it was somehow modified. She also can check on the PBB that the masked commitment received by the IA has not been tampered with.</p>
<p>Second, regarding universal verifiability, any individual (elector included) can consult on the PBB all the individual votes, that is: their set of points, and their certified commitment. This information is enough for any interested party to check the validity and integrity of the votes.</p>
<p>Thus, our method allows anyone to compute the tally, verifying the validity of all the individual votes, and, therefore, auditing the election process.  □</p></statement></p>
</sec>
<sec id="j_infor503_s_020">
<title>Privacy</title>
<p>Privacy implies the impossibility of linking an elector’s identity with the direction of her vote, even when some authorities or parties implied in the process maliciously participate. <statement id="j_infor503_stat_004"><label>Lemma 2.</label>
<p><italic>SUVS guarantees the elector’s privacy.</italic></p></statement><statement id="j_infor503_stat_005"><label>Proof.</label>
<p>To prove this, we will prove, first, that the identification authority cannot compute the direction of any elector’s vote, and, second, that parties can neither do so.</p>
<p>First, note that the elector mask that conceals the commitment of the vote is a private election, the identification authority does not have information to unmask the commitment, and, therefore, the authority cannot gain knowledge of the elector’s commitment. Thus, the identification authority has no way to relate elector’s identification to her final vote, once the PBB is made public.</p>
<p>Second, we note that the parties do not receive any personal information from the elector. Hence, they can not relate the vote in any way.  □</p></statement></p>
</sec>
<sec id="j_infor503_s_021">
<title>Democracy</title>
<p>Democracy guarantees that only valid and registered electors are able to cast a vote, and that they only can vote once.</p>
<p>In our protocol, the IA responsibility is twofold: it verifies elector’s identification to check that they are eligible, and, prevents double voting by using blind signatures.</p>
<p>Please note that even if the IA acted maliciously, democracy would be ensured. The received ballots and their associated identity on the public census are published on the PBB for everyone to review. The malicious IA could not forge invalid votes or link valid ones to their elector. However, in a different scenario, an attacker could try to bypass IA’s certification and forge the employed blind signature scheme. <statement id="j_infor503_stat_006"><label>Lemma 3.</label>
<p><italic>As the RSA scheme remains secure, our electronic voting protocol is democratic.</italic></p></statement><statement id="j_infor503_stat_007"><label>Proof.</label>
<p>For a vote to be considered valid, it must be accompanied by a certified commitment. This certification is carried out by the IA through a blind signature scheme based on RSA. Assuming that the Discrete Logarithm Problem (DLP) has no efficient solution for meticulously selected parameters, the attacker has no means, apart from bruteforce, to break the signature scheme.  □</p></statement></p>
</sec>
<sec id="j_infor503_s_022">
<title>Accuracy</title>
<p>Accuracy requires the final tally to match the actual outcome of the election. In order to achieve this: all valid votes must be counted; no invalid votes are considered; and no cast vote can be modified. <statement id="j_infor503_stat_008"><label>Lemma 4.</label>
<p><italic>SUVS voting protocol is accurate.</italic></p></statement><statement id="j_infor503_stat_009"><label>Proof.</label>
<p>We prove the statement in three independent sections:</p>
<p>
<list>
<list-item id="j_infor503_li_006">
<label>1.</label>
<p><italic>Valid votes are counted</italic>: Parties are responsible of processing all valid received votes. Both individual and universal verifiability (Lemma <xref rid="j_infor503_stat_002">1</xref>) guarantee that electors can check that all valid votes are included in the final tally.</p>
</list-item>
<list-item id="j_infor503_li_007">
<label>2.</label>
<p><italic>No invalid votes are considered</italic>: In order for a vote to be considered valid, it needs to be correctly certified. As proved in Lemma <xref rid="j_infor503_stat_006">3</xref>, the creation of fake votes is unfeasible. Thanks to verifiability, electors can also audit the results and check that all individual votes are valid.</p>
</list-item>
<list-item id="j_infor503_li_008">
<label>3.</label>
<p><italic>Vote modification</italic>: Any modification to any of the unencrypted shares of a vote will be detected because it will make the certified commitment not match the shares. As long as the hash function used remains secure, no tampering of the votes will succeed.</p>
</list-item>
</list> 
 □</p></statement></p>
</sec>
<sec id="j_infor503_s_023">
<title>Robustness</title>
<p>Robustness ensures that no coalition of electors and/or parties would be able to disrupt the election process. We first prove that our method is robust with the only condition that one party remains honest. Then, we prove that it is unfeasible a coalition of users could tamper with new votes. <statement id="j_infor503_stat_010"><label>Lemma 5.</label>
<p><italic>Robustness of SUVS is ensured if at least one contendant party remains honest.</italic></p></statement><statement id="j_infor503_stat_011"><label>Proof.</label>
<p>We note that parties must cooperate to interpolate the polynomials and recover the final votes. If at least one contendant party remains honest, the remaining parties have no way to interpolate the polynomial and access the vote. Of course, at a cost of a high reputational loss, a set of parties can misbehave or refuse to cooperate, in which case the election would have no tally.  □</p></statement><statement id="j_infor503_stat_012"><label>Lemma 6.</label>
<p><italic>It is unfeasible that, according to SUVS protocol, a coalition of electors could tamper with new votes.</italic></p></statement><statement id="j_infor503_stat_013"><label>Proof.</label>
<p>We note that a coalition of malicious electors could take profit of the multiplicative properties of modular exponentiation, and use their certified commitments in order to obtain a new tampered one <inline-formula id="j_infor503_ineq_059"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${h_{t}}$]]></tex-math></alternatives></inline-formula>. Nevertheless, as long as the chosen hash function remains secure, it is unfeasible to obtain a set of points <inline-formula id="j_infor503_ineq_060"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{t}}$]]></tex-math></alternatives></inline-formula>, such that <inline-formula id="j_infor503_ineq_061"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$\textit{shash}(P)={h_{t}}$]]></tex-math></alternatives></inline-formula>, and such that the polynomial interpolated using <inline-formula id="j_infor503_ineq_062"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{t}}$]]></tex-math></alternatives></inline-formula> codifies in its independent term a valid vote.  □</p></statement></p>
</sec>
<sec id="j_infor503_s_024">
<title>Perfect Secrecy</title>
<p>Perfect secrecy, as defined in Section <xref rid="j_infor503_s_008">3</xref>, provides security by uncertainty. The concealing of the vote by partition SUVS is based on provided security derived entirely from information theory, creating a system where partial information does not reveal anything about the scheme’s secrets.</p>
<p>As stated in Lemma <xref rid="j_infor503_stat_004">2</xref>, there is no mechanism to relate an elector to her vote. By providing perfect secrecy, we also ensure that, even in post-quantum scenarios, it is impossible to reveal any information on any vote unless all the parties are malicious or compromised. <statement id="j_infor503_stat_014"><label>Lemma 7.</label>
<p><italic>SUVS provides perfect secrecy and its encoding is resistant to post-quantum computers.</italic></p></statement><statement id="j_infor503_stat_015"><label>Proof.</label>
<p>If an attacker gains knowledge about all the shares of a vote but one, there is no way he could interpolate the polynomial generated by the user and, therefore, gain access to the direction of the vote.</p>
<p>Note also that, under modular arithmetics, there exists a combinatorial number of <italic>d</italic>-degree polynomials consistent with <italic>d</italic> points. This implies that, even if the attacker could find a polynomial that covers the points and encodes a valid vote, he could never be sure which one was the original vote encoded by the elector.  □</p></statement></p>
</sec>
<sec id="j_infor503_s_025">
<title>Malicious Elector Resistance</title>
<p>A malicious elector may try to craft a ballot in order to achieve double voting. <statement id="j_infor503_stat_016"><label>Lemma 8.</label>
<p><italic>SUVS is resistant to malicious electors.</italic></p></statement><statement id="j_infor503_stat_017"><label>Proof.</label>
<p>SUVS defines the form of the ballot as: 
<disp-formula id="j_infor503_eq_023">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ b=\textit{shash}(P)\cdot {\textit{mask}^{v}}\hspace{1em}\mathrm{mod}\hspace{2.5pt}n.\]]]></tex-math></alternatives>
</disp-formula> 
In order to achieve double voting, a malicious elector could generate two different sets of points <inline-formula id="j_infor503_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{1}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor503_ineq_064"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{2}}$]]></tex-math></alternatives></inline-formula> and craft the ballot as follows: 
<disp-formula id="j_infor503_eq_024">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ b=\textit{shash}({P_{1}})\cdot \textit{shash}({P_{2}})\cdot {\textit{mask}^{v}}\hspace{1em}\mathrm{mod}\hspace{2.5pt}n.\]]]></tex-math></alternatives>
</disp-formula> 
To the IA, the resulting ballot looks the same as a valid one. So it signs the ballot and returns it to the malicious elector. Then, the malicious elector proceeds to remove the mask 
<disp-formula id="j_infor503_eq_025">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">mask</mml:mtext>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mtext mathvariant="italic">mask</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mspace width="1em"/>
<mml:mi mathvariant="normal">mod</mml:mi>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \textit{shash}{({P_{1}})^{s}}\cdot \textit{shash}{({P_{2}})^{s}}\cdot \textit{mask}\cdot {\textit{mask}^{-1}}=\textit{shash}{({P_{1}})^{s}}\cdot \textit{shash}{({P_{2}})^{s}}\hspace{1em}\mathrm{mod}\hspace{2.5pt}n.\]]]></tex-math></alternatives>
</disp-formula> 
Nonetheless, the malicious user cannot separate <inline-formula id="j_infor503_ineq_065"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$\textit{shash}{({P_{1}})^{s}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor503_ineq_066"><alternatives><mml:math>
<mml:mtext mathvariant="italic">shash</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$\textit{shash}{({P_{2}})^{s}}$]]></tex-math></alternatives></inline-formula> since <italic>s</italic> is not known by the users. The malicious user would not only not be able to double vote, she would lose the ability to cast a single vote.  □</p></statement></p>
</sec>
</sec>
<sec id="j_infor503_s_026">
<label>7</label>
<title>Conclusions</title>
<p>In this paper, we present a new voting protocol whose security is based on the partition of the ballot. To our knowledge, our proposal is the first electronic voting scheme that properly does not encrypt the vote. The responsibility of recovering the votes is distributed among the set of parties involved on the election, who are responsible to compute the final tally of the election. The protocol we propose does not allow the parties to modify the votes for their own benefit, and universal verifiability helps the electors to audit the final tally and ensures a fair election.</p>
<p>The system we propose requires minimal interactions from the electors and scales linearly with the number of processed votes. Thanks to the flexibility of the vote codification, our proposal is compatible with almost any kind of election. We believe these facts, alongside the simplicity of the scheme, make the protocol easy to understand and implement, which are essential features to contribute in the development and deployment of this technology.</p>
<p>As future work, we will study on how to reduce the number of shares the elector distributes among the parties without affecting the reliability and trustworthiness of the system. In such a way, if an elector does not trust a certain party, she can decide to arrange and send the shares of the ballot without considering it. The incorporation of alternative identification methods that would make unnecessary to include an identification authority in the protocol is, of course, of interest.</p>
</sec>
</body>
<back>
<ref-list id="j_infor503_reflist_001">
<title>References</title>
<ref id="j_infor503_ref_001">
<mixed-citation publication-type="chapter"><string-name><surname>Aziz</surname>, <given-names>A.</given-names></string-name> (<year>2019</year>). <chapter-title>Coercion-resistant E-voting scheme with blind signatures</chapter-title>. In: <source>Cybersecurity and Cyberforensics Conference, CCC 2019</source>, <conf-loc>Melbourne, Australia, May 8–9, 2019</conf-loc>, pp. <fpage>143</fpage>–<lpage>151</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/CCC.2019.00009" xlink:type="simple">https://doi.org/10.1109/CCC.2019.00009</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_002">
<mixed-citation publication-type="chapter"><string-name><surname>Cetinkaya</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Doganaksoy</surname>, <given-names>A.</given-names></string-name> (<year>2006</year>). <chapter-title>A practical privacy preserving e-voting protocol using dynamic ballots</chapter-title>. In: <source>2nd National Cryptology Symposium</source>. <comment>Citeseer</comment>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_003">
<mixed-citation publication-type="chapter"><string-name><surname>Chaum</surname>, <given-names>D.</given-names></string-name> (<year>1982</year>). <chapter-title>Blind signatures for untraceable payments</chapter-title>. In: <source>Advances in Cryptology: Proceedings of CRYPTO ’82</source>, <conf-loc>Santa Barbara, California, USA, August 23–25, 1982</conf-loc>, pp. <fpage>199</fpage>–<lpage>203</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_004">
<mixed-citation publication-type="chapter"><string-name><surname>Chen</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Han</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Lee</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Kim</surname>, <given-names>K.</given-names></string-name> (<year>2008</year>). <chapter-title>A new receipt-free voting scheme based on linkable ring signature for designated verifiers</chapter-title>. In: <source>2008 International Conference on Embedded Software and Systems Symposia</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>18</fpage>–<lpage>23</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Cramer</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Gennaro</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Schoenmakers</surname>, <given-names>B.</given-names></string-name> (<year>1997</year>). <article-title>A secure and optimally efficient multi-authority election scheme</article-title>. <source>European Transactions on Telecommunications</source>, <volume>8</volume>(<issue>5</issue>), <fpage>481</fpage>–<lpage>490</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>Cruz</surname>, <given-names>J.P.</given-names></string-name>, <string-name><surname>Kaji</surname>, <given-names>Y.</given-names></string-name> (<year>2017</year>). <article-title>E-voting system based on the bitcoin protocol and blind signatures</article-title>. <source>IPSJ Transactions on Mathematical Modeling and Its Applications</source>, <volume>10</volume>(<issue>1</issue>), <fpage>14</fpage>–<lpage>22</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_007">
<mixed-citation publication-type="journal"><string-name><surname>ElGamal</surname>, <given-names>T.</given-names></string-name> (<year>1985</year>). <article-title>A public key cryptosystem and a signature scheme based on discrete logarithms</article-title>. <source>IEEE Transactions on Information Theory</source>, <volume>31</volume>(<issue>4</issue>), <fpage>469</fpage>–<lpage>472</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/TIT.1985.1057074" xlink:type="simple">https://doi.org/10.1109/TIT.1985.1057074</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Gao</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Zheng</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Guo</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Jing</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Hu</surname>, <given-names>C.</given-names></string-name> (<year>2019</year>). <article-title>An anti-quantum E-voting protocol in blockchain with audit function</article-title>. <source>IEEE Access</source>, <volume>7</volume>, <fpage>115304</fpage>–<lpage>115316</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/ACCESS.2019.2935895" xlink:type="simple">https://doi.org/10.1109/ACCESS.2019.2935895</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>Larriba</surname>, <given-names>A.M.</given-names></string-name>, <string-name><surname>Sempere</surname>, <given-names>J.M.</given-names></string-name>, <string-name><surname>López</surname>, <given-names>D.</given-names></string-name> (<year>2020</year>). <article-title>A two authorities electronic vote scheme</article-title>. <source>Computers &amp; Security</source>, <volume>97</volume>, <fpage>101940</fpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Larriba</surname>, <given-names>A.M.</given-names></string-name>, <string-name><surname>Cerdà i Cucó</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Sempere</surname>, <given-names>J.M.</given-names></string-name>, <string-name><surname>López</surname>, <given-names>D.</given-names></string-name> (<year>2021</year>). <article-title>Distributed trust, a blockchain election scheme</article-title>. <source>Informatica</source>, <volume>32</volume>(<issue>2</issue>), <fpage>321</fpage>–<lpage>355</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_011">
<mixed-citation publication-type="chapter"><string-name><surname>Li</surname>, <given-names>C.-T.</given-names></string-name>, <string-name><surname>Hwang</surname>, <given-names>M.-S.</given-names></string-name>, <string-name><surname>Lai</surname>, <given-names>Y.-C.</given-names></string-name> (<year>2009</year>). <chapter-title>A verifiable electronic voting scheme over the internet</chapter-title>. In: <source>2009 Sixth International Conference on Information Technology: New Generations</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>449</fpage>–<lpage>454</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Nguyen</surname>, <given-names>T.A.T.</given-names></string-name>, <string-name><surname>Dang</surname>, <given-names>T.K.</given-names></string-name> (<year>2013</year>). <article-title>Enhanced security in internet voting protocol using blind signature and dynamic ballots</article-title>. <source>Electronic Commerce Research</source>, <volume>13</volume>(<issue>3</issue>), <fpage>257</fpage>–<lpage>272</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_013">
<mixed-citation publication-type="chapter"><string-name><surname>Niederreiter</surname>, <given-names>H.</given-names></string-name> (<year>1985</year>). <chapter-title>A public-key cryptosystem based on shift register sequences</chapter-title>. In: <source>Workshop on the Theory and Application of of Cryptographic Techniques</source>. <publisher-name>Springer</publisher-name>, pp. <fpage>35</fpage>–<lpage>39</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_014">
<mixed-citation publication-type="other"><string-name><surname>Rivest</surname>, <given-names>R.L.</given-names></string-name> (2006). <italic>The Threeballot Voting System</italic>. Massachusetts Institute of Technology. Available at <uri>http://theory.csail.mit.edu/~rivest/Rivest-TheThreeBallotVotingSystem.pdf</uri>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_015">
<mixed-citation publication-type="other"><string-name><surname>Rivest</surname>, <given-names>R.L.</given-names></string-name>, <string-name><surname>Smith</surname>, <given-names>W.D.</given-names></string-name> (2007). Three voting protocols: ThreeBallot, VAV, and Twin. In: <italic>USENIX/ACCURATE Electronic Voting Technology</italic> (<italic>EVT 2007</italic>).</mixed-citation>
</ref>
<ref id="j_infor503_ref_016">
<mixed-citation publication-type="journal"><string-name><surname>Shamir</surname>, <given-names>A.</given-names></string-name> (<year>1979</year>). <article-title>How to share a secret</article-title>. <source>Communications of the ACM</source>, <volume>22</volume>(<issue>11</issue>), <fpage>612</fpage>–<lpage>613</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_017">
<mixed-citation publication-type="journal"><string-name><surname>Shannon</surname>, <given-names>C.E.</given-names></string-name> (<year>1949</year>). <article-title>Communication theory of secrecy systems</article-title>. <source>Bell Labs Technical Journal</source>, <volume>28</volume>(<issue>4</issue>), <fpage>656</fpage>–<lpage>715</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1002/j.1538-7305.1949.tb00928.x" xlink:type="simple">https://doi.org/10.1002/j.1538-7305.1949.tb00928.x</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_018">
<mixed-citation publication-type="journal"><string-name><surname>Thi</surname>, <given-names>A.T.N.</given-names></string-name>, <string-name><surname>Dang</surname>, <given-names>T.K.</given-names></string-name> (<year>2013</year>). <article-title>Enhanced security in internet voting protocol using blind signature and dynamic ballots</article-title>. <source>Electronic Commerce Research</source>, <volume>13</volume>(<issue>3</issue>), <fpage>257</fpage>–<lpage>272</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/s10660-013-9120-5" xlink:type="simple">https://doi.org/10.1007/s10660-013-9120-5</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Tornos</surname>, <given-names>J.L.</given-names></string-name>, <string-name><surname>Salazar</surname>, <given-names>J.L.</given-names></string-name>, <string-name><surname>Piles</surname>, <given-names>J.J.</given-names></string-name>, <string-name><surname>Saldana</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Casadesus</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Ruíz-Mas</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Fernández-Navajas</surname>, <given-names>J.</given-names></string-name> (<year>2014</year>). <article-title>An eVoting system based on ring signatures</article-title>. <source>Network Protocols &amp; Algorithms</source>, <volume>6</volume>(<issue>2</issue>), <fpage>38</fpage>–<lpage>54</lpage>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_020">
<mixed-citation publication-type="chapter"><string-name><surname>Yang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Yi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Ryan</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>van Schyndel</surname>, <given-names>R.G.</given-names></string-name>, <string-name><surname>Han</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Nepal</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Song</surname>, <given-names>A.</given-names></string-name> (<year>2017</year>). <chapter-title>A verifiable ranked choice internet voting system</chapter-title>. In: <source>Web Information Systems Engineering – WISE 2017 – 18th International Conference, Proceedings, Part II</source>, <conf-loc>Puschino, Russia, October 7–11, 2017</conf-loc>, pp. <fpage>490</fpage>–<lpage>501</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-319-68786-5_39" xlink:type="simple">https://doi.org/10.1007/978-3-319-68786-5_39</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_021">
<mixed-citation publication-type="journal"><string-name><surname>Yang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Yi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Nepal</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Kelarev</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Han</surname>, <given-names>F.</given-names></string-name> (<year>2018</year>). <article-title>A secure verifiable ranked choice online voting system based on homomorphic encryption</article-title>. <source>IEEE Access</source>, <volume>6</volume>, <fpage>20506</fpage>–<lpage>20519</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/ACCESS.2018.2817518" xlink:type="simple">https://doi.org/10.1109/ACCESS.2018.2817518</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor503_ref_022">
<mixed-citation publication-type="journal"><string-name><surname>Yang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Yi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Nepal</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Kelarev</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Han</surname>, <given-names>F.</given-names></string-name> (<year>2020</year>). <article-title>Blockchain voting: publicly verifiable online voting protocol without trusted tallying authorities</article-title>. <source>Future Generation Computer Systems</source>, <volume>112</volume>, <fpage>859</fpage>–<lpage>874</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.future.2020.06.051" xlink:type="simple">https://doi.org/10.1016/j.future.2020.06.051</ext-link>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
