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}