From 9e694994681b0b2861553d0a50bca6623b546dd2 Mon Sep 17 00:00:00 2001
From: Gian Demarmels <gian@demarmels.org>
Date: Mon, 14 Feb 2022 00:03:06 +0100
Subject: CS thesis

---
 doc/cs/content/appendix.tex | 677 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 677 insertions(+)
 create mode 100644 doc/cs/content/appendix.tex

(limited to 'doc/cs/content/appendix.tex')

diff --git a/doc/cs/content/appendix.tex b/doc/cs/content/appendix.tex
new file mode 100644
index 00000000..137a29ba
--- /dev/null
+++ b/doc/cs/content/appendix.tex
@@ -0,0 +1,677 @@
+\appendix
+
+\chapter{Installation}
+These installation instructions are meant to run the code developed within this thesis for development- and review-purposes.
+For a comprehensive installation instruction follow the Taler documentation
+\cite{taler-documentation}.
+
+\begin{bfhNoteBox}
+    These instructions are used and tested on Ubuntu 21.10.
+\end{bfhNoteBox}
+
+\section{Dependencies and Setup}
+The following dependencies need to be installed for GNUnet and Taler Exchange:
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+sudo apt update
+sudo apt install git curl build-essential gcc automake make \ texinfo autoconf uncrustify libtool pkgconf gettext gnutls-bin \ libcurl4-gnutls-dev libgcrypt20-dev libidn2-dev libjansson-dev \ libnss3-dev sqlite pipenv libltdl-dev libsodium-dev libpq-dev \ autopoint libunistring-dev libextractor-dev libpng-dev \ libpulse-dev libsqlite3-dev recutils python3-jinja2 sqlite yapf3 \ postgresql libpq-dev wget libmicrohttpd-dev
+export LD\_LIBRARY\_PATH=/usr/local/lib
+\end{ubuntu}
+
+\begin{bfhBox}[BFH-MediumBlue]{Install in a container}
+The installation can also be done in a docker or podman container with the ubuntu:21.10 image:
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+podman run -it --name talertest ubuntu:21.10
+\end{ubuntu}
+\end{bfhBox}
+
+\section{Install GNUnet Core}
+GNUnet core is both a dependency of the Taler exchange and where we implemented the Clause Blind Schnorr Signature Scheme.
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+git clone https://git.gnunet.org/gnunet.git
+cd gnunet
+./bootstrap
+./configure --enable-benchmarks --prefix=/usr/local
+make
+make install
+make check # Run optionally to verify installation and run tests
+\end{ubuntu}
+
+To run benchmarks run:
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+./src/util/perf_crypto_cs
+./src/util/perf_crypto_rsa
+\end{ubuntu}
+
+\section{Install Taler Exchange}
+\begin{bfhWarnBox}
+Ensure that the current user has privileges in postgresql.
+One possible way to do this is:\\
+(where [user] has to be replaced with the name of the system user running the tests)
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+service postgresql start
+sudo su
+su - postgres
+psql
+CREATE ROLE [user] LOGIN SUPERUSER;
+CREATE DATABASE [user] OWNER [user];
+exit
+\end{ubuntu}
+\end{bfhWarnBox}
+
+The Taler exchange can be installed as followed:
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+service postgresql start
+createdb talercheck
+git clone https://git.taler.net/exchange.git
+cd exchange
+./bootstrap
+./configure --with-gnunet=/usr/local --prefix=/usr/local
+./make
+./make install
+./make check # Run optionally to verify installation and run tests
+\end{ubuntu}
+
+To execute the security module benchmarks run:
+\setupLinuxPrompt{student}
+\begin{ubuntu}
+cd src/util
+./test_helper_cs
+./test_helper_rsa
+\end{ubuntu}
+
+\chapter{Performance Measurements}
+\label{chap:app-perf}
+
+\section{AMD Ryzen 7 PRO 5850U (Notebook)}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-amd-ryzen-7}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: 8-core AMD Ryzen 7 PRO 5850U \\
+    Architecture: amd64 \\
+    OS: Ubuntu 21.10 Linux 5.13.0-25-generic \#26-Ubuntu SMP Fri Jan 7 15:48:31 UTC 2022 x86\_64 x86\_64 x86\_64 GNU/Linux \\
+    libsodium:amd64 version: 1.0.18-1build1 \\ 
+    libgcrypt:amd64 version: 1.8.7-5ubuntu2 
+\end{bfhBox}
+
+\begin{table}[h]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 0.204 ms \\\hline
+        RSA 1024 bit & 10x key generation & 126 ms \\\hline
+        RSA 2048 bit & 10x key generation & 903 ms \\\hline
+        RSA 3072 bit & 10x key generation & 2684 ms \\\hline
+        RSA 4096 bit & 10x key generation & 10 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 0.444 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.094 ms \\\hline
+        CS & 10x blinding & 3.332 ms \\\hline
+        RSA 1024 bit & 10x blinding & 1.282 ms \\\hline
+        RSA 2048 bit & 10x blinding & 3.012 ms \\\hline
+        RSA 3072 bit & 10x blinding & 5 ms \\\hline
+        RSA 4096 bit & 10x blinding & 9 ms \\\hline
+        \hline
+        CS & 10x signing & 0.077 ms \\\hline
+        RSA 1024 bit & 10x signing & 7 ms \\\hline
+        RSA 2048 bit & 10x signing & 34 ms \\\hline
+        RSA 3072 bit & 10x signing & 86 ms \\\hline
+        RSA 4096 bit & 10x signing & 183 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.001 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 2.991 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 10 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 24 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 44 ms \\\hline
+        \hline
+        CS & 10x verifying & 1.358 ms \\\hline
+        RSA 1024 bit & 10x verifying & 0.876 ms \\\hline
+        RSA 2048 bit & 10x verifying & 1.836 ms \\\hline
+        RSA 3072 bit & 10x verifying & 3.075 ms \\\hline
+        RSA 4096 bit & 10x verifying & 5 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on AMD Ryzen 7}
+    \label{tab:comp-sign-amd-ryzen-7}
+\end{table}
+
+\section{Intel(R) Core(TM) i7-8565U}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-intel-i7}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: 8-core  Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz \\
+    Architecture: amd64 \\
+    OS: Ubuntu 21.10 Linux 5.13.0-25-generic \#26-Ubuntu SMP Fri Jan 7 15:48:31 UTC 2022 x86\_64 x86\_64 x86\_64 GNU/Linux \\
+    libsodium:amd64 version: 1.0.18-1build1 \\ 
+    libgcrypt:amd64 version: 1.8.7-5ubuntu2 
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 1.05 ms \\\hline
+        RSA 1024 bit & 10x key generation & 189 ms \\\hline
+        RSA 2048 bit & 10x key generation & 1555 ms \\\hline
+        RSA 3072 bit & 10x key generation & 5000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 11 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 2.261 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.521 ms \\\hline
+        CS & 10x blinding & 13 ms \\\hline
+        RSA 1024 bit & 10x blinding & 2.6 ms \\\hline
+        RSA 2048 bit & 10x blinding & 4.12 ms \\\hline
+        RSA 3072 bit & 10x blinding & 7 ms \\\hline
+        RSA 4096 bit & 10x blinding & 11 ms \\\hline
+        \hline
+        CS & 10x signing & 0.405 ms \\\hline
+        RSA 1024 bit & 10x signing & 9 ms \\\hline
+        RSA 2048 bit & 10x signing & 44 ms \\\hline
+        RSA 3072 bit & 10x signing & 108 ms \\\hline
+        RSA 4096 bit & 10x signing & 216 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.005 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 3.353 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 12 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 27 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 47 ms \\\hline
+        \hline
+        CS & 10x verifying & 4.413 ms \\\hline
+        RSA 1024 bit & 10x verifying & 1.202 ms \\\hline
+        RSA 2048 bit & 10x verifying & 2.304 ms \\\hline
+        RSA 3072 bit & 10x verifying & 4.094 ms \\\hline
+        RSA 4096 bit & 10x verifying & 6 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on Intel(R) Core(TM) i7-8565U}
+    \label{tab:comp-sign-intel-i7}
+\end{table}
+
+\section{AMD Ryzen Threadripper 1950X 16-Core Processor}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-amd-threadripper}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: AMD Ryzen Threadripper 1950X 16-Core Processor \\
+    Architecture: amd64 \\
+    OS: Linux 5.13.0-trunk-amd64 \#1 SMP Debian 5.13.12-1~exp1
+    (2021-08-20) x86\_64 GNU/Linux \\
+    libsodium:amd64 version: 1.9.4-5 \\ 
+    libgcrypt:amd64 version: 1.0.18-1 
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 0.442 ms \\\hline
+        RSA 1024 bit & 10x key generation & 145 ms \\\hline
+        RSA 2048 bit & 10x key generation & 1167 ms \\\hline
+        RSA 3072 bit & 10x key generation & 6000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 11 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation &  1.043 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.242 ms \\\hline
+        CS & 10x blinding & 7 ms \\\hline
+        RSA 1024 bit & 10x blinding &  2.258 ms \\\hline
+        RSA 2048 bit & 10x blinding &  4.744 ms \\\hline
+        RSA 3072 bit & 10x blinding &  9 ms \\\hline
+        RSA 4096 bit & 10x blinding &  14 ms \\\hline
+        \hline
+        CS & 10x signing &  0.270 ms \\\hline
+        RSA 1024 bit & 10x signing &  10 ms \\\hline
+        RSA 2048 bit & 10x signing &  47 ms \\\hline
+        RSA 3072 bit & 10x signing &  119 ms \\\hline
+        RSA 4096 bit & 10x signing &  248 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.003 ms \\\hline
+        RSA 1024 bit & 10x unblinding &  4.086 ms \\\hline
+        RSA 2048 bit & 10x unblinding &  14 ms \\\hline
+        RSA 3072 bit & 10x unblinding &  34 ms \\\hline
+        RSA 4096 bit & 10x unblinding &  60 ms \\\hline
+        \hline
+        CS & 10x verifying & 2.392 ms \\\hline
+        RSA 1024 bit & 10x verifying &  1.137 ms \\\hline
+        RSA 2048 bit & 10x verifying &  2.797 ms \\\hline
+        RSA 3072 bit & 10x verifying &  5 ms \\\hline
+        RSA 4096 bit & 10x verifying &  7 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on AMD Ryzen Threadripper 1950X}
+    \label{tab:comp-sign-amd-threadripper}
+\end{table}
+
+\section{Intel(R) Xeon(R) CPU E5-2630}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-intel-xeon}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz \\
+    Architecture: amd64 \\
+    OS:  Linux 5.10.0-8-amd64 \#1 SMP Debian 5.10.46-4 (2021-08-03) x86\_64\\
+    libsodium:amd64 version:  1.0.18-1\\ 
+    libgcrypt:amd64 version:  1.8.7-6
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 0.606 ms \\\hline
+        RSA 1024 bit & 10x key generation & 329 ms \\\hline
+        RSA 2048 bit & 10x key generation & 3210 ms \\\hline
+        RSA 3072 bit & 10x key generation & 12 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 40 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation &  1.527 ms \\\hline
+        CS & 10x derivation of blinding secrets &  0.329 ms \\\hline
+        CS & 10x blinding & 9 ms \\\hline
+        RSA 1024 bit & 10x blinding &  4.026 ms \\\hline
+        RSA 2048 bit & 10x blinding &  9 ms \\\hline
+        RSA 3072 bit & 10x blinding &  18 ms \\\hline
+        RSA 4096 bit & 10x blinding &  27 ms \\\hline
+        \hline
+        CS & 10x signing &  0.274 ms \\\hline
+        RSA 1024 bit & 10x signing &  21 ms \\\hline
+        RSA 2048 bit & 10x signing &  96 ms \\\hline
+        RSA 3072 bit & 10x signing &  237 ms \\\hline
+        RSA 4096 bit & 10x signing &  482 ms \\\hline
+        \hline
+        CS & 10x unblinding &  0.004 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 7 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 25 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 58 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 99 ms \\\hline
+        \hline
+        CS & 10x verifying & 4.334 ms \\\hline
+        RSA 1024 bit & 10x verifying & 2.190 ms \\\hline
+        RSA 2048 bit & 10x verifying & 5 ms \\\hline
+        RSA 3072 bit & 10x verifying & 11 ms \\\hline
+        RSA 4096 bit & 10x verifying & 14 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on Intel(R) Xeon(R) CPU E5-2630}
+    \label{tab:comp-sign-intel-xeon}
+\end{table}
+
+\section{Intel(R) Pentium(R) 3558U}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-intel-pentium}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: Intel(R) Pentium(R) 3558U @ 1.70GHz \\
+    Architecture: amd64 \\
+    OS: Linux 5.10.0-8-amd64 \#1 SMP Debian 5.10.46-3 (2021-07-28) x86\_64\\
+    libsodium:amd64 version:  1.0.18-1\\ 
+    libgcrypt:amd64 version:  1.8.7-6
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 0.53 ms \\\hline
+        RSA 1024 bit & 10x key generation & 524 ms \\\hline
+        RSA 2048 bit & 10x key generation & 3357 ms \\\hline
+        RSA 3072 bit & 10x key generation & 15 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 37 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 1.375 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.349 ms \\\hline
+        CS & 10x blinding & 8 ms \\\hline
+        RSA 1024 bit & 10x blinding & 4.86 ms \\\hline
+        RSA 2048 bit & 10x blinding & 11 ms \\\hline
+        RSA 3072 bit & 10x blinding & 19 ms \\\hline
+        RSA 4096 bit & 10x blinding & 31 ms \\\hline
+        \hline
+        CS & 10x signing &  0.283 ms \\\hline
+        RSA 1024 bit & 10x signing & 26 ms \\\hline
+        RSA 2048 bit & 10x signing & 117 ms \\\hline
+        RSA 3072 bit & 10x signing & 292 ms \\\hline
+        RSA 4096 bit & 10x signing & 571 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.003 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 8 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 30 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 67 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 111 ms \\\hline
+        \hline
+        CS & 10x verifying & 3.769 ms \\\hline
+        RSA 1024 bit & 10x verifying & 2.616 ms \\\hline
+        RSA 2048 bit & 10x verifying & 6 ms \\\hline
+        RSA 3072 bit & 10x verifying & 11 ms \\\hline
+        RSA 4096 bit & 10x verifying & 17 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on Intel(R) Pentium(R) 3558U}
+    \label{tab:comp-sign-intel-pentium}
+\end{table}
+
+
+\section{arm64}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-arm64}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU:  8-core arm64\\
+    Architecture: ARM64 \\
+    OS: Linux ten64 5.11.0-31-generic \#33+testsfp1 SMP Mon Aug 23 16:07:41 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux \\
+    libsodium:arm64 version: 1.8.7-2ubuntu2.1  \\ 
+    libgcrypt:arm64 version: 1.0.18-1
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 2.896 ms \\\hline
+        RSA 1024 bit & 10x key generation & 839 ms \\\hline
+        RSA 2048 bit & 10x key generation & 8000 ms \\\hline
+        RSA 3072 bit & 10x key generation & 17 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 82 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 6 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.713 ms \\\hline
+        CS & 10x blinding & 23 ms \\\hline
+        RSA 1024 bit & 10x blinding & 11 ms \\\hline
+        RSA 2048 bit & 10x blinding & 28 ms \\\hline
+        RSA 3072 bit & 10x blinding & 51 ms \\\hline
+        RSA 4096 bit & 10x blinding & 81 ms \\\hline
+        \hline
+        CS & 10x signing & 0.321 ms \\\hline
+        RSA 1024 bit & 10x signing &  57 ms \\\hline
+        RSA 2048 bit & 10x signing & 263 ms \\\hline
+        RSA 3072 bit & 10x signing & 685 ms \\\hline
+        RSA 4096 bit & 10x signing & 1385 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.006 ms \\\hline
+        RSA 1024 bit & 10x unblinding &  23 ms \\\hline
+        RSA 2048 bit & 10x unblinding &  79 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 171 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 296 ms \\\hline
+        \hline
+        CS & 10x verifying & 11ms \\\hline
+        RSA 1024 bit & 10x verifying &  5 ms \\\hline
+        RSA 2048 bit & 10x verifying & 15 ms \\\hline
+        RSA 3072 bit & 10x verifying & 27 ms \\\hline
+        RSA 4096 bit & 10x verifying & 45 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on arm64}
+    \label{tab:comp-sign-arm64}
+\end{table}
+
+\section{AMD Ryzen Embedded R1606G}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-amd-embedded}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: 4-core AMD Ryzen Embedded R1606G with Radeon Vega Gfx\\
+    Architecture: amd64 \\
+    OS: Linux computer 5.13.0-25-generic \#26-Ubuntu SMP Fri Jan 7 15:48:31 UTC 2022 x86\_64 x86\_64 x86\_64 GNU/Linux\\
+    libsodium:amd64 version: 1.8.7-5ubuntu2  \\ 
+    libgcrypt:amd64 version: 1.0.18-1build1
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 2.373 ms \\\hline
+        RSA 1024 bit & 10x key generation & 184 ms \\\hline
+        RSA 2048 bit & 10x key generation & 2132 ms \\\hline
+        RSA 3072 bit & 10x key generation & 8000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 21 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 1.09 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.43 ms \\\hline
+        CS & 10x blinding & 6 ms \\\hline
+        RSA 1024 bit & 10x blinding & 3.886 ms \\\hline
+        RSA 2048 bit & 10x blinding & 7 ms \\\hline
+        RSA 3072 bit & 10x blinding & 14 ms \\\hline
+        RSA 4096 bit & 10x blinding & 23 ms \\\hline
+        \hline
+        CS & 10x signing & 0.379 ms \\\hline
+        RSA 1024 bit & 10x signing & 15 ms \\\hline
+        RSA 2048 bit & 10x signing & 71 ms \\\hline
+        RSA 3072 bit & 10x signing & 177 ms \\\hline
+        RSA 4096 bit & 10x signing & 357 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.001 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 6 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 24 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 53 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 93 ms \\\hline
+        \hline
+        CS & 10x verifying & 2.610 ms \\\hline
+        RSA 1024 bit & 10x verifying & 2.303 ms \\\hline
+        RSA 2048 bit & 10x verifying & 4.386 ms \\\hline
+        RSA 3072 bit & 10x verifying & 7 ms \\\hline
+        RSA 4096 bit & 10x verifying & 11 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on AMD Ryzen Embedded R1606G}
+    \label{tab:comp-sign-amd-embedded}
+\end{table}
+
+\section{risc64}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-risc64}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU:  4-core risc64 processor\\
+    OS: Linux risc-v-unleashed-000 5.11.0-1022-generic \#23~20.04.1-Ubuntu SMP Thu Oct 21 10:16:27 UTC 2021 riscv64 riscv64 riscv64 GNU/Linux\\
+    libsodium:riscv64 version: 1.8.7-5ubuntu2  \\ 
+    libgcrypt:riscv64 version: 1.0.18-1build1
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 4.144 ms \\\hline
+        RSA 1024 bit & 10x key generation & 2923 ms \\\hline
+        RSA 2048 bit & 10x key generation & 28 000 ms \\\hline
+        RSA 3072 bit & 10x key generation & 174 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 600 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 10 ms \\\hline
+        CS & 10x derivation of blinding secrets & 2.514 ms \\\hline
+        CS & 10x blinding & 72 ms \\\hline
+        RSA 1024 bit & 10x blinding & 37 ms \\\hline
+        RSA 2048 bit & 10x blinding & 93 ms \\\hline
+        RSA 3072 bit & 10x blinding & 170 ms \\\hline
+        RSA 4096 bit & 10x blinding & 277 ms \\\hline
+        \hline
+        CS & 10x signing & 1.697 ms \\\hline
+        RSA 1024 bit & 10x signing & 215 ms \\\hline
+        RSA 2048 bit & 10x signing & 1040 ms \\\hline
+        RSA 3072 bit & 10x signing & 2883 ms \\\hline
+        RSA 4096 bit & 10x signing & 5000 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.022 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 62 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 150 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 275 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 431 ms \\\hline
+        \hline
+        CS & 10x verifying & 29 ms \\\hline
+        RSA 1024 bit & 10x verifying & 22 ms \\\hline
+        RSA 2048 bit & 10x verifying & 54 ms \\\hline
+        RSA 3072 bit & 10x verifying & 99 ms \\\hline
+        RSA 4096 bit & 10x verifying & 166 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on risc64}
+    \label{tab:comp-sign-risc64}
+\end{table}
+
+\section{POWER9}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-POWER9}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU:  176-core power9\\
+    architecture: pp64le \\
+    OS: Linux power9 5.11.0-34-generic \#36-Ubuntu SMP Thu Aug 26 19:19:54 UTC 2021 ppc64le ppc64le ppc64le GNU/Linux \\
+    libsodium:a::ppc64el version: 1.8.7-2ubuntu2.1  \\ 
+    libgcrypt::ppc64el version: 1.0.18-1
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 0.275 ms \\\hline
+        RSA 1024 bit & 10x key generation & 290 ms \\\hline
+        RSA 2048 bit & 10x key generation & 3743 ms \\\hline
+        RSA 3072 bit & 10x key generation & 15 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 45 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 0.749 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.267 ms \\\hline
+        CS & 10x blinding & 4.996 ms \\\hline
+        RSA 1024 bit & 10x blinding & 3.952 ms \\\hline
+        RSA 2048 bit & 10x blinding & 10 ms \\\hline
+        RSA 3072 bit & 10x blinding & 17 ms \\\hline
+        RSA 4096 bit & 10x blinding & 27 ms \\\hline
+        \hline
+        CS & 10x signing & 0.221 ms \\\hline
+        RSA 1024 bit & 10x signing & 25 ms \\\hline
+        RSA 2048 bit & 10x signing & 135 ms \\\hline
+        RSA 3072 bit & 10x signing & 381 ms \\\hline
+        RSA 4096 bit & 10x signing & 762 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.002 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 9 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 34 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 80 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 141 ms \\\hline
+        \hline
+        CS & 10x verifying & 2.458 ms \\\hline
+        RSA 1024 bit & 10x verifying & 2.365 ms \\\hline
+        RSA 2048 bit & 10x verifying & 6 ms \\\hline
+        RSA 3072 bit & 10x verifying & 10 ms \\\hline
+        RSA 4096 bit & 10x verifying & 16 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on POWER9}
+    \label{tab:comp-sign-POWER9}
+\end{table}
+
+\section{ARMv7 Processor}
+Detailed comparison of each operation can be found in table \ref{tab:comp-sign-armv7}.
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU:  8-core ARMv7 Processor rev 3 (v7l)
+    Architecture: armv7 \\
+    OS: Linux odroidxu4 4.14.150-odroidxu4 \#2 SMP PREEMPT Mon Oct 28 08:07:45 CET 2019 armv7l GNU/Linux\\
+    libsodium:armhf version: 1.9.4-5   \\ 
+    libgcrypt:armhf version: 1.0.18-1
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{llr}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Operation} & \textbf{Speed} \\\hline
+        CS & 10x key generation & 1.719 ms \\\hline
+        RSA 1024 bit & 10x key generation & 1050 ms \\\hline
+        RSA 2048 bit & 10x key generation & 8000 ms \\\hline
+        RSA 3072 bit & 10x key generation & 53 000 ms \\\hline
+        RSA 4096 bit & 10x key generation & 159 000 ms \\\hline
+        \hline
+        CS & 10x r0, r1 derive and R1,R2 calculation & 3.621 ms \\\hline
+        CS & 10x derivation of blinding secrets & 0.514 ms \\\hline
+        CS & 10x blinding & 24 ms \\\hline
+        RSA 1024 bit & 10x blinding & 10 ms \\\hline
+        RSA 2048 bit & 10x blinding & 26 ms \\\hline
+        RSA 3072 bit & 10x blinding & 45 ms \\\hline
+        RSA 4096 bit & 10x blinding & 78 ms \\\hline
+        \hline
+        CS & 10x signing & 0.481 ms \\\hline
+        RSA 1024 bit & 10x signing & 87 ms \\\hline
+        RSA 2048 bit & 10x signing & 385 ms \\\hline
+        RSA 3072 bit & 10x signing & 1038 ms \\\hline
+        RSA 4096 bit & 10x signing & 2073 ms \\\hline
+        \hline
+        CS & 10x unblinding & 0.008 ms \\\hline
+        RSA 1024 bit & 10x unblinding & 26 ms \\\hline
+        RSA 2048 bit & 10x unblinding & 90 ms \\\hline
+        RSA 3072 bit & 10x unblinding & 195 ms \\\hline
+        RSA 4096 bit & 10x unblinding & 344 ms \\\hline
+        \hline
+        CS & 10x verifying & 11 ms \\\hline
+        RSA 1024 bit & 10x verifying & 5 ms \\\hline
+        RSA 2048 bit & 10x verifying & 15 ms \\\hline
+        RSA 3072 bit & 10x verifying & 28 ms \\\hline
+        RSA 4096 bit & 10x verifying & 42 ms \\\hline
+    \end{tabular}
+    \caption{Comparison on ARMv7}
+    \label{tab:comp-sign-armv7}
+\end{table}
+
+
+\section{Performance of the Security Module}
+These performance measurements are only done on one hardware setup.
+The performance tests of the cryptographic routines are more meaningful, the architecture of the Taler exchange could change a lot.
+Furthermore, there could be made performance improvements at costs of security by doing the operations requiring the private keys directly in the httpd process.
+Because of security reasons, the current design with the security module makes a lot of sense. 
+It has to be kept in mind that the following performance benchmarks are interesting to see, but could vary a lot with changes inside the codebase.
+The performance of the signatures with the security module can be found in table \ref{tab:comp-sign-full}
+\begin{bfhBox}[BFH-MediumBlue]{Setup}
+	CPU: 8-core AMD Ryzen 7 PRO 5850U \\
+    OS: Ubuntu 21.10 Linux 5.13.0-25-generic \#26-Ubuntu SMP Fri Jan 7 15:48:31 UTC 2022 x86\_64 x86\_64 x86\_64 GNU/Linux \\
+    libsodium version: 1.0.18-1build1 \\ 
+    libgcrypt version: 1.8.7-5ubuntu2 
+\end{bfhBox}
+
+\begin{table}[ht]
+    \centering
+    \colorlet{BFH-table}{BFH-MediumBlue!10}
+    \colorlet{BFH-tablehead}{BFH-MediumBlue!50}
+    \setupBfhTabular
+    \begin{tabular}{lll}
+        \rowcolor{BFH-tablehead}
+        \textbf{Signature Scheme} & \textbf{Test} & \textbf{Speed} \\\hline
+        CS & 100 sequential signature operations & 2.591 ms \\\hline
+        RSA 1024 bit & 100 sequential signature operations & 79 ms \\\hline
+        RSA 2048 bit & 100 sequential signature operations & 350 ms \\\hline
+        RSA 3072 bit & 100 sequential signature operations & 893 ms \\\hline
+        RSA 4092 & 100 sequential signature operations & 1811 ms \\\hline
+        \hline
+        CS & 100 parallel signature operations & 14 ms \\\hline
+        RSA 1024 bit & 100 parallel signature operations & 125 ms \\\hline
+        RSA 2048 bit & 100 parallel signature operations & 573ms \\\hline
+        RSA 3072 bit & 100 parallel signature operations & 1420 ms \\\hline
+        RSA 4092 & 100 parallel signature operations & 3279 ms \\\hline
+        \hline
+        CS & 800 parallel signature operations & 19 ms \\\hline
+        RSA 1024 bit & 800 parallel signature operations & 137 ms \\\hline
+        RSA 2048 bit & 800 parallel signature operations & 653 ms \\\hline
+        RSA 3072 bit & 800 parallel signature operations & 1451 ms \\\hline
+        RSA 4092 & 800 parallel signature operations & 3388 ms \\\hline
+    \end{tabular}
+    \caption{Performance comparison of the security module}
+    \label{tab:comp-sign-full}
+\end{table}
+
+\input{content/appendix/rsa-redesign.tex}
-- 
cgit v1.2.3

