\clearpage \begin{appendices} \section{Implementation} \label{app:impl} \label{app:code} \begin{table}[!ht] \begin{tabular}{l l} Repository: & \url{https://cgit.brentj.es/cmix.git/} \\ Documentation: & \url{https://dump.brentj.es/cmix/} \\ \end{tabular} \end{table} \section{PC specifications} \label{app-specs} \begin{table}[!ht] \centering \begin{tabular}{|l l|} \hline CPU: &Intel Core i7 960 @ 3.20GHz\\ Microcode: &0x19 \\ RAM: &3x 4GB @ 1066 MHz DDR3 \\ Bogomips: &6619.51 \\ OS: &Arch Linux (4.14.30-1-lts) \\ Turbo Boost: &off \\ \hline \end{tabular} \caption{Basic PC specs} \end{table} \begin{table}[!ht] \noindent \centering \begin{tabular}{|l r r r|} \hline System Benchmarks Index Values &BASELINE & RESULT & INDEX\\\hline Dhrystone 2 using register variables &116700.0 &28324596.9 &2427.1\\\hline Double-Precision Whetstone & 55.0 & 3683.4 & 669.7\\\hline Execl Throughput & 43.0 & 4629.5 &1076.6\\\hline File Copy 1024 bufsize 2000 maxblocks & 3960.0 & 982540.2 &2481.2\\\hline File Copy 256 bufsize 500 maxblocks & 1655.0 & 275396.4 &1664.0\\\hline File Copy 4096 bufsize 8000 maxblocks & 5800.0 & 1976435.4 &3407.6\\\hline Pipe Throughput & 12440.0 & 1939188.3 &1558.8\\\hline Pipe-based Context Switching & 4000.0 & 115504.5 & 288.8\\\hline Process Creation & 126.0 & 5137.2 & 407.7\\\hline Shell Scripts (1 concurrent) & 42.4 & 1885.8 & 444.8\\\hline Shell Scripts (8 concurrent) & 6.0 & 1093.4 &1822.3\\\hline System Call Overhead & 15000.0 & 2935648.7 &1957.1\\\hline \hline System Benchmarks Index Score & & &1178.4\\\hline \hline \end{tabular} \caption{Unix Bench index results to give a comparable baseline} \end{table} \section{Compiler options} \label{app-ccopts} both C and C++ optimization related compiler flags: \begin{table}[!ht] \begin{tabularx}{\columnwidth}{p{0.12\columnwidth} p{0.88\columnwidth}} -O3: &3rd\ level\ optimizations\\ \end{tabularx} \end{table} %\section{Some scripts to do result processing} % %The script that converts the output from the statsd to a \LaTeX\xspace table format. % %\begin{lstlisting} %cut -d ',' -f 2,5,8,11,14,17,20,23,26,29,32,35 | awk 'BEGIN {FS=",";}; {if (NR == 1) {print "prepre (s) & premix (s) & prepost (s) & realpre (s) & realmix (s) & realpost (s) \\\\\hline\\hline";} else{ OFMT="%.2f"; c=1000000000; print ($5-$6)/c,"&",($1-$2)/c,"&",($3-$4)/c,"&",($11-$12)/c,"&",($7-$8)/c,"&",($9-$10)/c,"\\\\\\hline";}}' %\end{lstlisting} % %Script that calculates the mean and standard deviation of each column. % %\begin{lstlisting} %tail -n +2 | cut -d ',' -f 2,5,8,11,14,17,20,23,26,29,32,35 | awk 'BEGIN {FS=",";}; { OFMT="%.2f"; c=1000000000; print ($5-$6)/c,($1-$2)/c,($3-$4)/c,($11-$12)/c,($7-$8)/c,($9-$10)/c;}' | awk '{for(i=1;i<=NF;i++) {sum[i] += $i; sumsq[i] += ($i)^2}} END {for (i=1;i<=NF;i++) {printf " & %.3f (%.3f)", sum[i]/NR, sqrt((sumsq[i]-sum[i]^2/NR)/NR)} printf("\n")}' %\end{lstlisting} \clearpage \section{Averaged results} \label{app:addtables} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/100_ec.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using ed25519 and running 100 clients.} \label{tab:ec100} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/100_mg.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using 2048 bit multiplicative group and running 100 clients.} \end{table} %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/200_ec.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using ed25519 and running 200 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/200_mg.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using 2048 bit multiplicative group and running 200 clients.} \end{table} %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/300_ec.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using ed25519 and running 300 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/300_mg.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using 2048 bit multiplicative group and running 300 clients.} \end{table} \vfill \clearpage %----------------------------------------------------------------------- \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/400_ec.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using ed25519 and running 400 clients.} \end{table} \begin{table}[!ht] \centering \begin{footnotesize} \begin{tabular}{|r|r|r|r|r|r|r|} \hline \input{results/400_mg.tab} \end{tabular} \end{footnotesize} \caption{Node time average over 100 runs with standard deviation in seconds using 2048 bit multiplicative group and running 400 clients.} \label{tab:mg400} \end{table} \newpage \section{Crypto interface} \label{app:cryptolst} \lstinputlisting[ language=C++, caption={ed25519.h}, label={lst:ed25519.h}, keywordstyle=\color{blue}, stringstyle=\color{red} ]{appendices/ed25519.h} \newpage \lstinputlisting[ language=C++, caption={elgamal.h}, label={lst:elgamal.h}, keywordstyle=\color{blue}, stringstyle=\color{red} ]{appendices/elgamal.h} %======= %----------------------------------------------------------------------- %\vfill %\clearpage % %\section{Raw Result tables} %\label{app-tables} % %\newcommand{\rtable}[2]{ %\begin{centering} %\begin{scriptsize} %\begin{longtable}{|r|r|r|r|r|r|} %\hline %\input{#1} %\caption{#2} %\end{longtable} %\end{scriptsize} %\end{centering} %\clearpage %} % %\vspace{2.355em} % %\rtable{results/result_node1_100_ON.tab}{Timings of Node 1 elliptic curve algorithm with 100 clients} % %\rtable{results/result_node2_100_ON.tab}{Timings of Node 2 elliptic curve algorithm with 100 clients} % %\rtable{results/result_node3_100_ON.tab}{Timings of Node 3 elliptic curve algorithm with 100 clients} % %\rtable{results/result_node1_100_OFF.tab}{Timings of Node 1 multiplicative group algorithm with 100 clients} % %\rtable{results/result_node2_100_OFF.tab}{Timings of Node 2 multiplicative group algorithm with 100 clients} % %\rtable{results/result_node3_100_OFF.tab}{Timings of Node 3 multiplicative group algorithm with 100 clients} % %%--------------------------------------------------------------------------------- % %\rtable{results/result_node1_200_ON.tab}{Timings of Node 1 elliptic curve algorithm with 200 clients} % %\rtable{results/result_node2_200_ON.tab}{Timings of Node 2 elliptic curve algorithm with 200 clients} % %\rtable{results/result_node3_200_ON.tab}{Timings of Node 3 elliptic curve algorithm with 200 clients} % %\rtable{results/result_node1_200_OFF.tab}{Timings of Node 1 multiplicative group algorithm with 200 clients} % %\rtable{results/result_node2_200_OFF.tab}{Timings of Node 2 multiplicative group algorithm with 200 clients} % %\rtable{results/result_node3_200_OFF.tab}{Timings of Node 3 multiplicative group algorithm with 200 clients} % %%--------------------------------------------------------------------------------- % %\rtable{results/result_node1_300_ON.tab}{Timings of Node 1 elliptic curve algorithm with 300 clients} % %\rtable{results/result_node2_300_ON.tab}{Timings of Node 2 elliptic curve algorithm with 300 clients} % %\rtable{results/result_node3_300_ON.tab}{Timings of Node 3 elliptic curve algorithm with 300 clients} % %\rtable{results/result_node1_300_OFF.tab}{Timings of Node 1 multiplicative group algorithm with 300 clients} % %\rtable{results/result_node2_300_OFF.tab}{Timings of Node 2 multiplicative group algorithm with 300 clients} % %\rtable{results/result_node3_300_OFF.tab}{Timings of Node 3 multiplicative group algorithm with 300 clients} % %%--------------------------------------------------------------------------------- % %\rtable{results/result_node1_400_ON.tab}{Timings of Node 1 elliptic curve algorithm with 400 clients} % %\rtable{results/result_node2_400_ON.tab}{Timings of Node 2 elliptic curve algorithm with 400 clients} % %\rtable{results/result_node3_400_ON.tab}{Timings of Node 3 elliptic curve algorithm with 400 clients} % %\rtable{results/result_node1_400_OFF.tab}{Timings of Node 1 multiplicative group algorithm with 400 clients} % %\rtable{results/result_node2_400_OFF.tab}{Timings of Node 2 multiplicative group algorithm with 400 clients} % %\rtable{results/result_node3_400_OFF.tab}{Timings of Node 3 multiplicative group algorithm with 400 clients} % %%--------------------------------------------------------------------------------- % %\rtable{results/result_node1_500_ON.tab}{Timings of Node 1 elliptic curve algorithm with 500 clients} % %\rtable{results/result_node2_500_ON.tab}{Timings of Node 2 elliptic curve algorithm with 500 clients} % %\rtable{results/result_node3_500_ON.tab}{Timings of Node 3 elliptic curve algorithm with 500 clients} % %\rtable{results/result_node1_500_OFF.tab}{Timings of Node 1 multiplicative group algorithm with 500 clients} % %\rtable{results/result_node2_500_OFF.tab}{Timings of Node 2 multiplicative group algorithm with 500 clients} % %\rtable{results/result_node3_500_OFF.tab}{Timings of Node 3 multiplicative group algorithm with 500 clients} % %%--------------------------------------------------------------------------------- % %\clearpage %Keep this as last appendix. %\section{Reference manual} %\includepdf[pages=1]{appendices/refman.pdf} %\includepdf[pages=2-]{appendices/refman.pdf} \end{appendices}