marketing

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

2022-ethz.tex (110343B)


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