2021-isss.tex (41581B)
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]{Christian Grothoff} 107 \date{17.11.2021} 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 \vfill 123 \end{center} 124 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) 125 {\Large {\bf \href{https://taler.net/}{taler.net}} \\ 126 % \href{https://twitter.com/taler}{taler@twitter} \\ 127 \href{https://taler-systems.com/}{taler-systems.com}} 128 \end{textblock*} 129 130 % Substitute based on who is giving the talk! 131 \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords) 132 {\hfill {\bf Christian Grothoff} \\ 133 \hfill grothoff@taler.net } 134 \end{textblock*} 135 136 \end{frame} 137 138 139 \section{What is Taler?} 140 \begin{frame}{What is Taler?} 141 \framesubtitle{https://taler.net/en/} 142 \begin{center} 143 Taler is an electronic instant payment system. 144 \end{center} 145 \begin{itemize} 146 \item Uses electronic coins stored in {\bf wallets} on customer's device 147 \item Like {\bf cash} 148 \item Pay in {\bf existing currencies} (i.e. EUR, USD, BTC), \\ 149 or use it to create new {\bf regional currencies} 150 \end{itemize} 151 \vfill 152 \pause 153 \noindent 154 However, Taler is 155 \begin{itemize} 156 \item \emph{not} a currency 157 \item \emph{not} a long-term store of value 158 \item \emph{not} a network or instance of a system 159 \item \emph{not} decentralized 160 \item \emph{not} based on proof-of-work or proof-of-stake 161 \item \emph{not} a speculative asset / ``get-rich-quick scheme'' 162 \end{itemize} 163 \end{frame} 164 165 166 \begin{frame}{Design principles} 167 \framesubtitle{https://taler.net/en/principles.html} 168 GNU Taler must ... 169 \begin{enumerate} 170 \item {... be implemented as {\bf free software}.} 171 \item {... protect the {\bf privacy of buyers}.} 172 \item {... must enable the state to {\bf tax income} and crack down on 173 illegal business activities.} 174 \item {... prevent payment fraud.} 175 \item {... only {\bf disclose the minimal amount of information 176 necessary}.} 177 \item {... be usable.} 178 \item {... be efficient.} 179 \item {... avoid single points of failure.} 180 \item {... foster {\bf competition}.} 181 \end{enumerate} 182 \end{frame} 183 184 185 \begin{frame} 186 \frametitle{Taler Overview} 187 \framesubtitle{\url{https://taler.net/papers/chaum-blind-signatures.pdf}} 188 \begin{center} 189 \begin{tikzpicture} 190 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 191 \node (origin) at (0,0) {}; 192 \node (exchange) [def,above=of origin,draw]{Exchange}; 193 \node (customer) [def, draw, below left=of origin] {Customer}; 194 \node (merchant) [def, draw, below right=of origin] {Merchant}; 195 \node (auditor) [def, draw, above right=of origin]{Auditor}; 196 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 197 198 \tikzstyle{C} = [color=black, line width=1pt] 199 200 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 201 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 202 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 203 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 204 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 205 206 \end{tikzpicture} 207 \end{center} 208 \end{frame} 209 210 211 \begin{frame}{The Taler Software Ecosystem} 212 \framesubtitle{\url{https://taler.net/en/docs.html}} 213 Taler is based on modular components that work together to provide a 214 complete payment system: 215 \vfill 216 \begin{itemize} 217 \item {\bf Exchange:} Service provider for digital cash 218 \begin{itemize} 219 \item Core exchange software (cryptography, database) 220 \item Air-gapped key management, real-time {\bf auditing} 221 \item LibEuFin: Modular integration with banking systems 222 \end{itemize} 223 \item {\bf Merchant:} Integration service for existing businesses 224 \begin{itemize} 225 \item Core merchant backend software (cryptography, database) 226 \item Back-office interface for staff 227 \item Frontend integration (E-commerce, Point-of-sale) 228 \end{itemize} 229 \item {\bf Wallet:} Consumer-controlled applications for e-cash 230 \begin{itemize} 231 \item Multi-platform wallet software (for browsers \& mobile phones) 232 \item Wallet backup storage providers 233 \item {\bf Anastasis}: Recovery of lost wallets based on secret splitting 234 \end{itemize} 235 \end{itemize} 236 \end{frame} 237 238 239 \begin{frame} 240 % TODO: replace with simplified NEW architecture picture! 241 \frametitle{Architecture of Taler} 242 \begin{center} 243 \includegraphics[width=1\textwidth]{operations.png} 244 \end{center} 245 \end{frame} 246 247 248 \begin{frame}{Usability of Taler} 249 \framesubtitle{https://demo.taler.net/} 250 \vfill 251 \begin{enumerate} 252 \item Install browser extension. 253 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 254 \item Visit the {\tt shop.demo.taler.net} to spend coins. 255 \end{enumerate} 256 \vfill 257 \end{frame} 258 259 260 \begin{frame}[c]{Example: The Taler Snack Machine\footnote{by M. Boss and D. Hofer}} 261 \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} 262 \vfill 263 \begin{center} 264 \includegraphics[width=1\textwidth]{design} 265 \end{center} 266 \end{frame} 267 \begin{frame}[c]{Example: The Taler Snack Machine\footnote{by M. Boss and D. Hofer}} 268 \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} 269 \vfill 270 \begin{center} 271 \includegraphics[width=1\textwidth]{taler-in-use.png} 272 \end{center} 273 \end{frame} 274 275 276 \begin{frame}{How does it work?} 277 \framesubtitle{\url{https://taler.net/papers/thesis-dold-phd-2019.pdf}} 278 We use a few ancient constructions: 279 \begin{itemize} 280 \item Cryptographic hash function (1989) 281 \item Blind signature (1983) 282 \item Schnorr signature (1989) 283 \item Diffie-Hellman key exchange (1976) 284 \item Cut-and-choose zero-knowledge proof (1985) 285 \end{itemize} 286 But of course we use modern instantiations. 287 \end{frame} 288 289 290 \begin{frame}{Definition: Taxability} 291 We say Taler is taxable because: 292 \begin{itemize} 293 \item Merchant's income is visible from deposits. 294 \item Hash of contract is part of deposit data. 295 \item State can trace income and enforce taxation. 296 \end{itemize}\pause 297 Limitations: 298 \begin{itemize} 299 \item withdraw loophole 300 \item {\em sharing} coins among family and friends 301 \end{itemize} 302 \end{frame} 303 304 305 \begin{frame}{Exchange setup: Create a denomination key (RSA)} 306 \begin{minipage}{6cm} 307 \begin{enumerate} 308 \item Pick random primes $p,q$. 309 \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$ 310 \item Pick small $e < \phi(n)$ such that 311 $d := e^{-1} \mod \phi(n)$ exists. 312 \item Publish public key $(e,n)$. 313 \end{enumerate} 314 \end{minipage} 315 \begin{minipage}{6cm} 316 \begin{tikzpicture} 317 \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em]; 318 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 319 \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$}; 320 \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}}; 321 \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 322 323 \tikzstyle{C} = [color=black, line width=1pt] 324 325 \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {}; 326 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 327 \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {}; 328 \end{tikzpicture} 329 % \includegraphics[width=0.4\textwidth]{seal.pdf} 330 \end{minipage} 331 \end{frame} 332 333 334 \begin{frame}{Merchant: Create a signing key (EdDSA)} 335 \begin{minipage}{6cm} 336 \begin{itemize} 337 \item pick random $m \mod o$ as private key 338 \item $M = mG$ public key 339 \end{itemize} 340 \end{minipage} 341 \begin{minipage}{6cm} 342 \begin{tikzpicture} 343 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 344 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 345 \node (m) [draw=none, below = of origin] at (0,0) {$m$}; 346 \node (seal) [draw=none, below=of m]{M}; 347 \tikzstyle{C} = [color=black, line width=1pt] 348 349 \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {}; 350 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 351 \end{tikzpicture} 352 \end{minipage} 353 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 354 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 355 \end{frame} 356 357 358 \begin{frame}{Customer: Create a planchet (EdDSA)} 359 \begin{minipage}{8cm} 360 \begin{itemize} 361 \item Pick random $c \mod o$ private key 362 \item $C = cG$ public key 363 \end{itemize} 364 \end{minipage} 365 \begin{minipage}{4cm} 366 \begin{tikzpicture} 367 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 368 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 369 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 370 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 371 \tikzstyle{C} = [color=black, line width=1pt] 372 373 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 374 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 375 \end{tikzpicture} 376 \end{minipage} 377 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 378 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 379 \end{frame} 380 381 382 \begin{frame}{Customer: Blind planchet (RSA)} 383 \begin{minipage}{6cm} 384 \begin{enumerate} 385 \item Obtain public key $(e,n)$ 386 \item Compute $f := FDH(C)$, $f < n$. 387 \item Pick blinding factor $b \in \mathbb Z_n$ 388 \item Transmit $f' := f b^e \mod n$ 389 \end{enumerate} 390 \end{minipage} 391 \begin{minipage}{6cm} 392 \begin{tikzpicture} 393 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 394 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 395 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 396 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 397 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 398 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 399 \tikzstyle{C} = [color=black, line width=1pt] 400 401 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 402 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 403 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 404 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 405 \end{tikzpicture} 406 \end{minipage} 407 \end{frame} 408 409 410 \begin{frame}{Exchange: Blind sign (RSA)} 411 \begin{minipage}{6cm} 412 \begin{enumerate} 413 \item Receive $f'$. 414 \item Compute $s' := f'^d \mod n$. 415 \item Send signature $s'$. 416 \end{enumerate} 417 \end{minipage} 418 \begin{minipage}{6cm} 419 \begin{tikzpicture} 420 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 421 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 422 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 423 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 424 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 425 \tikzstyle{C} = [color=black, line width=1pt] 426 427 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 428 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 429 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 430 \end{tikzpicture} 431 \end{minipage} 432 \end{frame} 433 434 435 \begin{frame}{Customer: Unblind coin (RSA)} 436 \begin{minipage}{6cm} 437 \begin{enumerate} 438 \item Receive $s'$. 439 \item Compute $s := s' b^{-1} \mod n$ % \\ 440 % ($(f')^d = (f b^e)^d = f^d b$). 441 \end{enumerate} 442 \end{minipage} 443 \begin{minipage}{6cm} 444 \begin{tikzpicture} 445 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 446 \node (b) [def, draw=none] at (0,0) {$b$}; 447 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 448 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 449 \tikzstyle{C} = [color=black, line width=1pt] 450 451 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 452 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 453 \end{tikzpicture} 454 \end{minipage} 455 \end{frame} 456 457 458 \begin{frame}{Customer: Build shopping cart} 459 \begin{center} 460 \begin{tikzpicture} 461 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 462 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}}; 463 \node (cart) [draw=none, below=of m]{\includegraphics[width=0.2\textwidth]{cart.pdf}}; 464 \node (merchant) [node distance=4em and 0.5em, draw, below =of cart]{Merchant}; 465 \tikzstyle{C} = [color=black, line width=1pt]; 466 \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {}; 467 \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}}; 468 \end{tikzpicture} 469 \end{center} 470 \end{frame} 471 472 473 \begin{frame}{Merchant: Propose contract (EdDSA)} 474 \begin{minipage}{6cm} 475 \begin{enumerate} 476 \item Complete proposal $D$. 477 \item Send $D$, $EdDSA_m(D)$ 478 \end{enumerate} 479 \end{minipage} 480 \begin{minipage}{6cm} 481 \begin{tikzpicture} 482 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 483 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 484 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}}; 485 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 486 \tikzstyle{C} = [color=black, line width=1pt]; 487 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 488 \tikzstyle{C} = [color=black, line width=1pt] 489 490 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 491 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 492 \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}}; 493 \end{tikzpicture} 494 \end{minipage} 495 \end{frame} 496 497 498 \begin{frame}{Customer: Spend coin (EdDSA)} 499 \begin{minipage}{6cm} 500 \begin{enumerate} 501 \item Receive proposal $D$, $EdDSA_m(D)$. 502 \item Send $s$, $C$, $EdDSA_c(D)$ 503 \end{enumerate} 504 \end{minipage} 505 \begin{minipage}{6cm} 506 \begin{tikzpicture} 507 \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em]; 508 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 509 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 510 \node (c) [def, draw=none, above=of contract] {$c$}; 511 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 512 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 513 \tikzstyle{C} = [color=black, line width=1pt] 514 515 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 516 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 517 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 518 \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}}; 519 \end{tikzpicture} 520 \end{minipage} 521 \end{frame} 522 523 524 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 525 \framesubtitle{\url{https://taler.net/papers/euro-bearer-online-2021.pdf}} 526 \begin{minipage}{6cm} 527 \begin{equation*} 528 s^e \stackrel{?}{\equiv} FDH(C) \mod n 529 \end{equation*} 530 \end{minipage} 531 \begin{minipage}{6cm} 532 \begin{minipage}{0.2\textwidth} 533 \includegraphics[width=\textwidth]{coin.pdf} 534 \end{minipage} 535 $\stackrel{?}{\Leftrightarrow}$ 536 \begin{minipage}{0.2\textwidth} 537 \includegraphics[width=\textwidth]{seal.pdf} 538 \end{minipage} 539 \end{minipage} 540 \vfill 541 The exchange does not only verify the signature, but also 542 checks that the coin was not double-spent. 543 \vfill 544 \pause 545 \begin{center} 546 {\bf Taler is an online payment system.} 547 \end{center} 548 \vfill 549 \end{frame} 550 551 552 \begin{frame}{Giving change} 553 It would be inefficient to pay EUR 100 with 1 cent coins! 554 \begin{itemize} 555 \item Denomination key represents value of a coin. 556 \item Exchange may offer various denominations for coins. 557 \item Wallet may not have exact change! 558 \item Usability requires ability to pay given sufficient total funds. 559 \end{itemize}\pause 560 Key goals: 561 \begin{itemize} 562 \item maintain unlinkability 563 \item maintain taxability of transactions 564 \end{itemize}\pause 565 Method: 566 \begin{itemize} 567 \item Contract can specify to only pay {\em partial value} of a coin. 568 \item Exchange allows wallet to obtain {\em unlinkable change} 569 for remaining coin value. 570 \end{itemize} 571 \end{frame} 572 573 574 \begin{frame}{Diffie-Hellman (ECDH)} 575 \begin{minipage}{8cm} 576 \begin{enumerate} 577 \item Create private keys $c,t \mod o$ 578 \item Define $C = cG$ 579 \item Define $T = tG$ 580 \item Compute DH \\ $cT = c(tG) = t(cG) = tC$ 581 \end{enumerate} 582 \end{minipage} 583 \begin{minipage}{6cm} 584 \begin{tikzpicture} 585 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 586 \node (t) [def, draw=none] at (0,0) {$t$}; 587 \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}}; 588 \node (c) [def, draw=none, above left= of ct] {$c$}; 589 \tikzstyle{C} = [color=black, line width=1pt] 590 591 \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {}; 592 \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {}; 593 \end{tikzpicture} 594 \end{minipage} 595 \end{frame} 596 597 598 \begin{frame}{Strawman solution} 599 \begin{minipage}{8cm} 600 Given partially spent private coin key $c_{old}$: 601 \begin{enumerate} 602 % \item Let $C_{old} := c_{old}G$ (as before) 603 \item Pick random $c_{new} \mod o$ private key 604 \item $C_{new} = c_{new}G$ public key 605 \item Pick random $b_{new}$ 606 \item Compute $f_{new} := FDH(C_{new})$, $m < n$. 607 \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$ 608 \end{enumerate} 609 ... and sign request for change with $c_{old}$. 610 \end{minipage} 611 \begin{minipage}{4cm} 612 \begin{tikzpicture} 613 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 614 \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 615 \node (planchet) [def, draw=none, above left= of blinded] {\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 616 \node (cnew) [def, draw=none, above= of planchet] {$c_{new}$}; 617 \node (bnew) [def, draw=none, above right= of blinded] {$b_{new}$}; 618 \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 619 \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 620 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 621 622 \tikzstyle{C} = [color=black, line width=1pt] 623 624 \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {}; 625 \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {}; 626 \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {}; 627 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 628 \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {}; 629 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 630 \end{tikzpicture} 631 \end{minipage} 632 \pause 633 \vfill 634 {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!} 635 \end{frame} 636 637 638 \begin{frame}{Customer: Transfer key setup (ECDH)} 639 \begin{minipage}{8cm} 640 Given partially spent private coin key $c_{old}$: 641 \begin{enumerate} 642 \item Let $C_{old} := c_{old}G$ (as before) 643 \item Create random private transfer key $t \mod o$ 644 \item Compute $T := tG$ 645 \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$ 646 \item Derive $c_{new}$ and $b_{new}$ from $X$ 647 \item Compute $C_{new} := c_{new}G$ 648 \item Compute $f_{new} := FDH(C_{new})$ 649 \item Transmit $f_{new}' := f_{new} b_{new}^e$ 650 \end{enumerate} 651 \end{minipage} 652 \begin{minipage}{4cm} 653 \begin{tikzpicture} 654 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 655 \node (t) [def, draw=none] at (0,0) {$t$}; 656 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 657 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 658 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 659 \node (cp) [def, draw=none, below left= of dh] {$c_{new}$}; 660 \node (bp) [def, draw=none, below right= of dh] {$b_{new}$}; 661 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 662 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 663 664 \tikzstyle{C} = [color=black, line width=1pt] 665 666 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 667 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 668 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 669 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 670 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 671 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 672 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 673 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 674 \end{tikzpicture} 675 \end{minipage} 676 \end{frame} 677 678 679 \begin{frame}{Cut-and-Choose} 680 \begin{minipage}{4cm} 681 \begin{tikzpicture} 682 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 683 \node (t) [def, draw=none] at (0,0) {$t_1$}; 684 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 685 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 686 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 687 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 688 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 689 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 690 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 691 692 \tikzstyle{C} = [color=black, line width=1pt] 693 694 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 695 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 696 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 697 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 698 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 699 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 700 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 701 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 702 \end{tikzpicture} 703 \end{minipage} 704 \begin{minipage}{4cm} 705 \begin{tikzpicture} 706 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 707 \node (t) [def, draw=none] at (0,0) {$t_2$}; 708 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 709 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 710 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 711 \node (cp) [def, draw=none, below left= of dh] {$c_{new,2}$}; 712 \node (bp) [def, draw=none, below right= of dh] {$b_{new,2}$}; 713 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 714 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 715 716 \tikzstyle{C} = [color=black, line width=1pt] 717 718 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 719 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 720 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 721 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 722 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 723 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 724 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 725 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 726 \end{tikzpicture} 727 \end{minipage} 728 \begin{minipage}{4cm} 729 \begin{tikzpicture} 730 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 731 \node (t) [def, draw=none] at (0,0) {$t_3$}; 732 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 733 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 734 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 735 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 736 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 737 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 738 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 739 740 \tikzstyle{C} = [color=black, line width=1pt] 741 742 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 743 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 744 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 745 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 746 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 747 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 748 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 749 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 750 \end{tikzpicture} 751 \end{minipage} 752 \end{frame} 753 754 755 \begin{frame}{Exchange: Choose!} 756 \begin{center} 757 \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer. 758 \end{center} 759 \end{frame} 760 761 762 \begin{frame}{Customer: Reveal} 763 \begin{enumerate} 764 \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange 765 \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange 766 \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange 767 \end{enumerate} 768 \end{frame} 769 770 771 \begin{frame}{Exchange: Verify ($\gamma = 2$)} 772 \begin{minipage}{4cm} 773 \begin{tikzpicture} 774 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 775 \node (h) [def, draw=none] at (0,0) {$t_1$}; 776 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 777 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 778 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 779 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 780 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 781 782 \tikzstyle{C} = [color=black, line width=1pt] 783 784 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 785 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 786 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 787 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 788 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 789 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 790 \end{tikzpicture} 791 \end{minipage} 792 \begin{minipage}{4cm} 793 \ 794 \end{minipage} 795 \begin{minipage}{4cm} 796 \begin{tikzpicture} 797 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 798 \node (h) [def, draw=none] at (0,0) {$t_3$}; 799 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 800 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 801 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 802 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 803 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 804 805 \tikzstyle{C} = [color=black, line width=1pt] 806 807 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 808 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 809 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 810 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 811 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 812 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 813 \end{tikzpicture} 814 \end{minipage} 815 \end{frame} 816 817 818 \begin{frame}{Exchange: Blind sign change (RSA)} 819 \begin{minipage}{6cm} 820 \begin{enumerate} 821 \item Take $f_{new,\gamma}'$. 822 \item Compute $s' := f_{new,\gamma}'^d \mod n$. 823 \item Send signature $s'$. 824 \end{enumerate} 825 \end{minipage} 826 \begin{minipage}{6cm} 827 \begin{tikzpicture} 828 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 829 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 830 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 831 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 832 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 833 \tikzstyle{C} = [color=black, line width=1pt] 834 835 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 836 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 837 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 838 \end{tikzpicture} 839 \end{minipage} 840 \end{frame} 841 842 843 \begin{frame}{Customer: Unblind change (RSA)} 844 \begin{minipage}{6cm} 845 \begin{enumerate} 846 \item Receive $s'$. 847 \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$. 848 \end{enumerate} 849 \end{minipage} 850 \begin{minipage}{6cm} 851 \begin{tikzpicture} 852 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 853 \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$}; 854 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 855 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 856 \tikzstyle{C} = [color=black, line width=1pt] 857 858 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 859 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 860 \end{tikzpicture} 861 \end{minipage} 862 \end{frame} 863 864 865 \begin{frame}{Exchange: Allow linking change} 866 \begin{minipage}{7cm} 867 \begin{center} 868 Given $C_{old}$ 869 870 \vspace{1cm} 871 872 return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$. 873 \end{center} 874 \end{minipage} 875 \begin{minipage}{5cm} 876 \begin{tikzpicture} 877 \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em]; 878 \node (co) [def, draw=none] at (0,0) {$C_{old}$}; 879 \node (T) [def, draw=none, below left=of co]{$T_\gamma$}; 880 \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 881 \node (customer) [def, draw, below right=of T] {Customer}; 882 883 \tikzstyle{C} = [color=black, line width=1pt] 884 885 \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {}; 886 \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {}; 887 \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link}; 888 \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link}; 889 \end{tikzpicture} 890 \end{minipage} 891 \end{frame} 892 893 894 \begin{frame}{Customer: Link (threat!)} 895 \begin{minipage}{6.3cm} 896 \begin{enumerate} 897 \item Have $c_{old}$. 898 \item Obtain $T_\gamma$, $s$ from exchange 899 \item Compute $X_\gamma = c_{old}T_\gamma$ 900 \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$ 901 \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$ 902 \end{enumerate} 903 904 \end{minipage} 905 \begin{minipage}{5.7cm} 906 \begin{tikzpicture} 907 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 908 \node (T) [def, draw=none] at (0,0) {$T_\gamma$}; 909 \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange}; 910 \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 911 \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 912 \node (bp) [def, draw=none, below left= of dh] {$b_{new,\gamma}$}; 913 \node (co) [def, draw=none, above right= of dh] {$c_{old}$}; 914 \node (cp) [def, draw=none, below= of dh] {$c_{new,\gamma}$}; 915 \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 916 \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}}; 917 918 \tikzstyle{C} = [color=black, line width=1pt] 919 920 \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {}; 921 \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {}; 922 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 923 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 924 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 925 \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {}; 926 \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link}; 927 \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link}; 928 \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {}; 929 \end{tikzpicture} 930 \end{minipage} 931 \end{frame} 932 933 934 \begin{frame}{Refresh protocol summary} 935 \begin{itemize} 936 \item Customer asks exchange to convert old coin to new coin 937 \item Protocol ensures new coins can be recovered from old coin 938 \item[$\Rightarrow$] New coins are owned by the same entity! 939 \end{itemize} 940 Thus, the refresh protocol allows: 941 \begin{itemize} 942 \item To give unlinkable change. 943 \item To give refunds to an anonymous customer. 944 \item To expire old keys and migrate coins to new ones. 945 \item To handle protocol aborts. 946 \end{itemize} 947 \noindent 948 \begin{center} 949 \bf 950 Transactions via refresh are equivalent to {\em sharing} a wallet. 951 \end{center} 952 \end{frame} 953 954 955 \begin{frame}{Taler: Project Status} 956 \framesubtitle{\url{https://git.taler.net/}} 957 \begin{itemize} 958 \item Cryptographic protocols and core exchange component are stable 959 \item Internal alpha deployment with a commercial bank in progress 960 \item Discussions with various central banks 961 \item R\&D focus: 962 \begin{itemize} 963 \item P2P payments with KYC 964 \item Privacy-preserving age restrictions on coins 965 \item Programmable money 966 \item UX for financial inclusion 967 \end{itemize} 968 \end{itemize} 969 \end{frame} 970 971 972 \begin{frame}{How to support?} 973 \begin{description} 974 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}, \\ 975 \url{irc://irc.freenode.net/\#taler} 976 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 977 \item[Teach:] \url{https://docs.taler.net/}, \url{https://git.taler.net/marketing.git} 978 \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net} 979 \item[Integrate:] \url{https://docs.taler.net/} 980 \item[Donate:] \url{https://gnunet.org/ev} 981 \item[Invest:] \url{https://taler-systems.com/} 982 \end{description} 983 \end{frame} 984 985 986 \begin{frame} 987 \frametitle{Do you have any questions?} 988 \framesubtitle{\url{https://taler.net/en/bibliography.html}} 989 \vfill 990 References: 991 {\tiny 992 \begin{itemize} 993 \item{David Chaum, Christian Grothoff and Thomas Moser. 994 {\em How to issue a central bank digital currency}. 995 {\bf SNB Working Papers, 2021}.} 996 \item{Belen Barros Pena. 997 {\em Understanding and designing technologies for everyday financial collaboration}. 998 {\bf University of Northumbria at Newcastle (PhD thesis)}, 2021.} 999 \item{Dominik Samuel Meister and Dennis Neufeld. 1000 {\em Anastasis: Password-less key recovery via multi-factor multi-party authentication}. 1001 {\bf Bern University of Applied Sciences (BS thesis)}, 2020.} 1002 \item{Florian Dold. 1003 {\em The GNU Taler System: Practical and Provably Secure Electronic Payments}. 1004 {\bf University of Rennes 1 (PhD thesis)}, 2019.} 1005 \item{Christian Grothoff and Alex Pentland. 1006 {\em Digital cash and privacy: What are the alternatives to Libra?} 1007 {\bf MIT Media Lab}, 2019.} 1008 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 1009 {\em Enabling Secure Web Payments with GNU Taler}. 1010 {\bf SPACE 2016}.} 1011 \item{David Chaum, Amos Fiat and Moni Naor. 1012 {\em Untraceable electronic cash}. 1013 {\bf Proceedings on Advances in Cryptology, 1990}.} 1014 \end{itemize} 1015 } 1016 \end{frame} 1017 1018 1019 \end{document}