marketing

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

2023-nccu.tex (102369B)


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