diff options
author | Gian Demarmels <gian@demarmels.org> | 2022-02-14 00:03:06 +0100 |
---|---|---|
committer | Gian Demarmels <gian@demarmels.org> | 2022-02-14 00:03:06 +0100 |
commit | 9e694994681b0b2861553d0a50bca6623b546dd2 (patch) | |
tree | d8ebb10d7707bc5d4e48d09911e217ff9e993ebb /doc/cs/content/appendix.tex | |
parent | 9b8c350d4dc38256fe746ef31c480bc4f50ac4c8 (diff) | |
download | exchange-9e694994681b0b2861553d0a50bca6623b546dd2.tar.xz |
CS thesis
Diffstat (limited to 'doc/cs/content/appendix.tex')
-rw-r--r-- | doc/cs/content/appendix.tex | 677 |
1 files changed, 677 insertions, 0 deletions
diff --git a/doc/cs/content/appendix.tex b/doc/cs/content/appendix.tex new file mode 100644 index 000000000..137a29ba7 --- /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} |