<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>MAYA: A Short Shuffle Argument With Fast Verification</title>
    <link>https://thaodoanvan.github.io/maya_website/</link>
    <description>Recent content on MAYA: A Short Shuffle Argument With Fast Verification</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://thaodoanvan.github.io/maya_website/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Paper</title>
      <link>https://thaodoanvan.github.io/maya_website/paper/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/paper/</guid>
      <description>&lt;h1 id=&#34;maya-a-short-shuffle-argument-with-fast-verification&#34;&gt;MAYA: A Short Shuffle Argument With Fast Verification&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Thi Van Thao Doan, Olivier Pereira, and Thomas Peters&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Affiliation:&lt;/strong&gt; UCLouvain, B-1348 Louvain-la-Neuve, Belgium&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Published at:&lt;/strong&gt; 33rd ACM Conference on Computer and Communications Security
(&lt;a href=&#34;https://www.sigsac.org/ccs/CCS2026/call-for/call-for-papers.html&#34;&gt;CCS&#39;26&lt;/a&gt;),
to appear.&lt;/p&gt;
&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;
&lt;p&gt;Shuffle arguments dominate the audit data in end-to-end verifiable elections
when homomorphic tallying is not applicable. Deployed mixnets in countries
like Australia, Estonia, Israel, Norway, Spain, and Switzerland produce
proofs that scale linearly, reaching gigabytes for millions of ciphertexts.
MAYA achieves O(log n) communication complexity with a transparent setup
requiring no trusted parameters.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verifier Specification</title>
      <link>https://thaodoanvan.github.io/maya_website/specification/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/specification/</guid>
      <description>&lt;p&gt;The MAYA Verifier Specification is a complete, language-agnostic verification
procedure. Together with the election record, it enables an independent
developer to write a working verifier from scratch, in any programming
language, without access to the MAYA source code or the research paper.&lt;/p&gt;
&lt;h2 id=&#34;specification-documents&#34;&gt;Specification Documents&lt;/h2&gt;
&lt;figure class=&#34;data-table simple&#34;&gt;
&lt;div class=&#34;table-scroll&#34;&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Version&lt;/th&gt;&lt;th&gt;Specification&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1.0&lt;/td&gt;&lt;td&gt;&lt;a class=&#34;dl-link&#34; href=&#34;https://thaodoanvan.github.io/maya_website/spec/maya_verifier_spec_v1.pdf&#34; download&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;15&#34; height=&#34;15&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4&#34;/&gt;&lt;polyline points=&#34;7 10 12 15 17 10&#34;/&gt;&lt;line x1=&#34;12&#34; y1=&#34;15&#34; x2=&#34;12&#34; y2=&#34;3&#34;/&gt;&lt;/svg&gt;Download&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;September 2026&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/figure&gt;
The specification defines the exact binary format of all data, the
deterministic derivation of public parameters, the hash-based Fiat–Shamir
transcript protocol, and the step-by-step verification algorithm.
&lt;h2 id=&#34;what-the-specification-covers&#34;&gt;What the Specification Covers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Group and scalar arithmetic for Ristretto255 (Section 3)&lt;/li&gt;
&lt;li&gt;Data formats and serialization (Section 4)&lt;/li&gt;
&lt;li&gt;Deterministic generator derivation / CRS (Section 5)&lt;/li&gt;
&lt;li&gt;Hash computation and Fiat–Shamir transcript (Section 6)&lt;/li&gt;
&lt;li&gt;Challenge vector derivation (Section 7)&lt;/li&gt;
&lt;li&gt;Complete verification algorithm in 6 steps (Section 8)&lt;/li&gt;
&lt;li&gt;IPA and eCP sub-protocols (Sections 9–10)&lt;/li&gt;
&lt;li&gt;Test vectors for every intermediate computation (Section 11)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;test-vectors&#34;&gt;Test Vectors&lt;/h2&gt;
&lt;p&gt;Section 11 of the specification provides reference values for every
intermediate computation a verifier performs, so that each stage can be
validated independently before moving to the next. A mismatch at any stage
pinpoints the module that needs fixing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MAYAsk: Swiss-Knife Extensions</title>
      <link>https://thaodoanvan.github.io/maya_website/mayask/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/mayask/</guid>
      <description>&lt;p&gt;Real-world election systems rarely fit the standard cryptographic model of a
single list of ciphertexts encrypted under one public key. In practice,
ciphertexts may need to remain grouped by precinct or municipality, different
groups may use different encryption keys, and shuffling may be combined with
partial decryption or secret exponentiation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MAYAsk&lt;/strong&gt; — MAYA Swiss-Knife — is the extended construction that accommodates
these settings while preserving the properties of the base protocol.
Specifically, it gives logarithmic-size arguments for block-respecting
shuffles, shuffles of ciphertexts encrypted under different public keys,
shuffles combined with partial decryption using a mixer&amp;rsquo;s secret-key share,
and shuffles combined with secret exponentiation of selected ciphertext
components. In all cases the resulting arguments retain logarithmic size in
the number of ciphertexts, require a transparent setup, and have verification
dominated by a single multi-scalar multiplication.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting Started: Build Your Own Verifier</title>
      <link>https://thaodoanvan.github.io/maya_website/getting-started/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/getting-started/</guid>
      <description>&lt;p&gt;The MAYA verifier can be built and tested incrementally. Each step below
produces a testable output that can be validated against the test vectors
in the specification before moving to the next. You can implement the
verifier in any programming language.&lt;/p&gt;
&lt;h2 id=&#34;where-the-proof-comes-from&#34;&gt;Where the Proof Comes From&lt;/h2&gt;
&lt;p&gt;A verifier reads two inputs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;input ciphertexts file&lt;/strong&gt;, taken from the bulletin board or from the
previous mix layer. It carries the number of ciphertexts n, the two
coordinate vectors of the input ciphertexts, and the public key (g, f, h).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;proof bundle&lt;/strong&gt;, produced by the mix server that performed the
shuffle. It carries the serialized proof, the vector commitment V, and the
coordinate vectors of the output ciphertexts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Both files are plain binary with the layout fixed in Section 4 of the
specification, and both must have exactly the length implied by their declared
counters. An implementation may read the same fields from a database or a
network API instead, as long as every field is present and every structural
check is applied.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code &amp; Repositories</title>
      <link>https://thaodoanvan.github.io/maya_website/code/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/code/</guid>
      <description>&lt;p&gt;MAYA is implemented in Rust with two curve instantiations. The source code
accompanies the research paper.&lt;/p&gt;
&lt;p&gt;The current artifact reproduces the performance measurements reported in the paper. A public API for allowing users to shuffle their own ciphertexts is still under development. Once available, this page will be updated with the corresponding usage instructions and commands.&lt;/p&gt;
&lt;h2 id=&#34;repositories&#34;&gt;Repositories&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Repository&lt;/th&gt;
          &lt;th&gt;Contents&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/uclcrypto/maya_shuffle_proof&#34;&gt;maya_shuffle_proof&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;The code evaluated in the paper, as &lt;code&gt;maya_ristretto&lt;/code&gt; (Ristretto255, curve25519-dalek) and &lt;code&gt;maya_p256&lt;/code&gt; (NIST P-256, arkworks)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/uclcrypto/maya_extensions&#34;&gt;maya_extensions&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;The current implementation, together with the MAYAsk protocols&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;See the &lt;a href=&#34;https://thaodoanvan.github.io/maya_website/changelog/&#34;&gt;Changelog&lt;/a&gt; for what changed between
them. The commands below are for &lt;code&gt;maya_shuffle_proof&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Changelog</title>
      <link>https://thaodoanvan.github.io/maya_website/changelog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/changelog/</guid>
      <description>&lt;p&gt;Two versions of the MAYA implementation are public.&lt;/p&gt;
&lt;h2 id=&#34;version-2--current-august-2026&#34;&gt;Version 2 — current (August 2026)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/uclcrypto/maya_extensions&#34;&gt;uclcrypto/maya_extensions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One hash function.&lt;/strong&gt; Version 1 used three primitives: a Merlin transcript for
Fiat–Shamir, SHA3-512 for the Pedersen generators, and SHAKE256 for the
Bulletproof generators. Version 2 uses HMAC-SHA-256 for all three. HMAC-SHA-256
is in the standard library of every mainstream language, so a verifier can be
written in any of them without reproducing a Rust-specific transcript
construction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Team</title>
      <link>https://thaodoanvan.github.io/maya_website/team/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/team/</guid>
      <description>&lt;p&gt;MAYA is developed at UCLouvain (Université catholique de Louvain),
Louvain-la-Neuve, Belgium.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Thi Van Thao Doan&lt;/strong&gt; — Researcher, UCLouvain&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olivier Pereira&lt;/strong&gt; — Professor, UCLouvain&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thomas Peters&lt;/strong&gt; — Professor, UCLouvain&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contact&#34;&gt;Contact&lt;/h2&gt;
&lt;p&gt;For questions about the MAYA specification, implementation, or to report
issues, please open an issue on the GitHub repository or contact the team
at UCLouvain.&lt;/p&gt;
&lt;h2 id=&#34;acknowledgments&#34;&gt;Acknowledgments&lt;/h2&gt;
&lt;p&gt;This work has been funded in part by the Walloon Region through the project
CyberExcellence (convention number 2110186).&lt;/p&gt;</description>
    </item>
    <item>
      <title>FAQ</title>
      <link>https://thaodoanvan.github.io/maya_website/faq/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://thaodoanvan.github.io/maya_website/faq/</guid>
      <description>&lt;h3 id=&#34;what-is-maya&#34;&gt;What is MAYA?&lt;/h3&gt;
&lt;p&gt;MAYA is a shuffle argument with O(log n) communication complexity and a
transparent setup. It proves that a mix server correctly permuted and
re-randomized a list of ElGamal ciphertexts without altering, adding,
or dropping any vote.&lt;/p&gt;
&lt;h3 id=&#34;what-curves-does-maya-support&#34;&gt;What curves does MAYA support?&lt;/h3&gt;
&lt;p&gt;MAYA is instantiated on two curves: Ristretto255 (Curve25519, via
curve25519-dalek) and NIST P-256 (via arkworks). The protocol is
algebraically generic and can be adapted to other prime-order groups.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
