marketing

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

2023-moztw-crypto.tex (100595B)


      1 \pdfminorversion=3
      2 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer}
      3 \usepackage{amsmath}
      4 \usepackage{multimedia}
      5 \usepackage[utf8]{inputenc}
      6 \usepackage{framed,color,ragged2e}
      7 \usepackage[absolute,overlay]{textpos}
      8 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
      9 \usetheme{boxes}
     10 \setbeamertemplate{navigation symbols}{}
     11 \usepackage{xcolor}
     12 \usepackage[normalem]{ulem}
     13 \usepackage{listings}
     14 \usepackage{adjustbox}
     15 \usepackage{array}
     16 \usepackage{bbding}
     17 \usepackage{relsize}
     18 \usepackage{graphicx}
     19 \usepackage{tikz,eurosym,calc}
     20 \usetikzlibrary{tikzmark}
     21 \usetikzlibrary{shapes,arrows,arrows.meta}
     22 \usetikzlibrary{positioning,fit,patterns}
     23 \usetikzlibrary{calc}
     24 \usepackage{multicol}
     25 \usepackage{pgf-umlsd}
     26 \usepackage{relsize}
     27 
     28 
     29 % CSS
     30 \lstdefinelanguage{CSS}{
     31   basicstyle=\ttfamily\scriptsize,
     32   keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width, transition:, transform:, transition-property, transition-duration, transition-timing-function},
     33   sensitive=true,
     34   morecomment=[l]{//},
     35   morecomment=[s]{/*}{*/},
     36   morestring=[b]',
     37   morestring=[b]",
     38   alsoletter={:},
     39   alsodigit={-}
     40 }
     41 
     42 % JavaScript
     43 \lstdefinelanguage{JavaScript}{
     44   basicstyle=\ttfamily\scriptsize,
     45   morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
     46   morecomment=[s]{/*}{*/},
     47   morecomment=[l]//,
     48   morestring=[b]",
     49   morestring=[b]'
     50 }
     51 
     52 \lstdefinelanguage{HTML5}{
     53   basicstyle=\ttfamily\scriptsize,
     54   language=html,
     55   sensitive=true,
     56   alsoletter={<>=-},
     57   morecomment=[s]{<!-}{-->},
     58   tag=[s],
     59   otherkeywords={
     60   % General
     61   >,
     62   % Standard tags
     63 	<!DOCTYPE,
     64   </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
     65 	% body
     66 	</body, <body,
     67 	% Divs
     68 	</div, <div, </div>,
     69 	% Paragraphs
     70 	</p, <p, </p>,
     71 	% scripts
     72 	</script, <script,
     73   % More tags...
     74   <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
     75   },
     76   ndkeywords={
     77   % General
     78   =,
     79   % HTML attributes
     80   charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
     81   % SVG attributes
     82   fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
     83   % CSS properties
     84   margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
     85 	% CSS3 properties
     86   transform:, -moz-transform:, -webkit-transform:,
     87   animation:, -webkit-animation:,
     88   transition:,  transition-duration:, transition-property:, transition-timing-function:,
     89   }
     90 }
     91 
     92 \lstdefinelanguage{JavaScript}{
     93   basicstyle=\ttfamily\scriptsize,
     94   keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
     95   keywordstyle=\color{blue}\bfseries,
     96   ndkeywords={class, export, boolean, throw, implements, import, this},
     97   ndkeywordstyle=\color{darkgray}\bfseries,
     98   identifierstyle=\color{black},
     99   sensitive=false,
    100   comment=[l]{//},
    101   morecomment=[s]{/*}{*/},
    102   commentstyle=\color{purple}\ttfamily,
    103   stringstyle=\color{red}\ttfamily,
    104   morestring=[b]',
    105   morestring=[b]"
    106 }
    107 
    108 \setbeamersize{description width=1em}
    109 
    110 \definecolor{blue}{rgb}{0,0,0.7}
    111 \newcommand{\orange}[1]{{\color{orange}#1}}
    112 \newcommand{\blue}[1]{{\color{blue}#1}}
    113 \newcommand{\red}[1]{{\color{red}#1}}
    114 \newcommand{\Guardian}{\mathcal{G}}
    115 \newcommand{\Child}{\mathcal{C}}
    116 \newcommand{\Customer}{\mathcal{C}}
    117 \newcommand{\Merchant}{\mathcal{M}}
    118 \newcommand{\Exchange}{\mathcal{E}}
    119 
    120 \newcommand{\Commit}{\mathsf{Commit}}
    121 \newcommand{\Attest}{\mathsf{Attest}}
    122 \newcommand{\Verify}{\mathsf{Verify}}
    123 \newcommand{\Derive}{\mathsf{Derive}}
    124 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}}
    125 \newcommand{\Compare}{\mathsf{Compare}}
    126 \newcommand{\AgeVer}{\mathsf{AgeVer}}
    127 
    128 \newcommand{\HashF}{\mathsf{H}}
    129 \newcommand{\Hash}{\mathsf{H}}
    130 \newcommand{\Block}{\mathbb{B}}
    131 \newcommand{\Pub}{\mathsf{Pub}}
    132 \newcommand{\Sign}{\mathsf{Sig}}
    133 \newcommand{\Ver}{\mathsf{Ver}}
    134 \newcommand{\Encoding}{\mathsf{Encoding}}
    135 \newcommand{\ECDSA}{\mathsf{ECDSA}}
    136 \newcommand{\Null}{\mathcal{O}}
    137 \newcommand{\EC}{\mathrm{ec}}
    138 \newcommand{\Curve}{\mathsf{Curve25519}}
    139 \newcommand{\SHA}{\mathsf{SHA256}}
    140 \newcommand{\SHAF}{\mathsf{SHA252}}
    141 \newcommand{\FDH}{\mathsf{FDH}}
    142 
    143 \newcommand{\negl}{\epsilon}
    144 
    145 \newcommand{\rand}{\mathsf{rand}}
    146 \newcommand{\age}{\mathsf{a}}
    147 \newcommand{\Age}{\mathsf{M}}
    148 \newcommand{\bage}{\mathsf{b}}
    149 \newcommand{\minage}{\mathsf{m}}
    150 \newcommand{\attest}{\mathsf{T}}
    151 \newcommand{\commitment}{\mathsf{Q}}
    152 \newcommand{\pruf}{\mathsf{P}}
    153 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}}
    154 \newcommand{\Vpruf}{\vec{\mathsf{P}}}
    155 \newcommand{\blinding}{\beta}
    156 
    157 \newcommand{\ZN}{\mathbb{Z}_N}
    158 \newcommand{\Z}{\mathbb{Z}}
    159 \newcommand{\N}{\mathbb{N}}
    160 \newcommand{\A}{\mathbb{A}}
    161 \newcommand{\E}{\mathbb{E}}
    162 \newcommand{\F}{\mathbb{F}}
    163 \newcommand{\seck}{\mathsf{s}}
    164 \newcommand{\pubk}{\mathsf{P}}
    165 \renewcommand{\H}{\mathbb{H}}
    166 \newcommand{\K}{\mathbb{K}}
    167 \newcommand{\Proofs}{\mathbb{P}}
    168 \newcommand{\Commitments}{\mathbb{O}}
    169 \newcommand{\Attests}{\mathbb{T}}
    170 \newcommand{\Blindings}{\mathbb{B}}
    171 \newcommand{\Nil}{\perp}
    172 
    173 \newcommand{\p}{\mathsf{p}}
    174 \newcommand{\com}{\mathsf{com}}
    175 \newcommand{\prf}{\mathsf{prf}}
    176 
    177 \newcommand{\Adv}{\mathcal{A}}
    178 \newcommand{\PPT}{\mathfrak{A}}
    179 \newcommand{\Probability}{\mathrm{Pr}}
    180 \newcommand{\Algorithm}{f}
    181 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}}
    182 
    183 \DeclareMathOperator{\Image}{Im}
    184 \DeclareMathOperator{\Mod}{mod}
    185 
    186 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}}
    187 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}}
    188 \newcommand{\FDHg}[1]{[#1]_g\,}
    189 \newcommand{\logg}{{\breve{g}}}
    190 
    191 
    192 \newcommand{\drawfrom}{\xleftarrow{\$}}
    193 \newcommand\Exists{%
    194 	  \mathop{\lower0.75ex\hbox{\ensuremath{%
    195 		  \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}%
    196 	  \limits}
    197 
    198 \newcommand\Forall{%
    199 	  \mathop{\lower0.75ex\hbox{\ensuremath{%
    200 		  \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}%
    201 	  \limits}
    202 
    203 
    204 \title{GNU Taler}
    205 %\subtitle{}
    206 
    207 \setbeamertemplate{navigation symbols}{ \includegraphics[width=0.4cm]{logo-esen.pdf} \includegraphics[width=1cm]{logo-GlsBank.pdf} \includegraphics[width=0.6cm]{logo-MagNetBank.pdf} \includegraphics[width=0.4cm]{logo-ps.pdf} \includegraphics[width=0.4cm]{logo-nlnet.pdf} \includegraphics[width=0.4cm]{logo-HomoDigitalis.pdf} \includegraphics[width=0.4cm]{logo-codeblau.pdf}  \includegraphics[width=1.4cm]{logo-tue.pdf}  \includegraphics[width=0.6cm]{logo-visualvest.pdf} \includegraphics[width=1cm]{inria.pdf} \includegraphics[width=0.4cm]{logo-bfh.pdf} \includegraphics[width=1.6cm]{fub.pdf} \includegraphics[width=0.4cm]{ashoka.png}  \includegraphics[width=0.4cm]{gnu.png} \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf} \hfill}
    208 %\setbeamercovered{transparent=1}
    209 
    210 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci}
    211 \date{\today}
    212 \institute{The GNU Project}
    213 
    214 
    215 \begin{document}
    216 
    217 \justifying
    218 
    219 \begin{frame}
    220   \begin{center}
    221     \LARGE {\bf GNU}
    222 
    223     \vfill
    224 %    \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf}
    225     \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf}
    226   \end{center}
    227   \begin{center}
    228       \includegraphics[width=0.15\textwidth]{logo-EU.pdf}
    229       \includegraphics[width=0.15\textwidth]{logo-SBFI.pdf}
    230   \end{center}
    231 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords)
    232     {\Large {\bf \href{https://taler.net/}{taler.net}} \\
    233     \href{https://twitter.com/taler}{taler@twitter} \\
    234     \href{https://taler-systems.com/}{taler-systems.com}}
    235 \end{textblock*}
    236 
    237 % Substitute based on who is giving the talk!
    238  \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords)
    239    {\hfill {\bf Christian Grothoff} \\
    240     \hfill grothoff@taler.net }
    241 \end{textblock*}
    242 
    243 \end{frame}
    244 
    245 
    246 \begin{frame}{Agenda}
    247   \tableofcontents
    248 \end{frame}
    249 
    250 \section{Motivation \& Background}
    251 
    252 
    253 \begin{frame}{A Social Problem}
    254 %  \vfill
    255   This was a question posed to RAND researchers in 1971:
    256 
    257 \begin{quote}
    258   ``Suppose you were an advisor to the head of the KGB, the Soviet Secret Police. Suppose you are given the assignment of designing a system for the surveillance of all citizens and visitors within the boundaries of the USSR. The system is not to be too obtrusive or obvious. What would be your decision?''
    259 \end{quote}
    260 %The result: an electronic funds transfer system that looks
    261 %strikingly similar today's debit card system.
    262 \pause
    263   \begin{center}
    264   \includegraphics[height=1cm]{pics/nsa_spy.jpg}
    265   \end{center}
    266 \vfill
    267   \begin{center}
    268 ``I think one of the big things that we need to do, is we need
    269 to get away from true-name payments on the Internet. The credit
    270 card payment system is one of the worst things that happened for the
    271 user, in terms of being able to divorce their access from their
    272 identity.'' \hfill --Edward Snowden, IETF 93 (2015)
    273 \end{center}
    274 
    275 \end{frame}
    276 
    277 
    278 \begin{frame}{The Bank of International Settlements}
    279   \begin{center}
    280     \movie[%scale=0.6,
    281            autostart,
    282            poster]
    283            {
    284                \includegraphics[height=0.6\textwidth,width=0.8\textwidth]{white.png}
    285            }
    286           {bis-cbdc.mp4}
    287   \end{center}
    288 \end{frame}
    289 
    290 
    291 \section{GNU Taler: Introduction}
    292 
    293 \begin{frame}
    294   \vfill
    295   \begin{center}
    296     {\bf GNU Taler: Introduction}
    297   \end{center}
    298   \vfill
    299 \end{frame}
    300 
    301 
    302 \begin{frame}{GNU Taler}
    303   \vfill
    304   \begin{center}
    305     {\huge {\bf Digital} cash, made \textbf{socially responsible}.}
    306   \end{center}
    307   \vfill
    308   \begin{center}
    309   \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf}
    310   \end{center}
    311   \vfill
    312   \begin{center}
    313     Privacy-Preserving, Practical, Taxable, Free Software, Efficient
    314   \end{center}
    315  \vfill
    316  \vfill
    317 \ %
    318 \end{frame}
    319 
    320 
    321 \begin{frame}{What is Taler?}
    322   \framesubtitle{\url{https://taler.net/en/features.html}}  \noindent
    323 Taler is
    324   \vfill
    325   \begin{itemize}
    326     \item a Free/Libre software \emph{payment system} infrastructure project
    327     \item ... with a surrounding software ecosystem
    328     \item ... and a company (Taler Systems S.A.) and community that wants to deploy it
    329       as widely as possible.
    330   \end{itemize}
    331   \vfill
    332 \noindent
    333  However, Taler is
    334   \begin{itemize}
    335     \item \emph{not} a currency or speculative asset
    336     \item \emph{not} a long-term store of value
    337     \item \emph{not} a network or instance of a system
    338     \item \emph{not} decentralized
    339     \item \emph{not} based on proof-of-work or proof-of-stake
    340   \end{itemize}
    341 \end{frame}
    342 
    343 
    344 \begin{frame}{Design principles}
    345   \framesubtitle{https://taler.net/en/principles.html}
    346 GNU Taler must ...
    347 \begin{enumerate}
    348   \item {... be implemented as {\bf free software}.}
    349   \item {... protect the {\bf privacy of buyers}.}
    350   \item {... must enable the state to {\bf tax income} and crack down on
    351     illegal business activities.}
    352   \item {... prevent payment fraud.}
    353   \item {... only {\bf disclose the minimal amount of information
    354     necessary}.}
    355   \item {... be usable.}
    356   \item {... be efficient.}
    357   \item {... avoid single points of failure.}
    358   \item {... foster {\bf competition}.}
    359 \end{enumerate}
    360 \end{frame}
    361 
    362 
    363 \begin{frame}
    364 \frametitle{Taler Overview}
    365 \begin{center}
    366 \begin{tikzpicture}
    367  \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
    368  \node (origin) at (0,0) {};
    369  \node (exchange) [def,above=of origin,draw]{Exchange};
    370  \node (customer) [def, draw, below left=of origin] {Customer};
    371  \node (merchant) [def, draw, below right=of origin] {Merchant};
    372  \node (auditor) [def, draw, above right=of origin]{Auditor};
    373 % \node (regulator) [def, draw, above=of auditor]{CSSF};
    374 
    375  \tikzstyle{C} = [color=black, line width=1pt]
    376 
    377  \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
    378  \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
    379  \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
    380  \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
    381 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
    382 
    383 \end{tikzpicture}
    384 \end{center}
    385 \end{frame}
    386 
    387 
    388 
    389 \begin{frame}
    390   % TODO: replace with simplified NEW architecture picture!
    391 \frametitle{Architecture of Taler}
    392 \begin{center}
    393   \includegraphics[width=1\textwidth]{operations.png}
    394 \end{center}
    395 \end{frame}
    396 
    397 
    398 \begin{frame}{Usability of Taler}
    399   \vfill
    400   \begin{center}
    401     \url{https://demo.taler.net/}
    402   \end{center}
    403   \begin{enumerate}
    404   \item Install browser extension.
    405   \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
    406   \item Visit the {\tt shop.demo.taler.net} to spend coins.
    407   \end{enumerate}
    408   \vfill
    409 \end{frame}
    410 
    411 
    412 \section{Protocol Basics}
    413 
    414 \begin{frame}
    415   \vfill
    416   \begin{center}
    417     {\bf Protocol Basics}
    418   \end{center}
    419   \vfill
    420 \end{frame}
    421 
    422 \begin{frame}{How does it work?}
    423 We use a few ancient constructions:
    424   \begin{itemize}
    425   \item Cryptographic hash function (1989)
    426   \item Blind signature (1983)
    427   \item Schnorr signature (1989)
    428   \item Diffie-Hellman key exchange (1976)
    429   \item Cut-and-choose zero-knowledge proof (1985)
    430   \end{itemize}
    431 But of course we use modern instantiations.
    432 \end{frame}
    433 
    434 
    435 \begin{frame}{Definition: Taxability}
    436   We say Taler is taxable because:
    437   \begin{itemize}
    438   \item Merchant's income is visible from deposits.
    439   \item Hash of contract is part of deposit data.
    440   \item State can trace income and enforce taxation.
    441   \end{itemize}\pause
    442   Limitations:
    443   \begin{itemize}
    444   \item withdraw loophole
    445   \item {\em sharing} coins among family and friends
    446   \end{itemize}
    447 \end{frame}
    448 
    449 
    450 \begin{frame}{Exchange setup: Create a denomination key (RSA)}
    451    \begin{minipage}{6cm}
    452     \begin{enumerate}
    453     \item Pick random primes $p,q$.
    454     \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$
    455     \item Pick small $e < \phi(n)$ such that
    456           $d := e^{-1} \mod \phi(n)$ exists.
    457     \item Publish public key $(e,n)$.
    458     \end{enumerate}
    459   \end{minipage}
    460   \begin{minipage}{6cm}
    461   \begin{tikzpicture}
    462  \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em];
    463     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    464     \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$};
    465     \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}};
    466     \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}};
    467 
    468     \tikzstyle{C} = [color=black, line width=1pt]
    469 
    470     \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {};
    471     \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {};
    472     \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {};
    473   \end{tikzpicture}
    474 %  \includegraphics[width=0.4\textwidth]{seal.pdf}
    475   \end{minipage}
    476 \end{frame}
    477 
    478 
    479 \begin{frame}{Merchant: Create a signing key (EdDSA)}
    480   \begin{minipage}{6cm}
    481     \begin{itemize}
    482   \item pick random $m \mod o$ as private key
    483   \item $M = mG$ public key
    484   \end{itemize}
    485   \end{minipage}
    486   \begin{minipage}{6cm}
    487   \begin{tikzpicture}
    488    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    489     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    490     \node (m) [draw=none, below = of origin] at (0,0) {$m$};
    491     \node (seal) [draw=none, below=of m]{M};
    492    \tikzstyle{C} = [color=black, line width=1pt]
    493 
    494     \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {};
    495     \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {};
    496   \end{tikzpicture}
    497   \end{minipage}
    498   \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ }
    499   \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}}
    500 \end{frame}
    501 
    502 
    503 \begin{frame}{Customer: Create a planchet (EdDSA)}
    504   \begin{minipage}{8cm}
    505   \begin{itemize}
    506   \item Pick random $c \mod o$ private key
    507   \item $C = cG$ public key
    508   \end{itemize}
    509   \end{minipage}
    510   \begin{minipage}{4cm}
    511   \begin{tikzpicture}
    512    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    513     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    514     \node (c) [draw=none, below = of origin] at (0,0) {$c$};
    515     \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}};
    516     \tikzstyle{C} = [color=black, line width=1pt]
    517 
    518     \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {};
    519     \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {};
    520   \end{tikzpicture}
    521   \end{minipage}
    522   \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ }
    523   \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}}
    524 \end{frame}
    525 
    526 
    527 \begin{frame}{Customer: Blind planchet (RSA)}
    528   \begin{minipage}{6cm}
    529     \begin{enumerate}
    530     \item Obtain public key $(e,n)$
    531     \item Compute $f := FDH(C)$, $f < n$.
    532     \item Pick blinding factor $b \in \mathbb Z_n$
    533     \item Transmit $f' := f b^e \mod n$
    534     \end{enumerate}
    535   \end{minipage}
    536   \begin{minipage}{6cm}
    537   \begin{tikzpicture}
    538    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    539     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    540     \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$};
    541     \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}};
    542     \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}};
    543     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    544     \tikzstyle{C} = [color=black, line width=1pt]
    545 
    546     \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {};
    547     \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {};
    548     \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {};
    549     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    550   \end{tikzpicture}
    551   \end{minipage}
    552 \end{frame}
    553 
    554 
    555 \begin{frame}{Exchange: Blind sign (RSA)}
    556    \begin{minipage}{6cm}
    557     \begin{enumerate}
    558     \item Receive $f'$.
    559     \item Compute $s' := f'^d \mod n$.
    560     \item Send signature $s'$.
    561     \end{enumerate}
    562    \end{minipage}
    563   \begin{minipage}{6cm}
    564   \begin{tikzpicture}
    565    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    566     \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}};
    567     \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}};
    568     \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    569     \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer};
    570     \tikzstyle{C} = [color=black, line width=1pt]
    571 
    572     \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {};
    573     \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {};
    574     \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}};
    575   \end{tikzpicture}
    576   \end{minipage}
    577 \end{frame}
    578 
    579 
    580 \begin{frame}{Customer: Unblind coin (RSA)}
    581   \begin{minipage}{6cm}
    582    \begin{enumerate}
    583     \item Receive $s'$.
    584     \item Compute $s := s' b^{-1} \mod n$ % \\
    585     % ($(f')^d = (f b^e)^d = f^d b$).
    586     \end{enumerate}
    587    \end{minipage}
    588   \begin{minipage}{6cm}
    589   \begin{tikzpicture}
    590    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    591     \node (b) [def, draw=none] at (0,0) {$b$};
    592     \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
    593     \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
    594     \tikzstyle{C} = [color=black, line width=1pt]
    595 
    596     \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {};
    597     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
    598   \end{tikzpicture}
    599   \end{minipage}
    600 \end{frame}
    601 
    602 
    603 \begin{frame}{Customer: Build shopping cart}
    604   \begin{center}
    605   \begin{tikzpicture}
    606    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    607     \node (origin) [draw=none] at (0,0) {\includegraphics[width=0.2\textwidth]{cart.pdf}};
    608     \node (merchant) [node distance=4em and 0.5em, draw, below =of origin]{\includegraphics[width=0.2\textwidth]{shop.pdf}};
    609     \tikzstyle{C} = [color=black, line width=1pt];
    610     \draw [<-, C] (merchant) -- (origin) node [midway, above, sloped] (TextNode) {{\small transmit}};
    611   \end{tikzpicture}
    612   \end{center}
    613 \end{frame}
    614 
    615 
    616 \begin{frame}{Merchant: Propose contract (EdDSA)}
    617    \begin{minipage}{6cm}
    618    \begin{enumerate}
    619     \item Complete proposal $D$.
    620     \item Send $D$, $EdDSA_m(D)$
    621     \end{enumerate}
    622    \end{minipage}
    623   \begin{minipage}{6cm}
    624   \begin{tikzpicture}
    625    \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em];
    626     \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}};
    627     \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}};
    628     \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer};
    629     \tikzstyle{C} = [color=black, line width=1pt];
    630     \node (sign) [def, draw=none, above right=of proposal] {$m$};
    631     \tikzstyle{C} = [color=black, line width=1pt]
    632 
    633     \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {};
    634     \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {};
    635     \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}};
    636   \end{tikzpicture}
    637   \end{minipage}
    638 \end{frame}
    639 
    640 
    641 \begin{frame}{Customer: Spend coin (EdDSA)}
    642   \begin{minipage}{6cm}
    643    \begin{enumerate}
    644     \item Receive proposal $D$, $EdDSA_m(D)$.
    645     \item Send $s$, $C$, $EdDSA_c(D)$
    646     \end{enumerate}
    647    \end{minipage}
    648   \begin{minipage}{6cm}
    649   \begin{tikzpicture}
    650    \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em];
    651     \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}};
    652     \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}};
    653     \node (c) [def, draw=none, above=of contract] {$c$};
    654     \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant};
    655     \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
    656     \tikzstyle{C} = [color=black, line width=1pt]
    657 
    658     \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {};
    659     \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {};
    660     \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}};
    661     \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}};
    662   \end{tikzpicture}
    663   \end{minipage}
    664 \end{frame}
    665 
    666 
    667 \begin{frame}{Merchant and Exchange: Verify coin (RSA)}
    668    \begin{minipage}{6cm}
    669  \begin{equation*}
    670    s^e \stackrel{?}{\equiv} FDH(C) \mod n
    671    \end{equation*}
    672    \end{minipage}
    673   \begin{minipage}{6cm}
    674   \begin{minipage}{0.2\textwidth}
    675     \includegraphics[width=\textwidth]{coin.pdf}
    676   \end{minipage}
    677   $\stackrel{?}{\Leftrightarrow}$
    678   \begin{minipage}{0.2\textwidth}
    679     \includegraphics[width=\textwidth]{seal.pdf}
    680   \end{minipage}
    681   \end{minipage}
    682   \vfill
    683   The exchange does not only verify the signature, but also
    684   checks that the coin was not double-spent.
    685   \vfill
    686   \pause
    687   \begin{center}
    688   {\bf Taler is an online payment system.}
    689   \end{center}
    690   \vfill
    691 \end{frame}
    692 
    693 
    694 \begin{frame}{Giving change}
    695   It would be inefficient to pay EUR 100 with 1 cent coins!
    696   \begin{itemize}
    697   \item Denomination key represents value of a coin.
    698   \item Exchange may offer various denominations for coins.
    699   \item Wallet may not have exact change!
    700   \item Usability requires ability to pay given sufficient total funds.
    701   \end{itemize}\pause
    702   Key goals:
    703   \begin{itemize}
    704   \item maintain unlinkability
    705   \item maintain taxability of transactions
    706   \end{itemize}\pause
    707   Method:
    708   \begin{itemize}
    709     \item Contract can specify to only pay {\em partial value} of a coin.
    710     \item Exchange allows wallet to obtain {\em unlinkable change}
    711       for remaining coin value.
    712   \end{itemize}
    713 \end{frame}
    714 
    715 
    716 \begin{frame}{Diffie-Hellman (ECDH)}
    717   \begin{minipage}{8cm}
    718    \begin{enumerate}
    719     \item Create private keys $c,t \mod o$
    720     \item Define $C = cG$
    721     \item Define $T = tG$
    722     \item Compute DH \\ $cT = c(tG) = t(cG) = tC$
    723     \end{enumerate}
    724    \end{minipage}
    725   \begin{minipage}{6cm}
    726   \begin{tikzpicture}
    727    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    728     \node (t) [def, draw=none] at (0,0) {$t$};
    729     \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}};
    730     \node (c) [def, draw=none, above left= of ct]  {$c$};
    731     \tikzstyle{C} = [color=black, line width=1pt]
    732 
    733     \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {};
    734     \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {};
    735   \end{tikzpicture}
    736   \end{minipage}
    737 \end{frame}
    738 
    739 
    740 \begin{frame}{Strawman solution}
    741   \begin{minipage}{8cm}
    742     Given partially spent private coin key $c_{old}$:
    743    \begin{enumerate}
    744 %    \item Let $C_{old} := c_{old}G$ (as before)
    745     \item Pick random $c_{new} \mod o$ private key
    746     \item $C_{new} = c_{new}G$ public key
    747     \item Pick random $b_{new}$
    748     \item Compute $f_{new} := FDH(C_{new})$, $m < n$.
    749     \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$
    750    \end{enumerate}
    751    ... and sign request for change with $c_{old}$.
    752    \end{minipage}
    753   \begin{minipage}{4cm}
    754   \begin{tikzpicture}
    755    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    756     \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    757     \node (planchet) [def, draw=none, above left= of blinded]  {\includegraphics[width=0.15\textwidth]{planchet.pdf}};
    758     \node (cnew) [def, draw=none, above= of planchet]  {$c_{new}$};
    759     \node (bnew) [def, draw=none, above right= of blinded]  {$b_{new}$};
    760     \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    761     \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    762     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    763 
    764     \tikzstyle{C} = [color=black, line width=1pt]
    765 
    766     \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {};
    767     \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {};
    768     \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {};
    769     \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {};
    770     \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {};
    771     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    772   \end{tikzpicture}
    773   \end{minipage}
    774   \pause
    775   \vfill
    776   {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!}
    777 \end{frame}
    778 
    779 
    780 \begin{frame}{Customer: Transfer key setup (ECDH)}
    781   \begin{minipage}{8cm}
    782     Given partially spent private coin key $c_{old}$:
    783    \begin{enumerate}
    784     \item Let $C_{old} := c_{old}G$ (as before)
    785     \item Create random private transfer key $t \mod o$
    786     \item Compute $T := tG$
    787     \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$
    788     \item Derive $c_{new}$ and $b_{new}$ from $X$
    789     \item Compute $C_{new} := c_{new}G$
    790     \item Compute $f_{new} := FDH(C_{new})$
    791     \item Transmit $f_{new}' := f_{new} b_{new}^e$
    792     \end{enumerate}
    793    \end{minipage}
    794   \begin{minipage}{4cm}
    795   \begin{tikzpicture}
    796    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    797     \node (t) [def, draw=none] at (0,0) {$t$};
    798     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    799     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    800     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    801     \node (cp) [def, draw=none, below left= of dh]  {$c_{new}$};
    802     \node (bp) [def, draw=none, below right= of dh]  {$b_{new}$};
    803     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    804     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    805 
    806     \tikzstyle{C} = [color=black, line width=1pt]
    807 
    808     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    809     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    810     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    811     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    812     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    813     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    814     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    815     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    816   \end{tikzpicture}
    817   \end{minipage}
    818 \end{frame}
    819 
    820 
    821 \begin{frame}{Cut-and-Choose}
    822   \begin{minipage}{4cm}
    823   \begin{tikzpicture}
    824    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    825     \node (t) [def, draw=none] at (0,0) {$t_1$};
    826     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    827     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    828     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    829     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,1}$};
    830     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,1}$};
    831     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    832     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    833 
    834     \tikzstyle{C} = [color=black, line width=1pt]
    835 
    836     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    837     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    838     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    839     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    840     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    841     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    842     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    843     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    844   \end{tikzpicture}
    845   \end{minipage}
    846   \begin{minipage}{4cm}
    847   \begin{tikzpicture}
    848    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    849     \node (t) [def, draw=none] at (0,0) {$t_2$};
    850     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    851     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    852     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    853     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,2}$};
    854     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,2}$};
    855     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    856     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    857 
    858     \tikzstyle{C} = [color=black, line width=1pt]
    859 
    860     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    861     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    862     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    863     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    864     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    865     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    866     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    867     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    868   \end{tikzpicture}
    869   \end{minipage}
    870   \begin{minipage}{4cm}
    871   \begin{tikzpicture}
    872    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    873     \node (t) [def, draw=none] at (0,0) {$t_3$};
    874     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    875     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    876     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    877     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,3}$};
    878     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,3}$};
    879     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    880     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    881 
    882     \tikzstyle{C} = [color=black, line width=1pt]
    883 
    884     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    885     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    886     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    887     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    888     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    889     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    890     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    891     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    892   \end{tikzpicture}
    893   \end{minipage}
    894 \end{frame}
    895 
    896 
    897 \begin{frame}{Exchange: Choose!}
    898    \begin{center}
    899     \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer.
    900     \end{center}
    901 \end{frame}
    902 
    903 
    904 \begin{frame}{Customer: Reveal}
    905    \begin{enumerate}
    906    \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange
    907    \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange
    908    \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange
    909   \end{enumerate}
    910 \end{frame}
    911 
    912 
    913 \begin{frame}{Exchange: Verify ($\gamma = 2$)}
    914   \begin{minipage}{4cm}
    915   \begin{tikzpicture}
    916    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    917     \node (h) [def, draw=none] at (0,0) {$t_1$};
    918     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    919     \node (d) [def, draw=none, above left= of dh]  {$C_{old}$};
    920     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,1}$};
    921     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,1}$};
    922     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    923 
    924     \tikzstyle{C} = [color=black, line width=1pt]
    925 
    926     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    927     \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {};
    928     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    929     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    930     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    931     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    932   \end{tikzpicture}
    933   \end{minipage}
    934   \begin{minipage}{4cm}
    935  \
    936   \end{minipage}
    937   \begin{minipage}{4cm}
    938   \begin{tikzpicture}
    939    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    940     \node (h) [def, draw=none] at (0,0) {$t_3$};
    941     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    942     \node (d) [def, draw=none, above left= of dh]  {$C_{old}$};
    943     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,3}$};
    944     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,3}$};
    945     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    946 
    947     \tikzstyle{C} = [color=black, line width=1pt]
    948 
    949     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    950     \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {};
    951     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    952     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    953     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    954     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    955   \end{tikzpicture}
    956   \end{minipage}
    957 \end{frame}
    958 
    959 
    960 \begin{frame}{Exchange: Blind sign change (RSA)}
    961    \begin{minipage}{6cm}
    962     \begin{enumerate}
    963     \item Take $f_{new,\gamma}'$.
    964     \item Compute $s' := f_{new,\gamma}'^d \mod n$.
    965     \item Send signature $s'$.
    966     \end{enumerate}
    967    \end{minipage}
    968   \begin{minipage}{6cm}
    969   \begin{tikzpicture}
    970    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    971     \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}};
    972     \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}};
    973     \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    974     \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer};
    975     \tikzstyle{C} = [color=black, line width=1pt]
    976 
    977     \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {};
    978     \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {};
    979     \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}};
    980   \end{tikzpicture}
    981   \end{minipage}
    982 \end{frame}
    983 
    984 
    985 \begin{frame}{Customer: Unblind change (RSA)}
    986   \begin{minipage}{6cm}
    987    \begin{enumerate}
    988     \item Receive $s'$.
    989     \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$.
    990     \end{enumerate}
    991    \end{minipage}
    992   \begin{minipage}{6cm}
    993   \begin{tikzpicture}
    994    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    995     \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$};
    996     \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
    997     \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
    998     \tikzstyle{C} = [color=black, line width=1pt]
    999 
   1000     \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {};
   1001     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
   1002   \end{tikzpicture}
   1003   \end{minipage}
   1004 \end{frame}
   1005 
   1006 
   1007 \begin{frame}{Exchange: Allow linking change}
   1008   \begin{minipage}{7cm}
   1009     \begin{center}
   1010     Given $C_{old}$
   1011 
   1012     \vspace{1cm}
   1013 
   1014     return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$.
   1015   \end{center}
   1016    \end{minipage}
   1017   \begin{minipage}{5cm}
   1018    \begin{tikzpicture}
   1019     \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em];
   1020     \node (co) [def, draw=none] at (0,0) {$C_{old}$};
   1021     \node (T) [def, draw=none, below left=of co]{$T_\gamma$};
   1022     \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
   1023     \node (customer) [def, draw, below right=of T] {Customer};
   1024 
   1025     \tikzstyle{C} = [color=black, line width=1pt]
   1026 
   1027     \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {};
   1028     \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {};
   1029     \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link};
   1030     \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link};
   1031   \end{tikzpicture}
   1032   \end{minipage}
   1033 \end{frame}
   1034 
   1035 
   1036 \begin{frame}{Customer: Link (threat!)}
   1037   \begin{minipage}{6.3cm}
   1038    \begin{enumerate}
   1039     \item Have $c_{old}$.
   1040     \item Obtain $T_\gamma$, $s$ from exchange
   1041     \item Compute $X_\gamma = c_{old}T_\gamma$
   1042     \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$
   1043     \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$
   1044   \end{enumerate}
   1045 
   1046    \end{minipage}
   1047   \begin{minipage}{5.7cm}
   1048   \begin{tikzpicture}
   1049   \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
   1050     \node (T) [def, draw=none] at (0,0) {$T_\gamma$};
   1051     \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange};
   1052     \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
   1053     \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
   1054     \node (bp) [def, draw=none, below left= of dh]  {$b_{new,\gamma}$};
   1055     \node (co) [def, draw=none, above right= of dh]  {$c_{old}$};
   1056     \node (cp) [def, draw=none, below= of dh]  {$c_{new,\gamma}$};
   1057     \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
   1058     \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}};
   1059 
   1060     \tikzstyle{C} = [color=black, line width=1pt]
   1061 
   1062     \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {};
   1063     \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {};
   1064     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1065     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1066     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
   1067     \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {};
   1068     \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link};
   1069     \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link};
   1070     \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {};
   1071   \end{tikzpicture}
   1072   \end{minipage}
   1073 \end{frame}
   1074 
   1075 
   1076 \begin{frame}{Refresh protocol summary}
   1077   \begin{itemize}
   1078   \item Customer asks exchange to convert old coin to new coin
   1079   \item Protocol ensures new coins can be recovered from old coin
   1080   \item[$\Rightarrow$] New coins are owned by the same entity!
   1081   \end{itemize}
   1082   Thus, the refresh protocol allows:
   1083   \begin{itemize}
   1084   \item To give unlinkable change.
   1085   \item To give refunds to an anonymous customer.
   1086   \item To expire old keys and migrate coins to new ones.
   1087   \item To handle protocol aborts.
   1088   \end{itemize}
   1089   \noindent
   1090   \begin{center}
   1091     \bf
   1092    Transactions via refresh are equivalent to {\em sharing} a wallet.
   1093 \end{center}
   1094 \end{frame}
   1095 
   1096 
   1097 
   1098 \section{Programmable money: Age restrictions}
   1099 
   1100 \begin{frame}
   1101   \vfill
   1102   \begin{center}
   1103     {\bf Programmable money: Age restrictions}
   1104   \end{center}
   1105   \vfill
   1106 \end{frame}
   1107 
   1108 
   1109 \begin{frame}{Age restriction in E-commerce}
   1110 
   1111 	\begin{description}
   1112 		\item[Problem:]~\\[1em]
   1113 			Verification of minimum age requirements in e-commerce.\\[2em]
   1114 
   1115 		\item[Common solutions:]
   1116 
   1117 \begin{tabular}{l<{\onslide<2->}c<{\onslide<3->}cr<{\onslide}}
   1118 	& \blue{Privacy} & \tikzmark{topau} \blue{Ext. authority}& \\[\medskipamount]
   1119 	1. ID Verification     & bad   & required & \\[\medskipamount]
   1120 	2. Restricted Accounts & bad   & required & \\[\medskipamount]
   1121 	3. Attribute-based     & good  & required &\tikzmark{bottomau} \\[\medskipamount]
   1122 \end{tabular}
   1123 	\end{description}
   1124 
   1125 \uncover<4->{
   1126 	\begin{tikzpicture}[overlay,remember picture]
   1127 	\draw[orange,thick,rounded corners]
   1128 		($(pic cs:topau) +(0,0.5)$) rectangle ($(pic cs:bottomau) -(0.3, 0.2)$);
   1129 	\end{tikzpicture}
   1130 	\begin{center}
   1131 	\bf Principle of Subsidiarity is violated
   1132 	\end{center}
   1133 }
   1134 \end{frame}
   1135 
   1136 
   1137 \begin{frame}{Principle of Subsidiarity}
   1138 \begin{center} \Large
   1139 	Functions of government---such as granting and restricting
   1140 	rights---should be performed\\
   1141 	{\it at the lowest level of authority possible},\\
   1142 	as long as they can be performed {\it adequately}.
   1143 \end{center}
   1144 \vfill
   1145 \uncover<2->{
   1146 	For age-restriction, the lowest level of authority is:\\
   1147 	\begin{center}\Large
   1148 	Parents, guardians and caretakers
   1149 	\end{center}
   1150 }
   1151 \end{frame}
   1152 
   1153 
   1154 \begin{frame}{Age restriction design for GNU Taler}
   1155 Design and implementation of an age restriction scheme\\
   1156 with the following goals:
   1157 
   1158 \begin{enumerate}
   1159 \item It ties age restriction to the \textbf{ability to pay} (not to ID's)
   1160 \item maintains \textbf{anonymity of buyers}
   1161 \item maintains \textbf{unlinkability of transactions}
   1162 \item aligns with \textbf{principle of subsidiartiy}
   1163 \item is \textbf{practical and efficient}
   1164 \end{enumerate}
   1165 
   1166 \end{frame}
   1167 
   1168 
   1169 \begin{frame}{Age restriction}
   1170 	\framesubtitle{Assumptions and scenario}
   1171 
   1172 	\begin{columns}
   1173 		\column{7.5cm}
   1174 	\begin{itemize}
   1175 		\item<1-> Assumption: Checking accounts are under control of eligible adults/guardians.
   1176 		\item<2-> \textit{Guardians} \textbf{commit} to an maximum age
   1177 		\item<3-> \textit{Minors} \textbf{attest} their adequate age
   1178 		\item<4-> \textit{Merchants} \textbf{verify} the attestations
   1179 		\item<5-> Minors \textbf{derive} age commitments from existing ones
   1180 		\item<6-> \textit{Exchanges} \textbf{compare} the derived age commitments
   1181 	\end{itemize}
   1182 		\column{5cm}
   1183 		\uncover<7->
   1184 		{
   1185 		\begin{center}
   1186 		\fontsize{7pt}{7pt}\selectfont
   1187 	\begin{tikzpicture}[scale=.5]
   1188 		\node[circle,minimum size=15pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
   1189 		\node[circle,minimum size=15pt,fill=black!15] at (  0:0) (Client) {$\Child$};
   1190 		\node[circle,minimum size=15pt,fill=black!15] at (  0:4) (Merchant) {$\Merchant$};
   1191 		\node[circle,minimum size=15pt,fill=blue!15]  at (140:3) (Guardian) {$\Guardian$};
   1192 
   1193 		\draw[->] (Guardian)   to [out=50,in=130, loop] node[above]
   1194 			{$\Commit$} (Guardian);
   1195 		\draw[->,blue] (Client)   to [out=-125,in=-190, loop] node[below,left]
   1196 			{\blue{$\Attest$}} (Client);
   1197 		\draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above]
   1198 			{\blue{$\Verify$}} (Merchant);
   1199 		\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
   1200 			{\orange{$\Derive$}} (Client);
   1201 		\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
   1202 			{\orange{$\Compare$}} (Exchange);
   1203 
   1204 		\draw[orange,|->] (Client)   to node[sloped,above,align=left]
   1205 			{\orange{\scriptsize }} (Exchange);
   1206 		\draw[blue,|->] (Client)   to node[sloped, above]
   1207 			{\blue{\scriptsize }} (Merchant);
   1208 		\draw[,|->] (Guardian) to node[above,sloped,align=left]
   1209 			{{\scriptsize }} (Client);
   1210 	\end{tikzpicture}
   1211 		\end{center}
   1212 		}
   1213 	\end{columns}
   1214 	\vfill
   1215 	\uncover<7->{Note: Scheme is independent of payment service protocol.}
   1216 \end{frame}
   1217 
   1218 
   1219 \begin{frame}{Formal Function Signatures}
   1220 \small
   1221 Searching for functions \uncover<2->{with the following signatures}
   1222 \begin{align*}
   1223 	&\bf \Commit\uncover<2->{:
   1224 		&(\age, \omega) &\mapsto (\commitment, \pruf)
   1225 		&\scriptstyle \N_\Age \times \Omega &\scriptstyle \to \Commitments\times\Proofs,
   1226 		}
   1227 	\\
   1228 	&\bf \Attest\uncover<3->{:
   1229 		&(\minage, \commitment, \pruf) &\mapsto \attest
   1230 		&\scriptstyle \N_\Age\times\Commitments\times\Proofs &\scriptstyle \to \Attests \cup \{\Nil\},
   1231 		}
   1232 	\\
   1233 	&\bf \Verify\uncover<4->{:
   1234 		&(\minage, \commitment, \attest) &\mapsto b
   1235 		&\scriptstyle \N_\Age\times\Commitments\times\Attests &\scriptstyle \to \Z_2,
   1236 		}
   1237 	\\
   1238 	&\bf \Derive\uncover<5->{:
   1239 		&(\commitment, \pruf, \omega) &\mapsto (\commitment', \pruf', \blinding)
   1240 		&\scriptstyle \Commitments\times\Proofs\times\Omega &\scriptstyle \to \Commitments\times\Proofs\times\Blindings,
   1241 		}
   1242 	\\
   1243 	&\bf \Compare\uncover<6->{:
   1244 		&(\commitment, \commitment', \blinding) &\mapsto b
   1245 		&\scriptstyle \Commitments\times\Commitments\times\Blindings &\scriptstyle \to \Z_2,
   1246 		}
   1247 \end{align*}
   1248 	\uncover<7->{
   1249 		with $\Omega, \Proofs, \Commitments, \Attests, \Blindings$
   1250 		sufficiently large sets.\\[1em]
   1251 		Basic and security requirements are defined later.\\[2em]
   1252 	}
   1253 
   1254 		\scriptsize
   1255 	\uncover<2->{
   1256 		Mnemonics:\\
   1257 		$\Commitments=$ \textit{c$\Commitments$mmitments},
   1258 		$\commitment=$ \textit{Q-mitment} (commitment),
   1259 		$\Proofs=$ \textit{$\Proofs$roofs},
   1260 	}
   1261 	\uncover<3->{
   1262 		$\pruf=$ \textit{$\pruf$roof},\\
   1263 		$\Attests=$ \textit{a$\Attests$testations},
   1264 		$\attest=$ \textit{a$\attest$testation},
   1265 	}
   1266 	\uncover<5->{
   1267 		$\Blindings=$ \textit{$\Blindings$lindings},
   1268 		$\blinding=$ \textit{$\blinding$linding}.
   1269 	}
   1270 \end{frame}
   1271 
   1272 \begin{frame}{Age restriction}
   1273 	\framesubtitle{Naïve scheme}
   1274 	\begin{center}
   1275 	\begin{tikzpicture}[scale=.85]
   1276 		\node[circle,minimum size=20pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
   1277 		\node[circle,minimum size=20pt,fill=black!15] at (  0:0) (Client) {$\Child$};
   1278 		\node[circle,minimum size=20pt,fill=black!15] at (  0:4) (Merchant) {$\Merchant$};
   1279 		\node[circle,minimum size=20pt,fill=blue!15]  at (140:3) (Guardian) {$\Guardian$};
   1280 
   1281 		\draw[->] (Guardian)   to [out=50,in=130, loop] node[above]
   1282 			{$\Commit$} (Guardian);
   1283 		\draw[->,blue] (Client)   to [out=-125,in=-190, loop] node[below,left]
   1284 			{\blue{$\Attest$}} (Client);
   1285 		\draw[->,blue] (Merchant) to [out=50,in=130, loop] node[above]
   1286 			{\blue{$\Verify$}} (Merchant);
   1287 		\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
   1288 			{\orange{$\Derive$}} (Client);
   1289 		\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
   1290 			{\orange{$\Compare$}} (Exchange);
   1291 
   1292 		\draw[orange,|->] (Client)   to node[sloped,above,align=left]
   1293 			{\orange{\scriptsize }} (Exchange);
   1294 		\draw[blue,|->] (Client)   to node[sloped, above]
   1295 			{\blue{\scriptsize }} (Merchant);
   1296 		\draw[,|->] (Guardian) to node[above,sloped,align=left]
   1297 			{{\scriptsize }} (Client);
   1298 	\end{tikzpicture}
   1299 	\end{center}
   1300 \end{frame}
   1301 
   1302 \begin{frame}{Achieving Unlinkability}
   1303 	\begin{columns}
   1304 		\column{3cm}
   1305 		\begin{center}
   1306 		\fontsize{8pt}{9pt}\selectfont
   1307 		\begin{tikzpicture}[scale=.65]
   1308 			\node[circle,minimum size=20pt,fill=black!15] at ( 60:4) (Exchange) {$\Exchange$};
   1309 			\node[circle,minimum size=20pt,fill=black!15] at (  0:0) (Client) {$\Child$};
   1310 
   1311 			\draw[->,orange] (Client)   to [out=-35,in=-100, loop] node[below]
   1312 				{\orange{$\footnotesize \Derive()$}} (Client);
   1313 			\draw[->,orange] (Exchange) to [out=50,in=130, loop] node[above]
   1314 				{\orange{$\footnotesize \Compare()$}} (Exchange);
   1315 
   1316 			\draw[orange,|->] (Client)   to node[sloped,above,align=left]
   1317 				{\orange{\tiny \uncover<2->{$(\commitment_i,\commitment_{i+1})$}}} (Exchange);
   1318 		\end{tikzpicture}
   1319 		\end{center}
   1320 
   1321 		\column{9cm}
   1322 	Simple use of $\Derive()$ and $\Compare()$ is problematic.
   1323 
   1324 	\begin{itemize}
   1325 		\item<2-> Calling $\Derive()$ iteratively generates sequence
   1326 			$(\commitment_0, \commitment_1, \dots)$ of commitments.
   1327 		\item<2-> Exchange calls $\Compare(\commitment_i, \commitment_{i+1}, .)$
   1328 		\item[$\implies$]\uncover<3->{\bf Exchange identifies sequence}
   1329 		\item[$\implies$]\uncover<3->{\bf Unlinkability broken}
   1330 	\end{itemize}
   1331 	\end{columns}
   1332 \end{frame}
   1333 
   1334 \begin{frame}{Achieving Unlinkability}
   1335 	Define cut\&choose protocol \orange{$\DeriveCompare$},
   1336 	using $\Derive()$ and $\Compare()$.\\[0.5em]
   1337 	\uncover<2->{
   1338 	Sketch:
   1339 	\small
   1340 	\begin{enumerate}
   1341 		\item $\Child$ derives commitments $(\commitment_1,\dots,\commitment_\kappa)$
   1342 			from $\commitment_0$ \\
   1343 			by calling $\Derive()$ with blindings $(\beta_1,\dots,\beta_\kappa)$
   1344 		\item $\Child$ calculates $h_0:=H\left(H(\commitment_1, \beta_1)||\dots||H(\commitment_\kappa, \beta_\kappa)\right)$
   1345 		\item $\Child$ sends $\commitment_0$ and $h_0$ to $\Exchange$
   1346 		\item $\Exchange$ chooses $\gamma \in \{1,\dots,\kappa\}$ randomly
   1347 		\item $\Child$ reveals $h_\gamma:=H(\commitment_\gamma, \beta_\gamma)$ and all $(\commitment_i, \beta_i)$, except $(\commitment_\gamma, \beta_\gamma)$
   1348 		\item $\Exchange$ compares $h_0$ and
   1349 			$H\left(H(\commitment_1, \beta_1)||...||h_\gamma||...||H(\commitment_\kappa, \beta_\kappa)\right)$\\
   1350 			and evaluates $\Compare(\commitment_0, \commitment_i, \beta_i)$.
   1351 	\end{enumerate}
   1352 	\vfill
   1353 	Note: Scheme is similar to the {\it refresh} protocol in GNU Taler.
   1354 	}
   1355 \end{frame}
   1356 
   1357 \begin{frame}{Achieving Unlinkability}
   1358 	With \orange{$\DeriveCompare$}
   1359 	\begin{itemize}
   1360 		\item $\Exchange$ learns nothing about $\commitment_\gamma$,
   1361 		\item trusts outcome with $\frac{\kappa-1}{\kappa}$ certainty,
   1362 		\item i.e. $\Child$ has $\frac{1}{\kappa}$ chance to cheat.
   1363 	\end{itemize}
   1364 	\vfill
   1365 	Note: Still need Derive and Compare to be defined.
   1366 \end{frame}
   1367 
   1368 \begin{frame}{Refined scheme}
   1369 
   1370 	\begin{tikzpicture}[scale=.8]
   1371 		\node[circle,minimum size=25pt,fill=black!15] at (  0:0) (Client)   {$\Child$};
   1372 		\node[circle,minimum size=25pt,fill=black!15] at ( 60:5) (Exchange) {$\Exchange$};
   1373 		\node[circle,minimum size=25pt,fill=black!15] at (  0:5) (Merchant) {$\Merchant$};
   1374 		\node[circle,minimum size=25pt,fill=blue!15]  at (130:3) (Guardian) {$\Guardian$};
   1375 
   1376 		\draw[orange,<->] (Client)   to node[sloped,below,align=center]
   1377 			{\orange{$\DeriveCompare$}} (Exchange);
   1378 		\draw[blue,->] (Client)   to node[sloped, below]
   1379 			{\blue{$(\attest_\minage, \commitment)$}} (Merchant);
   1380 
   1381 		\draw[->] (Guardian)   to [out=150,in=70, loop] node[above]
   1382 			{$\Commit(\age)$} (Guardian);
   1383 		\draw[->] (Guardian)   to node[below,sloped]
   1384 			{($\commitment$, $\pruf_\age$)} (Client);
   1385 		\draw[->,blue] (Client)   to [out=-50,in=-130, loop] node[below]
   1386 			{\blue{$\Attest(\minage, \commitment, \pruf_{\age})$}} (Client);
   1387 		\draw[->,blue] (Merchant) to [out=-50,in=-130, loop] node[below]
   1388 			{\blue{$\Verify(\minage, \commitment, \attest_{\minage})$}} (Merchant);
   1389 	\end{tikzpicture}
   1390 \end{frame}
   1391 
   1392 % \begin{frame}{Achieving Unlinkability}
   1393 % 	\scriptsize
   1394 % 	$\DeriveCompare : \Commitments\times\Proofs\times\Omega \to \{0,1\}$\\
   1395 % 	\vfill
   1396 % 	$\DeriveCompare(\commitment, \pruf, \omega) =$
   1397 % \begin{itemize}
   1398 % \it
   1399 % 	\itemsep0.5em
   1400 % 	\item[$\Child$:]
   1401 % 		\begin{enumerate}
   1402 % 				\scriptsize
   1403 % 			\itemsep0.3em
   1404 % 			\item for all $i \in \{1,\dots,\kappa\}:
   1405 % 				(\commitment_i,\pruf_i,\beta_i) \leftarrow \Derive(\commitment, \pruf, \omega + i)$
   1406 % 			\item $h \leftarrow \Hash\big(\Hash(\commitment_1,\beta_1)\parallel\dots\parallel\Hash(\commitment_\kappa,\beta_\kappa) \big)$
   1407 % 			\item send $(\commitment, h)$ to $\Exchange$
   1408 % 		\end{enumerate}
   1409 % 	\item[$\Exchange$:]
   1410 % 		\begin{enumerate}
   1411 % 			\setcounter{enumi}{4}
   1412 % 				\scriptsize
   1413 % 			\itemsep0.3em
   1414 % 			\item save $(\commitment, h)$ \label{st:hash}
   1415 % 			\item $\gamma \drawfrom \{1,\dots ,\kappa\}$
   1416 % 			\item send $\gamma$ to $\Child$
   1417 % 		\end{enumerate}
   1418 % 	\item[$\Child$:]
   1419 % 		\begin{enumerate}
   1420 % 			\setcounter{enumi}{7}
   1421 %
   1422 % 				\scriptsize
   1423 % 			\itemsep0.3em
   1424 % 			\item $h'_\gamma \leftarrow \Hash(\commitment_\gamma, \beta_\gamma)$
   1425 % 			\item $\mathbf{E}_\gamma \leftarrow \big[(\commitment_1,\beta_1),\dots,
   1426 % 				(\commitment_{\gamma-1}, \beta_{\gamma-1}),
   1427 % 				\Nil,
   1428 % 				(\commitment_{\gamma+1}, \beta_{\gamma+1}),
   1429 % 				\dots,(\commitment_\kappa, \beta_\kappa)\big]$
   1430 % 			\item send $(\mathbf{E}_\gamma, h'_\gamma)$ to $\Exchange$
   1431 % 		\end{enumerate}
   1432 % 	\item[$\Exchange$:]
   1433 % 		\begin{enumerate}
   1434 % 			\setcounter{enumi}{10}
   1435 % 				\scriptsize
   1436 % 			\itemsep0.3em
   1437 % 			\item for all $i \in \{1,\dots,\kappa\}\setminus\{\gamma\}: h_i \leftarrow \Hash(\mathbf{E}_\gamma[i])$
   1438 % 			\item if $h \stackrel{?}{\neq} \HashF(h_1\|\dots\|h_{\gamma-1}\|h'_\gamma\|h_{\gamma+1}\|\dots\|h_{\kappa-1})$ return 0
   1439 % 			\item for all $i \in \{1,\dots,\kappa\}\setminus\{\gamma\}$:
   1440 % 				if $0 \stackrel{?}{=} \Compare(\commitment,\commitment_i, \beta_i)$ return $0$
   1441 % 			\item return 1
   1442 % 		\end{enumerate}
   1443 % \end{itemize}
   1444 % \end{frame}
   1445 
   1446 \begin{frame}{Basic Requirements}
   1447 
   1448 	Candidate functions
   1449 	\[ (\Commit, \Attest, \Verify, \Derive, \Compare) \]
   1450 	must first meet \textit{basic} requirements:
   1451 
   1452 	\begin{itemize}
   1453 		\item Existence of attestations
   1454 		\item Efficacy of attestations
   1455 		\item Derivability of commitments and attestations
   1456 	\end{itemize}
   1457 \end{frame}
   1458 
   1459 \begin{frame}{Basic Requirements}
   1460 	\framesubtitle{Formal Details}
   1461 
   1462 	\begin{description}
   1463 		\item[Existence of attestations]
   1464 			{\scriptsize
   1465 			\begin{align*}
   1466 				\Forall_{\age\in\N_\Age \atop \omega \in \Omega}:
   1467 				\Commit(\age, \omega) =: (\commitment, \pruf)
   1468 				\implies
   1469 				\Attest(\minage, \commitment, \pruf) =
   1470 				\begin{cases}
   1471 					\attest \in \Attests, \text{ if } \minage \leq \age\\
   1472 					\Nil \text{ otherwise}
   1473 				\end{cases}
   1474 			\end{align*}}
   1475 		\item[Efficacy of attestations]
   1476 			{\scriptsize
   1477 			\begin{align*}
   1478 				\Verify(\minage, \commitment, \attest) = \
   1479 				\begin{cases}
   1480 					1, \text{if } \Exists_{\pruf \in \Proofs}: \Attest(\minage, \commitment, \pruf) = \attest\\
   1481 					0 \text{ otherwise}
   1482 				\end{cases}
   1483 			\end{align*}}
   1484 
   1485 			{\scriptsize
   1486 			\begin{align*}
   1487 				\forall_{n \leq \age}: \Verify\big(n, \commitment, \Attest(n, \commitment, \pruf)\big) = 1.
   1488 			\end{align*}}
   1489 		\item[etc.]
   1490 	\end{description}
   1491 \end{frame}
   1492 
   1493 %\begin{frame}{Requirements}
   1494 %	\framesubtitle{Details}
   1495 %
   1496 %	\begin{description}
   1497 %		\item[Derivability of commitments and proofs:]~\\[0.1em]
   1498 %		{\scriptsize
   1499 %		Let \begin{align*}
   1500 %			\age & \in\N_\Age,\,\, \omega_0, \omega_1 \in\Omega\\
   1501 %			(\commitment_0, \pruf_0) & \leftarrow \Commit(\age, \omega_0),\\
   1502 %			(\commitment_1, \pruf_1, \blinding) & \leftarrow  \Derive(\commitment_0, \pruf_0, \omega_1).
   1503 %		\end{align*}
   1504 %		We require
   1505 %		\begin{align*}
   1506 %			\Compare(\commitment_0, \commitment_1, \blinding) = 1 \label{req:comparity}
   1507 %		\end{align*}
   1508 %		and for all $n\leq\age$:
   1509 %		\begin{align*}
   1510 %					\Verify(n, \commitment_1, \Attest(n, \commitment_1, \pruf_1)) &%
   1511 %					=
   1512 %					\Verify(n, \commitment_0,  \Attest(n, \commitment_0,  \pruf_0))
   1513 %		\end{align*}}
   1514 %	\end{description}
   1515 %\end{frame}
   1516 
   1517 \begin{frame}{Security Requirements}
   1518 	Candidate functions must also meet \textit{security} requirements.
   1519 	Those are defined via security games:
   1520 	\begin{itemize}
   1521 		\item Game: Age disclosure by commitment or attestation
   1522 		\item[$\leftrightarrow$] Requirement: Non-disclosure of age
   1523 			\vfill
   1524 
   1525 		\item Game: Forging attestation
   1526 		\item[$\leftrightarrow$] Requirement: Unforgeability of
   1527 			minimum age
   1528 			\vfill
   1529 
   1530 		\item Game: Distinguishing derived commitments and attestations
   1531 		\item[$\leftrightarrow$] Requirement: Unlinkability of
   1532 			commitments and attestations
   1533 
   1534 	\end{itemize}
   1535 	\vfill
   1536 
   1537 	Meeting the security requirements means that adversaries can win
   1538 	those games only with negligible advantage.
   1539 	\vfill
   1540 	Adversaries are arbitrary polynomial-time algorithms, acting on all
   1541 	relevant input.
   1542 \end{frame}
   1543 
   1544 \begin{frame}{Security Requirements}
   1545 	\framesubtitle{Simplified Example}
   1546 
   1547 	\begin{description}
   1548 		\item[Game $\Game{FA}(\lambda)$---Forging an attest:]~\\
   1549 	{\small
   1550 	\begin{enumerate}
   1551 		\item $ (\age, \omega)	\drawfrom	\N_{\Age-1}\times\Omega $
   1552 		\item $ (\commitment, \pruf)	\leftarrow	\Commit(\age, \omega) $
   1553 		\item $ (\minage, \attest) \leftarrow \Adv(\age, \commitment, \pruf)$
   1554 		\item Return 0 if $\minage \leq \age$
   1555 		\item Return $\Verify(\minage,\commitment,\attest)$
   1556 	\end{enumerate}
   1557 	}
   1558 	\vfill
   1559 	\item[Requirement: Unforgeability of minimum age]
   1560 		{\small
   1561 	\begin{equation*}
   1562 		\Forall_{\Adv\in\PPT(\N_\Age\times\Commitments\times\Proofs\to \N_\Age\times\Attests)}:
   1563 		\Probability\Big[\Game{FA}(\lambda) = 1\Big] \le \negl(\lambda)
   1564 	\end{equation*}
   1565 	}
   1566 	\end{description}
   1567 \end{frame}
   1568 
   1569 
   1570 \begin{frame}{Solution: Instantiation with ECDSA}
   1571 %	\framesubtitle{Definition of Commit}
   1572 
   1573 	\begin{description}
   1574 		\item[To Commit to age (group) $\age \in \{1,\dots,\Age\}$]~\\
   1575 		\begin{enumerate}
   1576 			\item<2-> Guardian generates ECDSA-keypairs, one per age (group):
   1577 				\[\langle(q_1, p_1),\dots,(q_\Age,p_\Age)\rangle\]
   1578 			\item<3-> Guardian then \textbf{drops} all private keys
   1579 				$p_i$ for $i > \age$:
   1580 				\[\Big \langle(q_1, p_1),\dots,
   1581 					(q_\age, p_\age),
   1582 					(q_{\age +1}, \red{\Nil}),\dots,
   1583 					(q_\Age, \red{\Nil})\Big\rangle\]
   1584 
   1585 				\begin{itemize}
   1586 					\item $\Vcommitment := (q_1, \dots, q_\Age)$ is the \textit{Commitment},
   1587 					\item $\Vpruf_\age := (p_1, \dots, p_\age, \Nil,\dots,\Nil)$ is the \textit{Proof}
   1588 				\end{itemize}
   1589 				\vfill
   1590 			\item<4-> Guardian gives child $\langle \Vcommitment, \Vpruf_\age \rangle$
   1591 				\vfill
   1592 		\end{enumerate}
   1593 	\end{description}
   1594 \end{frame}
   1595 
   1596 \begin{frame}{Instantiation with ECDSA}
   1597 	\framesubtitle{Definitions of Attest and Verify}
   1598 
   1599 	Child has
   1600 	\begin{itemize}
   1601 		\item ordered public-keys $\Vcommitment = (q_1, \dots, q_\Age) $,
   1602 		\item (some) private-keys $\Vpruf = (p_1, \dots, p_\age, \Nil, \dots, \Nil)$.
   1603 	\end{itemize}
   1604 	\begin{description}
   1605 		\item<2->[To \blue{Attest} a minimum age $\blue{\minage} \leq \age$:]~\\
   1606 			Sign a message with ECDSA using private key $p_\blue{\minage}$
   1607 	\end{description}
   1608 
   1609 	\vfill
   1610 
   1611 	\uncover<3->{
   1612 	Merchant gets
   1613 	\begin{itemize}
   1614 		\item ordered public-keys $\Vcommitment = (q_1, \dots, q_\Age) $
   1615 		\item Signature $\sigma$
   1616 	\end{itemize}
   1617 	\begin{description}
   1618 		\item<4->[To \blue{Verify} a minimum age $\minage$:]~\\
   1619 			Verify the ECDSA-Signature $\sigma$ with public key $q_\minage$.
   1620 	\end{description}
   1621 	}
   1622 	\vfill
   1623 \end{frame}
   1624 
   1625 \begin{frame}{Instantiation with ECDSA}
   1626 	\framesubtitle{Definitions of Derive and Compare}
   1627 	Child has
   1628 	$\Vcommitment = (q_1, \dots, q_\Age) $ and
   1629 	$\Vpruf = (p_1, \dots, p_\age, \Nil, \dots, \Nil)$.
   1630 	\begin{description}
   1631 		\item<2->[To \blue{Derive} new $\Vcommitment'$ and $\Vpruf'$:]
   1632 			Choose random $\beta\in\Z_g$ and calculate
   1633 			\small
   1634 			\begin{align*}
   1635 				\Vcommitment' &:= \big(\beta * q_1,\ldots,\beta * q_\Age\big),\\
   1636 				\Vpruf' &:= \big(\beta p_1,\ldots,\beta p_\age,\Nil,\ldots,\Nil\big)
   1637 			\end{align*}
   1638 			Note: $ (\beta p_i)*G = \beta*(p_i*G)  = \beta*q_i$\\
   1639 			\scriptsize $\beta*q_i$ is scalar multiplication on the elliptic curve.
   1640 	\end{description}
   1641 
   1642 		\vfill
   1643 	\uncover<3->{
   1644 		Exchange gets $\Vcommitment = (q_1,\dots,q_\Age)$, $\Vcommitment' = (q_1', \dots, q_\Age')$ and $\beta$
   1645 	\begin{description}
   1646 		\item[To \blue{Compare}, calculate:]
   1647 			\small
   1648 		$(\beta * q_1, \ldots , \beta * q_\Age) \stackrel{?}{=} (q'_1,\ldots, q'_\Age)$
   1649 	\end{description}
   1650 	\vfill
   1651 	}
   1652 \end{frame}
   1653 
   1654 \begin{frame}{Instantiation with ECDSA}
   1655 
   1656 	Functions
   1657 	(Commit, Attest, Verify, Derive, Compare)\\
   1658 	as defined in the instantiation with ECDSA\\[0.5em]
   1659 	\begin{itemize}
   1660 		\item meet the basic requirements,\\[0.5em]
   1661 		\item also meet all security requirements.\\
   1662 		Proofs by security reduction, details are in the paper.
   1663 	\end{itemize}
   1664 
   1665 \end{frame}
   1666 
   1667 
   1668 % \begin{frame}{Instantiation with ECDSA}
   1669 % 	\framesubtitle{Full definitions}
   1670 % 	\scriptsize
   1671 %
   1672 % \begin{align*}
   1673 % 	\Commit_{E,\FDHg{\cdot}}(\age, \omega) &:= \Big\langle
   1674 % 		\overbrace{(q_1,\ldots,q_\Age)}^{= \Vcommitment},\;
   1675 % 		\overbrace{(p_1,\ldots,p_\age, \Nil,\ldots,\Nil)}^{= \Vpruf \text{, length }\Age}
   1676 % 		\Big\rangle\\
   1677 % 	\Attest_{E,\HashF}(\bage, \Vcommitment, \Vpruf) &:=
   1678 % 		\begin{cases}
   1679 % 			\attest_\bage := \Sign_{E,\HashF}\big(\bage,\Vpruf[\bage]\big) & \text{if } \Vpruf[\bage] \stackrel{?}{\neq} \Nil\\
   1680 % 			\Nil & \text{otherwise}
   1681 % 		\end{cases}\\
   1682 % %
   1683 % 	\Verify_{E,\HashF}(\bage, \Vcommitment, \attest) &:= \Ver_{E,\HashF}(\bage, \Vcommitment[\bage], \attest)\\
   1684 % %
   1685 % 	\Derive_{E, \FDHg{\cdot}}(\Vcommitment, \Vpruf, \omega) &:=
   1686 % 		\Big\langle(\beta * q_1,\ldots,\beta * q_\Age),
   1687 % 		     (\beta p_1,\ldots,\beta p_\age,\Nil,\ldots,\Nil), \beta \Big\rangle \\
   1688 % 		     & \text{ with } \beta := \FDHg{\omega} \text{ and multiplication } \beta p_i \text{ modulo } g \nonumber\\
   1689 % %
   1690 % 	\Compare_E(\Vcommitment, \Vcommitment', \beta)	&:=
   1691 % 		\begin{cases}
   1692 % 			1 & \text{if } (\beta * q_1, \ldots , \beta * q_\Age) \stackrel{?}{=} (q'_1,\ldots, q'_\Age)\\
   1693 % 			0 & \text{otherwise}
   1694 % 		\end{cases}
   1695 % \end{align*}
   1696 % \end{frame}
   1697 
   1698 
   1699 \begin{frame}{Reminder: GNU Taler Fundamentals}
   1700 	\begin{center}
   1701 	\begin{tikzpicture}[scale=.55]
   1702 		\node[circle,fill=black!10] at (3, 4) (Exchange) {$\Exchange$};
   1703 		\node[circle,fill=black!10] at (0, 0) (Customer) {$\Customer$};
   1704 		\node[circle,fill=black!10] at (6, 0) (Merchant) {$\Merchant$};
   1705 
   1706 		\draw[<->] (Customer)   to [out=65,in=220] node[sloped,above] {\sf withdraw} (Exchange);
   1707 		\draw[<->] (Customer)   to [out=45,in=240] node[sloped,below] {\sf refresh} (Exchange);
   1708 		\draw[<->] (Customer)   to node[sloped, below] {\sf purchase} (Merchant);
   1709 		\draw[<->] (Merchant) to node[sloped, above] {\sf deposit} (Exchange);
   1710 	\end{tikzpicture}
   1711 	\end{center}
   1712 
   1713 	\vfill
   1714 	\begin{itemize}
   1715 		\item Coins are public-/private key-pairs $(C_p, c_s)$.
   1716 		\item Exchange blindly signs $\FDH(C_p)$ with denomination key $d_p$
   1717 		\item Verification:
   1718 		\begin{eqnarray*}
   1719 			1  &\stackrel{?}{=}&
   1720 			\mathsf{SigCheck}\big(\FDH(C_p), D_p, \sigma_p\big)
   1721 		\end{eqnarray*}
   1722 		\scriptsize($D_p$ = public key of denomination and $\sigma_p$ = signature)
   1723 
   1724 	\end{itemize}
   1725 \end{frame}
   1726 
   1727 \begin{frame}{Integration with GNU Taler}
   1728 	\framesubtitle{Binding age restriction to coins}
   1729 
   1730 	To bind an age commitment $\commitment$ to a coin $C_p$, instead of
   1731 	signing $\FDH(C_p)$, $\Exchange$ now blindly signs
   1732 	\begin{center}
   1733 		$\FDH(C_p, \orange{H(\commitment)})$
   1734 	\end{center}
   1735 
   1736 	\vfill
   1737 	Verfication of a coin now requires $H(\commitment)$, too:
   1738 	\begin{center}
   1739 		$1  \stackrel{?}{=}
   1740 		\mathsf{SigCheck}\big(\FDH(C_p, \orange{H(\commitment)}), D_p, \sigma_p\big)$
   1741 	\end{center}
   1742 	\vfill
   1743 \end{frame}
   1744 
   1745 \begin{frame}{Integration with GNU Taler}
   1746 	\framesubtitle{Integrated schemes}
   1747 	\fontsize{8pt}{9pt}\selectfont
   1748 	\begin{tikzpicture}[scale=.9]
   1749 		\node[circle,minimum size=25pt,fill=black!15] at (  0:0) (Client)   {$\Child$};
   1750 		\node[circle,minimum size=25pt,fill=black!15] at ( 60:5) (Exchange) {$\Exchange$};
   1751 		\node[circle,minimum size=25pt,fill=black!15] at (  0:5) (Merchant) {$\Merchant$};
   1752 		\node[circle,minimum size=25pt,fill=blue!15]  at (130:3) (Guardian) {$\Guardian$};
   1753 
   1754 		\draw[<->] (Guardian)   to  node[sloped,above,align=center]
   1755 			{{\sf withdraw}\orange{, using}\\ $\FDH(C_p\orange{, H(\commitment)})$} (Exchange);
   1756 		\draw[<->] (Client)   to node[sloped,below,align=center]
   1757 			{{\sf refresh} \orange{ + }\\ \orange{$\DeriveCompare$}} (Exchange);
   1758 		\draw[<->] (Client)   to node[sloped, below]
   1759 			{{\sf purchase} \blue{+ $(\attest_\minage, \commitment)$}} (Merchant);
   1760 		\draw[<->] (Merchant) to node[sloped, above]
   1761 			{{\sf deposit} \orange{+ $H(\commitment)$}} (Exchange);
   1762 
   1763 		\draw[->] (Guardian)   to [out=70,in=150, loop] node[above]
   1764 			{$\Commit(\age)$} (Guardian);
   1765 		\draw[->] (Guardian)   to node[below,sloped]
   1766 			{($\commitment$, $\pruf_\age$)} (Client);
   1767 		\draw[->,blue] (Client)   to [out=-50,in=-130, loop] node[below]
   1768 			{\blue{$\Attest(\minage, \commitment, \pruf_{\age})$}} (Client);
   1769 		\draw[->,blue] (Merchant) to [out=-50,in=-130, loop] node[below]
   1770 			{\blue{$\Verify(\minage, \commitment, \attest_{\minage})$}} (Merchant);
   1771 	\end{tikzpicture}
   1772 \end{frame}
   1773 
   1774 \begin{frame}{Instantiation with Edx25519}
   1775 	Paper also formally defines another signature scheme: Edx25519.\\[1em]
   1776 
   1777 	\begin{itemize}
   1778 		\item Scheme already in use in GNUnet,
   1779 		\item based on EdDSA (Bernstein et al.),
   1780 		\item generates compatible signatures and
   1781 		\item allows for key derivation from both, private and public keys, independently.
   1782 	\end{itemize}~\\[1em]
   1783 
   1784 	Current implementation of age restriction in GNU Taler uses Edx25519.
   1785 \end{frame}
   1786 
   1787 
   1788 \begin{frame}{Discussion}
   1789 	\begin{itemize}
   1790 		\item Our solution can in principle be used with any token-based payment scheme
   1791 		\item GNU Taler best aligned with our design goals (security, privacy and efficiency)
   1792 		\item Subsidiarity requires bank accounts being owned by adults
   1793 			\begin{itemize}
   1794 			\item Scheme can be adapted to case where minors have bank accounts
   1795 				\begin{itemize}
   1796 					\item Assumption: banks provide minimum age
   1797 						information during bank
   1798 						transactions.
   1799 					\item Child and Exchange execute a variant of
   1800 						the cut\&choose protocol.
   1801 				\end{itemize}
   1802 			\end{itemize}
   1803 		\item Our scheme offers an alternative to identity management systems (IMS)
   1804 	\end{itemize}
   1805 \end{frame}
   1806 \begin{frame}{Related Work}
   1807 	\begin{itemize}
   1808 		\item Current privacy-perserving systems all based on attribute-based credentials (Koning et al., Schanzenbach et al., Camenisch et al., Au et al.)
   1809 		\item Attribute-based approach lacks support:
   1810 			\begin{itemize}
   1811 				\item Complex for consumers and retailers
   1812 				\item Requires trusted third authority
   1813 			\end{itemize}
   1814 		\vfill
   1815 		\item Other approaches tie age-restriction to ability to pay ("debit cards for kids")
   1816 			\begin{itemize}
   1817 				\item Advantage: mandatory to payment process
   1818 				\item Not privacy friendly
   1819 			\end{itemize}
   1820 	\end{itemize}
   1821 \end{frame}
   1822 
   1823 \begin{frame}{Conclusion}
   1824 	Age restriction is a technical, ethical and legal challenge.
   1825 
   1826 	Existing solutions are
   1827 	\begin{itemize}
   1828 		\item without strong protection of privacy or
   1829 		\item based on identity management systems (IMS)
   1830 	\end{itemize}
   1831 	\vfill
   1832 
   1833 	Our scheme offers a solution that is
   1834 	\begin{itemize}
   1835 		\item based on subsidiarity
   1836 		\item privacy preserving
   1837 		\item efficient
   1838 		\item an alternative to IMS
   1839 	\end{itemize}
   1840 \end{frame}
   1841 
   1842 
   1843 \section{Blockchain integration: Project Depolymerization}
   1844 
   1845 \begin{frame}
   1846   \vfill
   1847   \begin{center}
   1848     {\bf Blockchain integration: Project Depolymerization}
   1849   \end{center}
   1850   \vfill
   1851 \end{frame}
   1852 
   1853 
   1854 \begin{frame}{Blockchain based cryptocurrencies}
   1855     \begin{tikzpicture}[remember picture,overlay]
   1856         \node (N1)[above right=5mm and 25mm of current page.center] {\includegraphics[width=34mm]{media/news1.png}};
   1857         \node (N0)[below=-3mm of N1] {\includegraphics[width=34mm]{media/news0.png}};
   1858         \node (N2)[below left=-26mm and -2.5mm of N1] {\includegraphics[width=34mm]{media/news2.png}};
   1859     \end{tikzpicture}
   1860     \begin{block}{Biggest cryptocurrencies}
   1861         \begin{itemize}
   1862             \item \textbf{BTC} Bitcoin
   1863             \item \textbf{ETH} Ethereum
   1864         \end{itemize}
   1865     \end{block}
   1866     \begin{block}{Common blockchain limitations}
   1867         \begin{itemize}
   1868             \item \textbf{Delay} block and confirmation delay
   1869             \item \textbf{Cost} transaction fees
   1870             \item \textbf{Scalability} limited amount of transaction per second
   1871             \item \textbf{Ecological impact} computation redundancy
   1872             \item \textbf{Privacy}
   1873             \item \textbf{Regulatory risk}
   1874         \end{itemize}
   1875     \end{block}
   1876 \end{frame}
   1877 
   1878 \begin{frame}{Taler}{Architecture}
   1879     \begin{columns}
   1880         \column{0.5\paperwidth}
   1881         \begin{tikzpicture}[
   1882                 rect/.style={circle, draw=black},
   1883                 sym/.style={-stealth, shorten >= 2pt, shorten <= 2pt}
   1884             ]
   1885             % Taler payment system
   1886             \node[rect](1) {Exchange};
   1887             \node[rect,below left=1.5cm and 0.7cm of 1](2) {Customer};
   1888             \node[rect,below right=1.5cm and 0.7cm of 1](3) {Merchant};
   1889 
   1890             \draw[sym] (1) -- node [midway, above, sloped] {\tiny Withdraw coins} (2);
   1891             \draw[sym] (2) -- node [midway, above, sloped] {\tiny Spend coins} (3);
   1892             \draw[sym] (3) -- node [midway, above, sloped] {\tiny Deposit coins} (1);
   1893 
   1894             % Settlement layer
   1895             \node[left=2cm of 1](E1){};
   1896             \node[right=2cm of 1](E2){};
   1897             \draw[sym] (E1) -- node [midway, above] {\tiny Deposit money} (1);
   1898             \draw[sym] (1) -- node [midway, above] {\tiny Withdraw money} (E2);
   1899 
   1900             % Auditor
   1901             \node[above= of 1](A){Auditor};
   1902             \draw[sym] (A) -- node [midway, right] {\tiny Verify} (1);
   1903 
   1904             % Separator
   1905             \node[below=1mm of E1] (S1S) {};
   1906             \node[below=1mm of E2] (S1E) {};
   1907             \node[above=6mm of E1] (S2S) {};
   1908             \node[above=6mm of E2] (S2E) {};
   1909 
   1910             \draw[dotted] (S1S) -- (S1E);
   1911             \draw[dotted] (S2S) -- (S2E);
   1912 
   1913             \node[below right=-2mm and -1.5mm of S2S] {\tiny{\emph{Settlement Layer}}};
   1914             \node[below right=-2mm and -1.5mm of S1S] {\tiny{\emph{Taler payment system}}};
   1915         \end{tikzpicture}
   1916         \column{0.47\paperwidth}
   1917         \begin{block}{Settlement layer}
   1918             \begin{itemize}
   1919                 \item For Depolymerization: Blockchain!
   1920             \end{itemize}
   1921         \end{block}
   1922         \begin{block}{Taler payment system}
   1923             \begin{itemize}
   1924                 \item Realtime transactions, 1 RTT
   1925                 \item Scalable microtransactions
   1926                 \item Blind signatures (privacy)
   1927             \end{itemize}
   1928         \end{block}
   1929 
   1930     \end{columns}
   1931 \end{frame}
   1932 
   1933 \begin{frame}{Taler}{Blockchain settlement layer}
   1934     \begin{center}
   1935         \begin{tikzpicture}[
   1936                 rect/.style={rectangle, draw=black, minimum width=30mm},
   1937                 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt},
   1938                 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
   1939             ]
   1940 
   1941             %% Architecture
   1942             \node(Tt){Taler};
   1943             \node[rect,below=0cm of Tt](Tc){Exchange};
   1944             \node[rect,fit={(Tt) (Tc)}](T){};
   1945 
   1946             \node[rect,below=7mm of Tc](D) {\textbf{Depolymerization}};
   1947 
   1948             \node[rect,below=7mm of D](Bc){Node};
   1949             \node[below=0cm of Bc](Bt){Blockchain};
   1950             \node[rect,fit={(Bt) (Bc)}](B){};
   1951 
   1952             \draw[sym] (T) -- (D);
   1953             \draw[sym] (D) -- (B);
   1954 
   1955             %% Blockchain
   1956             \node[block,right=8mm of B] (1){};
   1957             \node[block,right=4mm of 1] (2){};
   1958             \node[block,right=4mm of 2] (3){};
   1959             \node[block,right=4mm of 3] (4){};
   1960             \node[block,right=4mm of 4] (5){};
   1961             \node[block,right=4mm of 5] (6){};
   1962             \draw[-stealth] (1) -- (2);
   1963             \draw[-stealth] (2) -- (3);
   1964             \draw[-stealth] (3) -- (4);
   1965             \draw[-stealth] (4) -- (5);
   1966             \draw[-stealth] (5) -- (6);
   1967 
   1968             \node[left=4mm of 1] (S){};
   1969             \node[right=4mm of 6] (E){};
   1970             \draw[-stealth] (S) -- (1);
   1971             \draw[-stealth] (6) -- (E);
   1972 
   1973             %% Taler
   1974             \node[block, below right=-7.5mm and 20.5mm of T] (off){Off-chain transactions};
   1975             \node[above=-0.5mm of off] {\includegraphics[height=7mm]{taler-logo-2021-inkscape.pdf}};
   1976 
   1977             %% Depolymerization
   1978             \node[right=11mm of D] {\small{Credit}};
   1979             \node[right=50mm of D] {\small{Debit}};
   1980             \draw[dashed,-stealth] (1.north) |- (off.west);
   1981             \draw[dashed,-stealth] (off.east) -| (6.north);
   1982         \end{tikzpicture}
   1983     \end{center}
   1984 \end{frame}
   1985 
   1986 \begin{frame}{Challenges}
   1987     \begin{block}{Taler Metadata}
   1988         \begin{itemize}
   1989             \item Metadata are required to link a wallet to credits and
   1990                   allow merchant to link deposits to debits
   1991             \item Putting metadata in blockchain transactions can be tricky
   1992         \end{itemize}
   1993     \end{block}
   1994     \begin{block}{Blockchain based cryptocurrencies}
   1995         \begin{itemize}
   1996             \item Blockchain transactions lack finality (fork)
   1997             \item Transactions can be stuck for a long time (mempool)
   1998         \end{itemize}
   1999     \end{block}
   2000 \end{frame}
   2001 
   2002 \begin{frame}{Blockchain challenges}{Chain reorganization}
   2003     \begin{center}
   2004         \begin{tikzpicture}[
   2005                 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
   2006                 ar/.style={-stealth}
   2007             ]
   2008             % Common
   2009             \node[block](1){};
   2010             \node[block,right=5mm of 1](2){$D_0$};
   2011             \node[block,right=5mm of 2](3){};
   2012             \draw[ar] (1) -- (2);
   2013             \draw[ar] (2) -- (3);
   2014 
   2015             % Current
   2016             \node [block,right=5mm of 3](4){};
   2017             \node[block,right=5mm of 4](5){};
   2018             \node[block,right=5mm of 5](6){$D_1$};
   2019             \draw[ar] (3) -- (4);
   2020             \draw[ar] (4) -- (5);
   2021             \draw[ar] (5) -- (6);
   2022 
   2023             % Fork
   2024             \node [block,above=7mm of 4](4p){};
   2025             \node[block,right=5mm of 4p](5p){$D_2$};
   2026             \node[block,right=5mm of 5p](6p){};
   2027             \node[block,right=5mm of 6p](7p){};
   2028             \draw[ar] (3.east) -- (4p.west);
   2029             \draw[ar] (4p) -- (5p);
   2030             \draw[ar] (5p) -- (6p);
   2031             \draw[ar] (6p) -- (7p);
   2032 
   2033             % Indication
   2034             \node [right=5mm of 7p]{\emph{fork}};
   2035             \node [right=17mm of 6]{\emph{active}};
   2036         \end{tikzpicture}
   2037     \end{center}
   2038     A fork is when concurrent blockchain states coexist. Nodes will follow
   2039     the longest chain, replacing recent blocks if necessary during a
   2040     blockchain reorganization. If a deposit transaction disappears from the
   2041     blockchain, an irrevocable withdraw transactions would no longer be backed
   2042     by credit.
   2043 \end{frame}
   2044 
   2045 \begin{frame}{Blockchain challenges}{Stuck transactions}
   2046     We want confirmed debits within a limited time frame.
   2047     \begin{figure}
   2048         \centering
   2049         \only<1> {
   2050             \begin{tikzpicture}[
   2051                     dot/.style={circle,fill,inner sep=1pt,}
   2052                 ]
   2053                 \node (I) {\includegraphics[width=\textwidth]{media/fee.png}};
   2054                 \node [below left=-2.5mm and -1.5cm of I] (Tx) {\small Tx};
   2055                 \node [dot,above=8.4mm of Tx](D) {};
   2056                 \draw [dotted,thick] (Tx) -- (D);
   2057                 \node [left=-4.5cm of Tx] (C) {\small conf};
   2058                 \node [dot,above=8.4mm of C](D1) {};
   2059                 \draw [dotted,thick] (C) -- (D1);
   2060             \end{tikzpicture}
   2061         }
   2062         \only<2> {
   2063             \includegraphics[width=\textwidth]{media/fee_var.png}
   2064             \caption{Bitcoin average transaction fee over 6 months {\tiny (ychart)}}
   2065         }
   2066     \end{figure}
   2067     \only<1>{When we trigger a debit with a fee too small, it may not be
   2068         confirmed in a timely fashion.}
   2069     \only<2>{However, transaction fees are unpredictable.}
   2070 \end{frame}
   2071 
   2072 
   2073 \begin{frame}{Depolymerization}{Architecture}
   2074     \begin{center}
   2075         \begin{tikzpicture}[
   2076                 rect/.style={rectangle, draw=black, minimum height=6mm, minimum width=28mm},
   2077                 sym/.style={stealth-stealth, shorten >= 2pt, shorten <= 2pt}
   2078             ]
   2079             \node[rect](1) {Taler Exchange};
   2080             \node[rect,below=of 1](2) {Wire Gateway};
   2081             \node[rect,right=of 2](3) {PostgreSQL};
   2082             \node[rect,right=of 3](4) {DLT Adapter};
   2083             \node[rect,above=of 4](5) {DLT Full Node};
   2084 
   2085             \draw[sym] (1) -- node [midway,right] {\tiny HTTP} (2);
   2086             \draw[sym] (2) -- node [midway,above] {\tiny SQL} (3);
   2087             \draw[sym] (3) -- node [midway,above] {\tiny SQL} (4);
   2088             \draw[sym] (4) -- node [midway,left ] {\tiny RPC} (5);
   2089 
   2090 
   2091             \node[above= 2mm of 1]{\small{\emph{Wire Gateway API}}};
   2092             \node[above= 2mm of 5]{\small{\emph{DLT specific}}};
   2093             \node[above=22mm of 3](T) {};
   2094             \draw[dotted] (3) -- (T);
   2095         \end{tikzpicture}
   2096     \end{center}
   2097     \begin{itemize}
   2098         \item Common database to store transactions state and communicate
   2099               with notifications
   2100         \item Wire Gateway for Taler API compatibility
   2101         \item DLT specific adapter
   2102     \end{itemize}
   2103 \end{frame}
   2104 
   2105 \begin{frame}{Storing metadata}{Bitcoin}
   2106     \begin{block}{Bitcoin - Credit}
   2107         \begin{itemize}
   2108             \item Transactions from code
   2109             \item Only 32B + URI
   2110             \item \textbf{OP\_RETURN}
   2111         \end{itemize}
   2112     \end{block}
   2113     \begin{block}{Bitcoin - Debit}
   2114         \begin{itemize}
   2115             \item Transactions from common wallet software
   2116             \item Only 32B
   2117             \item \textbf{Fake Segwit Addresses}
   2118         \end{itemize}
   2119     \end{block}
   2120 \end{frame}
   2121 \begin{frame}{Storing metadata}{Ethereum}
   2122     \begin{block}{Smart contract ?}
   2123         \begin{itemize}
   2124             \item Logs in smart contract is the recommend way {\tiny (ethereum.org)}
   2125             \item Expensive (additional storage and execution fees)
   2126             \item Avoidable attack surface (error prone)
   2127         \end{itemize}
   2128     \end{block}
   2129     \begin{block}{Custom input format}
   2130         Use input data in transactions, usually used to call smart contract, to
   2131         store our metadata.
   2132     \end{block}
   2133 \end{frame}
   2134 
   2135 \begin{frame}{Handling blockchain reorganization}
   2136     \begin{center}
   2137         \begin{tikzpicture}[
   2138                 block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm},
   2139                 conf/.style={draw=black!60!green,fill=black!60!green!10},
   2140                 nconf/.style={dotted},
   2141                 err/.style={draw=black!60!red,fill=black!60!red!10},
   2142                 ar/.style={-stealth}
   2143             ]
   2144             % Common
   2145             \node[block,conf](1){};
   2146             \node[block,conf,right=5mm of 1](2){$D_0$};
   2147             \node[block,conf,right=5mm of 2](3){};
   2148             \draw[ar] (1) -- (2);
   2149             \draw[ar] (2) -- (3);
   2150 
   2151             % Current
   2152             \only<1>{
   2153                 \node [block,nconf,right=5mm of 3](4){};
   2154             }
   2155             \only<2->{
   2156                 \node [block,conf,right=5mm of 3](4){\only<3>{$D_3$}};
   2157             }
   2158             \node[block,nconf,right=5mm of 4](5){};
   2159             \node[block,nconf,right=5mm of 5](6){$D_1$};
   2160             \draw[ar] (3) -- (4);
   2161             \draw[ar] (4) -- (5);
   2162             \draw[ar] (5) -- (6);
   2163 
   2164             % Fork
   2165             \only<-2>{
   2166                 \node [block,nconf,above=7mm of 4](4p){};
   2167             }
   2168             \only<3>{
   2169                 \node [block,dashed,err,above=7mm of 4](4p){$D_3'$};
   2170             }
   2171             \node[block,nconf,right=5mm of 4p](5p){$D_2$};
   2172             \node[block,nconf,right=5mm of 5p](6p){};
   2173             \node[block,nconf,right=5mm of 6p](7p){};
   2174             \draw[ar] (3.east) -- (4p.west);
   2175             \draw[ar] (4p) -- (5p);
   2176             \draw[ar] (5p) -- (6p);
   2177             \draw[ar] (6p) -- (7p);
   2178 
   2179             % Indication
   2180             \node [right=5mm of 7p]{\emph{fork}};
   2181             \node [right=17mm of 6]{\emph{active}};
   2182         \end{tikzpicture}
   2183     \end{center}
   2184     \only<1>{As small reorganizations are common, Satoshi already recommended to
   2185         apply a confirmation delay to handle most disturbances and attacks.}
   2186     \only<2>{If a reorganization longer than the confirmation delay happens,
   2187         but it did not remove credits, Depolymerizer is safe and automatically
   2188         resumes.}
   2189     \only<3>{If a fork removed a confirmed debit, an attacker may create a
   2190         conflicting transaction. Depolymerizer suspends operation until lost
   2191         credits reappear.}
   2192 \end{frame}
   2193 
   2194 
   2195 \begin{frame}{Related work}
   2196     \begin{block}{Centralization - Coinbase off-chain sending}
   2197         \begin{itemize}
   2198             \item [$+$] Fast and cheap: off chain transaction
   2199             \item [$-$] Trust in Coinbase: privacy, security \& transparency
   2200         \end{itemize}
   2201     \end{block}
   2202     \begin{block}{Layering - Lightning Network}
   2203         \begin{itemize}
   2204             \item [$+$] Fast and cheap: off-chain transactions
   2205             \item [$-$] Requires setting up bidirectional payment channels
   2206             \item [$-$] Fraud attempts are mitigated via a complex penalty system
   2207         \end{itemize}
   2208     \end{block}
   2209 \end{frame}
   2210 
   2211 \begin{frame}{Conclusion}
   2212     Blockchains can be used as a settlement layer for GNU Taler
   2213     with Depolymerizer.
   2214 
   2215     \begin{itemize}
   2216         \item [$-$] Trust exchange operator or auditors
   2217         \item [$+$] Fast and cheap
   2218         \item [$+$] Realtime, ms latency
   2219         \item [$+$] Linear scalability
   2220         \item [$+$] Ecological
   2221         \item [$+$] Privacy when it can, transparency when it must (avoid tax evasion and money laundering)
   2222     \end{itemize}
   2223 Future work:
   2224     \begin{itemize}
   2225         \item  Universal auditability, using sharded transactions history
   2226         \item  Smarter analysis, update confirmation delay based on currency network behavior
   2227         \item  Multisig by multiple operator for transactions validation
   2228     \end{itemize}
   2229 \end{frame}
   2230 
   2231 
   2232 \section{Future Work \& Conclusion}
   2233 
   2234 \begin{frame}
   2235   \vfill
   2236   \begin{center}
   2237     {\bf Future Work \& Conclusion}
   2238   \end{center}
   2239   \vfill
   2240 \end{frame}
   2241 
   2242 
   2243 \begin{frame}{How to support?}
   2244   \begin{description}
   2245     \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}
   2246     \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/}
   2247     \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler}  
   2248     \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net}
   2249     \item[Integrate:] \url{https://docs.taler.net/}
   2250     \item[Donate:] \url{https://gnunet.org/ev}
   2251     \item[Partner:] \url{https://taler-systems.com/}
   2252   \end{description}
   2253 \end{frame}
   2254 
   2255 
   2256 \begin{frame}
   2257 \frametitle{Do you have any questions?}
   2258 \vfill
   2259 References:
   2260 {\tiny
   2261   \begin{enumerate}
   2262  \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach.
   2263       {\em Zero-Knowledge Age Restriction for GNU Taler}.
   2264        {\bf 27th European Symposium on Research in Computer Security (ESORICS), 2022}.}
   2265  \item{David Chaum, Christian Grothoff and Thomas Moser.
   2266        {\em How to issue a central bank digital currency}.
   2267        {\bf SNB Working Papers, 2021}.}
   2268  \item{David Chaum, Christian Grothoff and Thomas Moser.
   2269        {\em How to issue a central bank digital currency}.
   2270        {\bf SNB Working Papers, 2021}.}
   2271  \item{Christian Grothoff, Bart Polot and Carlo von Loesch.
   2272        {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}.
   2273        {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.}
   2274  \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
   2275        {\em Enabling Secure Web Payments with GNU Taler}.
   2276        {\bf SPACE 2016}.}
   2277  \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff.
   2278        {\em Taler: Taxable Anonymous Libre Electronic Reserves}.
   2279        Available upon request. 2016.}
   2280  \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza.
   2281        {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}.
   2282        {\bf IEEE Symposium on Security \& Privacy, 2016}.}
   2283  \item{David Chaum, Amos Fiat and Moni Naor.
   2284        {\em Untraceable electronic cash}.
   2285        {\bf Proceedings on Advances in Cryptology, 1990}.}
   2286   \item{Phillip Rogaway.
   2287        {\em The Moral Character of Cryptographic Work}.
   2288        {\bf Asiacrypt}, 2015.} \label{bib:rogaway}
   2289 \end{enumerate}
   2290 }
   2291 \end{frame}
   2292 
   2293 
   2294 \end{document}
   2295 
   2296 
   2297 
   2298 
   2299 \begin{frame}{Taler {\tt /withdraw/sign}}
   2300 % Customer withdrawing coins with blind signatures
   2301 % \bigskip
   2302   \begin{figure}[th]
   2303     \begin{minipage}[b]{0.45\linewidth}
   2304       \begin{center}
   2305         \begin{tikzpicture}[scale = 0.4,
   2306             transform shape,
   2307             msglabel/.style    = { text = Black, yshift = .3cm,
   2308                                    sloped, midway },
   2309             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2310                                    >=stealth },
   2311             rstmsg/.style      = { ->, color = BrickRed, thick,
   2312                                    >=stealth }
   2313           ]
   2314           \node[draw = MidnightBlue,
   2315             fill = CornflowerBlue,
   2316             minimum width = .3cm,
   2317             minimum height = 10cm
   2318           ] (h1) at (-4, 0) {};
   2319           \node[draw = MidnightBlue,
   2320             fill = CornflowerBlue,
   2321             minimum width = .3cm,
   2322             minimum height = 10cm
   2323           ] (h2) at (4, 0) {};
   2324           \node[above = 0cm of h1] {Wallet};
   2325           \node[above = 0cm of h2] {Exchange};
   2326 
   2327           \path[->, color = MidnightBlue, very thick, >=stealth]
   2328             (-5, 4.5) edge
   2329             node[rotate=90, text = Black, yshift = .3cm] {Time}
   2330             (-5, -4.5);
   2331           \path[okmsg, dashed]
   2332              ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge
   2333              node[msglabel] {SEPA(RK,A)}
   2334              ($(h2.west)+(0, 3.5)+(0, -1.0)$);
   2335           \path[okmsg]
   2336             ($(h1.east)+(0, -1.0)$) edge
   2337             node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$}
   2338             ($(h2.west)+(0, -1.5)$);
   2339           \path[okmsg]
   2340             ($(h2.west)+(0, -2.0)$) edge
   2341             node[msglabel] {200 OK: $S_{DK}(B_b(C))$)}
   2342             ($(h1.east)+(0, -2.5)$);
   2343           \path[rstmsg]
   2344             ($(h2.west)+(0, -3.5)$) edge
   2345             node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)}
   2346             ($(h1.east)+(0, -4)$);
   2347           \node at (5.3, 0) {};
   2348         \end{tikzpicture}
   2349       \end{center}
   2350       Result: $\langle c, S_{DK}(C) \rangle$.
   2351     \end{minipage}
   2352     \hspace{0.5cm}
   2353     \begin{minipage}[b]{0.45\linewidth}
   2354       \tiny
   2355       \begin{description}
   2356       \item[$A$] Some amount, $A \ge A_{DK}$
   2357       \item[$RK$] Reserve key
   2358       \item[$DK$] Denomination key
   2359       \item[$b$] Blinding factor
   2360       \item[$B_b()$] RSA-FDH blinding % DK supressed
   2361       \item[$C$] Coin public key $C := cG$
   2362       \item[$S_{RK}()$] EdDSA signature
   2363       \item[$S_{DK}()$] RSA-FDH signature
   2364       \end{description}
   2365     \end{minipage}
   2366   \end{figure}
   2367 \end{frame}
   2368 
   2369 
   2370 \begin{frame}[t]{Taler {\tt /deposit}}
   2371 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$.
   2372 \bigskip
   2373   \begin{figure}[th]
   2374     \begin{minipage}[b]{0.45\linewidth}
   2375       \begin{center}
   2376         \begin{tikzpicture}[scale = 0.4,
   2377             transform shape,
   2378             msglabel/.style    = { text = Black, yshift = .3cm,
   2379                                    sloped, midway },
   2380             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2381                                    >=stealth },
   2382             rstmsg/.style      = { ->, color = BrickRed, thick,
   2383                                    >=stealth }
   2384           ]
   2385           \node[draw = MidnightBlue,
   2386             fill = CornflowerBlue,
   2387             minimum width = .3cm,
   2388             minimum height = 10cm
   2389           ] (h1) at (-4, 0) {};
   2390           \node[draw = MidnightBlue,
   2391             fill = CornflowerBlue,
   2392             minimum width = .3cm,
   2393             minimum height = 10cm
   2394           ] (h2) at (4, 0) {};
   2395           \node[above = 0cm of h1] {Merchant};
   2396           \node[above = 0cm of h2] {Exchange};
   2397 
   2398           \path[->, color = MidnightBlue, very thick, >=stealth]
   2399             (-5, 4.5) edge
   2400             node[rotate=90, text = Black, yshift = .3cm] {Time}
   2401             (-5, -4.5);
   2402           \path[->, color = MidnightBlue, thick, >=stealth]
   2403             ($(h1.east)+(0,3)$) edge
   2404             node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$}
   2405             ($(h2.west)+(0,2)$);
   2406           \path[->, color = MidnightBlue, thick, >=stealth]
   2407             ($(h2.west)+(0,0.5)$) edge
   2408             node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$}
   2409             ($(h1.east)+(0,-0.5)$);
   2410           \path[rstmsg]
   2411             ($(h2.west)+(0, -2.5)$) edge
   2412             node[msglabel] {409 CONFLICT: $S_{c}(D')$}
   2413             ($(h1.east)+(0, -3.5)$);
   2414           \node at (5.3, 0) {};
   2415         \end{tikzpicture}
   2416       \end{center}
   2417     \end{minipage}
   2418     \hspace{0.5cm}
   2419     \begin{minipage}[b]{0.45\linewidth}
   2420       \tiny
   2421       \begin{description}
   2422       \item[$DK$] Denomination key
   2423       \item[$S_{DK}()$] RSA-FDH signature using $DK$
   2424       \item[$c$] Private coin key, $C := cG$.
   2425       \item[$S_{C}()$] EdDSA signature using $c$
   2426       \item[$D$] Deposit details
   2427       \item[$SK$] Exchange's signing key
   2428       \item[$S_{SK}()$] EdDSA signature using $SK$
   2429       \item[$D'$] Conficting deposit details $D' \not= D$
   2430       \end{description}
   2431     \end{minipage}
   2432   \end{figure}
   2433 \end{frame}
   2434 
   2435 
   2436 \begin{frame}{Taler {\tt /refresh/melt}}
   2437   \begin{figure}[th]
   2438     \begin{minipage}[b]{0.45\linewidth}
   2439       \begin{center}
   2440 	\begin{tikzpicture}[scale = 0.4,
   2441             transform shape,
   2442             msglabel/.style    = { text = Black, yshift = .3cm,
   2443                                    sloped, midway },
   2444             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2445                                    >=stealth },
   2446             rstmsg/.style      = { ->, color = BrickRed, thick,
   2447                                    >=stealth }
   2448 	  ]
   2449 	  \node[draw = MidnightBlue,
   2450 	    fill = CornflowerBlue,
   2451 	    minimum width = .3cm,
   2452 	    minimum height = 10cm
   2453 	  ] (h1) at (-4, 0) {};
   2454 	  \node[draw = MidnightBlue,
   2455 	    fill = CornflowerBlue,
   2456 	    minimum width = .3cm,
   2457 	    minimum height = 10cm
   2458 	  ] (h2) at (4, 0) {};
   2459 	  \node[above = 0cm of h1] {Customer};
   2460 	  \node[above = 0cm of h2] {Exchange};
   2461 
   2462 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   2463 	    (-5, 4.5) edge
   2464 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   2465 	    (-5, -4.5);
   2466 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2467 	    ($(h1.east)+(0,3)$) edge
   2468 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$}
   2469 	    ($(h2.west)+(0,2)$);
   2470 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2471 	    ($(h2.west)+(0,0.5)$) edge
   2472 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$}
   2473 	    ($(h1.east)+(0,-0.5)$);
   2474 	  \path[rstmsg]
   2475 	    ($(h2.west)+(0, -2.5)$) edge
   2476 	    node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$}
   2477 	    ($(h1.east)+(0, -3.5)$);
   2478 	  \node at (5.3, 0) {};
   2479 	\end{tikzpicture}
   2480       \end{center}
   2481     \end{minipage}
   2482     \hspace{0.5cm}
   2483     \begin{minipage}[b]{0.45\linewidth}
   2484       \tiny
   2485       \begin{description}
   2486       \item[$\kappa$] System-wide security parameter, usually 3.
   2487       \\ \smallskip
   2488       \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\
   2489       $D + \sum_i A_{DK^{(i)}} < A_{DK}$
   2490       \item[$t_j$] Random scalar for $j<\kappa$
   2491       \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$
   2492       \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE
   2493       \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor
   2494       \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys
   2495       \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys
   2496       \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\
   2497          $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$
   2498       \\ \smallskip
   2499       \item[$\gamma$] Random value in $[0,\kappa)$
   2500 %      \\ \smallskip
   2501 %      \item[$X$] Deposit or refresh
   2502       \end{description}
   2503     \end{minipage}
   2504   \end{figure}
   2505 \end{frame}
   2506 
   2507 
   2508 \begin{frame}{Taler {\tt /refresh/reveal}}
   2509   \begin{figure}[th]
   2510     \begin{minipage}[b]{0.45\linewidth}
   2511       \begin{center}
   2512 	\begin{tikzpicture}[scale = 0.4,
   2513             transform shape,
   2514             msglabel/.style    = { text = Black, yshift = .3cm,
   2515                                    sloped, midway },
   2516             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2517                                    >=stealth },
   2518             rstmsg/.style      = { ->, color = BrickRed, thick,
   2519                                    >=stealth }
   2520 	  ]
   2521 	  \node[draw = MidnightBlue,
   2522 	    fill = CornflowerBlue,
   2523 	    minimum width = .3cm,
   2524 	    minimum height = 10cm
   2525 	  ] (h1) at (-4, 0) {};
   2526 	  \node[draw = MidnightBlue,
   2527 	    fill = CornflowerBlue,
   2528 	    minimum width = .3cm,
   2529 	    minimum height = 10cm
   2530 	  ] (h2) at (4, 0) {};
   2531 	  \node[above = 0cm of h1] {Customer};
   2532 	  \node[above = 0cm of h2] {Exchange};
   2533 
   2534 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   2535 	    (-5, 4.5) edge
   2536 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   2537 	    (-5, -4.5);
   2538 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2539 	    ($(h1.east)+(0,3)$) edge
   2540 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$}
   2541 	    ($(h2.west)+(0,2)$);
   2542 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2543 	    ($(h2.west)+(0,0.5)$) edge
   2544 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$}
   2545 	    ($(h1.east)+(0,-0.5)$);
   2546 	  \path[rstmsg]
   2547 	    ($(h2.west)+(0, -2.5)$) edge
   2548 	    node[msglabel] {400 BAD REQUEST: $Z$}
   2549 	    ($(h1.east)+(0, -3.5)$);
   2550 	  \node at (5.3, 0) {};
   2551 	\end{tikzpicture}
   2552       \end{center}
   2553     \end{minipage}
   2554     \hspace{0.5cm}
   2555     \begin{minipage}[b]{0.45\linewidth}
   2556       \tiny
   2557       \begin{description}
   2558       \item[$\cal DK$] $:= [DK^{(i)}]_i$
   2559       \item[$t_j$] .. \\ \smallskip
   2560 
   2561       \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip
   2562 
   2563       \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$
   2564       \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$
   2565       \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$
   2566       \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$
   2567 
   2568       \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$
   2569       \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$
   2570       \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip
   2571 
   2572       \item[$Z$] Cut-and-choose missmatch information
   2573       \end{description}
   2574     \end{minipage}
   2575   \end{figure}
   2576 \end{frame}
   2577 
   2578 
   2579 \begin{frame}{Taler {\tt /refresh/link}}
   2580   \begin{figure}[th]
   2581     \begin{minipage}[b]{0.45\linewidth}
   2582       \begin{center}
   2583 	\begin{tikzpicture}[scale = 0.4,
   2584             transform shape,
   2585             msglabel/.style    = { text = Black, yshift = .3cm,
   2586                                    sloped, midway },
   2587             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2588                                    >=stealth },
   2589             rstmsg/.style      = { ->, color = BrickRed, thick,
   2590                                    >=stealth }
   2591 	  ]
   2592 	  \node[draw = MidnightBlue,
   2593 	    fill = CornflowerBlue,
   2594 	    minimum width = .3cm,
   2595 	    minimum height = 10cm
   2596 	  ] (h1) at (-4, 0) {};
   2597 	  \node[draw = MidnightBlue,
   2598 	    fill = CornflowerBlue,
   2599 	    minimum width = .3cm,
   2600 	    minimum height = 10cm
   2601 	  ] (h2) at (4, 0) {};
   2602 	  \node[above = 0cm of h1] {Customer};
   2603 	  \node[above = 0cm of h2] {Exchagne};
   2604 
   2605 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   2606 	    (-5, 4.5) edge
   2607 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   2608 	    (-5, -4.5);
   2609 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2610 	    ($(h1.east)+(0,3)$) edge
   2611 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$}
   2612 	    ($(h2.west)+(0,2)$);
   2613 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2614 	    ($(h2.west)+(0,0.5)$) edge
   2615 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$}
   2616 	    ($(h1.east)+(0,-0.5)$);
   2617 	  \path[rstmsg]
   2618 	    ($(h2.west)+(0, -2.5)$) edge
   2619 	    node[msglabel] {404 NOT FOUND}
   2620 	    ($(h1.east)+(0, -3.5)$);
   2621 	  \node at (5.3, 0) {};
   2622 	\end{tikzpicture}
   2623       \end{center}
   2624     \end{minipage}
   2625     \hspace{0.5cm}
   2626     \begin{minipage}[b]{0.45\linewidth}
   2627       \tiny
   2628       \begin{description}
   2629       \item[$C$] Old coind public key \\ \smallskip
   2630       \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$
   2631       \end{description}
   2632     \end{minipage}
   2633   \end{figure}
   2634 \end{frame}
   2635 
   2636 
   2637 \begin{frame}{Operational security}
   2638   \begin{center}
   2639     \resizebox{\textwidth}{!}{
   2640 \begin{tikzpicture}[
   2641   font=\sffamily,
   2642   every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm},
   2643   source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm},
   2644   process/.style={draw,thick,circle,fill=blue!20},
   2645   sink/.style={source,fill=green!20},
   2646   datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm},
   2647   dots/.style={gray,scale=2},
   2648   to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize},
   2649   every node/.style={align=center}]
   2650 
   2651   % Position the nodes using a matrix layout
   2652   \matrix{
   2653     \node[source] (wallet) {Wallet};
   2654       \& \node[process] (browser) {Browser};
   2655       \& \node[process] (shop) {Web shop};
   2656       \& \node[sink] (backend) {Taler backend}; \\
   2657   };
   2658 
   2659   % Draw the arrows between the nodes and label them.
   2660   \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract}
   2661       node[midway,below] {(signal)} (wallet);
   2662   \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)}
   2663       node[midway,below] {(5) signed coins} (browser);
   2664   \draw[<->] (browser) -- node[midway,above] {(3,6) custom}
   2665       node[midway,below] {(HTTPS)} (shop);
   2666   \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)}
   2667       node[midway,below] {(1) proposed contract / (7) signed coins} (backend);
   2668   \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation}
   2669       node[midway,below] {(HTTPS)} (shop);
   2670 \end{tikzpicture}
   2671 }
   2672 \end{center}
   2673 \end{frame}
   2674 
   2675 
   2676 \begin{frame}{Use Cases: Refugee Camps}
   2677   Today:
   2678   \begin{itemize}
   2679   \item Non-bankable
   2680   \item Direct distribution of goods to population
   2681   \item Limited economic activity in camps
   2682   \item High level of economic dependence
   2683   \end{itemize}\vfill\pause
   2684   With GNU Taler:
   2685   \begin{itemize}
   2686   \item Local currency issued as basic income backed by aid
   2687   \item Taxation possible based on economic status
   2688   \item Local governance enabled by local taxes
   2689   \item Increased economic independence and political participation
   2690   \end{itemize}
   2691 \end{frame}
   2692 
   2693 
   2694 \begin{frame}{Use Case: Anti-Spam}
   2695   \framesubtitle{Background: \url{https://pep.security/}}
   2696   Today, p$\equiv$p provides authenticated encryption for e-mail:
   2697   \begin{itemize}
   2698     \item Free software
   2699     \item Easy to use opportunistic encryption
   2700     \item Available for Outlook, Android, Enigmail
   2701     \item Spies \& spam filters can no longer inspect content
   2702   \end{itemize}\vfill\pause
   2703   With GNU Taler:
   2704   \begin{itemize}
   2705     \item Peer-to-peer payments via e-mail
   2706     \item If unsolicited sender, hide messages from user \&
   2707           automatically request payment from sender
   2708     \item Sender can attach payment to be moved to inbox
   2709     \item Receiver may grant refund to sender
   2710   \end{itemize}
   2711 \end{frame}