marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

esorics2022.tex (27554B)


      1 %\pdfminorversion=3
      2 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
      3 \include{setup}
      4 
      5 \title{Zero-Knowledge Age Restriction for GNU Taler}
      6 %\subtitle{}
      7 
      8 \setbeamertemplate{navigation symbols}{%
      9 	\includegraphics[width=1.6cm]{images/fub.pdf}
     10 	\hspace{1em}
     11 	\includegraphics[width=2.3cm]{images/bfh.png}
     12 	\includegraphics[width=1cm]{images/taler-logo-2020.jpg}
     13 	\includegraphics[width=1cm]{images/fraunhofer.png}
     14 	\hfill%
     15 }
     16 %\setbeamercovered{transparent=1}
     17 
     18 \author[Özgür Kesim]{{\bf Özgür Kesim}, Christian Grothoff,\\ Florian Dold, Martin Schanzenbach}
     19 \date{September 26, 2022\\
     20 	\includegraphics[width=4cm]{images/esorics2022.png}}
     21 \institute{FU Berlin, BFH Bern, Taler Systems SA, Fraunhofer AISEC}
     22 
     23 
     24 \begin{document}
     25 
     26 \justifying
     27 
     28 \begin{frame}
     29   \titlepage
     30 \end{frame}
     31 
     32 %\begin{frame}
     33 %  \begin{center}
     34 %    \LARGE {\bf Zero-Knowledge Age Restriction\\for GNU Taler}
     35 %
     36 %    \vfill
     37 %  \end{center}
     38 % Substitute based on who is giving the talk!
     39 %  \vfill
     40 %	\begin{tabular}{rl}
     41 %		\bf Özgür Kesim\href{mailto:o.kesim@fu-berlin.de}{\small \Envelope} & \small Freie Universität Berlin, Germany \\
     42 %		Christian Grothoff & \small Bern University of Applied Sciences, Switzerland \\
     43 %		Florian Dold & \small Taler Systems SA, Luxembourg \\
     44 %		Martin Schanzenbach &\small  Fraunhofer AISEC, Germany \\
     45 %	\end{tabular}
     46 %\end{frame}
     47 
     48 \section{Introduction}
     49 
     50 \begin{frame}{Age restriction in E-commerce}
     51 
     52 	\begin{description}
     53 		\item[Problem:]~\\[1em]
     54 			Verification of minimum age requirements in e-commerce.\\[2em]
     55 
     56 		\item[Common solutions:]
     57 
     58 \begin{tabular}{l<{\onslide<2->}c<{\onslide<3->}cr<{\onslide}}
     59 	& \blue{Privacy} & \tikzmark{topau} \blue{Ext. authority}& \\[\medskipamount]
     60 	1. ID Verification     & bad   & required & \\[\medskipamount]
     61 	2. Restricted Accounts & bad   & required & \\[\medskipamount]
     62 	3. Attribute-based     & good  & required &\tikzmark{bottomau} \\[\medskipamount]
     63 \end{tabular}
     64 	\end{description}
     65 
     66 \uncover<4->{
     67 	\begin{tikzpicture}[overlay,remember picture]
     68 	\draw[orange,thick,rounded corners]
     69 		($(pic cs:topau) +(0,0.5)$) rectangle ($(pic cs:bottomau) -(0.3, 0.2)$);
     70 	\end{tikzpicture}
     71 	\begin{center}
     72 	\bf Principle of Subsidiarity is violated
     73 	\end{center}
     74 }
     75 \end{frame}
     76 
     77 
     78 \begin{frame}{Principle of Subsidiarity}
     79 \begin{center} \Large
     80 	Functions of government---such as granting and restricting
     81 	rights---should be performed\\
     82 	{\it at the lowest level of authority possible},\\
     83 	as long as they can be performed {\it adequately}.
     84 \end{center}
     85 \vfill
     86 \uncover<2->{
     87 	For age-restriction, the lowest level of authority is:\\
     88 	\begin{center}\Large
     89 	Parents, guardians and caretakers
     90 	\end{center}
     91 }
     92 \end{frame}
     93 
     94 \begin{frame}{Our contribution}
     95 Design and implementation of an age restriction scheme\\
     96 with the following goals:
     97 
     98 \begin{enumerate}
     99 \item It ties age restriction to the \textbf{ability to pay} (not to ID's)
    100 \item maintains \textbf{anonymity of buyers}
    101 \item maintains \textbf{unlinkability of transactions}
    102 \item aligns with \textbf{principle of subsidiartiy}
    103 \item is \textbf{practical and efficient}
    104 \end{enumerate}
    105 
    106 \end{frame}
    107 
    108 
    109 \section{Age Restriction}
    110 
    111 \begin{frame}{Age restriction}
    112 	\framesubtitle{Assumptions and scenario}
    113 
    114 	\begin{columns}
    115 		\column{7.5cm}
    116 	\begin{itemize}
    117 		\item<1-> Assumption: Checking accounts are under control of eligible adults/guardians.
    118 		\item<2-> \textit{Guardians} \textbf{commit} to an maximum age
    119 		\item<3-> \textit{Minors} \textbf{attest} their adequate age
    120 		\item<4-> \textit{Merchants} \textbf{verify} the attestations
    121 		\item<5-> Minors \textbf{derive} age commitments from existing ones
    122 		\item<6-> \textit{Exchanges} \textbf{compare} the derived age commitments
    123 	\end{itemize}
    124 		\column{5cm}
    125 		\uncover<7->
    126 		{
    127 		\begin{center}
    128 		\fontsize{7pt}{7pt}\selectfont
    129 	\begin{tikzpicture}[scale=.5]
    130 		\node[circle,minimum size=15pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
    131 		\node[circle,minimum size=15pt,fill=black!15] at (  0:0) (Client) {$\Child$};
    132 		\node[circle,minimum size=15pt,fill=black!15] at (  0:4) (Merchant) {$\Merchant$};
    133 		\node[circle,minimum size=15pt,fill=blue!15]  at (140:3) (Guardian) {$\Guardian$};
    134 
    135 		\draw[->] (Guardian)   to [out=50,in=130, loop] node[above]
    136 			{$\Commit$} (Guardian);
    137 		\draw[->,blue] (Client)   to [out=-125,in=-190, loop] node[below,left]
    138 			{\blue{$\Attest$}} (Client);
    139 		\draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above]
    140 			{\blue{$\Verify$}} (Merchant);
    141 		\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
    142 			{\orange{$\Derive$}} (Client);
    143 		\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
    144 			{\orange{$\Compare$}} (Exchange);
    145 
    146 		\draw[orange,|->] (Client)   to node[sloped,above,align=left]
    147 			{\orange{\scriptsize }} (Exchange);
    148 		\draw[blue,|->] (Client)   to node[sloped, above]
    149 			{\blue{\scriptsize }} (Merchant);
    150 		\draw[,|->] (Guardian) to node[above,sloped,align=left]
    151 			{{\scriptsize }} (Client);
    152 	\end{tikzpicture}
    153 		\end{center}
    154 		}
    155 	\end{columns}
    156 	\vfill
    157 	\uncover<7->{Note: Scheme is independent of payment service protocol.}
    158 \end{frame}
    159 
    160 
    161 \begin{frame}{Formal Function Signatures}
    162 \small 
    163 Searching for functions \uncover<2->{with the following signatures}
    164 \begin{align*}
    165 	&\bf \Commit\uncover<2->{:
    166 		&(\age, \omega) &\mapsto (\commitment, \pruf)
    167 		&\scriptstyle \N_\Age \times \Omega &\scriptstyle \to \Commitments\times\Proofs,
    168 		}
    169 	\\
    170 	&\bf \Attest\uncover<3->{:
    171 		&(\minage, \commitment, \pruf) &\mapsto \attest
    172 		&\scriptstyle \N_\Age\times\Commitments\times\Proofs &\scriptstyle \to \Attests \cup \{\Nil\},
    173 		}
    174 	\\
    175 	&\bf \Verify\uncover<4->{:
    176 		&(\minage, \commitment, \attest) &\mapsto b
    177 		&\scriptstyle \N_\Age\times\Commitments\times\Attests &\scriptstyle \to \Z_2,
    178 		}
    179 	\\
    180 	&\bf \Derive\uncover<5->{:
    181 		&(\commitment, \pruf, \omega) &\mapsto (\commitment', \pruf', \blinding)
    182 		&\scriptstyle \Commitments\times\Proofs\times\Omega &\scriptstyle \to \Commitments\times\Proofs\times\Blindings,
    183 		}
    184 	\\
    185 	&\bf \Compare\uncover<6->{:
    186 		&(\commitment, \commitment', \blinding) &\mapsto b
    187 		&\scriptstyle \Commitments\times\Commitments\times\Blindings &\scriptstyle \to \Z_2,
    188 		}
    189 \end{align*}
    190 	\uncover<7->{
    191 		with $\Omega, \Proofs, \Commitments, \Attests, \Blindings$
    192 		sufficiently large sets.\\[1em]
    193 		Basic and security requirements are defined later.\\[2em]
    194 	}
    195 
    196 		\scriptsize
    197 	\uncover<2->{
    198 		Mnemonics:\\
    199 		$\Commitments=$ \textit{c$\Commitments$mmitments},
    200 		$\commitment=$ \textit{Q-mitment} (commitment),
    201 		$\Proofs=$ \textit{$\Proofs$roofs},
    202 	}
    203 	\uncover<3->{
    204 		$\pruf=$ \textit{$\pruf$roof},\\
    205 		$\Attests=$ \textit{a$\Attests$testations},
    206 		$\attest=$ \textit{a$\attest$testation},
    207 	}
    208 	\uncover<5->{
    209 		$\Blindings=$ \textit{$\Blindings$lindings},
    210 		$\blinding=$ \textit{$\blinding$linding}.
    211 	}
    212 \end{frame}
    213 
    214 \begin{frame}{Age restriction}
    215 	\framesubtitle{Naïve scheme}
    216 	\begin{center}
    217 	\begin{tikzpicture}[scale=.85]
    218 		\node[circle,minimum size=20pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
    219 		\node[circle,minimum size=20pt,fill=black!15] at (  0:0) (Client) {$\Child$};
    220 		\node[circle,minimum size=20pt,fill=black!15] at (  0:4) (Merchant) {$\Merchant$};
    221 		\node[circle,minimum size=20pt,fill=blue!15]  at (140:3) (Guardian) {$\Guardian$};
    222 
    223 		\draw[->] (Guardian)   to [out=50,in=130, loop] node[above]
    224 			{$\Commit$} (Guardian);
    225 		\draw[->,blue] (Client)   to [out=-125,in=-190, loop] node[below,left]
    226 			{\blue{$\Attest$}} (Client);
    227 		\draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above]
    228 			{\blue{$\Verify$}} (Merchant);
    229 		\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
    230 			{\orange{$\Derive$}} (Client);
    231 		\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
    232 			{\orange{$\Compare$}} (Exchange);
    233 
    234 		\draw[orange,|->] (Client)   to node[sloped,above,align=left]
    235 			{\orange{\scriptsize }} (Exchange);
    236 		\draw[blue,|->] (Client)   to node[sloped, above]
    237 			{\blue{\scriptsize }} (Merchant);
    238 		\draw[,|->] (Guardian) to node[above,sloped,align=left]
    239 			{{\scriptsize }} (Client);
    240 	\end{tikzpicture}
    241 	\end{center}
    242 \end{frame}
    243 
    244 \begin{frame}{Achieving Unlinkability}
    245 	\begin{columns}
    246 		\column{3cm}
    247 		\begin{center}
    248 		\fontsize{8pt}{9pt}\selectfont
    249 		\begin{tikzpicture}[scale=.65]
    250 			\node[circle,minimum size=20pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
    251 			\node[circle,minimum size=20pt,fill=black!15] at (  0:0) (Client) {$\Child$};
    252 
    253 			\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
    254 				{\orange{$\footnotesize \Derive()$}} (Client);
    255 			\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
    256 				{\orange{$\footnotesize \Compare()$}} (Exchange);
    257 
    258 			\draw[orange,|->] (Client)   to node[sloped,above,align=left]
    259 				{\orange{\tiny \uncover<2->{$(\commitment_i,\commitment_{i+1})$}}} (Exchange);
    260 		\end{tikzpicture}
    261 		\end{center}
    262 
    263 		\column{9cm}
    264 	Simple use of $\Derive()$ and $\Compare()$ is problematic.
    265 
    266 	\begin{itemize}
    267 		\item<2-> Calling $\Derive()$ iteratively generates sequence 
    268 			$(\commitment_0, \commitment_1, \dots)$ of commitments.
    269 		\item<2-> Exchange calls $\Compare(\commitment_i, \commitment_{i+1}, .)$ 
    270 		\item[$\implies$]\uncover<3->{\bf Exchange identifies sequence}
    271 		\item[$\implies$]\uncover<3->{\bf Unlinkability broken}
    272 	\end{itemize}
    273 	\end{columns}
    274 \end{frame}
    275 
    276 \begin{frame}{Achieving Unlinkability}
    277 	Define cut\&choose protocol \orange{$\DeriveCompare$},
    278 	using $\Derive()$ and $\Compare()$.\\[0.5em]
    279 	\uncover<2->{
    280 	Sketch:
    281 	\small
    282 	\begin{enumerate}
    283 		\item $\Child$ derives commitments $(\commitment_1,\dots,\commitment_\kappa)$ 
    284 			from $\commitment_0$ \\
    285 			by calling $\Derive()$ with blindings $(\beta_1,\dots,\beta_\kappa)$
    286 		\item $\Child$ calculates $h_0:=H\left(H(\commitment_1, \beta_1)||\dots||H(\commitment_\kappa, \beta_\kappa)\right)$
    287 		\item $\Child$ sends $\commitment_0$ and $h_0$ to $\Exchange$
    288 		\item $\Exchange$ chooses $\gamma \in \{1,\dots,\kappa\}$ randomly
    289 		\item $\Child$ reveals $h_\gamma:=H(\commitment_\gamma, \beta_\gamma)$ and all $(\commitment_i, \beta_i)$, except $(\commitment_\gamma, \beta_\gamma)$
    290 		\item $\Exchange$ compares $h_0$ and 
    291 			$H\left(H(\commitment_1, \beta_1)||...||h_\gamma||...||H(\commitment_\kappa, \beta_\kappa)\right)$\\
    292 			and evaluates $\Compare(\commitment_0, \commitment_i, \beta_i)$.
    293 	\end{enumerate}
    294 	\vfill
    295 	Note: Scheme is similar to the {\it refresh} protocol in GNU Taler.
    296 	}
    297 \end{frame}
    298 
    299 \begin{frame}{Achieving Unlinkability}
    300 	With \orange{$\DeriveCompare$}
    301 	\begin{itemize}
    302 		\item $\Exchange$ learns nothing about $\commitment_\gamma$,
    303 		\item trusts outcome with $\frac{\kappa-1}{\kappa}$ certainty,
    304 		\item i.e. $\Child$ has $\frac{1}{\kappa}$ chance to cheat.
    305 	\end{itemize}
    306 	\vfill
    307 	Note: Still need Derive and Compare to be defined.
    308 \end{frame}
    309 
    310 \begin{frame}{Refined scheme}
    311 
    312 	\begin{tikzpicture}[scale=.8]
    313 		\node[circle,minimum size=25pt,fill=black!15] at (  0:0) (Client)   {$\Child$};
    314 		\node[circle,minimum size=25pt,fill=black!15] at ( 60:5) (Exchange) {$\Exchange$};
    315 		\node[circle,minimum size=25pt,fill=black!15] at (  0:5) (Merchant) {$\Merchant$};
    316 		\node[circle,minimum size=25pt,fill=blue!15]  at (130:3) (Guardian) {$\Guardian$};
    317 
    318 		\draw[orange,<->] (Client)   to node[sloped,below,align=center]
    319 			{\orange{$\DeriveCompare$}} (Exchange);
    320 		\draw[blue,->] (Client)   to node[sloped, below]
    321 			{\blue{$(\attest_\minage, \commitment)$}} (Merchant);
    322 
    323 		\draw[->] (Guardian)   to [out=150,in=70, loop] node[above]
    324 			{$\Commit(\age)$} (Guardian);
    325 		\draw[->] (Guardian)   to node[below,sloped]
    326 			{($\commitment$, $\pruf_\age$)} (Client);
    327 		\draw[->,blue] (Client)   to [out=-50,in=-130, loop] node[below]
    328 			{\blue{$\Attest(\minage, \commitment, \pruf_{\age})$}} (Client);
    329 		\draw[->,blue] (Merchant) to [out=-50,in=-130, loop] node[below]
    330 			{\blue{$\Verify(\minage, \commitment, \attest_{\minage})$}} (Merchant);
    331 	\end{tikzpicture}
    332 \end{frame}
    333 
    334 % \begin{frame}{Achieving Unlinkability}
    335 % 	\scriptsize
    336 % 	$\DeriveCompare : \Commitments\times\Proofs\times\Omega \to \{0,1\}$\\
    337 % 	\vfill
    338 % 	$\DeriveCompare(\commitment, \pruf, \omega) =$
    339 % \begin{itemize}
    340 % \it
    341 % 	\itemsep0.5em
    342 % 	\item[$\Child$:]
    343 % 		\begin{enumerate}
    344 % 				\scriptsize
    345 % 			\itemsep0.3em
    346 % 			\item for all $i \in \{1,\dots,\kappa\}:
    347 % 				(\commitment_i,\pruf_i,\beta_i) \leftarrow \Derive(\commitment, \pruf, \omega + i)$
    348 % 			\item $h \leftarrow \Hash\big(\Hash(\commitment_1,\beta_1)\parallel\dots\parallel\Hash(\commitment_\kappa,\beta_\kappa) \big)$
    349 % 			\item send $(\commitment, h)$ to $\Exchange$
    350 % 		\end{enumerate}
    351 % 	\item[$\Exchange$:]
    352 % 		\begin{enumerate}
    353 % 			\setcounter{enumi}{4}
    354 % 				\scriptsize
    355 % 			\itemsep0.3em
    356 % 			\item save $(\commitment, h)$ \label{st:hash}
    357 % 			\item $\gamma \drawfrom \{1,\dots ,\kappa\}$
    358 % 			\item send $\gamma$ to $\Child$
    359 % 		\end{enumerate}
    360 % 	\item[$\Child$:]
    361 % 		\begin{enumerate}
    362 % 			\setcounter{enumi}{7}
    363 % 
    364 % 				\scriptsize
    365 % 			\itemsep0.3em
    366 % 			\item $h'_\gamma \leftarrow \Hash(\commitment_\gamma, \beta_\gamma)$
    367 % 			\item $\mathbf{E}_\gamma \leftarrow \big[(\commitment_1,\beta_1),\dots,
    368 % 				(\commitment_{\gamma-1}, \beta_{\gamma-1}),
    369 % 				\Nil,
    370 % 				(\commitment_{\gamma+1}, \beta_{\gamma+1}),
    371 % 				\dots,(\commitment_\kappa, \beta_\kappa)\big]$
    372 % 			\item send $(\mathbf{E}_\gamma, h'_\gamma)$ to $\Exchange$
    373 % 		\end{enumerate}
    374 % 	\item[$\Exchange$:]
    375 % 		\begin{enumerate}
    376 % 			\setcounter{enumi}{10}
    377 % 				\scriptsize
    378 % 			\itemsep0.3em
    379 % 			\item for all $i \in \{1,\dots,\kappa\}\setminus\{\gamma\}: h_i \leftarrow \Hash(\mathbf{E}_\gamma[i])$
    380 % 			\item if $h \stackrel{?}{\neq} \HashF(h_1\|\dots\|h_{\gamma-1}\|h'_\gamma\|h_{\gamma+1}\|\dots\|h_{\kappa-1})$ return 0
    381 % 			\item for all $i \in \{1,\dots,\kappa\}\setminus\{\gamma\}$:
    382 % 				if $0 \stackrel{?}{=} \Compare(\commitment,\commitment_i, \beta_i)$ return $0$
    383 % 			\item return 1
    384 % 		\end{enumerate}
    385 % \end{itemize}
    386 % \end{frame}
    387 
    388 \begin{frame}{Basic Requirements}
    389 
    390 	Candidate functions 
    391 	\[ (\Commit, \Attest, \Verify, \Derive, \Compare) \]
    392 	must first meet \textit{basic} requirements:
    393 
    394 	\begin{itemize}
    395 		\item Existence of attestations
    396 		\item Efficacy of attestations
    397 		\item Derivability of commitments and attestations
    398 	\end{itemize}
    399 \end{frame}
    400 
    401 \begin{frame}{Basic Requirements}
    402 	\framesubtitle{Formal Details}
    403 
    404 	\begin{description}
    405 		\item[Existence of attestations]
    406 			{\scriptsize
    407 			\begin{align*}
    408 				\Forall_{\age\in\N_\Age \atop \omega \in \Omega}:
    409 				\Commit(\age, \omega) =: (\commitment, \pruf)
    410 				\implies 
    411 				\Attest(\minage, \commitment, \pruf) =
    412 				\begin{cases}
    413 					\attest \in \Attests, \text{ if } \minage \leq \age\\
    414 					\Nil \text{ otherwise}
    415 				\end{cases}
    416 			\end{align*}}
    417 		\item[Efficacy of attestations]
    418 			{\scriptsize
    419 			\begin{align*}
    420 				\Verify(\minage, \commitment, \attest) = \
    421 				\begin{cases}
    422 					1, \text{if } \Exists_{\pruf \in \Proofs}: \Attest(\minage, \commitment, \pruf) = \attest\\
    423 					0 \text{ otherwise}
    424 				\end{cases}
    425 			\end{align*}}
    426 
    427 			{\scriptsize
    428 			\begin{align*}
    429 				\forall_{n \leq \age}: \Verify\big(n, \commitment, \Attest(n, \commitment, \pruf)\big) = 1.
    430 			\end{align*}}
    431 		\item[etc.]
    432 	\end{description}
    433 \end{frame}
    434 
    435 %\begin{frame}{Requirements}
    436 %	\framesubtitle{Details}
    437 %
    438 %	\begin{description}
    439 %		\item[Derivability of commitments and proofs:]~\\[0.1em]
    440 %		{\scriptsize
    441 %		Let \begin{align*}
    442 %			\age & \in\N_\Age,\,\, \omega_0, \omega_1 \in\Omega\\
    443 %			(\commitment_0, \pruf_0) & \leftarrow \Commit(\age, \omega_0),\\
    444 %			(\commitment_1, \pruf_1, \blinding) & \leftarrow  \Derive(\commitment_0, \pruf_0, \omega_1).
    445 %		\end{align*}
    446 %		We require
    447 %		\begin{align*}
    448 %			\Compare(\commitment_0, \commitment_1, \blinding) = 1 \label{req:comparity}
    449 %		\end{align*}
    450 %		and for all $n\leq\age$:
    451 %		\begin{align*}
    452 %					\Verify(n, \commitment_1, \Attest(n, \commitment_1, \pruf_1)) &%
    453 %					=
    454 %					\Verify(n, \commitment_0,  \Attest(n, \commitment_0,  \pruf_0))
    455 %		\end{align*}}
    456 %	\end{description}
    457 %\end{frame}
    458 
    459 \begin{frame}{Security Requirements}
    460 	Candidate functions must also meet \textit{security} requirements.
    461 	Those are defined via security games:
    462 	\begin{itemize}
    463 		\item Game: Age disclosure by commitment or attestation
    464 		\item[$\leftrightarrow$] Requirement: Non-disclosure of age
    465 			\vfill
    466 
    467 		\item Game: Forging attestation
    468 		\item[$\leftrightarrow$] Requirement: Unforgeability of
    469 			minimum age
    470 			\vfill
    471 
    472 		\item Game: Distinguishing derived commitments and attestations
    473 		\item[$\leftrightarrow$] Requirement: Unlinkability of
    474 			commitments and attestations
    475 
    476 	\end{itemize}
    477 	\vfill
    478 
    479 	Meeting the security requirements means that adversaries can win
    480 	those games only with negligible advantage.
    481 	\vfill
    482 	Adversaries are arbitrary polynomial-time algorithms, acting on all
    483 	relevant input.
    484 \end{frame}
    485 
    486 \begin{frame}{Security Requirements}
    487 	\framesubtitle{Simplified Example}
    488 
    489 	\begin{description}
    490 		\item[Game $\Game{FA}(\lambda)$---Forging an attest:]~\\
    491 	{\small
    492 	\begin{enumerate}
    493 		\item $ (\age, \omega)	\drawfrom	\N_{\Age-1}\times\Omega $
    494 		\item $ (\commitment, \pruf)	\leftarrow	\Commit(\age, \omega) $
    495 		\item $ (\minage, \attest) \leftarrow \Adv(\age, \commitment, \pruf)$
    496 		\item Return 0 if $\minage \leq \age$
    497 		\item Return $\Verify(\minage,\commitment,\attest)$
    498 	\end{enumerate}
    499 	}
    500 	\vfill
    501 	\item[Requirement: Unforgeability of minimum age]
    502 		{\small
    503 	\begin{equation*}
    504 		\Forall_{\Adv\in\PPT(\N_\Age\times\Commitments\times\Proofs\to \N_\Age\times\Attests)}:
    505 		\Probability\Big[\Game{FA}(\lambda) = 1\Big] \le \negl(\lambda)
    506 	\end{equation*}
    507 	}
    508 	\end{description}
    509 \end{frame}
    510 
    511 \section{Solution/Instantiation}
    512 
    513 \begin{frame}{Solution: Instantiation with ECDSA}
    514 %	\framesubtitle{Definition of Commit}
    515 
    516 	\begin{description}
    517 		\item[To Commit to age (group) $\age \in \{1,\dots,\Age\}$]~\\
    518 		\begin{enumerate}
    519 			\item<2-> Guardian generates ECDSA-keypairs, one per age (group):
    520 				\[\langle(q_1, p_1),\dots,(q_\Age,p_\Age)\rangle\]
    521 			\item<3-> Guardian then \textbf{drops} all private keys
    522 				$p_i$ for $i > \age$:
    523 				\[\Big \langle(q_1, p_1),\dots, 
    524 					(q_\age, p_\age), 
    525 					(q_{\age +1}, \red{\Nil}),\dots, 
    526 					(q_\Age, \red{\Nil})\Big\rangle\]
    527 
    528 				\begin{itemize}
    529 					\item $\Vcommitment := (q_1, \dots, q_\Age)$ is the \textit{Commitment},
    530 					\item $\Vpruf_\age := (p_1, \dots, p_\age, \Nil,\dots,\Nil)$ is the \textit{Proof}
    531 				\end{itemize}
    532 				\vfill
    533 			\item<4-> Guardian gives child $\langle \Vcommitment, \Vpruf_\age \rangle$
    534 				\vfill
    535 		\end{enumerate}
    536 	\end{description}
    537 \end{frame}
    538 
    539 \begin{frame}{Instantiation with ECDSA}
    540 	\framesubtitle{Definitions of Attest and Verify}
    541 
    542 	Child has 
    543 	\begin{itemize}
    544 		\item ordered public-keys $\Vcommitment = (q_1, \dots, q_\Age) $,
    545 		\item (some) private-keys $\Vpruf = (p_1, \dots, p_\age, \Nil, \dots, \Nil)$.
    546 	\end{itemize}
    547 	\begin{description}
    548 		\item<2->[To \blue{Attest} a minimum age $\blue{\minage} \leq \age$:]~\\
    549 			Sign a message with ECDSA using private key $p_\blue{\minage}$
    550 	\end{description}
    551 
    552 	\vfill
    553 
    554 	\uncover<3->{
    555 	Merchant gets 
    556 	\begin{itemize}
    557 		\item ordered public-keys $\Vcommitment = (q_1, \dots, q_\Age) $
    558 		\item Signature $\sigma$
    559 	\end{itemize}
    560 	\begin{description}
    561 		\item<4->[To \blue{Verify} a minimum age $\minage$:]~\\
    562 			Verify the ECDSA-Signature $\sigma$ with public key $q_\minage$.
    563 	\end{description}
    564 	}
    565 	\vfill
    566 \end{frame}
    567 
    568 \begin{frame}{Instantiation with ECDSA}
    569 	\framesubtitle{Definitions of Derive and Compare}
    570 	Child has 
    571 	$\Vcommitment = (q_1, \dots, q_\Age) $ and 
    572 	$\Vpruf = (p_1, \dots, p_\age, \Nil, \dots, \Nil)$.
    573 	\begin{description}
    574 		\item<2->[To \blue{Derive} new $\Vcommitment'$ and $\Vpruf'$:]
    575 			Choose random $\beta\in\Z_g$ and calculate
    576 			\small
    577 			\begin{align*}
    578 				\Vcommitment' &:= \big(\beta * q_1,\ldots,\beta * q_\Age\big),\\
    579 				\Vpruf' &:= \big(\beta p_1,\ldots,\beta p_\age,\Nil,\ldots,\Nil\big)
    580 			\end{align*}
    581 			Note: $ (\beta p_i)*G = \beta*(p_i*G)  = \beta*q_i$\\
    582 			\scriptsize $\beta*q_i$ is scalar multiplication on the elliptic curve.
    583 	\end{description}
    584 
    585 		\vfill
    586 	\uncover<3->{
    587 		Exchange gets $\Vcommitment = (q_1,\dots,q_\Age)$, $\Vcommitment' = (q_1', \dots, q_\Age')$ and $\beta$
    588 	\begin{description}
    589 		\item[To \blue{Compare}, calculate:]
    590 			\small
    591 		$(\beta * q_1, \ldots , \beta * q_\Age) \stackrel{?}{=} (q'_1,\ldots, q'_\Age)$
    592 	\end{description}
    593 	\vfill
    594 	}
    595 \end{frame}
    596 
    597 \begin{frame}{Instantiation with ECDSA}
    598 
    599 	Functions
    600 	(Commit, Attest, Verify, Derive, Compare)\\
    601 	as defined in the instantiation with ECDSA\\[0.5em]
    602 	\begin{itemize}
    603 		\item meet the basic requirements,\\[0.5em]
    604 		\item also meet all security requirements.\\
    605 		Proofs by security reduction, details are in the paper.
    606 	\end{itemize}
    607 
    608 \end{frame}
    609 
    610 
    611 % \begin{frame}{Instantiation with ECDSA}
    612 % 	\framesubtitle{Full definitions}
    613 % 	\scriptsize
    614 % 
    615 % \begin{align*}
    616 % 	\Commit_{E,\FDHg{\cdot}}(\age, \omega) &:= \Big\langle
    617 % 		\overbrace{(q_1,\ldots,q_\Age)}^{= \Vcommitment},\;
    618 % 		\overbrace{(p_1,\ldots,p_\age, \Nil,\ldots,\Nil)}^{= \Vpruf \text{, length }\Age}
    619 % 		\Big\rangle\\
    620 % 	\Attest_{E,\HashF}(\bage, \Vcommitment, \Vpruf) &:=
    621 % 		\begin{cases}
    622 % 			\attest_\bage := \Sign_{E,\HashF}\big(\bage,\Vpruf[\bage]\big) & \text{if } \Vpruf[\bage] \stackrel{?}{\neq} \Nil\\
    623 % 			\Nil & \text{otherwise}
    624 % 		\end{cases}\\
    625 % %
    626 % 	\Verify_{E,\HashF}(\bage, \Vcommitment, \attest) &:= \Ver_{E,\HashF}(\bage, \Vcommitment[\bage], \attest)\\
    627 % %
    628 % 	\Derive_{E, \FDHg{\cdot}}(\Vcommitment, \Vpruf, \omega) &:=
    629 % 		\Big\langle(\beta * q_1,\ldots,\beta * q_\Age),
    630 % 		     (\beta p_1,\ldots,\beta p_\age,\Nil,\ldots,\Nil), \beta \Big\rangle \\
    631 % 		     & \text{ with } \beta := \FDHg{\omega} \text{ and multiplication } \beta p_i \text{ modulo } g \nonumber\\
    632 % %
    633 % 	\Compare_E(\Vcommitment, \Vcommitment', \beta)	&:=
    634 % 		\begin{cases}
    635 % 			1 & \text{if } (\beta * q_1, \ldots , \beta * q_\Age) \stackrel{?}{=} (q'_1,\ldots, q'_\Age)\\
    636 % 			0 & \text{otherwise}
    637 % 		\end{cases}
    638 % \end{align*}
    639 % \end{frame}
    640 
    641 \section{Integration with GNU Taler}
    642 
    643 \begin{frame}{GNU Taler}
    644 	\framesubtitle{https://www.taler.net}
    645 	\begin{columns}
    646 		\column{4cm}
    647 		\fontsize{8pt}{9pt}\selectfont
    648 	\begin{tikzpicture}[scale=.55]
    649 		\node[circle,fill=black!10] at (3, 4) (Exchange) {$\Exchange$};
    650 		\node[circle,fill=black!10] at (0, 0) (Customer) {$\Customer$};
    651 		\node[circle,fill=black!10] at (6, 0) (Merchant) {$\Merchant$};
    652 
    653 		\draw[<->] (Customer)   to [out=65,in=220] node[sloped,above] {\sf withdraw} (Exchange);
    654 		\draw[<->] (Customer)   to [out=45,in=240] node[sloped,below] {\sf refresh} (Exchange);
    655 		\draw[<->] (Customer)   to node[sloped, below] {\sf purchase} (Merchant);
    656 		\draw[<->] (Merchant) to node[sloped, above] {\sf deposit} (Exchange);
    657 	\end{tikzpicture}
    658 		\column{8cm}
    659 		\begin{itemize}
    660 			\item Protocol suite for online payment services
    661 			\item Based on Chaum's blind signatures
    662 			% \item Taxable, efficient, free software
    663 			\item Allows for change and refund (F. Dold)
    664 			\item Privacy preserving: anonymous and unlinkable payments
    665 		\end{itemize}
    666 	\end{columns}
    667 
    668 	\vfill
    669 	\uncover<2->{
    670 	\begin{itemize}
    671 		\item Coins are public-/private key-pairs $(C_p, c_s)$.
    672 		\item Exchange blindly signs $\FDH(C_p)$ with denomination key $d_p$
    673 		\item Verification:
    674 		\begin{eqnarray*}
    675 			1  &\stackrel{?}{=}&
    676 			\mathsf{SigCheck}\big(\FDH(C_p), D_p, \sigma_p\big)
    677 		\end{eqnarray*}
    678 		\scriptsize($D_p$ = public key of denomination and $\sigma_p$ = signature)
    679 
    680 	\end{itemize}
    681 	}
    682 \end{frame}
    683 
    684 \begin{frame}{Integration with GNU Taler}
    685 	\framesubtitle{Binding age restriction to coins}
    686 
    687 	To bind an age commitment $\commitment$ to a coin $C_p$, instead of
    688 	signing $\FDH(C_p)$, $\Exchange$ now blindly signs 
    689 	\begin{center}
    690 		$\FDH(C_p, \orange{H(\commitment)})$
    691 	\end{center}
    692 
    693 	\vfill
    694 	Verfication of a coin now requires $H(\commitment)$, too:
    695 	\begin{center}
    696 		$1  \stackrel{?}{=}
    697 		\mathsf{SigCheck}\big(\FDH(C_p, \orange{H(\commitment)}), D_p, \sigma_p\big)$
    698 	\end{center}
    699 	\vfill
    700 \end{frame}
    701 
    702 \begin{frame}{Integration with GNU Taler}
    703 	\framesubtitle{Integrated schemes}
    704 	\fontsize{8pt}{9pt}\selectfont
    705 	\begin{tikzpicture}[scale=.9]
    706 		\node[circle,minimum size=25pt,fill=black!15] at (  0:0) (Client)   {$\Child$};
    707 		\node[circle,minimum size=25pt,fill=black!15] at ( 60:5) (Exchange) {$\Exchange$};
    708 		\node[circle,minimum size=25pt,fill=black!15] at (  0:5) (Merchant) {$\Merchant$};
    709 		\node[circle,minimum size=25pt,fill=blue!15]  at (130:3) (Guardian) {$\Guardian$};
    710 
    711 		\draw[<->] (Guardian)   to  node[sloped,above,align=center]
    712 			{{\sf withdraw}\orange{, using}\\ $\FDH(C_p\orange{, H(\commitment)})$} (Exchange);
    713 		\draw[<->] (Client)   to node[sloped,below,align=center]
    714 			{{\sf refresh} \orange{ + }\\ \orange{$\DeriveCompare$}} (Exchange);
    715 		\draw[<->] (Client)   to node[sloped, below]
    716 			{{\sf purchase} \blue{+ $(\attest_\minage, \commitment)$}} (Merchant);
    717 		\draw[<->] (Merchant) to node[sloped, above]
    718 			{{\sf deposit} \orange{+ $H(\commitment)$}} (Exchange);
    719 
    720 		\draw[->] (Guardian)   to [out=70,in=150, loop] node[above]
    721 			{$\Commit(\age)$} (Guardian);
    722 		\draw[->] (Guardian)   to node[below,sloped]
    723 			{($\commitment$, $\pruf_\age$)} (Client);
    724 		\draw[->,blue] (Client)   to [out=-50,in=-130, loop] node[below]
    725 			{\blue{$\Attest(\minage, \commitment, \pruf_{\age})$}} (Client);
    726 		\draw[->,blue] (Merchant) to [out=-50,in=-130, loop] node[below]
    727 			{\blue{$\Verify(\minage, \commitment, \attest_{\minage})$}} (Merchant);
    728 	\end{tikzpicture}
    729 \end{frame}
    730 
    731 \begin{frame}{Instantiation with Edx25519}
    732 	Paper also formally defines another signature scheme: Edx25519.\\[1em]
    733 
    734 	\begin{itemize}
    735 		\item Scheme already in use in GNUnet,
    736 		\item based on EdDSA (Bernstein et al.),
    737 		\item generates compatible signatures and
    738 		\item allows for key derivation from both, private and public keys, independently.
    739 	\end{itemize}~\\[1em]
    740 
    741 	Current implementation of age restriction in GNU Taler uses Edx25519.
    742 \end{frame}
    743 
    744 \section{Discussion, Related Work, Conclusion}
    745 
    746 \begin{frame}{Discussion}
    747 	\begin{itemize}
    748 		\item Our solution can in principle be used with any token-based payment scheme
    749 		\item GNU Taler best aligned with our design goals (security, privacy and efficiency)
    750 		\item Subsidiarity requires bank accounts being owned by adults
    751 			\begin{itemize}
    752 			\item Scheme can be adapted to case where minors have bank accounts
    753 				\begin{itemize}
    754 					\item Assumption: banks provide minimum age
    755 						information during bank
    756 						transactions.
    757 					\item Child and Exchange execute a variant of
    758 						the cut\&choose protocol.
    759 				\end{itemize}
    760 			\end{itemize}
    761 		\item Our scheme offers an alternative to identity management systems (IMS)
    762 	\end{itemize}
    763 \end{frame}
    764 \begin{frame}{Related Work}
    765 	\begin{itemize}
    766 		\item Current privacy-perserving systems all based on attribute-based credentials (Koning et al., Schanzenbach et al., Camenisch et al., Au et al.)
    767 		\item Attribute-based approach lacks support: 
    768 			\begin{itemize}
    769 				\item Complex for consumers and retailers
    770 				\item Requires trusted third authority
    771 			\end{itemize}
    772 		\vfill
    773 		\item Other approaches tie age-restriction to ability to pay ("debit cards for kids")
    774 			\begin{itemize}
    775 				\item Advantage: mandatory to payment process
    776 				\item Not privacy friendly
    777 			\end{itemize}
    778 	\end{itemize}
    779 \end{frame}
    780 
    781 \begin{frame}{Conclusion}
    782 	Age restriction is a technical, ethical and legal challenge.
    783 
    784 	Existing solutions are
    785 	\begin{itemize}
    786 		\item without strong protection of privacy or
    787 		\item based on identity management systems (IMS)
    788 	\end{itemize}
    789 	\vfill
    790 
    791 	Our scheme offers a solution that is
    792 	\begin{itemize}
    793 		\item based on subsidiarity
    794 		\item privacy preserving
    795 		\item efficient
    796 		\item an alternative to IMS
    797 	\end{itemize}
    798 \end{frame}
    799 
    800 
    801 \end{document}