workable state for eipsi2024
1483
age-restriction.drawio/.$age-restriction-taler.drawio.bkp
Normal file
@ -101,12 +101,11 @@
|
||||
\item<1->[Deliverable]~\\
|
||||
Present a solution to age restriction and its integration in GNU Taler.
|
||||
\vfill
|
||||
\item<2->[Side-Channel]~\\
|
||||
\item<2->[Drive-By]~\\
|
||||
Show concepts from cryptography by example:
|
||||
|
||||
Zero-Knowledge protocol, Security Game and Security Proof
|
||||
|
||||
This will be technical.
|
||||
\vfill
|
||||
\item<3->[Non-goals]~\\
|
||||
\begin{itemize}
|
||||
@ -119,13 +118,15 @@
|
||||
|
||||
\begin{frame}{Sponsors}
|
||||
\centering\begin{columns}[T]
|
||||
\column{0.5\textwidth}
|
||||
\centering NGI Pointer program of the European Commission\\[2em]
|
||||
\column{0.6\textwidth}
|
||||
\centering NGI Taler and NGI Pointer programs of the European Commission\\[2em]
|
||||
|
||||
\centering\includegraphics[width=0.7\textwidth]{images/ngi-ap3.png}
|
||||
\centering\includegraphics[width=0.9\textwidth]{images/ngi-taler.jpg}
|
||||
|
||||
\column{0.5\textwidth}
|
||||
\centering Project \textit{Concrete Contracts} in the
|
||||
\centering\includegraphics[width=0.5\textwidth]{images/ngi-ap3.png}
|
||||
|
||||
\column{0.4\textwidth}
|
||||
\centering Project\\ \textit{Concrete Contracts} in the
|
||||
\textit{KMU-innovativ} programm\\[2em]
|
||||
|
||||
\centering\includegraphics[width=0.9\textwidth]{images/bmbf-english.jpg}
|
||||
@ -297,6 +298,43 @@ with the following properties:
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Helpful figure - Commit}
|
||||
|
||||
\centering\includegraphics[height=0.9\textheight]{images/commit.pdf}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Helpful figure - Attest and Verify}
|
||||
|
||||
\centering\includegraphics[height=0.9\textheight]{images/attest-verify.pdf}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Helpful figure - Derive and Compare}
|
||||
|
||||
\centering\includegraphics[width=\textwidth]{images/derive-compare.pdf}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Helpful figure}
|
||||
\small
|
||||
\begin{columns}[t]
|
||||
\column{0.25\textwidth}
|
||||
Commit:\\[1em]
|
||||
|
||||
\includegraphics[width=\textwidth]{images/commit.pdf}
|
||||
|
||||
\column{0.25\textwidth}
|
||||
Attest and Verify:\\[1em]
|
||||
|
||||
\includegraphics[width=\textwidth]{images/attest-verify.pdf}
|
||||
|
||||
\column{0.5\textwidth}
|
||||
Derive and Compare:\\[1em]
|
||||
|
||||
\includegraphics[width=\textwidth]{images/derive-compare.pdf}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Specification of the Function Signatures}
|
||||
\small
|
||||
@ -362,6 +400,7 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}{Naïve scheme}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=.8]
|
||||
@ -427,39 +466,57 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Achieving Unlinkability}
|
||||
Given $\Derive()$ and $\Compare()$, define the Zero-Knowledge-protocol
|
||||
Given $\Derive()$ and $\Compare()$, define the cut-and-choose protocoll
|
||||
\orange{$\DeriveCompare$} as follows (sketch):
|
||||
|
||||
\begin{columns}
|
||||
\column{0.3\textwidth}
|
||||
\pause
|
||||
\includegraphics[width=\textwidth]{images/cut-and-choose.pdf}
|
||||
|
||||
\column{0.7\textwidth}
|
||||
\pause
|
||||
|
||||
\uncover<2->{
|
||||
\small
|
||||
|
||||
\scriptsize
|
||||
|
||||
Let $\kappa \in \N$ (say: $\kappa = 3$)
|
||||
\begin{itemize}[<+->]
|
||||
\item[$\Child$:]
|
||||
\begin{enumerate}
|
||||
\scriptsize
|
||||
\item generates $(\commitment_1,\dots,\commitment_\kappa)$
|
||||
and $(\beta_1,\dots,\beta_\kappa)$ from $\commitment_0$\\
|
||||
and $(\beta_1,\dots,\beta_\kappa)$ from $\commitment_0$
|
||||
by calling $\kappa$ times $\Derive(\commitment_0, \pruf_0, \omega_i)$
|
||||
\item calculates $h_0:=H\left(H(\commitment_1, \beta_1)\parallel \dots\parallel H(\commitment_\kappa, \beta_\kappa)\right)$
|
||||
\item sends $\commitment_0$ and $h_0$ to $\Exchange$
|
||||
\end{enumerate}
|
||||
\item[$\Exchange$:]
|
||||
\begin{enumerate}
|
||||
\scriptsize
|
||||
|
||||
\item[4.] saves $\commitment_0$ and $h_0$ and sends $\Child$ random $\gamma \in \{1,\dots,\kappa\}$
|
||||
\end{enumerate}
|
||||
\item[$\Child$:]
|
||||
\begin{enumerate}
|
||||
\scriptsize
|
||||
\item[5.] reveals $h_\gamma:=H(\commitment_\gamma, \beta_\gamma)$ and all $(\commitment_i, \beta_i)$, except $(\commitment_\gamma, \beta_\gamma)$
|
||||
\end{enumerate}
|
||||
\item[$\Exchange$:]
|
||||
\begin{enumerate}
|
||||
\scriptsize
|
||||
\item[6.] compares $h_0$ and
|
||||
$H\left(H(\commitment_1, \beta_1)\parallel ...\parallel h_\gamma\parallel ...\parallel H(\commitment_\kappa, \beta_\kappa)\right)$
|
||||
\item[7.] evaluates $\Compare(\commitment_0, \commitment_i, \beta_i)$ for all $i \neq \gamma$.
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
\pause
|
||||
\scriptsize
|
||||
|
||||
If all steps succeed, $\commitment_\gamma$ is the new commitment.
|
||||
}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Achieving Unlinkability}%{Certainty trade-off}
|
||||
@ -677,10 +734,15 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Definition of Commit with ECDSA}%{Definition of Commit}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.2\textwidth}
|
||||
\includegraphics[width=1.1\textwidth]{images/commit.pdf}
|
||||
\column{0.8\textwidth}
|
||||
\begin{description}
|
||||
\small
|
||||
\item[To \blue{Commit} to age group $\age \in \{1,\dots,\Age\}$]~\\
|
||||
\begin{enumerate}[<+->]
|
||||
\small
|
||||
\item Guardian generates ECDSA-keypairs, one per age group:
|
||||
\[\langle(q_1, p_1),\dots,(q_\Age,p_\Age)\rangle\]
|
||||
\item Guardian then \textbf{drops} all private keys
|
||||
@ -699,15 +761,23 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\vfill
|
||||
\end{enumerate}
|
||||
\end{description}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Attest and Verify with ECDSA}
|
||||
\begin{columns}
|
||||
\column{0.2\textwidth}
|
||||
\includegraphics[width=1.1\textwidth]{images/attest-verify.pdf}
|
||||
\column{0.8\textwidth}
|
||||
\small
|
||||
Child has
|
||||
\begin{itemize}
|
||||
\small
|
||||
\item ordered public-keys $\Vcommitment = (q_1, \dots~\dots~\dots, q_\Age) $,
|
||||
\item (some) private-keys $\Vpruf = (p_1, \dots, p_\age, \Nil, \dots, \Nil)$.
|
||||
\end{itemize}
|
||||
\begin{description}
|
||||
\small
|
||||
\item<2->[To \blue{Attest} a minimum age (group) $\blue{\minage} \leq \age$:]~\\
|
||||
Sign a message with ECDSA using private key
|
||||
$p_\blue{\minage}$. The signature $\sigma_\blue{\minage}$ is the
|
||||
@ -717,17 +787,21 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\vfill
|
||||
|
||||
\uncover<3->{
|
||||
\small
|
||||
Merchant gets
|
||||
\begin{itemize}
|
||||
\small
|
||||
\item ordered public-keys $\Vcommitment = (q_1, \dots, q_\Age) $
|
||||
\item Signature $\sigma_\blue{\minage}$
|
||||
\end{itemize}
|
||||
\begin{description}
|
||||
\small
|
||||
\item<4->[To \blue{Verify} a minimum age (group) \blue{$\minage$}:]~\\
|
||||
Verify the ECDSA-Signature $\sigma_\blue{\minage}$ with public key $q_\blue{\minage}$.
|
||||
\end{description}
|
||||
}
|
||||
\vfill
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Derive and Compare with ECDSA}
|
||||
@ -951,57 +1025,65 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\centering \includegraphics[height=0.9\textheight]{images/wallet-age.png}
|
||||
\end{frame}
|
||||
|
||||
\include{gnu}
|
||||
|
||||
\begin{frame}{Interested in GNU Taler?}
|
||||
We are looking for developers, testers, users!
|
||||
|
||||
\begin{description}
|
||||
\item[Intro:] \url{https://taler.net}
|
||||
\item[Learn:] \url{https://docs.taler.net}
|
||||
\item[Develop:] \url{https://git.taler.net}, \url{https://bugs.taler.net}
|
||||
\end{description}
|
||||
\end{frame}
|
||||
% \include{gnu}
|
||||
%
|
||||
% \begin{frame}{Interested in GNU Taler?}
|
||||
% We are looking for developers, testers, users!
|
||||
%
|
||||
% \begin{description}
|
||||
% \item[Intro:] \url{https://taler.net}
|
||||
% \item[Learn:] \url{https://docs.taler.net}
|
||||
% \item[Develop:] \url{https://git.taler.net}, \url{https://bugs.taler.net}
|
||||
% \end{description}
|
||||
% \end{frame}
|
||||
|
||||
\section{Discussion \& Conclusion}
|
||||
|
||||
\begin{frame}{Discussion}
|
||||
Technical Aspects and Challenges
|
||||
\begin{itemize}[<+->]
|
||||
\item Our solution can in principle be used with any token-based payment scheme
|
||||
\item[] However, GNU Taler best aligned with our design goals
|
||||
(security, privacy and efficiency).
|
||||
|
||||
\item Subsidiarity requires bank accounts being owned by adults.
|
||||
\item[] However, scheme can be adapted to cases of
|
||||
\item[] However, scheme can be adapted
|
||||
\begin{itemize}
|
||||
\item minors have bank accounts
|
||||
\item peer-to-peer payments
|
||||
\item[] Hint: Know-Your-Customer (KYC) and adapted
|
||||
withdraw protocol.
|
||||
\item Know-Your-Customer (KYC) provides age information
|
||||
\item Parents can set age on a long-term wallet of a child
|
||||
\item cut\&choose protocol \texttt{age-withdraw} implemented
|
||||
\end{itemize}
|
||||
\item Our scheme offers an alternative to identity management systems (IMS)
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
% \begin{frame}{Related Work}
|
||||
% \begin{itemize}
|
||||
% \item Current privacy-perserving systems all based on
|
||||
% attribute-based credentials (Koning et al.,
|
||||
% Schanzenbach et al., Camenisch et al., Au et al.)
|
||||
%
|
||||
% \item Attribute-based approach lacks support:
|
||||
% \begin{itemize}
|
||||
% \item Complex for consumers and retailers
|
||||
% \item Requires trusted third authority
|
||||
% \end{itemize}
|
||||
% \vfill
|
||||
% \item Other approaches tie age-restriction to ability to pay ("debit cards for kids")
|
||||
% \begin{itemize}
|
||||
% \item Advantage: mandatory to payment process
|
||||
% \item Not privacy friendly
|
||||
% \end{itemize}
|
||||
% \end{itemize}
|
||||
% \end{frame}
|
||||
\begin{frame}{Discussion}
|
||||
Legal aspects and applicability
|
||||
\begin{itemize}[<+->]
|
||||
\item The scheme only makes sense when cheating can be discouraged, f.e. economically
|
||||
\item There will be limits where the scheme is considered acceptable.
|
||||
\item Our scheme offers an alternative to identity management systems (IMS), where applicable
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Related Work}
|
||||
\begin{itemize}
|
||||
\item Current privacy-perserving systems all based on
|
||||
attribute-based credentials (Koning et al.,
|
||||
Schanzenbach et al., Camenisch et al., Au et al.)
|
||||
|
||||
\item Attribute-based approach lacks support:
|
||||
\begin{itemize}
|
||||
\item Complex for consumers and retailers
|
||||
\item Requires trusted third authority
|
||||
\end{itemize}
|
||||
\vfill
|
||||
\item Other approaches tie age-restriction to ability to pay ("debit cards for kids")
|
||||
\begin{itemize}
|
||||
\item Advantage: mandatory to payment process
|
||||
\item Not privacy friendly
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Conclusion}
|
||||
Age restriction is a technical, ethical and legal challenge.
|
||||
@ -1015,7 +1097,7 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\vfill
|
||||
|
||||
\pause
|
||||
Our scheme offers a solution that
|
||||
Our scheme offers an option that
|
||||
\begin{itemize}
|
||||
\item aligns with subsidiarity
|
||||
\item preserves privacy
|
||||
@ -1026,7 +1108,7 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
|
||||
|
||||
\begin{frame}{}
|
||||
\large
|
||||
% \large
|
||||
\begin{center}
|
||||
{\Huge \textbf{Thank you!}}\\
|
||||
Questions?
|
||||
@ -1038,9 +1120,11 @@ Searching for functions \uncover<2->{with the following signatures}
|
||||
\vfill
|
||||
{Interested in GNU Taler?}
|
||||
\begin{description}
|
||||
\item[Intro:] \url{https://taler.net}
|
||||
\item[Intro:] \url{https://taler.net},
|
||||
\item[Learn:] \url{https://docs.taler.net}
|
||||
\item[Develop:] \url{https://git.taler.net}, \url{https://bugs.taler.net}
|
||||
\item[Connect:] \url{https://ich.taler.net}
|
||||
\item[NGI Taler:] \url{https://ngi.taler.net}
|
||||
\end{description}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
BIN
eipsi2024/images/attest.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
eipsi2024/images/attest.png
Normal file
After Width: | Height: | Size: 19 KiB |
4
eipsi2024/images/attest.svg
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
eipsi2024/images/commit.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
eipsi2024/images/commit.png
Normal file
After Width: | Height: | Size: 21 KiB |
4
eipsi2024/images/commit.svg
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
eipsi2024/images/commit.vsdx
Normal file
BIN
eipsi2024/images/derive-compare.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
eipsi2024/images/ngi-taler.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
eipsi2024/images/ngi-taler.png
Normal file
After Width: | Height: | Size: 19 KiB |