\documentclass{beamer}
%Information to be included in the title page:
\title{A formal Security Analysis of the EdDSA Signature Scheme}
\author{Aaron Kaiser}
\institute{Fakultät für Informatik}
\date{2023}
\usetheme[alternativetitlepage=bild]{Rub}
\titlegraphic{curve.png}

\usepackage[noend]{algpseudocodex}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{tabularx}
\usepackage[parfill]{parskip}
\usepackage{float}
\usepackage{xspace}
\usepackage{mathtools}
\usepackage[normalem]{ulem}

\include{../thesis/macros}

\renewcommand{\somdl}{\text{Ed-$N$-DLog-Reveal}\xspace}

\begin{document}
\frame{\titlepage}

\begin{frame}
\frametitle{Outline}

\begin{enumerate}
	\item Overview
	\item Motivation
	\item Related work
	\item Preliminaries
	\item The EdDSA signature scheme
	\item Singe- and multi-user proofs for EdDSA
	\item GGM proofs of the underlying assumptions
	\item Concrete security
\end{enumerate}

\end{frame}

\begin{frame}
	\frametitle{Overview}
	\framesubtitle{What is this thesis about?}
	
	\begin{enumerate}
		\item Providing a tight security proof for the EdDSA signature scheme
		\item Showing the security level of concrete instantiations of EdDSA
	\end{enumerate}
\end{frame}

\begin{frame}
	\frametitle{Overview}
	\framesubtitle{Results}
	
	Results of this thesis:
	\begin{enumerate}
		\item EdDSA is tightly secure under \sdlog assumption in the single-user setting
		\item EdDSA is tightly secure under the \somdl assumption in the multi-user setting
		\item \textcolor{gray}{Ed25519 provides 125/124 bits of security in the single/multi-user setting}
		\item \textcolor{gray}{Ed448 provides 221/220 bits of security in the single/multi-user setting}
	\end{enumerate}
\end{frame}

\begin{frame}
	\frametitle{Overview}
	\framesubtitle{Results}
	
	Results of this thesis:
	\begin{enumerate}
		\item EdDSA is tightly secure under \sdlog assumption in the single-user setting
		\item EdDSA is tightly secure under the \somdl assumption in the multi-user setting
		\item Ed25519 provides 125/124 bits of security in the single/multi-user setting
		\item Ed448 provides 221/220 bits of security in the single/multi-user setting
	\end{enumerate}
\end{frame}

\begin{frame}
	\frametitle{Motivation}
	
	EdDSA is everywhere...
	
	\includegraphics[scale=0.9]{images/signal.png}
	\includegraphics[scale=0.1]{images/whatsapp.png}
	\includegraphics[scale=0.1]{images/wireguard.png}
	\includegraphics[scale=0.05]{images/SSH.png}
	\includegraphics[scale=0.1]{images/FIDO_logo_black_RGB.png}
\end{frame}

\begin{frame}
	\frametitle{Motivation}
	
	No existing tight security proof since publication in 2011
\end{frame}

\begin{frame}
	\frametitle{Related Work}
	
	\begin{itemize}
		\item Brendel et al. 2021 \cite{SP:BCJZ21}: First security proof for Ed25519
		\item Chalkias et al. 2020 \cite{EPRINT:ChaGarNik20}: Analysis of different EdDSA implementations
		\item Fuchsbauer et al. 2020 \cite{EC:FucPloSeu20}: Tight security proof for Schnorr Signatures using AGM
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Security Notions}
	\framesubtitle{Digital Signature Scheme}
	
	\begin{definition}
		A digital signature scheme SIG = (\keygen,\sign,\verify) is a tuple of algorithms.
		
		\begin{itemize}
			\item \textbf{\keygen}: The key generation algorithm, which upon receiving the security parameter as input outputs a matching tuple of public and private key.
			\item \textbf{\sign}: The signature algorithm, which upon receiving a secret key and a message, outputs a signature for that message.
			\item \textbf{\verify}: The verification algorithm, which upon receiving a public key, a message and a signature, outputs $1$ if the signature gets accepted and $0$ otherwise.
		\end{itemize}
		
		For the digital signature scheme to be correct, it is required that $\forall (\pubkey, \privkey) \in \keygen(par), \m \in \messagespace, \signature \in \sign(\privkey, \m): \verify(\pubkey, \m, \signature) = 1$
	\end{definition}
\end{frame}

\begin{frame}
	\frametitle{Security Notions}
	\framesubtitle{$N\text{-MU-EUF-CMA}$}
	
	\begin{figure}[h]
		\hrule
		\normalsize
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\game $N\text{-MU-EUF-CMA}$}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $(\pubkey_i, \privkey_i) \randomassign \keygen(1^\secparamter)$
			\State $(\m^*, \signature^*) \randomassign \adversary{A}^{\sign(\inp, \inp)}(\pubkey_1, \pubkey_2, ..., \pubkey_n)$
			\State \Return $\exists i \in \{1,2,...,N\}: \verify(\pubkey_i, \m^*, \signature^*) \test 1 \wedge (\pubkey_i, \m^*) \notin M$
		\end{algorithmic}
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\oracle \Osign($i \in \{1,2,...,N\}$, $\m \in \messagespace$)}
			\State $\signature \randomassign \sign(\privkey_i, \m)$
			\State $M \assign M \cup \{(\pubkey_i, \m)\}$
			\State \Return $\signature$
		\end{algorithmic}
		\hrule
		\caption{$N$-MU-EUF-CMA Security Game}
		\label{game:mu-euf-cma}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Security Notions}
	\framesubtitle{$N\text{-MU-SUF-CMA}$}
	
	\begin{figure}[h]
		\hrule
		\normalsize
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\game $N\text{-MU-SUF-CMA}$}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $(\pubkey_i, \privkey_i) \randomassign \keygen(1^\secparamter)$
			\State $(\m^*, \signature^*) \randomassign \adversary{A}^{\sign(\inp, \inp)}(\pubkey_1, \pubkey_2, ..., \pubkey_n)$
			\State \Return $\exists i \in \{1,2,...,N\}: \verify(\pubkey_i, \m^*, \signature^*) \test 1 \wedge (\pubkey_i, \m^*, \signature^*) \notin M$
		\end{algorithmic}
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\oracle \Osign($i \in \{1,2,...,N\}$, $\m \in \messagespace$)}
			\State $\signature \randomassign \sign(\privkey_i, \m)$
			\State $M \assign M \cup \{(\pubkey_i, \m, \signature)\}$
			\State \Return $\signature$
		\end{algorithmic}
		\hrule
		\caption{$N$-MU-SUF-CMA Security Game}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Security Notions}
	\framesubtitle{$N\text{-MU-EUF-NMA}$}
	
	\begin{figure}[h]
		\hrule
		\vspace{1mm}
		\begin{algorithmic}
			\State \underline{\game $N\text{-MU-EUF-NMA}$}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $(\pubkey_i, \privkey_i) \randomassign \keygen(1^\secparamter)$
			\State $(\m^*, \signature^*) \randomassign \adversary{A}(\pubkey_1, \pubkey_2, \pubkey_n)$
			\State \Return $\exists i \in \{1,2,...,N\}: \verify(\pubkey_i, \m^*, \signature^*) \test 1$
		\end{algorithmic}
		\hrule
		\caption{$N$-MU-EUF-NMA Security Game}
		\label{game:mu-uf-nma}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Random Oracle Model (ROM)}
	
	\begin{itemize}
		\item Hash functions are modeled as public oracle
		\item Oracle behaves like a true random function
		\item Challenger can observe all inputs
		\item Challenger can program the random oracle
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Algebraic Group Model (AGM)}
	
	\begin{itemize}
		\item Adversary has to provide a representation of all group elements
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Generic Group Model (GGM)}
	
	\begin{itemize}
		\item GGM hides all group-specific representation of group elements
		\item Adversary works with random labels instead of actual group elements
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Standards}
	
	\begin{itemize}
		\item Paper by Bernstein et al. \cite{CHES:BDLSY11,EPRINT:BJLSY15}
		\item RFC 8032 \cite{josefsson_edwards-curve_2017}
		\item FIPS 186-5 \cite{moody_digital_2023}
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{table}
		\small
		\begin{tabularx}{\textwidth}{@{}lX@{}}
			\textbf{Parameter} & \textbf{Description} \\
			\hline
			$q$ & An odd prime power $q$. EdDSA uses an elliptic curve over the finite field $\mathbb{F}_{q}$. \\
			$b$ & An integer $b$ with $2^{b-1} > q$. The bit size of encoded points on the twisted Edwards curve. \\
			$Enc(\inp)$ & A $(b-1)$-bit encoding of elements in the underlying finite field. \\
			$H(\inp)$ & A cryptographic hash function producing $2b$-bit output. \\
			$c$ & The cofactor of the twisted Edwards curve. \\
			$n$ & The number of bits used for the secret scalar of the public key. \\
			$a, d$ & The curve parameter of the twisted Edwards curve. \\
			$\groupelement{B}$ & A generator point of the prime order subgroup of $E$. \\
			$L$ & The order of the prime order subgroup. \\
			$H'(\inp)$ & A prehash function applied to the message prior to applying the \sign or \verify procedure.
		\end{tabularx}
		\caption{Parameter of the EdDSA signature scheme}
	\end{table}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{table}
		\small
		\begin{tabularx}{\textwidth}{@{}lX@{}}
			\textbf{Parameter} & \textbf{Description} \\
			\hline
			$b$ & An integer $b$ with $2^{b-1} > q$. The bit size of encoded points on the twisted Edwards curve. \\
			$H(\inp)$ & A cryptographic hash function producing $2b$-bit output. \\
			$c$ & The cofactor of the twisted Edwards curve. \\
			$n$ & The number of bits used for the secret scalar of the public key. \\
			$\groupelement{B}$ & A generator point of the prime order subgroup of $E$. \\
			$L$ & The order of the prime order subgroup. \\
		\end{tabularx}
		\caption{Parameter of the EdDSA signature scheme}
	\end{table}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\State \underline{\textbf{\keygen}}
		\State $k \randomsample \{0,1\}^b$
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\State $A \assign sB$
		\State \Return (\encoded{$A$}, $k$)
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\sign}($k$, $m$)}
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign H(h_b | ... | h_{2b-1} | m)$
		\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
		\State $R \assign rB$
		\State $\ch \assign H(\encoded{R} | \encoded{A} | m)$
		\State $S \assign (r + \ch \cdot s) \pmod L$
		\State \Return $\sigma \assign (\encoded{R}, S)$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\sign}($k$, $m$)}
		\BeginBox[draw=red]
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\Comment{Recover secret scalar}
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\EndBox
		\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign H(h_b | ... | h_{2b-1} | m)$
		\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
		\State $R \assign rB$
		\State $\ch \assign H(\encoded{R} | \encoded{A} | m)$
		\State $S \assign (r + \ch \cdot s) \pmod L$
		\State \Return $\sigma \assign (\encoded{R}, S)$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\sign}($k$, $m$)}
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\BeginBox[draw=red]
		\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign H(h_b | ... | h_{2b-1} | m)$
		\Comment{Calculate commitment}
		\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
		\State $R \assign rB$
		\EndBox
		\State $\ch \assign H(\encoded{R} | \encoded{A} | m)$
		\State $S \assign (r + \ch \cdot s) \pmod L$
		\State \Return $\sigma \assign (\encoded{R}, S)$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\sign}($k$, $m$)}
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign H(h_b | ... | h_{2b-1} | m)$
		\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
		\State $R \assign rB$
		\BeginBox[draw=red]
		\State $\ch \assign H(\encoded{R} | \encoded{A} | m)$
		\Comment{Calculate challenge}
		\EndBox
		\State $S \assign (r + \ch \cdot s) \pmod L$
		\State \Return $\sigma \assign (\encoded{R}, S)$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\sign}($k$, $m$)}
		\State $(h_0, h_1, ..., h_{2b-1}) \assign H(k)$
		\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
		\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign H(h_b | ... | h_{2b-1} | m)$
		\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
		\State $R \assign rB$
		\State $\ch \assign H(\encoded{R} | \encoded{A} | m)$
		\BeginBox[draw=red]
		\State $S \assign (r + \ch \cdot s) \pmod L$
		\Comment{Calculate response}
		\EndBox
		\State \Return $\sigma \assign (\encoded{R}, S)$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	
	\begin{algorithmic}
		\Statex \underline{\textbf{\verify}($\encoded{A}, \sigma \assign (\encoded{R}, S), m$)}
		\State \Return $2^c SB \test 2^c R + 2^c H(\encoded{R} | \encoded{A} | m)A$
	\end{algorithmic}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	\framesubtitle{Signature Parsing}
	
	\begin{itemize}
		\item Strict parsing: Reject all bitstring representations of $S > L$
		\item Lax parsing: Allow all bitstring representations of $S$ and work with $S \pmod L$
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA Signature Scheme}
	\framesubtitle{Encoding of Group Elements}
	
	\begin{itemize}
		\item Decoding function ensures that point is on curve
		\item Multiple bitstrings might map to the same point on the curve
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA' Signature Scheme}
	
	\begin{figure}
		\hrule
		\begin{multicols}{2}
			\scriptsize
			\begin{algorithmic}
				\Statex \underline{\textbf{\keygen}}
				\State $(h_0, h_1, ..., h_{2b-1}) \randomsample \{0,1\}^{2b}$
				\State $s \leftarrow 2^n + \sum_{i=c}^{n-1} 2^i h_i$
				\State $A \assign sB$
				\State \Return (\encoded{$A$}, $k \assign (s, h_b | ... | h_{2b-1})$)
			\end{algorithmic}
			\columnbreak
			\begin{algorithmic}
				\Statex \underline{\textbf{\sign}($k \assign (s, h_b | ... | h_{2b-1})$, $m$)}
				\State $(r'_0, r'_1, ..., r'_{2b-1}) \assign RF(h_b | ... | h_{2b-1} | m)$
				\State $r \assign \sum_{i=0}^{2b-1} 2^i r'_i$
				\State $R \assign rB$
				\State $S \assign (r + sH(\encoded{R} | \encoded{A} | m)) \pmod L$
				\State \Return $\sigma \assign (\encoded{R}, S)$
			\end{algorithmic}
		\end{multicols}
		\hrule
		\caption{Generic description of the algorithms \keygen, \sign and \verify used by the EdDSA' signature scheme}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{The EdDSA' Signature Scheme}
	
	\begin{theorem}
		\label{theorem:adveddsa'}
		Let $\adversary{A}$ be an adversary against SUF-CMA security of the EdDSA signature scheme. Then
		
		\[ \advantage{\text{EdDSA'},\adversary{A}}{\cma}(\secparamter) \leq \advantage{\text{EdDSA},\adversary{A}}{\cma}(\secparamter) + \frac{2 (\hashqueries + 1)}{2^b}. \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	
	\begin{theorem}[Security of EdDSA with strict parsing in the single-user setting]
		\label{theorem:eddsa_sp_su}
		Let $\adversary{A}$ be an adversary against the  SUF-CMA security of EdDSA with strict parsing, making at most $\hashqueries$ hash queries and $\oraclequeries$ oracle queries, and $\group{G}$ be a group of prime order $L$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{SUF-CMA}}(\secparamter) \leq \advantage{\curve, n, c, L, \adversary{B}}{\sdlog} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}} \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	
	\begin{theorem}[Security of EdDSA with lax parsing in the single-user setting]
		\label{theorem:eddsa_lp_su}
		Let $\adversary{A}$ be an adversary against the EUF-CMA security of EdDSA with lax parsing, making at most $\hashqueries$ hash queries and $\oraclequeries$ oracle queries, and $\group{G}$ be a group of prime order $L$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{EUF-CMA}}(\secparamter) \leq \advantage{\curve, n, c, L, \adversary{B}}{\sdlog} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}} \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	
	\[ \sdlog \overset{\text{AGM}}{\Rightarrow} \igame \overset{\text{ROM}}{\Rightarrow} \text{EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \cma_{\text{EdDSA sp}} \]
	\[ \sdlog \overset{\text{AGM}}{\Rightarrow} \igame \overset{\text{ROM}}{\Rightarrow} \text{EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \text{EUF-CMA}_{\text{EdDSA lp}} \]
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\text{EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \cma_{\text{EdDSA sp}} / \text{EUF-CMA}_{\text{EdDSA lp}}$}
	
	\begin{theorem}[\cite{SP:BCJZ21}]
		Let $\adversary{A}$ be an adversary against $\cma$, making at most $\hashqueries$ hash queries and $\oraclequeries$ oracle queries, and let $\group{G}$ be a group of prime order $L$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{\cma}}(\secparamter) \leq \advantage{\group{G}, \adversary{B}}{\text{EUF-NMA}}(\secparamter) + \frac{\oraclequeries \hashqueries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}. \]
	\end{theorem}
\end{frame}


\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\text{EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \cma_{\text{EdDSA sp}}$}
	
	Proof Idea:
	
	\begin{itemize}
		\item Simulate signatures without private key
		\begin{enumerate}
			\item Choose commitment and solution uniformly at random
			\item Calculate corresponding challenge
			\item Program random oracle to output that challenge for the signature
		\end{enumerate}
		\item Forward random oracle quries to challenger
		\item A valid signature forgery in the SUF-CMA game is also a valid forgery in the UF-NMA game
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\igame \overset{\text{ROM}}{\Rightarrow} \text{EUF-NMA}$}
	
	\begin{figure}[h]
		\hrule
		\begin{multicols}{2}
			\normalsize
			\begin{algorithmic}
				\Statex \underline{\game \igame}
				\State $a \randomsample \{2^{n-1}, 2^{n-1} + 2^c, ..., 2^n - 2^c\}$
				\State $\groupelement{A} \assign a \groupelement{B}$
				\State $s^* \randomsample \adversary{A}^{\ioracle(\inp)}(\groupelement{A})$	
				\State \Return $\exists (\groupelement{R}^*, \ch^*) \in \pset{Q}: \groupelement{R}^* = 2^c s^* \groupelement{B} - 2^c \ch^* \groupelement{A}$		
			\end{algorithmic}
			\columnbreak
			\begin{algorithmic}
				\Statex \underline{\oracle \ioracle($\groupelement{R_i} \in \group{G}$)}
				\State $\ch_i \randomsample \{0,1\}^{2b}$
				\State $\pset{Q} \assign \pset{Q} \cup \{ (\groupelement{R}_i, \ch_i) \}$
				\State \Return $\ch_i$
			\end{algorithmic}
		\end{multicols}
		\hrule
		\caption{\igame}
	\end{figure}
\end{frame}


\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\igame \overset{\text{ROM}}{\Rightarrow} \text{EUF-NMA}$}
	
	\begin{theorem}
		Let $\adversary{A}$ be an adversary against $\text{EUF-NMA}$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{EUF-NMA}}(\secparamter) = \advantage{\group{G}, \adversary{B}}{\text{\igame}}(\secparamter). \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\igame \overset{\text{ROM}}{\Rightarrow} \text{EUF-NMA}$}
	
	Proof Idea:
	
	\begin{itemize}
		\item Forward random oracle quries to \ioracle oracle
		\item A valid signature forgery provides a valid solution for \igame
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\sdlog \overset{\text{AGM}}{\Rightarrow} \igame$}
	
	\begin{figure}[h]
		\hrule
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\game \sdlog}
			\State $a \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\State $\groupelement{A} \assign a \groupelement{B}$
			\State $a' \randomassign \adversary{A}(\groupelement{A})$
			\State \Return $a \test a'$
		\end{algorithmic}
		\vspace{1mm}
		\hrule
		\caption{\sdlog}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\sdlog \overset{\text{AGM}}{\Rightarrow} \igame$}
	
	\begin{theorem}
		\label{theorem:advgamez}
		Let $\adversary{A}$ be an adversary against \igame with $\group{G}$ being a cyclic group of prime order $L$, making at most $\oraclequeries$ oracle queries. Then
		
		\[ \advantage{\group{G},\adversary{A}}{\igame}(\secparamter) \leq \advantage{\group{G},\adversary{B}}{\sdlog}(\secparamter) + \frac{\oraclequeries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}. \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Single-User Security}
	\framesubtitle{$\sdlog \overset{\text{AGM}}{\Rightarrow} \igame$}
	
	Proof Idea:
	
	\begin{itemize}
		\item Adversary provides a valid solution: $R^* = 2^c s^* \groupelement{B} - 2^c \ch^* \groupelement{A}$
		\item Adversary also provides: $\groupelement{R^*} = r_1 \groupelement{B} + r_2 \groupelement{A}$
		\item Rewrite equations: $A = (2^c s^* - r_1)(r_2 + 2^c \ch^*)^{-1} B$
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	
	\begin{theorem}[Security of EdDSA with strict parsing in the multi-user setting]
		Let $\adversary{A}$ be an adversary against the  $N$-MU-SUF-CMA security of EdDSA with strict parsing, receiving $N$ public keys and making at most $\hashqueries$ hash queries and $\oraclequeries$ oracle queries, and $\group{G}$ be a group of prime order $L$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{MU-SUF-CMA}}(\secparamter) \leq \advantage{\curve, n, c, L, \adversary{B}}{\somdl} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries N}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}} \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	
	\begin{theorem}[Security of EdDSA with lax parsing in the multi-user setting]
		\label{theorem:eddsa_lp_mu}
		Let $\adversary{A}$ be an adversary against the  $N$-MU-EUF-CMA security of EdDSA with lax parsing, receiving $N$ public keys and making at most $\hashqueries$ hash queries and $\oraclequeries$ oracle queries, and $\group{G}$ be a group of prime order $L$. Then,
		
		\[ \advantage{\group{G}, \adversary{A}}{\text{MU-EUF-CMA}}(\secparamter) \leq \advantage{\curve, n, c, L, \adversary{B}}{\somdl} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries N}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}} \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	
	\begin{itemize}
		\item $\text{MU-EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \text{MU-\cma}_{\text{EdDSA sp}}$
		\item $\text{MU-EUF-NMA} \overset{\text{ROM}}{\Rightarrow} \text{MU-EUF-CMA}_{\text{EdDSA lp}}$
		\item $\somdl \overset{\text{AGM}}{\Rightarrow} \text{$N$-\igame} \overset{\text{ROM}}{\Rightarrow} \text{MU-EUF-NMA}$
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	\framesubtitle{$\somdl \overset{\text{AGM}}{\Rightarrow} \text{$N$-\igame}$}
	
	\begin{theorem}
		\label{theorem:adv_omdl'}
		Let $\adversary{A}$ be an adversary against \text{$N$-\igame} with $\group{G}$ being a cyclic group of prime order $L$, receiving $N$ public keys and making at most $\oraclequeries$ oracle queries. Then
		
		\[ \advantage{\group{G},\adversary{A}}{\text{$N$-\igame}}(\secparamter) \leq \advantage{\group{G},\adversary{B}}{\somdl}(\secparamter) + \frac{\oraclequeries N}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}. \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	\framesubtitle{$\somdl \overset{\text{AGM}}{\Rightarrow} \text{$N$-\igame}$}
	
	\begin{figure}[h]
		\hrule
		\vspace{1mm}
		\large
		\begin{algorithmic}
			\Statex \underline{\game \text{$N$-\igame}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{2^{n-1}, 2^{n-1} + 2^c, ..., 2^n - 2^c\}$
			\State \quad $\groupelement{A_i} \assign a_i \groupelement{B}$
			\State $s^* \randomsample \adversary{A}^{\ioracle(\inp)}(\groupelement{A_1}, \groupelement{A_2}, ..., \groupelement{A_N})$	
			\State \Return $\exists (\groupelement{R}^*, \ch^*) \in \pset{Q}, i \in \{1,2,...,N\} \in : \groupelement{R}^* = 2^c s^* \groupelement{B} - 2^c \ch^* \groupelement{A_i}$		
		\end{algorithmic}
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\oracle \ioracle($\groupelement{R_i} \in \group{G}$)}
			\State $\ch_i \randomsample \{0,1\}^{2b}$
			\State $\pset{Q} \assign \pset{Q} \cup \{ (\groupelement{R}_i, \ch_i) \}$
			\State \Return $\ch_i$
		\end{algorithmic}
		\hrule
		\caption{\text{$N$-\igame}}
		\label{game:mu-igame}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	\framesubtitle{$\somdl \overset{\text{AGM}}{\Rightarrow} \text{$N$-\igame}$}
	
	\begin{figure}[h]
		\hrule
		\vspace{1mm}
		\large
		\begin{algorithmic}
			\Statex \underline{\game \somdl}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\State \quad $\groupelement{A_i} \assign a_i \groupelement{B}$
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{DL(\inp)}(\groupelement{A_1}, \groupelement{A_2}, ..., \groupelement{A_N})$
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\oracle $DL(j \in \{1,2,...,N\})$}
			\Comment{max. one query}
			\vspace{1mm}
			\State \Return $\{a_i|i \in \{1,2,...,N\}\backslash \{j\}\}$
		\end{algorithmic}
		\vspace{1mm}
		\hrule
		\caption{\somdl}
		\label{fig:somdl}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Multi-User Security}
	\framesubtitle{$\somdl \overset{\text{AGM}}{\Rightarrow} \text{$N$-\igame}$}

	Proof Idea:
	
	\begin{itemize}
		\item Similar to single-user proof
		\item Query discrete logarithms of all but one challenge group element $A_i$
		\item Construct a representation $\groupelement{R^*} = r_1 \groupelement{B} + r_2 \groupelement{A_i}$
		\item Calculate discrete logarithm of $\groupelement{A_i}$
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{\sdlog}
	
	\begin{theorem}
		\label{theorem:sdlog_ggm}
		Let $n$ and $c$ be positive integers. Consider a twisted Edwards curve $\curve$ with a cofactor of $2^c$ and a generating set consisting of $(\groupelement{B}, \groupelement{E_2}, ..., \groupelement{E_m})$. Among these, let $\groupelement{B}$ be the generator of the largest prime order subgroup with an order of $L$. Let $\adversary{A}$ be a generic adversary making at most $\groupqueries$ group operations. Then,
		
		\[ \advantage{\curve, n, c, L, \adversary{A}}{\sdlog} \leq \frac{(\groupqueries + 3)^2 + 1}{2^{n-1-c}}. \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{theorem}
		\label{theorem:somdl_ggm}
		Let $n$, $N$, $c$ be positive integers. Consider a twisted Edwards curve $\curve$ with a cofactor of $2^c$ and a generating set consisting of $(\groupelement{B}, \groupelement{E_2}, ..., \groupelement{E_m})$. Among these, let $\groupelement{B}$ be the generator of the largest prime order subgroup with an order of $L$. Let $\adversary{A}$ be a generic adversary against \somdl receiving $N$ group elements as challenge and making at most $\groupqueries$ group operations queries. Then,
		
		\[ \advantage{\curve, n, c, L, \adversary{A}}{\somdl} \leq \frac{2(\groupqueries + N + 2)^2 + 1}{2^{n-1-c}}. \]
	\end{theorem}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{lemma}[Schwartz-Zippel lemma \cite{schwartz_fast_1980}]
		Let $L$ be a prime number and $P \in \mathbb{F}_{L}[X_1, ..., X_n]$ be a non-zero polynomial of total degree $d \geq 0$ over a field $\mathbb{F}_{L}$. Let $S$ be a finite subset of $\mathbb{F}_{L}$ and let $x$ be selected uniformly at random from $S$. Then
		
		\[ \Pr[P(x) = 0] \leq \frac{d}{|S|}. \]
	\end{lemma}
 \end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_0$} / \textcolor{blue}{$G_1$} /\textcolor{red}{$G_2$} / \textcolor{green}{$G_3$} / \textcolor{orange}{$G_4$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\State \quad $\groupelement{A_i} \assign a_i \groupelement{B}$
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)}
			\State \Return $\{a_i | i \in \{1,2,...,N\} \backslash \{j\}\}$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \curve$)}
			\State \textbf{If } $\sum[\groupelement{X}] = \bot$ \textbf{ then}
			\State \quad $\sum[\groupelement{X}] \randomsample \{0,1\}^{\lceil log_2(|\curve|) \rceil} \backslash \pset{S}$
			\State \quad $\mathbf{S} \assign \pset{S} \cup \{\sum[X]\}$
			\State \Return $\sum[\groupelement{X}]$
		\end{algorithmic}
		\hrule
		\caption{$G_0$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_0$} / \textcolor{blue}{$G_1$} /\textcolor{red}{$G_2$} / \textcolor{green}{$G_3$} / \textcolor{orange}{$G_4$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\BeginBox[draw=blue]
			\State \quad $\groupelement{A_i} \assign (a_i, 0, ..., 0)$
			\EndBox
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)}
			\State \Return $\{a_i | i \in \{1,2,...,N\} \backslash \{j\}\}$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\BeginBox[draw=blue]
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \field{L} \times \field{ord(E_2)} \times ... \times \field{ord(E_n)}$)}
			\EndBox
			\State \textbf{If } $\sum[\groupelement{X}] = \bot$ \textbf{ then}
			\State \quad $\sum[\groupelement{X}] \randomsample \{0,1\}^{\lceil log_2(|\curve|) \rceil} \backslash \pset{S}$
			\State \quad $\mathbf{S} \assign \pset{S} \cup \{\sum[X]\}$
			\State \Return $\sum[\groupelement{X}]$
		\end{algorithmic}
		\hrule
		\caption{$G_1$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_0$} / \textcolor{blue}{$G_1$} /\textcolor{red}{$G_2$} / \textcolor{green}{$G_3$} / \textcolor{orange}{$G_4$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\BeginBox[draw=red]
			\State \quad $P_i \assign Z_i$
			\State \quad $\groupelement{A_i} \assign (P_i, 0, ..., 0)$
			\EndBox
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)}
			\State \Return $\{a_i | i \in \{1,2,...,N\} \backslash \{j\}\}$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\BeginBox[draw=red]
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \field{L}[Z_1,...,Z_N] \times \field{ord(E_2)} \times ... \times \field{ord(E_n)}$)}
			\State Let $X = (P, x_2, ..., x_n)$
			\State $\pset{P} = \pset{P} \cup \{P\}$
			\State $X \assign (P(\overset{\rightharpoonup}{a}), x_2, ..., x_n)$
			\EndBox
			\State \textbf{If } $\sum[\groupelement{X}] = \bot$ \textbf{ then}
			\State \quad $\sum[\groupelement{X}] \randomsample \{0,1\}^{\lceil log_2(|\curve|) \rceil} \backslash \pset{S}$
			\State \quad $\mathbf{S} \assign \pset{S} \cup \{\sum[X]\}$
			\State \Return $\sum[\groupelement{X}]$
		\end{algorithmic}
		\hrule
		\caption{$G_2$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)}
			\BeginBox[draw=green]
			\State \textbf{for } $P_i \in \pset{P}$
			\Comment{$G_3$}
			\State \quad Let $P_i = R_i + S_i, R_i \in \field{L}[Z_1,...,Z_{j-1},Z_{j+1},...,Z_N], S_i \in \field{L}[Z_j]$
			\State \quad $\pset{R} \assign \pset{R} \cup \{R_i\}$
			\State \textbf{if } $\exists R_i, R_j \in \pset{R}: R_i(\overset{\rightharpoonup}{a}) = R_j(\overset{\rightharpoonup}{a}) \wedge R_i \neq R_j$
			\State \quad $bad_1 \assign true$
			\BeginBox[draw=orange,dashed]
			\State \quad abort
			\Comment{$G_4$}
			\EndBox
			\State \textbf{for } $P_i \in \pset{P}$
			\State \quad $\sum[R_i(\overset{\rightharpoonup}{a}) + S_i] = \sum[P_i]$
			\State \quad $P_i \assign R_i(\overset{\rightharpoonup}{a}) + S_i$
			\EndBox
			\State \Return $\{a_i | i \in \{1,2,...,N\} \backslash \{j\}\}$
		\end{algorithmic}
		\vspace{2mm}
		\hrule
		\caption{$G_3 - G_4$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_4$} / \textcolor{blue}{$G_5$} /\textcolor{red}{$G_6$} / \textcolor{green}{$G_7$} / \textcolor{orange}{$G_8$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\State \quad $P_i \assign Z_i$
			\State \quad $\groupelement{A_i} \assign (P_i, 0, ..., 0)$
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\BeginBox[draw=blue]
			\State \textbf{if } $\exists P_i, P_j \in \pset{P}: P_i(\overset{\rightharpoonup}{a}) = P_j(\overset{\rightharpoonup}{a}) \wedge P_i \neq P_j$
			\Comment{$G_5$}
			\State \quad $bad_2 \assign true$
			\BeginBox[draw=red,dashed]
			\State \quad abort
			\Comment{$G_6$}
			\EndBox
			\EndBox
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)} 
			\State ...
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \field{L}[Z_1,...,Z_N] \times \field{ord(E_2)} \times ... \times \field{ord(E_n)}$)}
			\State Let $X = (P, x_2, ..., x_n)$
			\State $\pset{P} = \pset{P} \cup \{P\}$
			\State $X \assign (P(\overset{\rightharpoonup}{a}), x_2, ..., x_n)$
			\State \textbf{If } $\sum[\groupelement{X}] = \bot$ \textbf{ then}
			\State \quad $\sum[\groupelement{X}] \randomsample \{0,1\}^{\lceil log_2(|\curve|) \rceil} \backslash \pset{S}$
			\State \quad $\mathbf{S} \assign \pset{S} \cup \{\sum[X]\}$
			\State \Return $\sum[\groupelement{X}]$
		\end{algorithmic}
		\hrule
		\caption{$G_5 - G_6$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_4$} / \textcolor{blue}{$G_5$} /\textcolor{red}{$G_6$} / \textcolor{green}{$G_7$} / \textcolor{orange}{$G_8$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\State \quad $P_i \assign Z_i$
			\State \quad $\groupelement{A_i} \assign (P_i, 0, ..., 0)$
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\State \textbf{if } $\exists P_i, P_j \in \pset{P}: P_i(\overset{\rightharpoonup}{a}) = P_j(\overset{\rightharpoonup}{a}) \wedge P_i \neq P_j$
			\State \quad $bad_2 \assign true$
			\State \quad abort
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)} 
			\State ...
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \field{L}[Z_1,...,Z_N] \times \field{ord(E_2)} \times ... \times \field{ord(E_n)}$)}
			\State Let $X = (P, x_2, ..., x_n)$
			\State $\pset{P} = \pset{P} \cup \{P\}$
			\State \sout{$X \assign (P(\overset{\rightharpoonup}{a}), x_2, ..., x_n)$}
			\State \textbf{If } $\sum[\groupelement{X}] = \bot$ \textbf{ then}
			\State \quad $\sum[\groupelement{X}] \randomsample \{0,1\}^{\lceil log_2(|\curve|) \rceil} \backslash \pset{S}$
			\State \quad $\mathbf{S} \assign \pset{S} \cup \{\sum[X]\}$
			\State \Return $\sum[\groupelement{X}]$
		\end{algorithmic}
		\hrule
		\caption{$G_7$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{\somdl}
	
	\begin{figure}[H]
		\hrule
		\tiny
		\vspace{2mm}
		\begin{algorithmic}
			\Statex \underline{\game \textcolor{black}{$G_4$} / \textcolor{blue}{$G_5$} /\textcolor{red}{$G_6$} / \textcolor{green}{$G_7$} / \textcolor{orange}{$G_8$}}
			\State \textbf{for} $i \in \{1,2,...,N\}$
			\State \quad \sout{$a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$}
			\State \quad $P_i \assign Z_i$
			\State \quad $\groupelement{A_i} \assign (P_i, 0, ..., 0)$
			\State $(a'_1, a'_2, ..., a'_N) \randomassign \adversary{A}^{GOp(\inp, \inp, \inp), DL(\inp)}(Enc(\groupelement{B}), Enc(\groupelement{E_2}), ..., Enc(\groupelement{E_m}), Enc(\groupelement{A_1}), ..., Enc(\groupelement{A_N}))$
			\BeginBox[draw=orange]
			\State \textbf{for } $i \in \{1,2,...,N\}$
			\State \quad \textbf{if } $a_i = \bot$
			\State \qquad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\EndBox
			\State \textbf{if } $\exists P_i, P_j \in \pset{P}: P_i(\overset{\rightharpoonup}{a}) = P_j(\overset{\rightharpoonup}{a}) \wedge P_i \neq P_j$
			\State \quad $bad_2 \assign true$
			\State \quad abort
			\State \Return $(a_1, a_2, ..., a_N) \test (a'_1, a'_2, ..., a'_N)$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle DL($j \in \{1,2,...,N\}$)} 
			\BeginBox[draw=orange]
			\State \textbf{for } $i \in \{1,2,...,N\} \backslash \{j\}$
			\State \quad $a_i \randomsample \{ 2^{n-1}, 2^{n-1} + 2^c, ..., 2^{n} - 2^c \}$
			\EndBox 
			\State ...
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\Statex \underline{\oracle GOp($x, y \in \mathbf{S}, b \in \{0,1\}$)}
			\State \quad \Return $Enc(\sum^{-1}[x] + (-1)^b \sum^{-1}[y])$
		\end{algorithmic}
		\vspace{1mm}
		\begin{algorithmic}
			\State \underline{\textbf{Procedure} Enc($\groupelement{X} \in \field{L}[Z_1,...,Z_N] \times \field{ord(E_2)} \times ... \times \field{ord(E_n)}$)}
			\State ...
		\end{algorithmic}
		\hrule
		\caption{$G_8$}
	\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Concrete Security}
	
	\begin{definition}[Success Ratio \cite{AC:HofJagKil11}]
		Let adversary $\adversary{A}$ be an adversary with runtime Time($\adversary{A}$) and advantage $\advantage{\adversary{A}}{}$. Its success ratio is defined as following:
		
		\[ SR(\adversary{A}) = \frac{\advantage{\adversary{A}}{}}{Time(\adversary{A})}. \]
	\end{definition}
	
	\begin{definition}[Bit Security \cite{AC:HofJagKil11}]
		A cryptographic scheme has $\kappa$ bit security if the success ratio of all adversaries with a runtime $Time(\adversary{A}) \leq 2^\kappa$ is upper bounded by $2^{-\kappa}$.
	\end{definition}
\end{frame}

\begin{frame}
	\frametitle{Concrete Security}
	\framesubtitle{Ed25519}
	
	\begin{align*}
		SR(\adversary{A}) &\leq \frac{\advantage{\group{G}, \adversary{A}}{\text{SUF-CMA}}(\secparamter)}{Time(\adversary{A})} \\
		&\leq \frac{\advantage{\curve, n, c, L, \adversary{B}}{\sdlog} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}}{Time(\adversary{A})} \\
		&\leq \frac{\frac{(\groupqueries + 3)^2 + 1}{2^{n-1-c}} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}}{Time(\adversary{A})} \\ 
		&\leq \frac{(2^{125} + 3)^2 + 1}{2^{250} 2^{125}} + \frac{2(2^{125} + 1)}{2^{256} 2^{125}} + \frac{2^{64} 2^{125} + 2^{64}}{2^{252} 2^{125}} \\
		&\approx 2^{-125} + 2^{-316} + 2^{-189} \\
		&\approx 2^{-125}
	\end{align*}
\end{frame}

\begin{frame}
	\frametitle{Concrete Security}
	\framesubtitle{Ed25519}
	
	\begin{align*}
		SR(\adversary{A}) &\leq \frac{\advantage{\group{G}, \adversary{A}}{\text{MU-SUF-CMA}}(\secparamter)}{Time(\adversary{A})} \\
		&\leq \frac{\advantage{\curve, n, c, L, \adversary{A}}{\somdl} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries N}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}}{Time(\adversary{A})} \\
		&\leq \frac{\frac{2(\groupqueries + N + 2)^2 + 1}{2^{n-1-c}} + \frac{2(\hashqueries + 1)}{2^b} + \frac{\oraclequeries \hashqueries + \oraclequeries N}{2^{-\log_2(\lceil \frac{2^{2b} - 1}{L} \rceil 2^{-2b})}}}{Time(\adversary{A})} \\
		&\leq \frac{2 (2^{125} + 2^{35} + 2)^2 + 1}{2^{250} 2^{125}} + \frac{2(2^{125} + 1)}{2^{256} 2^{125}} + \frac{2^{64} 2^{125} + 2^{64} 2^{35}}{2^{252} 2^{125}} \\
		&\approx 2^{-124} + 2^{-316} + 2^{-189} \\
		&\approx 2^{-124}
	\end{align*}
\end{frame}

\begin{frame}
	\huge
	\centering
	\textbf{Thank you!}\\
	Questions?
\end{frame}

\begin{frame}[allowframebreaks]
	\bibliographystyle{ieeetr}
	\bibliography{../thesis/cryptobib/abbrev0,../thesis/cryptobib/crypto,../thesis/citation}
\end{frame}

\end{document}
