\section{Introduction}

Showing that one piece of software is faster than another is somewhat of an art. Trying to keep as many of the variables the same while varying the one you are interested in is not easy. Especially when the implementations are not of the same algorithm. This is the case for the \cmix mix network, where you can choose between doing \elgamal in either multiplicative groups or in elliptic curves. This makes benchmarking the fundamental performance differences between these two difficult and interesting. This paper and companion framework implementation focuses on facilitating a fair comparison between the two, by providing a common interface that can implement the \cmix primitives. Allowing 2 different cryptographic back-ends to be implemented.

The goal of this research is to verify whether there is an benefit in using \elgamal over elliptic curves. This paper implements an elliptic curve and multiplicative group. And compares them  back-end with the same underlying cryptographic primitive library that supported both.

We will try to show how \cmix works and how it needs to be implemented to be safe against some of the known attacks of which the mitigations will influence the delay of the individual \cmix phases. Explain some of the implementation details and problems that needed to be solved and what kind of impact it had on the run time of the algorithms, and elaborate how we timed the applications and gathered data keeping in mind the limitations of the platform used.

Finally we will show that both of the \cmix implementations supplied by this research paper scale linearly in the amount of clients that participate in a run, and that elliptic curve implementations for \cmix are an interesting alternative to multiplicative group with espei.

The paper is structured as follows. First we will talk about other anonymity networks and their current day use in \cref{sec:anon}. In \cref{sec:cmix} we will talk about the \cmix network, how it works and why it uses \elgamal. \Cref{sec:related} discusses related work. Followed by \cref{sec:implementation}; which talks about the benchmark implementation and some implementation details. \Cref{sec:cmixaddtions} will talk about some flaws in the original \cmix protocol and discusses how to fix them. Then we talk about the results in \cref{sec:results}, followed by the discussion of the results in \cref{sec:discussion}. Final thought and further research ideas are in the conclusion \cref{sec:conclusion}.