marketing

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

2021-nyc.tex (81505B)


      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{tikz,eurosym}
     13 \usepackage[normalem]{ulem}
     14 \usepackage{listings}
     15 \usepackage{adjustbox}
     16 
     17 % CSS
     18 \lstdefinelanguage{CSS}{
     19   basicstyle=\ttfamily\scriptsize,
     20   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},
     21   sensitive=true,
     22   morecomment=[l]{//},
     23   morecomment=[s]{/*}{*/},
     24   morestring=[b]',
     25   morestring=[b]",
     26   alsoletter={:},
     27   alsodigit={-}
     28 }
     29 
     30 % JavaScript
     31 \lstdefinelanguage{JavaScript}{
     32   basicstyle=\ttfamily\scriptsize,
     33   morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
     34   morecomment=[s]{/*}{*/},
     35   morecomment=[l]//,
     36   morestring=[b]",
     37   morestring=[b]'
     38 }
     39 
     40 \lstdefinelanguage{HTML5}{
     41   basicstyle=\ttfamily\scriptsize,
     42   language=html,
     43   sensitive=true,
     44   alsoletter={<>=-},
     45   morecomment=[s]{<!-}{-->},
     46   tag=[s],
     47   otherkeywords={
     48   % General
     49   >,
     50   % Standard tags
     51 	<!DOCTYPE,
     52   </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
     53 	% body
     54 	</body, <body,
     55 	% Divs
     56 	</div, <div, </div>,
     57 	% Paragraphs
     58 	</p, <p, </p>,
     59 	% scripts
     60 	</script, <script,
     61   % More tags...
     62   <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
     63   },
     64   ndkeywords={
     65   % General
     66   =,
     67   % HTML attributes
     68   charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
     69   % SVG attributes
     70   fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
     71   % CSS properties
     72   margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
     73 	% CSS3 properties
     74   transform:, -moz-transform:, -webkit-transform:,
     75   animation:, -webkit-animation:,
     76   transition:,  transition-duration:, transition-property:, transition-timing-function:,
     77   }
     78 }
     79 
     80 \lstdefinelanguage{JavaScript}{
     81   basicstyle=\ttfamily\scriptsize,
     82   keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
     83   keywordstyle=\color{blue}\bfseries,
     84   ndkeywords={class, export, boolean, throw, implements, import, this},
     85   ndkeywordstyle=\color{darkgray}\bfseries,
     86   identifierstyle=\color{black},
     87   sensitive=false,
     88   comment=[l]{//},
     89   morecomment=[s]{/*}{*/},
     90   commentstyle=\color{purple}\ttfamily,
     91   stringstyle=\color{red}\ttfamily,
     92   morestring=[b]',
     93   morestring=[b]"
     94 }
     95 
     96 \usetikzlibrary{shapes,arrows}
     97 \usetikzlibrary{positioning}
     98 \usetikzlibrary{calc}
     99 
    100 \title{GNU Taler}
    101 %\subtitle{}
    102 
    103 \setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} \includegraphics[width=2.3cm]{bfh.png} \includegraphics[width=1.6cm]{fub.pdf} \includegraphics[width=0.4cm]{ashoka.png}  \includegraphics[width=0.4cm]{gnu.png} \includegraphics[width=1cm]{logo-2020.jpg} \hfill}
    104 %\setbeamercovered{transparent=1}
    105 
    106 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci}
    107 \date{\today}
    108 \institute{The GNU Project}
    109 
    110 
    111 \begin{document}
    112 
    113 \justifying
    114 
    115 \begin{frame}
    116   \begin{center}
    117     \LARGE {\bf GNU}
    118 
    119     \vfill
    120 %    \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf}
    121     \includegraphics[width=0.66\textwidth]{logo-2020.jpg}
    122   \end{center}
    123 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords)
    124     {\Large {\bf \href{https://taler.net/}{taler.net}} \\
    125     \href{https://twitter.com/taler}{taler@twitter} \\
    126     \href{https://taler-systems.com/}{taler-systems.com}}
    127 \end{textblock*}
    128 
    129 % Substitute based on who is giving the talk!
    130  \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords)
    131    {\hfill {\Large {\bf Florian Dold \&} \\
    132     \hfill {\bf Christian Grothoff}} \\
    133     \hfill \{dold,grothoff\}@taler.net }
    134 \end{textblock*}
    135 
    136 \end{frame}
    137 
    138 
    139 \section{What is Taler?}
    140 \begin{frame}{What is Taler?}
    141   \begin{center}
    142 Taler is an electronic instant payment system.
    143   \end{center}
    144   \begin{itemize}
    145   \item Uses electronic coins stored in {\bf wallets} on customer's device
    146   \item Like {\bf cash}
    147   \item Pay in {\bf existing currencies} (i.e. EUR, USD, BTC), \\
    148     or use it to create new {\bf regional currencies}
    149   \end{itemize}
    150   \vfill
    151   \pause
    152  \noindent
    153  However, Taler is
    154   \begin{itemize}
    155     \item \emph{not} a currency
    156     \item \emph{not} a long-term store of value
    157     \item \emph{not} a network or instance of a system
    158     \item \emph{not} decentralized
    159     \item \emph{not} based on proof-of-work or proof-of-stake
    160     \item \emph{not} a speculative asset / ``get-rich-quick scheme''
    161   \end{itemize}
    162 \end{frame}
    163 
    164 
    165 \begin{frame}{Design principles}
    166   \framesubtitle{https://taler.net/en/principles.html}
    167 GNU Taler must ...
    168 \begin{enumerate}
    169   \item {... be implemented as {\bf free software}.}
    170   \item {... protect the {\bf privacy of buyers}.}
    171   \item {... must enable the state to {\bf tax income} and crack down on
    172     illegal business activities.}
    173   \item {... prevent payment fraud.}
    174   \item {... only {\bf disclose the minimal amount of information
    175     necessary}.}
    176   \item {... be usable.}
    177   \item {... be efficient.}
    178   \item {... avoid single points of failure.}
    179   \item {... foster {\bf competition}.}
    180 \end{enumerate}
    181 \end{frame}
    182 
    183 
    184 \begin{frame}
    185 \frametitle{Taler Overview}
    186 \begin{center}
    187 \begin{tikzpicture}
    188  \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
    189  \node (origin) at (0,0) {};
    190  \node (exchange) [def,above=of origin,draw]{Exchange};
    191  \node (customer) [def, draw, below left=of origin] {Customer};
    192  \node (merchant) [def, draw, below right=of origin] {Merchant};
    193  \node (auditor) [def, draw, above right=of origin]{Auditor};
    194 % \node (regulator) [def, draw, above=of auditor]{CSSF};
    195 
    196  \tikzstyle{C} = [color=black, line width=1pt]
    197 
    198  \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
    199  \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
    200  \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
    201  \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
    202 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
    203 
    204 \end{tikzpicture}
    205 \end{center}
    206 \end{frame}
    207 
    208 \begin{frame}
    209   % TODO: replace with simplified NEW architecture picture!
    210 \frametitle{Architecture of Taler}
    211 \begin{center}
    212   \includegraphics[width=1\textwidth]{operations.png}
    213 \end{center}
    214 \end{frame}
    215 
    216 
    217 \begin{frame}{The Taler Software Ecosystem}
    218   \framesubtitle{\url{https://taler.net/en/docs.html}}
    219   Taler is based on modular components that work together to provide a
    220   complete payment system:
    221   \vfill
    222   \begin{itemize}
    223     \item {\bf Exchange:} Service provider for digital cash
    224       \begin{itemize}
    225         \item Core exchange software (cryptography, database)
    226         \item Air-gapped key management, real-time {\bf auditing}
    227         \item LibEuFin: Modular integration with banking systems
    228       \end{itemize}
    229     \item {\bf Merchant:} Integration service for existing businesses
    230       \begin{itemize}
    231         \item Core merchant backend software (cryptography, database)
    232         \item Back-office interface for staff
    233         \item Frontend integration (E-commerce, Point-of-sale)
    234       \end{itemize}
    235     \item {\bf Wallet:} Consumer-controlled applications for e-cash
    236       \begin{itemize}
    237         \item Multi-platform wallet software (for browsers \& mobile phones)
    238         \item Wallet backup storage providers
    239         \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting
    240       \end{itemize}
    241   \end{itemize}
    242 \end{frame}
    243 
    244 
    245 \begin{frame}[fragile]{Taler: Bank Perspective}
    246 \begin{adjustbox}{max totalsize={.9\textwidth}{.7\textheight},center}
    247 \begin{tikzpicture}
    248  \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
    249  \node (origin) at (0,0) {};
    250  \node (exchange) [def,above=of origin,draw]{Exchange};
    251  \node (nexus) [def, draw, below right=of exchange] {Nexus};
    252  \node (corebanking) [def, draw, below left=of nexus] {Core Banking};
    253  \node (nginx) [def, draw, above=of exchange]{Nginx};
    254  \node (postgres) [def, draw, below left=of exchange]{Postgres};
    255  \node (postgres-nexus) [def, draw, below right=of nexus]{Postgres};
    256 
    257  \tikzstyle{C} = [color=black, line width=1pt]
    258 
    259  \draw [<-, C] (exchange) -- (nginx) node [midway, above, sloped] (TextNode) {REST API};
    260  \draw [<-, C] (postgres) -- (exchange) node [midway, above, sloped] (TextNode) {SQL};
    261  \draw [<-, C] (postgres-nexus) -- (nexus) node [midway, above, sloped] (TextNode) {SQL};
    262  \draw [<-, C] (nexus) -- (exchange) node [midway, above, sloped] (TextNode) {Internal REST API};
    263  \draw [<-, C] (corebanking) -- (nexus) node [midway, above, sloped] (TextNode) {EBICS/FinTS};
    264 
    265 \end{tikzpicture}
    266 \end{adjustbox}
    267 \end{frame}
    268 
    269 
    270 \begin{frame}
    271 \frametitle{Taler: Auditor Perspective}
    272 \begin{center}
    273 \begin{tikzpicture}
    274  \tikzstyle{def} = [node distance=2em and 2.5em, inner sep=1em, outer sep=.3em];
    275  \node (origin) at (0,0) {};
    276  \node (httpd) [def,above left=of origin,draw]{auditor-httpd};
    277  \node (report) [def,above right=of origin,draw]{auditor-report};
    278  \node (postgres-A) [def, draw, below=of origin] {Postgres (Auditor)};
    279  \node (postgres-E) [def, draw, below=of postgres-A] {Postgres (Bank)};
    280 
    281  \tikzstyle{C} = [color=black, line width=1pt]
    282 
    283  \draw [->, C] (postgres-E) -- (postgres-A) node [midway, above, sloped] (TextNode) {sync};
    284  \draw [<->, C] (httpd) -- (postgres-A) node [midway, above, sloped] (TextNode) {};
    285  \draw [<->, C] (report) -- (postgres-A) node [midway, above, sloped] (TextNode) {};
    286 \end{tikzpicture}
    287 \end{center}
    288 \end{frame}
    289 
    290 
    291 \begin{frame}
    292 \frametitle{Taler: Merchant Perspective}
    293 \begin{center}
    294 \begin{tikzpicture}
    295  \tikzstyle{def} = [node distance= 3.5em and 2em, inner sep=1em, outer sep=.3em];
    296  \node (origin) at (0,0) {};
    297  \node (backend) [def,above=of origin,draw]{{\tiny taler-merchant-httpd}};
    298  \node (frontend) [def,above left=of backend,draw]{{\tiny E-commerce Frontend}};
    299  \node (backoffice) [def,above right=of backend,draw]{Backoffice};
    300  \node (postgres) [def, draw, below left=of backend] {Postgres};
    301  \node (sqlite) [def, draw, below=of backend] {Sqlite};
    302  \node (alt) [def, draw, below right=of backend] {...};
    303 
    304  \tikzstyle{C} = [color=black, line width=1pt]
    305 
    306  \draw [->, C] (frontend) -- (backend) node [midway, above, sloped] (TextNode) {REST API};
    307  \draw [->, C] (backoffice) -- (backend) node [midway, above, sloped] (TextNode) {REST API};
    308  \draw [<->, C] (backend) -- (postgres) node [midway, above, sloped] (TextNode) {SQL};
    309  \draw [<->, C] (backend) -- (sqlite) node [midway, above, sloped] (TextNode) {SQL};
    310  \draw [<->, C] (backend) -- (alt) node [midway, above, sloped] (TextNode) {SQL};
    311 \end{tikzpicture}
    312 \end{center}
    313 \end{frame}
    314 
    315 
    316 \begin{frame}{Usability of Taler}
    317   \vfill
    318   \begin{center}
    319     \url{https://demo.taler.net/}
    320   \end{center}
    321   \begin{enumerate}
    322   \item Install browser extension.
    323   \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
    324   \item Visit the {\tt shop.demo.taler.net} to spend coins.
    325   \end{enumerate}
    326   \vfill
    327 \end{frame}
    328 
    329 
    330 \begin{frame}{Social Impact of Taler}
    331   \framesubtitle{For CBDC impact analysis, see: \url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}}
    332   \begin{center}
    333     \includegraphics[height=0.9\textheight]{../../social-impact.pdf}
    334   \end{center}
    335 \end{frame}
    336 
    337 
    338 \begin{frame}{Use Case: Journalism}
    339   Today:
    340   \begin{itemize}
    341     \item Corporate structure % ($\Rightarrow$ filter)
    342     \item Advertising primary revenue % ($\Rightarrow$ dependence)
    343     \item Tracking readers critical for business success
    344     \item Journalism and marketing hard to distinguish
    345   \end{itemize}\vfill\pause
    346   With GNU Taler:
    347   \begin{itemize}
    348     \item One-click micropayments per article
    349     \item Hosting requires no expertise % (no PCI DSS)
    350     \item Reader-funded reporting separated from marketing
    351     \item Readers can remain anonymous
    352   \end{itemize}
    353 \end{frame}
    354 
    355 
    356 \begin{frame}{Use Cases: Refugee Camps}
    357   Today:
    358   \begin{itemize}
    359   \item Non-bankable
    360   \item Direct distribution of goods to population
    361   \item Limited economic activity in camps
    362   \item High level of economic dependence
    363   \end{itemize}\vfill\pause
    364   With GNU Taler:
    365   \begin{itemize}
    366   \item Local currency issued as basic income backed by aid
    367   \item Taxation possible based on economic status
    368   \item Local governance enabled by local taxes
    369   \item Increased economic independence and political participation
    370   \end{itemize}
    371 \end{frame}
    372 
    373 
    374 \begin{frame}{Use Case: Anti-Spam}
    375   \framesubtitle{Background: \url{https://pep.security/}}
    376   Today, p$\equiv$p provides authenticated encryption for e-mail:
    377   \begin{itemize}
    378     \item Free software
    379     \item Easy to use opportunistic encryption
    380     \item Available for Outlook, Android, Enigmail
    381     \item Spies \& spam filters can no longer inspect content
    382   \end{itemize}\vfill\pause
    383   With GNU Taler:
    384   \begin{itemize}
    385     \item Peer-to-peer payments via e-mail
    386     \item If unsolicited sender, hide messages from user \&
    387           automatically request payment from sender
    388     \item Sender can attach payment to be moved to inbox
    389     \item Receiver may grant refund to sender
    390   \end{itemize}
    391 \end{frame}
    392 
    393 
    394 
    395 
    396 \begin{frame}[c]{Example: The Taler Snack Machine\footnote{By M. Boss and D. Hofer}}
    397   \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.}
    398 	\vfill
    399 	\begin{figure}
    400   \centering
    401   \includegraphics[width=1.0\textwidth]{design}
    402   \end{figure}
    403 \end{frame}
    404 
    405 
    406 \begin{frame}[t]{Software architecture for the Taler Snack Machine}
    407   \framesubtitle{Code at \url{https://git.taler.net/taler-mdb}}
    408   \begin{figure}
    409   				\centering
    410   				\includegraphics[width=.9\textwidth]{software_stack}
    411 				\end{figure}
    412 \end{frame}
    413 
    414 
    415 \begin{frame}[c]{User story: Install App on Android}
    416 \framesubtitle{\url{https://wallet.taler.net/}}
    417 		\begin{figure}
    418 			\includegraphics[width=0.9\textwidth]{download_wallet.png}
    419 		\end{figure}
    420 \end{frame}
    421 
    422 \begin{frame}{User story: Withdraw e-cash}
    423 		\begin{figure}
    424 			\includegraphics[width=0.9\textwidth]{get_taler_coins.png}
    425 		\end{figure}
    426 \end{frame}
    427 
    428 \begin{frame}{User story: Use machine!}
    429 		\begin{figure}
    430 			\includegraphics[width=0.9\textwidth]{get_snacks.png}
    431 		\end{figure}
    432 \end{frame}
    433 
    434 
    435 \begin{frame}{How does it work?}
    436 We use a few ancient constructions:
    437   \begin{itemize}
    438   \item Cryptographic hash function (1989)
    439   \item Blind signature (1983)
    440   \item Schnorr signature (1989)
    441   \item Diffie-Hellman key exchange (1976)
    442   \item Cut-and-choose zero-knowledge proof (1985)
    443   \end{itemize}
    444 But of course we use modern instantiations.
    445 \end{frame}
    446 
    447 
    448 \begin{frame}{Definition: Taxability}
    449   We say Taler is taxable because:
    450   \begin{itemize}
    451   \item Merchant's income is visible from deposits.
    452   \item Hash of contract is part of deposit data.
    453   \item State can trace income and enforce taxation.
    454   \end{itemize}\pause
    455   Limitations:
    456   \begin{itemize}
    457   \item withdraw loophole
    458   \item {\em sharing} coins among family and friends
    459   \end{itemize}
    460 \end{frame}
    461 
    462 
    463 \begin{frame}{Exchange setup: Create a denomination key (RSA)}
    464    \begin{minipage}{6cm}
    465     \begin{enumerate}
    466     \item Pick random primes $p,q$.
    467     \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$
    468     \item Pick small $e < \phi(n)$ such that
    469           $d := e^{-1} \mod \phi(n)$ exists.
    470     \item Publish public key $(e,n)$.
    471     \end{enumerate}
    472   \end{minipage}
    473   \begin{minipage}{6cm}
    474   \begin{tikzpicture}
    475  \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em];
    476     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    477     \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$};
    478     \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}};
    479     \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}};
    480 
    481     \tikzstyle{C} = [color=black, line width=1pt]
    482 
    483     \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {};
    484     \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {};
    485     \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {};
    486   \end{tikzpicture}
    487 %  \includegraphics[width=0.4\textwidth]{seal.pdf}
    488   \end{minipage}
    489 \end{frame}
    490 
    491 
    492 \begin{frame}{Merchant: Create a signing key (EdDSA)}
    493   \begin{minipage}{6cm}
    494     \begin{itemize}
    495   \item pick random $m \mod o$ as private key
    496   \item $M = mG$ public key
    497   \end{itemize}
    498   \end{minipage}
    499   \begin{minipage}{6cm}
    500   \begin{tikzpicture}
    501    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    502     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    503     \node (m) [draw=none, below = of origin] at (0,0) {$m$};
    504     \node (seal) [draw=none, below=of m]{M};
    505    \tikzstyle{C} = [color=black, line width=1pt]
    506 
    507     \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {};
    508     \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {};
    509   \end{tikzpicture}
    510   \end{minipage}
    511   \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ }
    512   \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}}
    513 \end{frame}
    514 
    515 
    516 \begin{frame}{Customer: Create a planchet (EdDSA)}
    517   \begin{minipage}{8cm}
    518   \begin{itemize}
    519   \item Pick random $c \mod o$ private key
    520   \item $C = cG$ public key
    521   \end{itemize}
    522   \end{minipage}
    523   \begin{minipage}{4cm}
    524   \begin{tikzpicture}
    525    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    526     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    527     \node (c) [draw=none, below = of origin] at (0,0) {$c$};
    528     \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}};
    529     \tikzstyle{C} = [color=black, line width=1pt]
    530 
    531     \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {};
    532     \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {};
    533   \end{tikzpicture}
    534   \end{minipage}
    535   \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ }
    536   \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}}
    537 \end{frame}
    538 
    539 
    540 \begin{frame}{Customer: Blind planchet (RSA)}
    541   \begin{minipage}{6cm}
    542     \begin{enumerate}
    543     \item Obtain public key $(e,n)$
    544     \item Compute $f := FDH(C)$, $f < n$.
    545     \item Pick blinding factor $b \in \mathbb Z_n$
    546     \item Transmit $f' := f b^e \mod n$
    547     \end{enumerate}
    548   \end{minipage}
    549   \begin{minipage}{6cm}
    550   \begin{tikzpicture}
    551    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    552     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}};
    553     \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$};
    554     \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}};
    555     \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}};
    556     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    557     \tikzstyle{C} = [color=black, line width=1pt]
    558 
    559     \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {};
    560     \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {};
    561     \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {};
    562     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    563   \end{tikzpicture}
    564   \end{minipage}
    565 \end{frame}
    566 
    567 
    568 \begin{frame}{Exchange: Blind sign (RSA)}
    569    \begin{minipage}{6cm}
    570     \begin{enumerate}
    571     \item Receive $f'$.
    572     \item Compute $s' := f'^d \mod n$.
    573     \item Send signature $s'$.
    574     \end{enumerate}
    575    \end{minipage}
    576   \begin{minipage}{6cm}
    577   \begin{tikzpicture}
    578    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    579     \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}};
    580     \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}};
    581     \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    582     \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer};
    583     \tikzstyle{C} = [color=black, line width=1pt]
    584 
    585     \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {};
    586     \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {};
    587     \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}};
    588   \end{tikzpicture}
    589   \end{minipage}
    590 \end{frame}
    591 
    592 
    593 \begin{frame}{Customer: Unblind coin (RSA)}
    594   \begin{minipage}{6cm}
    595    \begin{enumerate}
    596     \item Receive $s'$.
    597     \item Compute $s := s' b^{-1} \mod n$ % \\
    598     % ($(f')^d = (f b^e)^d = f^d b$).
    599     \end{enumerate}
    600    \end{minipage}
    601   \begin{minipage}{6cm}
    602   \begin{tikzpicture}
    603    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    604     \node (b) [def, draw=none] at (0,0) {$b$};
    605     \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
    606     \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
    607     \tikzstyle{C} = [color=black, line width=1pt]
    608 
    609     \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {};
    610     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
    611   \end{tikzpicture}
    612   \end{minipage}
    613 \end{frame}
    614 
    615 
    616 \begin{frame}{Customer: Build shopping cart}
    617   \begin{center}
    618   \begin{tikzpicture}
    619    \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em];
    620     \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}};
    621     \node (cart) [draw=none, below=of m]{\includegraphics[width=0.2\textwidth]{cart.pdf}};
    622     \node (merchant) [node distance=4em and 0.5em, draw, below =of cart]{Merchant};
    623     \tikzstyle{C} = [color=black, line width=1pt];
    624     \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {};
    625     \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}};
    626   \end{tikzpicture}
    627   \end{center}
    628 \end{frame}
    629 
    630 
    631 \begin{frame}{Merchant Integration: Payment Request}
    632 % \begin{figure}[p!]
    633  \lstset{language=HTML5}
    634  \lstinputlisting{figs/taler-402.html}
    635 %  \caption{Sample HTTP response to prompt the wallet to show an offer.}
    636 %   \label{listing:http-contract}
    637 % \end{figure}
    638 
    639 % \begin{figure*}[p!]
    640 % \lstset{language=HTML5}
    641 % \lstinputlisting{figs/taler-contract.html}
    642 % \caption{Sample JavaScript code to prompt the wallet to show an offer.
    643 %          Here, the contract is fetched on-demand from the server.
    644 %          The {\tt taler\_pay()} function needs to be invoked
    645 %          when the user triggers the checkout.}
    646 % \label{listing:contract}
    647 % \end{figure*}
    648 \end{frame}
    649 
    650 
    651 \begin{frame}{Merchant: Propose contract (EdDSA)}
    652    \begin{minipage}{6cm}
    653    \begin{enumerate}
    654     \item Complete proposal $D$.
    655     \item Send $D$, $EdDSA_m(D)$
    656     \end{enumerate}
    657    \end{minipage}
    658   \begin{minipage}{6cm}
    659   \begin{tikzpicture}
    660    \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em];
    661     \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}};
    662     \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}};
    663     \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer};
    664     \tikzstyle{C} = [color=black, line width=1pt];
    665     \node (sign) [def, draw=none, above right=of proposal] {$m$};
    666     \tikzstyle{C} = [color=black, line width=1pt]
    667 
    668     \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {};
    669     \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {};
    670     \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}};
    671   \end{tikzpicture}
    672   \end{minipage}
    673 \end{frame}
    674 
    675 
    676 \begin{frame}{Customer: Spend coin (EdDSA)}
    677   \begin{minipage}{6cm}
    678    \begin{enumerate}
    679     \item Receive proposal $D$, $EdDSA_m(D)$.
    680     \item Send $s$, $C$, $EdDSA_c(D)$
    681     \end{enumerate}
    682    \end{minipage}
    683   \begin{minipage}{6cm}
    684   \begin{tikzpicture}
    685    \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em];
    686     \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}};
    687     \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}};
    688     \node (c) [def, draw=none, above=of contract] {$c$};
    689     \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant};
    690     \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
    691     \tikzstyle{C} = [color=black, line width=1pt]
    692 
    693     \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {};
    694     \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {};
    695     \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}};
    696     \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}};
    697   \end{tikzpicture}
    698   \end{minipage}
    699 \end{frame}
    700 
    701 
    702 \begin{frame}{Merchant and Exchange: Verify coin (RSA)}
    703    \begin{minipage}{6cm}
    704  \begin{equation*}
    705    s^e \stackrel{?}{\equiv} FDH(C) \mod n
    706    \end{equation*}
    707    \end{minipage}
    708   \begin{minipage}{6cm}
    709   \begin{minipage}{0.2\textwidth}
    710     \includegraphics[width=\textwidth]{coin.pdf}
    711   \end{minipage}
    712   $\stackrel{?}{\Leftrightarrow}$
    713   \begin{minipage}{0.2\textwidth}
    714     \includegraphics[width=\textwidth]{seal.pdf}
    715   \end{minipage}
    716   \end{minipage}
    717   \vfill
    718   The exchange does not only verify the signature, but also
    719   checks that the coin was not double-spent.
    720   \vfill
    721   \pause
    722   \begin{center}
    723   {\bf Taler is an online payment system.}
    724   \end{center}
    725   \vfill
    726 \end{frame}
    727 
    728 
    729 \begin{frame}{Requirements: Online vs. Offline Digital Currencies}
    730 \framesubtitle{\url{https://taler.net/papers/euro-bearer-online-2021.pdf}}
    731 \begin{itemize}
    732     \item Offline capabilities are sometimes cited as a requirement for digital payment solutions
    733     \item All implementations must either use restrictive hardware elements and/or introduce
    734       counterparty risk.
    735     \item[$\Rightarrow$] Permanent offline features weaken a digital payment solution (privacy, security)
    736     \item[$\Rightarrow$] Introduces unwarranted competition for physical cash (endangers emergency-preparedness).
    737   \end{itemize}
    738   We recommend a tiered approach:
    739       \begin{enumerate}
    740         \item Online-first, bearer-based digital currency with Taler
    741         \item (Optional:) Limited offline mode for network outages
    742         \item Physical cash for emergencies (power outage, catastrophic cyber incidents)
    743       \end{enumerate}
    744 \end{frame}
    745 
    746 
    747 \begin{frame}{Giving change}
    748   It would be inefficient to pay EUR 100 with 1 cent coins!
    749   \begin{itemize}
    750   \item Denomination key represents value of a coin.
    751   \item Exchange may offer various denominations for coins.
    752   \item Wallet may not have exact change!
    753   \item Usability requires ability to pay given sufficient total funds.
    754   \end{itemize}\pause
    755   Key goals:
    756   \begin{itemize}
    757   \item maintain unlinkability
    758   \item maintain taxability of transactions
    759   \end{itemize}\pause
    760   Method:
    761   \begin{itemize}
    762     \item Contract can specify to only pay {\em partial value} of a coin.
    763     \item Exchange allows wallet to obtain {\em unlinkable change}
    764       for remaining coin value.
    765   \end{itemize}
    766 \end{frame}
    767 
    768 
    769 \begin{frame}{Diffie-Hellman (ECDH)}
    770   \begin{minipage}{8cm}
    771    \begin{enumerate}
    772     \item Create private keys $c,t \mod o$
    773     \item Define $C = cG$
    774     \item Define $T = tG$
    775     \item Compute DH \\ $cT = c(tG) = t(cG) = tC$
    776     \end{enumerate}
    777    \end{minipage}
    778   \begin{minipage}{6cm}
    779   \begin{tikzpicture}
    780    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
    781     \node (t) [def, draw=none] at (0,0) {$t$};
    782     \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}};
    783     \node (c) [def, draw=none, above left= of ct]  {$c$};
    784     \tikzstyle{C} = [color=black, line width=1pt]
    785 
    786     \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {};
    787     \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {};
    788   \end{tikzpicture}
    789   \end{minipage}
    790 \end{frame}
    791 
    792 
    793 \begin{frame}{Strawman solution}
    794   \begin{minipage}{8cm}
    795     Given partially spent private coin key $c_{old}$:
    796    \begin{enumerate}
    797 %    \item Let $C_{old} := c_{old}G$ (as before)
    798     \item Pick random $c_{new} \mod o$ private key
    799     \item $C_{new} = c_{new}G$ public key
    800     \item Pick random $b_{new}$
    801     \item Compute $f_{new} := FDH(C_{new})$, $m < n$.
    802     \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$
    803    \end{enumerate}
    804    ... and sign request for change with $c_{old}$.
    805    \end{minipage}
    806   \begin{minipage}{4cm}
    807   \begin{tikzpicture}
    808    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    809     \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    810     \node (planchet) [def, draw=none, above left= of blinded]  {\includegraphics[width=0.15\textwidth]{planchet.pdf}};
    811     \node (cnew) [def, draw=none, above= of planchet]  {$c_{new}$};
    812     \node (bnew) [def, draw=none, above right= of blinded]  {$b_{new}$};
    813     \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    814     \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    815     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    816 
    817     \tikzstyle{C} = [color=black, line width=1pt]
    818 
    819     \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {};
    820     \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {};
    821     \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {};
    822     \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {};
    823     \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {};
    824     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    825   \end{tikzpicture}
    826   \end{minipage}
    827   \pause
    828   \vfill
    829   {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!}
    830 \end{frame}
    831 
    832 
    833 \begin{frame}{Customer: Transfer key setup (ECDH)}
    834   \begin{minipage}{8cm}
    835     Given partially spent private coin key $c_{old}$:
    836    \begin{enumerate}
    837     \item Let $C_{old} := c_{old}G$ (as before)
    838     \item Create random private transfer key $t \mod o$
    839     \item Compute $T := tG$
    840     \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$
    841     \item Derive $c_{new}$ and $b_{new}$ from $X$
    842     \item Compute $C_{new} := c_{new}G$
    843     \item Compute $f_{new} := FDH(C_{new})$
    844     \item Transmit $f_{new}' := f_{new} b_{new}^e$
    845     \end{enumerate}
    846    \end{minipage}
    847   \begin{minipage}{4cm}
    848   \begin{tikzpicture}
    849    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    850     \node (t) [def, draw=none] at (0,0) {$t$};
    851     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    852     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    853     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    854     \node (cp) [def, draw=none, below left= of dh]  {$c_{new}$};
    855     \node (bp) [def, draw=none, below right= of dh]  {$b_{new}$};
    856     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    857     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    858 
    859     \tikzstyle{C} = [color=black, line width=1pt]
    860 
    861     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    862     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    863     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    864     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    865     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    866     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    867     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    868     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    869   \end{tikzpicture}
    870   \end{minipage}
    871 \end{frame}
    872 
    873 
    874 \begin{frame}{Cut-and-Choose}
    875   \begin{minipage}{4cm}
    876   \begin{tikzpicture}
    877    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    878     \node (t) [def, draw=none] at (0,0) {$t_1$};
    879     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    880     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    881     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    882     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,1}$};
    883     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,1}$};
    884     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    885     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    886 
    887     \tikzstyle{C} = [color=black, line width=1pt]
    888 
    889     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    890     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    891     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    892     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    893     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    894     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    895     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    896     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    897   \end{tikzpicture}
    898   \end{minipage}
    899   \begin{minipage}{4cm}
    900   \begin{tikzpicture}
    901    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    902     \node (t) [def, draw=none] at (0,0) {$t_2$};
    903     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    904     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    905     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    906     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,2}$};
    907     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,2}$};
    908     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    909     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    910 
    911     \tikzstyle{C} = [color=black, line width=1pt]
    912 
    913     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    914     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    915     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    916     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    917     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    918     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    919     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    920     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    921   \end{tikzpicture}
    922   \end{minipage}
    923   \begin{minipage}{4cm}
    924   \begin{tikzpicture}
    925    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    926     \node (t) [def, draw=none] at (0,0) {$t_3$};
    927     \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}};
    928     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    929     \node (d) [def, draw=none, above left= of dh]  {$c_{old}$};
    930     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,3}$};
    931     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,3}$};
    932     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    933     \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange};
    934 
    935     \tikzstyle{C} = [color=black, line width=1pt]
    936 
    937     \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {};
    938     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    939     \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {};
    940     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    941     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    942     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    943     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    944     \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}};
    945   \end{tikzpicture}
    946   \end{minipage}
    947 \end{frame}
    948 
    949 
    950 \begin{frame}{Exchange: Choose!}
    951    \begin{center}
    952     \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer.
    953     \end{center}
    954 \end{frame}
    955 
    956 
    957 \begin{frame}{Customer: Reveal}
    958    \begin{enumerate}
    959    \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange
    960    \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange
    961    \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange
    962   \end{enumerate}
    963 \end{frame}
    964 
    965 
    966 \begin{frame}{Exchange: Verify ($\gamma = 2$)}
    967   \begin{minipage}{4cm}
    968   \begin{tikzpicture}
    969    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    970     \node (h) [def, draw=none] at (0,0) {$t_1$};
    971     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    972     \node (d) [def, draw=none, above left= of dh]  {$C_{old}$};
    973     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,1}$};
    974     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,1}$};
    975     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    976 
    977     \tikzstyle{C} = [color=black, line width=1pt]
    978 
    979     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
    980     \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {};
    981     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
    982     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
    983     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
    984     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
    985   \end{tikzpicture}
    986   \end{minipage}
    987   \begin{minipage}{4cm}
    988  \
    989   \end{minipage}
    990   \begin{minipage}{4cm}
    991   \begin{tikzpicture}
    992    \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
    993     \node (h) [def, draw=none] at (0,0) {$t_3$};
    994     \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
    995     \node (d) [def, draw=none, above left= of dh]  {$C_{old}$};
    996     \node (cp) [def, draw=none, below left= of dh]  {$c_{new,3}$};
    997     \node (bp) [def, draw=none, below right= of dh]  {$b_{new,3}$};
    998     \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
    999 
   1000     \tikzstyle{C} = [color=black, line width=1pt]
   1001 
   1002     \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {};
   1003     \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {};
   1004     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1005     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1006     \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {};
   1007     \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {};
   1008   \end{tikzpicture}
   1009   \end{minipage}
   1010 \end{frame}
   1011 
   1012 
   1013 \begin{frame}{Exchange: Blind sign change (RSA)}
   1014    \begin{minipage}{6cm}
   1015     \begin{enumerate}
   1016     \item Take $f_{new,\gamma}'$.
   1017     \item Compute $s' := f_{new,\gamma}'^d \mod n$.
   1018     \item Send signature $s'$.
   1019     \end{enumerate}
   1020    \end{minipage}
   1021   \begin{minipage}{6cm}
   1022   \begin{tikzpicture}
   1023    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
   1024     \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}};
   1025     \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}};
   1026     \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}};
   1027     \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer};
   1028     \tikzstyle{C} = [color=black, line width=1pt]
   1029 
   1030     \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {};
   1031     \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {};
   1032     \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}};
   1033   \end{tikzpicture}
   1034   \end{minipage}
   1035 \end{frame}
   1036 
   1037 
   1038 \begin{frame}{Customer: Unblind change (RSA)}
   1039   \begin{minipage}{6cm}
   1040    \begin{enumerate}
   1041     \item Receive $s'$.
   1042     \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$.
   1043     \end{enumerate}
   1044    \end{minipage}
   1045   \begin{minipage}{6cm}
   1046   \begin{tikzpicture}
   1047    \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em];
   1048     \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$};
   1049     \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
   1050     \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
   1051     \tikzstyle{C} = [color=black, line width=1pt]
   1052 
   1053     \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {};
   1054     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
   1055   \end{tikzpicture}
   1056   \end{minipage}
   1057 \end{frame}
   1058 
   1059 
   1060 \begin{frame}{Exchange: Allow linking change}
   1061   \begin{minipage}{7cm}
   1062     \begin{center}
   1063     Given $C_{old}$
   1064 
   1065     \vspace{1cm}
   1066 
   1067     return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$.
   1068   \end{center}
   1069    \end{minipage}
   1070   \begin{minipage}{5cm}
   1071    \begin{tikzpicture}
   1072     \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em];
   1073     \node (co) [def, draw=none] at (0,0) {$C_{old}$};
   1074     \node (T) [def, draw=none, below left=of co]{$T_\gamma$};
   1075     \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
   1076     \node (customer) [def, draw, below right=of T] {Customer};
   1077 
   1078     \tikzstyle{C} = [color=black, line width=1pt]
   1079 
   1080     \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {};
   1081     \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {};
   1082     \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link};
   1083     \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link};
   1084   \end{tikzpicture}
   1085   \end{minipage}
   1086 \end{frame}
   1087 
   1088 
   1089 \begin{frame}{Customer: Link (threat!)}
   1090   \begin{minipage}{6.3cm}
   1091    \begin{enumerate}
   1092     \item Have $c_{old}$.
   1093     \item Obtain $T_\gamma$, $s$ from exchange
   1094     \item Compute $X_\gamma = c_{old}T_\gamma$
   1095     \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$
   1096     \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$
   1097   \end{enumerate}
   1098 
   1099    \end{minipage}
   1100   \begin{minipage}{5.7cm}
   1101   \begin{tikzpicture}
   1102   \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em];
   1103     \node (T) [def, draw=none] at (0,0) {$T_\gamma$};
   1104     \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange};
   1105     \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}};
   1106     \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}};
   1107     \node (bp) [def, draw=none, below left= of dh]  {$b_{new,\gamma}$};
   1108     \node (co) [def, draw=none, above right= of dh]  {$c_{old}$};
   1109     \node (cp) [def, draw=none, below= of dh]  {$c_{new,\gamma}$};
   1110     \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}};
   1111     \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}};
   1112 
   1113     \tikzstyle{C} = [color=black, line width=1pt]
   1114 
   1115     \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {};
   1116     \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {};
   1117     \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1118     \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {};
   1119     \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {};
   1120     \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {};
   1121     \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link};
   1122     \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link};
   1123     \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {};
   1124   \end{tikzpicture}
   1125   \end{minipage}
   1126 \end{frame}
   1127 
   1128 
   1129 \begin{frame}{Refresh protocol summary}
   1130   \begin{itemize}
   1131   \item Customer asks exchange to convert old coin to new coin
   1132   \item Protocol ensures new coins can be recovered from old coin
   1133   \item[$\Rightarrow$] New coins are owned by the same entity!
   1134   \end{itemize}
   1135   Thus, the refresh protocol allows:
   1136   \begin{itemize}
   1137   \item To give unlinkable change.
   1138   \item To give refunds to an anonymous customer.
   1139   \item To expire old keys and migrate coins to new ones.
   1140   \item To handle protocol aborts.
   1141   \end{itemize}
   1142   \noindent
   1143   \begin{center}
   1144     \bf
   1145    Transactions via refresh are equivalent to {\em sharing} a wallet.
   1146 \end{center}
   1147 \end{frame}
   1148 
   1149 
   1150 
   1151 
   1152 
   1153 \section{Competitor analysis}
   1154 \begin{frame}{Competitor comparison}
   1155   \begin{center} \small
   1156     \begin{tabular}{l||c|c|c|c|c}
   1157                 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline
   1158    Online      &$-$$-$$-$  &   ++    &    ++    &     +      &   +++  \\ \hline
   1159     Offline     & +++  &   $-$$-$    &    $-$$-$    &     +      &   $-$$-$  \\ \hline
   1160     Trans. cost & +    & $-$$-$$-$   & $-$$-$$-$  &     $-$      &   ++  \\ \hline
   1161     Speed       & +    & $-$$-$$-$   & $-$$-$$-$  &     o      &   ++  \\ \hline
   1162     Taxation    & $-$    &   $-$$-$    &  $-$$-$$-$   &    +++     &  +++  \\ \hline
   1163     Payer-anon  &  ++  &   o     &    ++    &  $-$$-$$-$   &  +++  \\ \hline
   1164     Payee-anon  & ++   &   o     &    ++    &  $-$$-$$-$    &  $-$$-$$-$ \\ \hline
   1165     Security    &  $-$   &   o     &    o     &    $-$$-$      &  ++   \\ \hline
   1166     Conversion  & +++  &  $-$$-$$-$   & $-$$-$$-$ &    +++     &  +++  \\ \hline
   1167     Libre       &  $-$   &  +++    &    +++   & $-$ $-$ $-$      &  +++  \\
   1168   \end{tabular}
   1169   \end{center}
   1170 \end{frame}
   1171 
   1172 
   1173 \begin{frame}{Taler: Project Status}
   1174 \framesubtitle{\url{https://docs.taler.net/}}
   1175 \begin{itemize}
   1176     \item Cryptographic protocols and core exchange component are stable
   1177     \item Current focus: Merchant integration, settlement integration, wallet backup
   1178     \item Pilot project at Bern University of Applied Sciences cafeteria
   1179     \item Internal alpha deployment with a commercial bank in progress
   1180   \end{itemize}
   1181 \end{frame}
   1182 
   1183 
   1184 \begin{frame}{Next Steps: Possible Projects and Collaborations}
   1185   \vfill
   1186 \begin{center}
   1187 \includegraphics[width=1.0\textwidth]{taler-in-use.png}
   1188 \end{center}
   1189 \end{frame}
   1190 
   1191 
   1192 \begin{frame}{Area I: System Integration and Partnerships}
   1193   \framesubtitle{\url{https://lists.gnu.org/mailman/listinfo/taler}}
   1194   Pilots with banking organizations could:
   1195   \begin{itemize}
   1196     \item Study integration with the underlying RTGS layer:
   1197   \begin{itemize}
   1198     \item Develop standardized operational procedures
   1199     \item Assess transaction performance at scale
   1200     \item Perform cost analysis in banking environment
   1201     \item Assess effort for integration with commercial banks
   1202   \end{itemize}
   1203     \item Analyze regulatory considerations for different legislations
   1204     \item Perform independent security audits of Taler components
   1205   \end{itemize}
   1206   In general, a major task is faciltation of integration at retailers:
   1207   \begin{itemize}
   1208     \item Hardware and software support
   1209     \item Integration into off-the-shelf E-commerce systems
   1210   \end{itemize}
   1211 \end{frame}
   1212 
   1213 
   1214 \begin{frame}{Area II: Development/Research Extensions}
   1215   \framesubtitle{Background: \url{https://myoralvillage.org/}}
   1216 We have ideas for protocol extensions and ``programmable money'':
   1217   \begin{itemize}
   1218     \item Mediated wallet-to-wallet payments (instead of customer-to-merchant)
   1219     \item Privacy-preserving auctions (trading, currency exchange)
   1220     \item Age-restricted private payments for children (youth protection)
   1221   \end{itemize}
   1222 Public funding could be used to improve:
   1223   \begin{itemize}
   1224     \item General digital wallet usability and availability
   1225     \item Accessibility features for illiterate and innumerate users
   1226     \item Protocol extensions for automated tax reporting
   1227   \end{itemize}
   1228 \end{frame}
   1229 
   1230 
   1231 \begin{frame}{How to support?}
   1232   \begin{description}
   1233     \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}, \\
   1234                  \url{irc://irc.freenode.net/\#taler}
   1235     \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/}
   1236     \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net}
   1237     \item[Integrate:] \url{https://docs.taler.net/}
   1238     \item[Donate:] \url{https://gnunet.org/ev}
   1239     \item[Invest:] \url{https://taler-systems.com/}
   1240   \end{description}
   1241 \end{frame}
   1242 
   1243 
   1244 \begin{frame}
   1245 \frametitle{Do you have any questions?}
   1246 \vfill
   1247 References:
   1248 {\tiny
   1249   \begin{enumerate}
   1250  \item{David Chaum, Christian Grothoff and Thomas Moser.
   1251        {\em How to issue a central bank digital currency}.
   1252        {\bf SNB Working Papers, 2021}.}
   1253  \item{Christian Grothoff, Bart Polot and Carlo von Loesch.
   1254        {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}.
   1255        {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.}
   1256  \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci.
   1257        {\em Enabling Secure Web Payments with GNU Taler}.
   1258        {\bf SPACE 2016}.}
   1259  \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff.
   1260        {\em Taler: Taxable Anonymous Libre Electronic Reserves}.
   1261        Available upon request. 2016.}
   1262  \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza.
   1263        {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}.
   1264        {\bf IEEE Symposium on Security \& Privacy, 2016}.}
   1265  \item{David Chaum, Amos Fiat and Moni Naor.
   1266        {\em Untraceable electronic cash}.
   1267        {\bf Proceedings on Advances in Cryptology, 1990}.}
   1268   \item{Phillip Rogaway.
   1269        {\em The Moral Character of Cryptographic Work}.
   1270        {\bf Asiacrypt}, 2015.} \label{bib:rogaway}
   1271 \end{enumerate}
   1272 }
   1273 \begin{center}
   1274   {\bf Let money facilitate trade; but ensure capital serves society.}
   1275 \end{center}
   1276 \end{frame}
   1277 
   1278 
   1279 \section{Integration with the core banking system}
   1280 
   1281 \begin{frame}
   1282   \vfill
   1283   \begin{center}
   1284     {\bf Part II: Integration with the core banking system}
   1285   \end{center}
   1286   \vfill
   1287 \end{frame}
   1288 
   1289 
   1290 \begin{frame}
   1291 \frametitle{High-level Deployment Recipe}
   1292 \dots as a bank
   1293 \begin{enumerate}
   1294   \item Create an escrow bank account for the exchange with EBICS access
   1295   \item Provision offline signing machine (or account during testing)
   1296   \item Provision two PostgreSQL databases (for LibEuFin Nexus and exchange)
   1297   \item Provision user-facing exchange service and secmod processes
   1298   \item Provision LibEuFin Nexus (connected to escrow account and providing
   1299     an internal API to the exchange)
   1300   \item Test using the ``taler-wallet-cli``
   1301 \end{enumerate}
   1302 \end{frame}
   1303 
   1304 
   1305 \begin{frame}{Exchange escrow account access}
   1306 The Taler exchange needs to communicate with the core banking system \dots
   1307 \begin{itemize}
   1308   \item to query for transactions into the exchange's escrow account
   1309   \item to initiate payments of aggregated Taler deposits to merchants
   1310 \end{itemize}
   1311 
   1312 In a Taler deployment, the \emph{Taler Wire Gateway} provides an API to the exchange
   1313 for Taler-specific access to the Exchange's escrow account.  Multiple implementations
   1314 of the Taler Wire Gateway exist:
   1315 
   1316 \begin{itemize}
   1317   \item a self-contained play money demo bank
   1318   \item LibEuFin, an adapter to EBICS and other protocols
   1319 \end{itemize}
   1320 
   1321 \end{frame}
   1322 
   1323 \begin{frame}{LibEuFin}
   1324   LibEuFin is a standalone project that provides adapters to bank account
   1325   access APIs.
   1326 
   1327   \begin{itemize}
   1328     \item LibEuFin provides both a generic access layer and an
   1329       implementation of the Taler Wire Gateway API for the exchange
   1330     \item currently, only EBICS 2.5 is supported
   1331     \item other APIs such as FinTS or PSD2-style XS2A APIs can be added
   1332       without requiring changes to the Exchange
   1333     \item tested with a GLS business account
   1334   \end{itemize}
   1335 \end{frame}
   1336 
   1337 \begin{frame}{LibEuFin Concepts}
   1338   \begin{itemize}
   1339     \item A LibEuFin \emph{bank connection} is a set of credentials and parameters
   1340       to talk to the bank's account access API.
   1341     \item A LibEuFin \emph{bank account} is the information about a bank
   1342       account (balances, transactions, payment initiations) stored locally
   1343       within the LibEuFin service.  A LibEuFin bank account has a default Bank
   1344       Connection that is used to communicate with the bank's API.
   1345     \item A \emph{facade} provides a domain-specific access layer to bank accounts
   1346       and connections.  The \emph{Taler Wire Gateway Facade} implements the
   1347       API required by the Taler exchange and translates it to operations on the
   1348       underlying account/connection.
   1349   \end{itemize}
   1350 \end{frame}
   1351 
   1352 \begin{frame}{LibEuFin Tooling}
   1353   \begin{itemize}
   1354     \item \texttt{libeufin-nexus} is the main service
   1355     \item Almost all configuration (except DB credentials)
   1356       is stored in the database and managed via a RESTful HTTP API
   1357     \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol
   1358       testing
   1359     \item \texttt{libeufin-cli} is client for the HTTP API (only implements a subset
   1360       of available functionality)
   1361   \end{itemize}
   1362 \end{frame}
   1363 
   1364 \begin{frame}{LibEuFin Setup Overview}
   1365   \begin{itemize}
   1366     \item Obtain EBICS subscriber configuration (host URL, host ID, user ID,
   1367       partner ID) for the Exchange's escrow account
   1368     \item Deploy the LibEuFin Nexus service
   1369     \item Create a new LibEuFin bank connection (of type \texttt{ebics})
   1370     \item Export and back up the key material for the bank connection (contains
   1371       EBICS subscriber configuration and private keys)
   1372     \item Send subscriber initialization to the EBICS host (electronically)
   1373     \item Export key letter and activate subscriber in the EBICS host (manually)
   1374     \item Synchronize the bank connection
   1375     \item Import the account into LibEuFin
   1376     \item Create a Taler Wire Gateway facade
   1377     \item Set up scheduled tasks for ingesting new transactions / sending payment
   1378       initiations
   1379   \end{itemize}
   1380 \end{frame}
   1381 
   1382 
   1383 
   1384 \begin{frame}{LibEuFin Implementation Limitations}
   1385   \begin{itemize}
   1386     \item LibEuFin is less stable than other Taler components, and future
   1387       updates might contain breaking changes (tooling, APIs and database
   1388       schema)
   1389     \item Error handling and recovery is still rather primitive
   1390     \item The Taler Wire Gateway does not yet implement automatic return
   1391       transactions when transactions with a malformed subject (i.e.  no reserve
   1392       public key) are received
   1393   \end{itemize}
   1394 \end{frame}
   1395 
   1396 \begin{frame}{LibEuFin EBICS Limitations}
   1397   The GLS accounts with EBICS access that we have access to have some limitations:
   1398   \begin{itemize}
   1399     \item SEPA Instant Credit Transfers aren't supported yet
   1400     \item Erroneous payment initiations are accepted by the GLS EBICS host,
   1401       but an error message is later sent only by paper mail (and not reported
   1402       by the CRZ download request)
   1403     \item Limited access to transaction history (3 months)
   1404   \end{itemize}
   1405 \end{frame}
   1406 
   1407 \begin{frame}[fragile]{LibEuFin Setup Guide}
   1408 \vfill
   1409 \begin{center}
   1410 \url{https://docs.taler.net/libeufin/nexus-tutorial.html}
   1411 \end{center}
   1412 \vfill
   1413 \end{frame}
   1414 
   1415 
   1416 \section{Operator security considerations}
   1417 
   1418 \begin{frame}
   1419   \vfill
   1420   \begin{center}
   1421     {\bf Part III: Operator security considerations}
   1422   \end{center}
   1423   \vfill
   1424 \end{frame}
   1425 
   1426 
   1427 \begin{frame}{Key management}
   1428 Taler has many types of keys:
   1429 \begin{itemize}
   1430 \item Coin keys
   1431 \item Denomination keys
   1432 \item Online message signing keys
   1433 \item Offline key signing keys
   1434 \item Merchant keys
   1435 \item Auditor key
   1436 \item Security module keys
   1437 \item Transfer keys
   1438 \item Wallet keys
   1439 \item {\em TLS keys, DNSSEC keys}
   1440 \end{itemize}
   1441 \end{frame}
   1442 
   1443 
   1444 \begin{frame}{Offline keys}
   1445 Both exchange and auditor use offline keys.
   1446 \begin{itemize}
   1447 \item Those keys must be backed up and remain highly confidential!
   1448 \item We recommend that computers that have ever had access to those
   1449       keys to NEVER again go online.
   1450 \item We recommend using a Raspberry Pi for offline key operations.
   1451       Store it in a safe under multiple locks and keys.
   1452 \item Apply full-disk encryption on offline-key signing systems.
   1453 \item Have 3--5 full-disk backups of offline-key signing systems.
   1454 \end{itemize}
   1455 \begin{center}
   1456 \includegraphics[scale=0.1]{pi.png}
   1457 \end{center}
   1458 \end{frame}
   1459 
   1460 
   1461 \begin{frame}{Online keys}
   1462 The exchange needs RSA and EdDSA keys to be available for online signing.
   1463 \begin{itemize}
   1464 \item Knowledge of these private keys will allow an adversary to
   1465       mint digital cash, possibly resulting in huge financial losses
   1466       (eventually, this will be detected by the auditor, but only
   1467        after some financial losses have been irrevocably incurred).
   1468 \item The corresponding public keys are certified using
   1469       Taler's public key infrastructure (which uses offline-only keys).
   1470 \end{itemize}
   1471 \begin{center}
   1472 \includegraphics[width=0.5\textwidth]{taler-diagram-signatures.png}
   1473 \end{center}
   1474 \vfill
   1475 {\tt taler-exchange-offline} can also be used to {\bf revoke} the
   1476 online signing keys, if we find they have been compromised.
   1477 \vfill
   1478 \end{frame}
   1479 
   1480 
   1481 \begin{frame}{Protecting online keys}
   1482 The exchange needs RSA and EdDSA keys to be available for online signing.
   1483 \begin{itemize}
   1484 \item {\tt taler-exchange-secmod-rsa} and {\tt taler-exchange-secmod-eddsa}
   1485       are the only processes that must have access to the private keys.
   1486 \item The secmod processes should run under a different UID, but share
   1487       the same GID with the exchange.
   1488 \item The secmods generate the keys, allow {\tt taler-exchange-httpd} to sign with
   1489       them, and eventually delete the private keys.
   1490 \item Communication between secmods and {\tt taler-exchange-httpd} is via
   1491       a UNIX domain socket.
   1492 \item Online private keys are stored on disk (not in database!) and should
   1493       NOT be backed up (RAID should suffice). If disk is lost, we can always
   1494       create fresh replacement keys!
   1495 \end{itemize}
   1496 \end{frame}
   1497 
   1498 
   1499 \begin{frame}{Database}
   1500 The exchange needs the database to detect double spending.
   1501 \begin{itemize}
   1502 \item Loss of the database will allow technically skilled people
   1503       to double-spend their digital cash, possibly resulting in
   1504       significant financial losses.
   1505 \item The database contains total amounts customers withdrew and
   1506       merchants received, so sensitive private banking data. It
   1507       must also not become public.
   1508 \item The auditor must have a (current) copy. Asynchronous replication
   1509       is considered sufficient.  This copy could also be used as an
   1510       additional (off-site?) backup.
   1511 \end{itemize}
   1512 \end{frame}
   1513 
   1514 
   1515 \begin{frame}{taler-exchange-wirewatch}
   1516 {\tt taler-exchange-wirewatch} needs credentials to access data about
   1517 incoming wire transfers from the Nexus.
   1518 \begin{itemize}
   1519 \item This tool should run as a separate UID and GID (from
   1520       {\tt taler-exchange-httpd}).
   1521 \item It must have access to the Postgres database (SELECT + INSERT).
   1522 \item Its configuration file contains the credentials to talk to Nexus.
   1523 \item[$\Rightarrow$] Configuration should be separate from {\tt taler-exchange-httpd}.
   1524 \end{itemize}
   1525 \end{frame}
   1526 
   1527 
   1528 \begin{frame}{taler-exchange-transfer}
   1529 Only {\tt taler-exchange-transfer} needs credentials to initiate wire
   1530 transfers using the Nexus.
   1531 \begin{itemize}
   1532 \item This tool should run as a separate UID and GID (from
   1533       {\tt taler-exchange-httpd}).
   1534 \item It must have access to the Postgres database (SELECT + INSERT).
   1535 \item Its configuration file contains the credentials to talk to Nexus.
   1536 \item[$\Rightarrow$] Configuration should be separate from {\tt taler-exchange-httpd}.
   1537 \end{itemize}
   1538 \end{frame}
   1539 
   1540 
   1541 \begin{frame}{Nexus}
   1542 The Nexus has to be able to interact with the escrow account of the bank.
   1543 \begin{itemize}
   1544 \item It must have the private keys to sign EBICS/FinTS messages.
   1545 \item It also has its own local database.
   1546 \item The Nexus user and database should be kept separate from
   1547       the other exchange users and the Taler exchange database.
   1548 \end{itemize}
   1549 \end{frame}
   1550 
   1551 
   1552 \begin{frame}{Hardware}
   1553 General notions:
   1554 \begin{itemize}
   1555 \item Platforms with disabled Intel ME \& disabled remote administration are safer.
   1556 \item VMs are not a security mechanism. Side-channel attacks abound. Avoid running any
   1557       Taler component in a virtual machine ``for security''.
   1558 \end{itemize}
   1559 \end{frame}
   1560 
   1561 
   1562 \begin{frame}{Operating system}
   1563 General notions:
   1564 \begin{itemize}
   1565 \item It should be safe to run the different Taler components (including Nginx, Nexus
   1566       and Postgres) all on the same physical hardware (under different UIDs/GIDs).
   1567       We would separate them onto different physical machines during scale-out, but not
   1568       necessarily for ``basic'' security.
   1569 \item Limiting and auditing system administrator access will be crucial.
   1570 \item We recommend to {\bf not} use any anti-virus.
   1571 \item We recommend using a well-supported GNU/Linux operating system (such as
   1572       Debian or Ubuntu).
   1573 \end{itemize}
   1574 \end{frame}
   1575 
   1576 
   1577 \begin{frame}{Network}
   1578 \begin{itemize}
   1579 \item We recommend to {\bf not} use any host-based firewall.
   1580       Taler components can use UNIX domain sockets (or bind to localhost).
   1581 \item A network-based
   1582       firewall is not required, but as long as TCP 80/443 are open Taler should
   1583       work fine.
   1584 \item Any firewall must be configured to permit connection to Auditor
   1585       for database synchronization.
   1586 \item We recommend running the Taler exchange behind an Nginx or Apache
   1587       proxy for TLS termination.
   1588 \item We recommend using static IP address configurations (IPv4 and IPv6).
   1589 \item We recommend using DNSSEC with DANE in addition to TLS certificates.
   1590 \item We recommend auditing the TLS setup using \url{https://observatory.mozilla.org}.
   1591 \end{itemize}
   1592 \end{frame}
   1593 
   1594 
   1595 \section{Integration considerations}
   1596 
   1597 \begin{frame}
   1598   \vfill
   1599   \begin{center}
   1600     {\bf Part IV: Integration considerations}
   1601   \end{center}
   1602   \vfill
   1603 \end{frame}
   1604 
   1605 
   1606 \begin{frame}[fragile]{RFC 8905: \texttt{payto:} Uniform Identifiers for Payments and Accounts}
   1607   \vfill
   1608   Like \texttt{mailto:}, but for bank accounts instead of email accounts!
   1609   \vfill
   1610   \begin{verbatim}
   1611     payto://<PAYMENT-METHOD>/<ACCOUNT-NR>
   1612       ?subject=InvoiceNr42
   1613       &amount=EUR:12.50
   1614   \end{verbatim}
   1615   \vfill
   1616   Default action:  Open app to review and confirm payment.
   1617   \vfill
   1618 \includegraphics[width=0.25\textwidth]{einzahlschein-ch.jpeg}
   1619 \hfill
   1620 \includegraphics[width=0.2\textwidth]{de-ueberweisungsformular.png}
   1621   \vfill
   1622 \end{frame}
   1623 
   1624 
   1625 \begin{frame}[fragile]{Benefits of {\tt payto://}}
   1626   \begin{itemize}
   1627     \item Standardized way to represent financial resources (bank account, bitcoin wallet)
   1628       and payments to them
   1629     \item Useful on the client-side on the Web and for FinTech backend applications
   1630     \item Payment methods (such as IBAN, ACH, Bitcoin) are registered with
   1631           IANA and allow extra options
   1632   \end{itemize}
   1633   \begin{center}
   1634   {\bf Taler wallet can generate payto://-URI for withdraw!}
   1635   \end{center}
   1636 \end{frame}
   1637 
   1638 
   1639 
   1640 \begin{frame}{Warranting deposit safety}
   1641   Exchange has {\em another} online signing key $W = wG$:
   1642   \begin{center}
   1643     Sends $EdDSA_w(M,H(D),FDH(C))$ to the merchant.
   1644   \end{center}
   1645   This signature means that $M$ was the {\em first} to deposit
   1646   $C$ and that the exchange thus must pay $M$.
   1647   \vfill
   1648   \begin{center}
   1649      Without this, an evil exchange could renege on the deposit
   1650      confirmation and claim double-spending if a coin were
   1651      deposited twice, and then not pay either merchant!
   1652   \end{center}
   1653 \end{frame}
   1654 
   1655 
   1656 \begin{frame}{Online keys}
   1657 \begin{itemize}
   1658 \item The exchange needs $d$ and $w$ to be available for online signing.
   1659 \item The corresponding public keys $W$ and $(e,n)$ are certified using
   1660       Taler's public key infrastructure (which uses offline-only keys).
   1661 \end{itemize}
   1662 \begin{center}
   1663 \includegraphics[width=0.5\textwidth]{taler-diagram-signatures.png}
   1664 \end{center}
   1665 \vfill
   1666 \begin{center}
   1667 {\bf What happens if those private keys are compromised?}
   1668 \end{center}
   1669 \vfill
   1670 \end{frame}
   1671 
   1672 
   1673 \begin{frame}{Denomination key $(e,n)$ compromise}
   1674 \begin{itemize}
   1675 \item An attacker who learns $d$ can sign an arbitrary number of illicit coins
   1676       into existence and deposit them.
   1677 \item Auditor and exchange can detect this once the total number of deposits
   1678       (illicit and legitimate) exceeds the number of legitimate coins the
   1679       exchange created.
   1680 \item At this point, $(e,n)$ is {\em revoked}.  Users of {\em unspent}
   1681       legitimate coins reveal $b$ from their withdrawal operation and
   1682       obtain a {\em refund}.
   1683 \item The financial loss of the exchange is {\em bounded} by the number of
   1684       legitimate coins signed with $d$.
   1685 \item[$\Rightarrow$] Taler frequently rotates denomination signing keys and
   1686       deletes $d$ after the signing period of the respective key expires.
   1687 \end{itemize}
   1688 \begin{center}
   1689 \includegraphics[width=0.5\textwidth]{taler-diagram-denom-expiration.png}
   1690 \end{center}
   1691 \end{frame}
   1692 
   1693 
   1694 \begin{frame}{Online signing key $W$ compromise}
   1695 \begin{itemize}
   1696 \item An attacker who learns $w$ can sign deposit confirmations.
   1697 \item Attacker sets up two (or more) merchants and customer(s) which double-spend
   1698       legitimate coins at both merchants.
   1699 \item The merchants only deposit each coin once at the exchange and get paid once.
   1700 \item The attacker then uses $w$ to fake deposit confirmations for the double-spent
   1701       transactions.
   1702 \item The attacker uses the faked deposit confirmations to complain to the auditor
   1703       that the exchange did not honor the (faked) deposit confirmations.
   1704 \end{itemize}
   1705 The auditor can then detect the double-spending, but cannot tell who is to blame,
   1706 and (likely) would presume an evil exchange, forcing it to pay both merchants.
   1707 \end{frame}
   1708 
   1709 
   1710 \begin{frame}{Detecting online signing key $W$ compromise}
   1711 \begin{itemize}
   1712 \item Merchants are required to {\em probabilistically} report
   1713       signed deposit confirmations to the auditor.
   1714 \item Auditor can thus detect exchanges not reporting signed
   1715       deposit confirmations.
   1716 \item[$\Rightarrow$] Exchange can rekey if illicit key use is detected,
   1717       then only has to honor deposit confirmations it already provided
   1718       to the auditor {\em and} those without proof of double-spending
   1719       {\em and} those merchants reported to the auditor.
   1720 \item[$\Rightarrow$] Merchants that do not participate in reporting
   1721       to the auditor risk their deposit permissions being voided in
   1722       cases of an exchange's private key being compromised.
   1723 \end{itemize}
   1724 \end{frame}
   1725 
   1726 
   1727 
   1728 
   1729 \end{document}
   1730 
   1731 
   1732 
   1733 
   1734 \begin{frame}{Taler {\tt /withdraw/sign}}
   1735 % Customer withdrawing coins with blind signatures
   1736 % \bigskip
   1737   \begin{figure}[th]
   1738     \begin{minipage}[b]{0.45\linewidth}
   1739       \begin{center}
   1740         \begin{tikzpicture}[scale = 0.4,
   1741             transform shape,
   1742             msglabel/.style    = { text = Black, yshift = .3cm,
   1743                                    sloped, midway },
   1744             okmsg/.style       = { ->, color = MidnightBlue, thick,
   1745                                    >=stealth },
   1746             rstmsg/.style      = { ->, color = BrickRed, thick,
   1747                                    >=stealth }
   1748           ]
   1749           \node[draw = MidnightBlue,
   1750             fill = CornflowerBlue,
   1751             minimum width = .3cm,
   1752             minimum height = 10cm
   1753           ] (h1) at (-4, 0) {};
   1754           \node[draw = MidnightBlue,
   1755             fill = CornflowerBlue,
   1756             minimum width = .3cm,
   1757             minimum height = 10cm
   1758           ] (h2) at (4, 0) {};
   1759           \node[above = 0cm of h1] {Wallet};
   1760           \node[above = 0cm of h2] {Exchange};
   1761 
   1762           \path[->, color = MidnightBlue, very thick, >=stealth]
   1763             (-5, 4.5) edge
   1764             node[rotate=90, text = Black, yshift = .3cm] {Time}
   1765             (-5, -4.5);
   1766           \path[okmsg, dashed]
   1767              ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge
   1768              node[msglabel] {SEPA(RK,A)}
   1769              ($(h2.west)+(0, 3.5)+(0, -1.0)$);
   1770           \path[okmsg]
   1771             ($(h1.east)+(0, -1.0)$) edge
   1772             node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$}
   1773             ($(h2.west)+(0, -1.5)$);
   1774           \path[okmsg]
   1775             ($(h2.west)+(0, -2.0)$) edge
   1776             node[msglabel] {200 OK: $S_{DK}(B_b(C))$)}
   1777             ($(h1.east)+(0, -2.5)$);
   1778           \path[rstmsg]
   1779             ($(h2.west)+(0, -3.5)$) edge
   1780             node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)}
   1781             ($(h1.east)+(0, -4)$);
   1782           \node at (5.3, 0) {};
   1783         \end{tikzpicture}
   1784       \end{center}
   1785       Result: $\langle c, S_{DK}(C) \rangle$.
   1786     \end{minipage}
   1787     \hspace{0.5cm}
   1788     \begin{minipage}[b]{0.45\linewidth}
   1789       \tiny
   1790       \begin{description}
   1791       \item[$A$] Some amount, $A \ge A_{DK}$
   1792       \item[$RK$] Reserve key
   1793       \item[$DK$] Denomination key
   1794       \item[$b$] Blinding factor
   1795       \item[$B_b()$] RSA-FDH blinding % DK supressed
   1796       \item[$C$] Coin public key $C := cG$
   1797       \item[$S_{RK}()$] EdDSA signature
   1798       \item[$S_{DK}()$] RSA-FDH signature
   1799       \end{description}
   1800     \end{minipage}
   1801   \end{figure}
   1802 \end{frame}
   1803 
   1804 
   1805 \begin{frame}[t]{Taler {\tt /deposit}}
   1806 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$.
   1807 \bigskip
   1808   \begin{figure}[th]
   1809     \begin{minipage}[b]{0.45\linewidth}
   1810       \begin{center}
   1811         \begin{tikzpicture}[scale = 0.4,
   1812             transform shape,
   1813             msglabel/.style    = { text = Black, yshift = .3cm,
   1814                                    sloped, midway },
   1815             okmsg/.style       = { ->, color = MidnightBlue, thick,
   1816                                    >=stealth },
   1817             rstmsg/.style      = { ->, color = BrickRed, thick,
   1818                                    >=stealth }
   1819           ]
   1820           \node[draw = MidnightBlue,
   1821             fill = CornflowerBlue,
   1822             minimum width = .3cm,
   1823             minimum height = 10cm
   1824           ] (h1) at (-4, 0) {};
   1825           \node[draw = MidnightBlue,
   1826             fill = CornflowerBlue,
   1827             minimum width = .3cm,
   1828             minimum height = 10cm
   1829           ] (h2) at (4, 0) {};
   1830           \node[above = 0cm of h1] {Merchant};
   1831           \node[above = 0cm of h2] {Exchange};
   1832 
   1833           \path[->, color = MidnightBlue, very thick, >=stealth]
   1834             (-5, 4.5) edge
   1835             node[rotate=90, text = Black, yshift = .3cm] {Time}
   1836             (-5, -4.5);
   1837           \path[->, color = MidnightBlue, thick, >=stealth]
   1838             ($(h1.east)+(0,3)$) edge
   1839             node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$}
   1840             ($(h2.west)+(0,2)$);
   1841           \path[->, color = MidnightBlue, thick, >=stealth]
   1842             ($(h2.west)+(0,0.5)$) edge
   1843             node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$}
   1844             ($(h1.east)+(0,-0.5)$);
   1845           \path[rstmsg]
   1846             ($(h2.west)+(0, -2.5)$) edge
   1847             node[msglabel] {409 CONFLICT: $S_{c}(D')$}
   1848             ($(h1.east)+(0, -3.5)$);
   1849           \node at (5.3, 0) {};
   1850         \end{tikzpicture}
   1851       \end{center}
   1852     \end{minipage}
   1853     \hspace{0.5cm}
   1854     \begin{minipage}[b]{0.45\linewidth}
   1855       \tiny
   1856       \begin{description}
   1857       \item[$DK$] Denomination key
   1858       \item[$S_{DK}()$] RSA-FDH signature using $DK$
   1859       \item[$c$] Private coin key, $C := cG$.
   1860       \item[$S_{C}()$] EdDSA signature using $c$
   1861       \item[$D$] Deposit details
   1862       \item[$SK$] Exchange's signing key
   1863       \item[$S_{SK}()$] EdDSA signature using $SK$
   1864       \item[$D'$] Conficting deposit details $D' \not= D$
   1865       \end{description}
   1866     \end{minipage}
   1867   \end{figure}
   1868 \end{frame}
   1869 
   1870 
   1871 \begin{frame}{Taler {\tt /refresh/melt}}
   1872   \begin{figure}[th]
   1873     \begin{minipage}[b]{0.45\linewidth}
   1874       \begin{center}
   1875 	\begin{tikzpicture}[scale = 0.4,
   1876             transform shape,
   1877             msglabel/.style    = { text = Black, yshift = .3cm,
   1878                                    sloped, midway },
   1879             okmsg/.style       = { ->, color = MidnightBlue, thick,
   1880                                    >=stealth },
   1881             rstmsg/.style      = { ->, color = BrickRed, thick,
   1882                                    >=stealth }
   1883 	  ]
   1884 	  \node[draw = MidnightBlue,
   1885 	    fill = CornflowerBlue,
   1886 	    minimum width = .3cm,
   1887 	    minimum height = 10cm
   1888 	  ] (h1) at (-4, 0) {};
   1889 	  \node[draw = MidnightBlue,
   1890 	    fill = CornflowerBlue,
   1891 	    minimum width = .3cm,
   1892 	    minimum height = 10cm
   1893 	  ] (h2) at (4, 0) {};
   1894 	  \node[above = 0cm of h1] {Customer};
   1895 	  \node[above = 0cm of h2] {Exchange};
   1896 
   1897 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   1898 	    (-5, 4.5) edge
   1899 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   1900 	    (-5, -4.5);
   1901 	  \path[->, color = MidnightBlue, thick, >=stealth]
   1902 	    ($(h1.east)+(0,3)$) edge
   1903 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$}
   1904 	    ($(h2.west)+(0,2)$);
   1905 	  \path[->, color = MidnightBlue, thick, >=stealth]
   1906 	    ($(h2.west)+(0,0.5)$) edge
   1907 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$}
   1908 	    ($(h1.east)+(0,-0.5)$);
   1909 	  \path[rstmsg]
   1910 	    ($(h2.west)+(0, -2.5)$) edge
   1911 	    node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$}
   1912 	    ($(h1.east)+(0, -3.5)$);
   1913 	  \node at (5.3, 0) {};
   1914 	\end{tikzpicture}
   1915       \end{center}
   1916     \end{minipage}
   1917     \hspace{0.5cm}
   1918     \begin{minipage}[b]{0.45\linewidth}
   1919       \tiny
   1920       \begin{description}
   1921       \item[$\kappa$] System-wide security parameter, usually 3.
   1922       \\ \smallskip
   1923       \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\
   1924       $D + \sum_i A_{DK^{(i)}} < A_{DK}$
   1925       \item[$t_j$] Random scalar for $j<\kappa$
   1926       \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$
   1927       \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE
   1928       \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor
   1929       \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys
   1930       \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys
   1931       \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\
   1932          $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$
   1933       \\ \smallskip
   1934       \item[$\gamma$] Random value in $[0,\kappa)$
   1935 %      \\ \smallskip
   1936 %      \item[$X$] Deposit or refresh
   1937       \end{description}
   1938     \end{minipage}
   1939   \end{figure}
   1940 \end{frame}
   1941 
   1942 
   1943 \begin{frame}{Taler {\tt /refresh/reveal}}
   1944   \begin{figure}[th]
   1945     \begin{minipage}[b]{0.45\linewidth}
   1946       \begin{center}
   1947 	\begin{tikzpicture}[scale = 0.4,
   1948             transform shape,
   1949             msglabel/.style    = { text = Black, yshift = .3cm,
   1950                                    sloped, midway },
   1951             okmsg/.style       = { ->, color = MidnightBlue, thick,
   1952                                    >=stealth },
   1953             rstmsg/.style      = { ->, color = BrickRed, thick,
   1954                                    >=stealth }
   1955 	  ]
   1956 	  \node[draw = MidnightBlue,
   1957 	    fill = CornflowerBlue,
   1958 	    minimum width = .3cm,
   1959 	    minimum height = 10cm
   1960 	  ] (h1) at (-4, 0) {};
   1961 	  \node[draw = MidnightBlue,
   1962 	    fill = CornflowerBlue,
   1963 	    minimum width = .3cm,
   1964 	    minimum height = 10cm
   1965 	  ] (h2) at (4, 0) {};
   1966 	  \node[above = 0cm of h1] {Customer};
   1967 	  \node[above = 0cm of h2] {Exchange};
   1968 
   1969 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   1970 	    (-5, 4.5) edge
   1971 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   1972 	    (-5, -4.5);
   1973 	  \path[->, color = MidnightBlue, thick, >=stealth]
   1974 	    ($(h1.east)+(0,3)$) edge
   1975 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$}
   1976 	    ($(h2.west)+(0,2)$);
   1977 	  \path[->, color = MidnightBlue, thick, >=stealth]
   1978 	    ($(h2.west)+(0,0.5)$) edge
   1979 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$}
   1980 	    ($(h1.east)+(0,-0.5)$);
   1981 	  \path[rstmsg]
   1982 	    ($(h2.west)+(0, -2.5)$) edge
   1983 	    node[msglabel] {400 BAD REQUEST: $Z$}
   1984 	    ($(h1.east)+(0, -3.5)$);
   1985 	  \node at (5.3, 0) {};
   1986 	\end{tikzpicture}
   1987       \end{center}
   1988     \end{minipage}
   1989     \hspace{0.5cm}
   1990     \begin{minipage}[b]{0.45\linewidth}
   1991       \tiny
   1992       \begin{description}
   1993       \item[$\cal DK$] $:= [DK^{(i)}]_i$
   1994       \item[$t_j$] .. \\ \smallskip
   1995 
   1996       \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip
   1997 
   1998       \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$
   1999       \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$
   2000       \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$
   2001       \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$
   2002 
   2003       \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$
   2004       \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$
   2005       \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip
   2006 
   2007       \item[$Z$] Cut-and-choose missmatch information
   2008       \end{description}
   2009     \end{minipage}
   2010   \end{figure}
   2011 \end{frame}
   2012 
   2013 
   2014 \begin{frame}{Taler {\tt /refresh/link}}
   2015   \begin{figure}[th]
   2016     \begin{minipage}[b]{0.45\linewidth}
   2017       \begin{center}
   2018 	\begin{tikzpicture}[scale = 0.4,
   2019             transform shape,
   2020             msglabel/.style    = { text = Black, yshift = .3cm,
   2021                                    sloped, midway },
   2022             okmsg/.style       = { ->, color = MidnightBlue, thick,
   2023                                    >=stealth },
   2024             rstmsg/.style      = { ->, color = BrickRed, thick,
   2025                                    >=stealth }
   2026 	  ]
   2027 	  \node[draw = MidnightBlue,
   2028 	    fill = CornflowerBlue,
   2029 	    minimum width = .3cm,
   2030 	    minimum height = 10cm
   2031 	  ] (h1) at (-4, 0) {};
   2032 	  \node[draw = MidnightBlue,
   2033 	    fill = CornflowerBlue,
   2034 	    minimum width = .3cm,
   2035 	    minimum height = 10cm
   2036 	  ] (h2) at (4, 0) {};
   2037 	  \node[above = 0cm of h1] {Customer};
   2038 	  \node[above = 0cm of h2] {Exchagne};
   2039 
   2040 	  \path[->, color = MidnightBlue, very thick, >=stealth]
   2041 	    (-5, 4.5) edge
   2042 	    node[rotate=90, text = Black, yshift = .3cm] {Time}
   2043 	    (-5, -4.5);
   2044 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2045 	    ($(h1.east)+(0,3)$) edge
   2046 	    node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$}
   2047 	    ($(h2.west)+(0,2)$);
   2048 	  \path[->, color = MidnightBlue, thick, >=stealth]
   2049 	    ($(h2.west)+(0,0.5)$) edge
   2050 	    node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$}
   2051 	    ($(h1.east)+(0,-0.5)$);
   2052 	  \path[rstmsg]
   2053 	    ($(h2.west)+(0, -2.5)$) edge
   2054 	    node[msglabel] {404 NOT FOUND}
   2055 	    ($(h1.east)+(0, -3.5)$);
   2056 	  \node at (5.3, 0) {};
   2057 	\end{tikzpicture}
   2058       \end{center}
   2059     \end{minipage}
   2060     \hspace{0.5cm}
   2061     \begin{minipage}[b]{0.45\linewidth}
   2062       \tiny
   2063       \begin{description}
   2064       \item[$C$] Old coind public key \\ \smallskip
   2065       \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$
   2066       \end{description}
   2067     \end{minipage}
   2068   \end{figure}
   2069 \end{frame}
   2070 
   2071 
   2072 \begin{frame}{Operational security}
   2073   \begin{center}
   2074     \resizebox{\textwidth}{!}{
   2075 \begin{tikzpicture}[
   2076   font=\sffamily,
   2077   every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm},
   2078   source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm},
   2079   process/.style={draw,thick,circle,fill=blue!20},
   2080   sink/.style={source,fill=green!20},
   2081   datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm},
   2082   dots/.style={gray,scale=2},
   2083   to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize},
   2084   every node/.style={align=center}]
   2085 
   2086   % Position the nodes using a matrix layout
   2087   \matrix{
   2088     \node[source] (wallet) {Wallet};
   2089       \& \node[process] (browser) {Browser};
   2090       \& \node[process] (shop) {Web shop};
   2091       \& \node[sink] (backend) {Taler backend}; \\
   2092   };
   2093 
   2094   % Draw the arrows between the nodes and label them.
   2095   \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract}
   2096       node[midway,below] {(signal)} (wallet);
   2097   \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)}
   2098       node[midway,below] {(5) signed coins} (browser);
   2099   \draw[<->] (browser) -- node[midway,above] {(3,6) custom}
   2100       node[midway,below] {(HTTPS)} (shop);
   2101   \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)}
   2102       node[midway,below] {(1) proposed contract / (7) signed coins} (backend);
   2103   \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation}
   2104       node[midway,below] {(HTTPS)} (shop);
   2105 \end{tikzpicture}
   2106 }
   2107 \end{center}
   2108 \end{frame}