2018-fs-isac.tex (81652B)
1 \documentclass[fleqn,xcolor={usenames,dvipsnames},aspectratio=169]{beamer} 2 \usepackage{amsmath} 3 \usepackage{multimedia} 4 \usepackage[utf8]{inputenc} 5 \usepackage{framed,color,ragged2e} 6 \usepackage[absolute,overlay]{textpos} 7 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 8 \usetheme{boxes} 9 \setbeamertemplate{navigation symbols}{} 10 \usepackage{xcolor} 11 \usepackage{tikz,eurosym} 12 %\usepackage[normalem]{ulem} 13 \usepackage{listings} 14 15 % CSS 16 \lstdefinelanguage{CSS}{ 17 basicstyle=\ttfamily\scriptsize, 18 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}, 19 sensitive=true, 20 morecomment=[l]{//}, 21 morecomment=[s]{/*}{*/}, 22 morestring=[b]', 23 morestring=[b]", 24 alsoletter={:}, 25 alsodigit={-} 26 } 27 28 % JavaScript 29 \lstdefinelanguage{JavaScript}{ 30 basicstyle=\ttfamily\scriptsize, 31 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 32 morecomment=[s]{/*}{*/}, 33 morecomment=[l]//, 34 morestring=[b]", 35 morestring=[b]' 36 } 37 38 \lstdefinelanguage{HTML5}{ 39 basicstyle=\ttfamily\scriptsize, 40 language=html, 41 sensitive=true, 42 alsoletter={<>=-}, 43 morecomment=[s]{<!-}{-->}, 44 tag=[s], 45 otherkeywords={ 46 % General 47 >, 48 % Standard tags 49 <!DOCTYPE, 50 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 51 % body 52 </body, <body, 53 % Divs 54 </div, <div, </div>, 55 % Paragraphs 56 </p, <p, </p>, 57 % scripts 58 </script, <script, 59 % More tags... 60 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 61 }, 62 ndkeywords={ 63 % General 64 =, 65 % HTML attributes 66 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 67 % SVG attributes 68 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 69 % CSS properties 70 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 71 % CSS3 properties 72 transform:, -moz-transform:, -webkit-transform:, 73 animation:, -webkit-animation:, 74 transition:, transition-duration:, transition-property:, transition-timing-function:, 75 } 76 } 77 78 \lstdefinelanguage{JavaScript}{ 79 basicstyle=\ttfamily\scriptsize, 80 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 81 keywordstyle=\color{blue}\bfseries, 82 ndkeywords={class, export, boolean, throw, implements, import, this}, 83 ndkeywordstyle=\color{darkgray}\bfseries, 84 identifierstyle=\color{black}, 85 sensitive=false, 86 comment=[l]{//}, 87 morecomment=[s]{/*}{*/}, 88 commentstyle=\color{purple}\ttfamily, 89 stringstyle=\color{red}\ttfamily, 90 morestring=[b]', 91 morestring=[b]" 92 } 93 94 \usetikzlibrary{shapes,arrows} 95 \usetikzlibrary{positioning} 96 \usetikzlibrary{calc} 97 98 \title{GNU Taler} 99 %\subtitle{} 100 101 \setbeamertemplate{navigation symbols}{\includegraphics[width=2cm]{bfh.png} \includegraphics[width=1cm]{inria.pdf} \includegraphics[width=0.5cm]{gnu.png} \includegraphics[width=0.5cm]{ashoka.png}\hfill} 102 %\setbeamercovered{transparent=1} 103 104 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci} 105 \date{\today} 106 \institute{The GNU Project} 107 108 109 \begin{document} 110 111 \justifying 112 113 \begin{frame} 114 \begin{center} 115 \LARGE {\bf GNU Taler} 116 117 \vfill 118 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 119 \includegraphics[width=0.66\textwidth]{taler-logo-2018.pdf} 120 \end{center} 121 \begin{textblock*}{4cm}(.5cm,7.2cm) % {block width} (coords) 122 {\Large {\bf \url{taler.net}} \\ 123 twitter@taler } 124 \end{textblock*} 125 126 % Substitute based on who is giving the talk! 127 \begin{textblock*}{6cm}(9.2cm,7.2cm) % {block width} (coords) 128 {\hfill {\Large {\bf Christian Grothoff}} \\ 129 \hfill grothoff@taler.net } 130 \end{textblock*} 131 132 \end{frame} 133 134 135 \section{The Bank's Online Payment Problem} 136 \begin{frame}{The Bank's Online Payment Problem} 137 138 3D secure (``verified by visa'') is a nightmare: 139 140 \begin{minipage}{5cm} 141 \begin{itemize} 142 \item Complicated process 143 \item Shifts liability to consumer 144 \item Significant latency 145 \item Can refuse valid requests 146 \item Legal vendors excluded 147 \item No privacy for buyers 148 \end{itemize} 149 \end{minipage} 150 \begin{minipage}{5cm} 151 \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf} 152 \end{minipage} 153 \vfill 154 Online credit card payments will be replaced, but with what? 155 \end{frame} 156 157 158 \begin{frame}{The Bank's Online Payment Problem} 159 \vfill 160 \begin{textblock*}{12cm}(0.5cm,1cm) % {block width} (coords) 161 \begin{itemize} 162 \item Global tech companies push oligopolies 163 \item Privacy and federated finance are at risk 164 % \item 30\% fees are conceivable 165 \item Economic sovereignty is in danger 166 \end{itemize} 167 \end{textblock*} 168 \begin{textblock*}{4cm}(3.5cm,5.2cm) % {block width} (coords) 169 {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}} 170 \end{textblock*} 171 \begin{textblock*}{2cm}(7cm,3cm) % {block width} (coords) 172 {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}} 173 \end{textblock*} 174 \begin{textblock*}{2cm}(3cm,3.5cm) % {block width} (coords) 175 {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}} 176 \end{textblock*} 177 \begin{textblock*}{2cm}(9cm,5cm) % {block width} (coords) 178 {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}} 179 \end{textblock*} 180 \begin{textblock*}{2cm}(7.5cm,5.9cm) % {block width} (coords) 181 {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}} 182 \end{textblock*} 183 \begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords) 184 {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}} 185 \end{textblock*} 186 \vfill 187 \end{frame} 188 189 190 \begin{frame}{The Distraction: Bitcoin} 191 192 \begin{itemize} 193 \item Unregulated payment system and currency: 194 \item[] $\Rightarrow$ lack of regulation is a feature! 195 \item Implemented in free software 196 \item Decentralised peer-to-peer system \pause 197 \item Decentralised banking requires solving Byzantine consensus 198 \item Creative solution: tie initial accumulation to solving consensus \pause 199 \item[] $\Rightarrow$ Proof-of-work advances ledger 200 \item[] $\Rightarrow$ Very expensive banking 201 \end{itemize} 202 \end{frame} 203 204 205 \begin{frame} 206 \frametitle{\includegraphics[height=0.5cm]{pics/bitcoin.jpeg}?} 207 \centering 208 \noindent 209 \includegraphics[width=\textwidth]{pics/btc-transaction-cost.pdf} 210 211 Average transaction value: $\approx$ 4215 USD (on 9.8.2018) 212 \end{frame} 213 214 215 \begin{frame} 216 \frametitle{\includegraphics[height=0.5cm]{pics/zerocoin.png}?} 217 218 Cryptography is rather primitive: 219 \begin{center} 220 {\bf All Bitcoin transactions are public and linkable!} 221 \end{center} 222 223 \begin{itemize} 224 \item[] $\Rightarrow$ no privacy guarantees 225 \item[] $\Rightarrow$ enhanced with ``laundering'' services 226 \end{itemize} 227 ZeroCoin, CryptoNote (Monero) and ZeroCash (ZCash) offer anonymity. 228 \end{frame} 229 230 231 \begin{frame} 232 \vfill 233 \begin{center} 234 {\bf Do you want to have a libertarian economy?} 235 \end{center} 236 \vfill 237 \begin{center} 238 {\bf Do you want to live under total surveillance?} 239 \end{center} 240 \vfill 241 \end{frame} 242 243 244 \begin{frame}{GNU Taler} 245 \vfill 246 \begin{center} 247 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 248 \end{center} 249 \vfill 250 \begin{center} 251 \includegraphics[scale=1.5]{taler-logo-2018.pdf} 252 \end{center} 253 \vfill 254 \begin{center} 255 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 256 \end{center} 257 \vfill 258 \vfill 259 \ % 260 \end{frame} 261 262 263 \section{What is Taler?} 264 \begin{frame}{What is Taler?} 265 \vfill 266 \begin{center} 267 Taler is an electronic instant payment system. 268 \end{center} 269 \begin{itemize} 270 \item Uses electronic coins stored in {\bf wallets} on customer's device 271 \item Like {\bf cash} 272 \item Pay in {\bf existing currencies} (i.e. EUR, USD, BTC), \\ 273 or use it to create new {\bf regional currencies} 274 \end{itemize} 275 \vfill 276 \end{frame} 277 278 279 \begin{frame} 280 \frametitle{Taler Overview} 281 \begin{center} 282 \begin{tikzpicture} 283 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 284 \node (origin) at (0,0) {}; 285 \node (exchange) [def,above=of origin,draw]{Exchange}; 286 \node (customer) [def, draw, below left=of origin] {Customer}; 287 \node (merchant) [def, draw, below right=of origin] {Merchant}; 288 \node (auditor) [def, draw, above right=of origin]{Auditor}; 289 290 \tikzstyle{C} = [color=black, line width=1pt] 291 292 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 293 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 294 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 295 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 296 297 \end{tikzpicture} 298 \end{center} 299 \end{frame} 300 301 302 \begin{frame} 303 % TODO: replace with simplified NEW architecture picture! 304 \frametitle{Architecture of Taler} 305 \begin{center} 306 \includegraphics[width=0.9\textwidth]{illustrations/taler-arch-full.pdf} 307 308 $\Rightarrow$ Convenient, taxable, privacy-enhancing, \& resource friendly! 309 \end{center} 310 \end{frame} 311 312 313 \begin{frame}{Usability of Taler} 314 \vfill 315 \begin{center} 316 \url{https://demo.taler.net/} 317 \end{center} 318 \begin{enumerate} 319 \item Install Browser extension. 320 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 321 \item Visit the {\tt shop.demo.taler.net} to spend coins. 322 \end{enumerate} 323 \vfill 324 \end{frame} 325 326 327 \begin{frame}{Use Case: Journalism} 328 Today: 329 \begin{itemize} 330 \item Corporate structure % ($\Rightarrow$ filter) 331 \item Advertising primary revenue % ($\Rightarrow$ dependence) 332 \item Tracking readers critical for business success 333 \item Journalism and marketing hard to distinguish 334 \end{itemize}\vfill\pause 335 With GNU Taler: 336 \begin{itemize} 337 \item One-click micropayments per article 338 \item Hosting requires no expertise % (no PCI DSS) 339 \item Reader-funded reporting separated from marketing 340 \item Readers can remain anonymous 341 \end{itemize} 342 \end{frame} 343 344 345 \begin{frame}{Use Case: Anti-Spam} 346 Today, p$\equiv$p provides authenticated encryption for e-mail: 347 \begin{itemize} 348 \item Free software 349 \item Easy to use opportunistic encryption 350 \item Available for Outlook, Android, Enigmail 351 \item Spies \& spam filters can no longer inspect content 352 \end{itemize}\vfill\pause 353 With GNU Taler: 354 \begin{itemize} 355 \item Peer-to-peer payments via e-mail 356 \item If unsolicited sender, hide messages from user \& 357 automatically request payment from sender 358 \item Sender can attach payment to be moved to inbox 359 \item Receiver may grant refund to sender 360 \end{itemize} 361 \end{frame} 362 363 364 \begin{frame}{Social Impact of Taler} 365 \begin{center} 366 \includegraphics[height=1.2\textheight]{../../social-impact.pdf} 367 \end{center} 368 \end{frame} 369 370 371 \begin{frame}{Taxability} 372 We say Taler is taxable because: 373 \begin{itemize} 374 \item Merchant's income is visible from deposits. 375 \item Hash of contract is part of deposit data. 376 \item State can trace income and enforce taxation. 377 \end{itemize}%\pause 378 % Limitations: 379 % \begin{itemize} 380 % \item withdraw loophole 381 % \item {\em sharing} coins among family and friends 382 % \end{itemize} 383 \end{frame} 384 385 386 \begin{frame}{How does it work?} 387 We use a few ancient constructions: 388 \begin{itemize} 389 \item Cryptographic hash function (1989) 390 \item Blind signature (1983) 391 \item Schnorr signature (1989) 392 \item Diffie-Hellman key exchange (1976) 393 \item Cut-and-choose zero-knowledge proof (1985) 394 \end{itemize} 395 But of course we use modern instantiations. 396 \end{frame} 397 398 399 \begin{frame}{Exchange setup: Create a denomination key (RSA)} 400 \begin{minipage}{6cm} 401 \begin{enumerate} 402 \item Pick random primes $p,q$. 403 \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$ 404 \item Pick small $e < \phi(n)$ such that 405 $d := e^{-1} \mod \phi(n)$ exists. 406 \item Publish public key $(e,n)$. 407 \end{enumerate} 408 \end{minipage} 409 \begin{minipage}{6cm} 410 \begin{tikzpicture} 411 \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em]; 412 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 413 \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$}; 414 \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}}; 415 \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 416 417 \tikzstyle{C} = [color=black, line width=1pt] 418 419 \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {}; 420 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 421 \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {}; 422 \end{tikzpicture} 423 % \includegraphics[width=0.4\textwidth]{seal.pdf} 424 \end{minipage} 425 \end{frame} 426 427 428 \begin{frame}{Merchant: Create a signing key (EdDSA)} 429 \begin{minipage}{9cm} 430 \begin{itemize} 431 \item pick random $m \mod o$ as private key 432 \item $M = mG$ public key 433 \end{itemize} 434 \end{minipage} 435 \begin{minipage}{6cm} 436 \begin{tikzpicture} 437 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 438 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 439 \node (m) [draw=none, below = of origin] at (0,0) {$m$}; 440 \node (seal) [draw=none, below=of m]{M}; 441 \tikzstyle{C} = [color=black, line width=1pt] 442 443 \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {}; 444 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 445 \end{tikzpicture} 446 \end{minipage} 447 448 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 449 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 450 \end{frame} 451 452 453 \begin{frame}{Customer: Create a planchet (EdDSA)} 454 \begin{minipage}{9cm} 455 \begin{itemize} 456 \item Pick random $c \mod o$ private key 457 \item $C = cG$ public key 458 \end{itemize} 459 \end{minipage} 460 \begin{minipage}{4cm} 461 \begin{tikzpicture} 462 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 463 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 464 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 465 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 466 \tikzstyle{C} = [color=black, line width=1pt] 467 468 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 469 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 470 \end{tikzpicture} 471 \end{minipage} 472 473 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 474 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 475 \end{frame} 476 477 478 \begin{frame}{Customer: Blind planchet (RSA)} 479 \begin{minipage}{6cm} 480 \begin{enumerate} 481 \item Obtain public key $(e,n)$ 482 \item Compute $f := FDH(C)$, $f < n$. 483 \item Pick blinding factor $b \in \mathbb Z_n$ 484 \item Transmit $f' := f b^e \mod n$ 485 \end{enumerate} 486 \end{minipage} 487 \begin{minipage}{6cm} 488 \begin{tikzpicture} 489 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 490 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 491 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 492 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 493 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 494 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 495 \tikzstyle{C} = [color=black, line width=1pt] 496 497 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 498 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 499 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 500 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 501 \end{tikzpicture} 502 \end{minipage} 503 \end{frame} 504 505 506 \begin{frame}{Exchange: Blind sign (RSA)} 507 \begin{minipage}{6cm} 508 \begin{enumerate} 509 \item Receive $f'$. 510 \item Compute $s' := f'^d \mod n$. 511 \item Send signature $s'$. 512 \end{enumerate} 513 \end{minipage} 514 \begin{minipage}{6cm} 515 \begin{tikzpicture} 516 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 517 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 518 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 519 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 520 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 521 \tikzstyle{C} = [color=black, line width=1pt] 522 523 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 524 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 525 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 526 \end{tikzpicture} 527 \end{minipage} 528 \end{frame} 529 530 531 \begin{frame}{Customer: Unblind coin (RSA)} 532 \begin{minipage}{6cm} 533 \begin{enumerate} 534 \item Receive $s'$. 535 \item Compute $s := s' b^{-1} \mod n$ % \\ 536 % ($(f')^d = (f b^e)^d = f^d b$). 537 \end{enumerate} 538 \end{minipage} 539 \begin{minipage}{6cm} 540 \begin{tikzpicture} 541 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 542 \node (b) [def, draw=none] at (0,0) {$b$}; 543 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 544 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 545 \tikzstyle{C} = [color=black, line width=1pt] 546 547 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 548 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 549 \end{tikzpicture} 550 \end{minipage} 551 \end{frame} 552 553 554 \begin{frame}{Withdrawing coins on the Web} 555 \begin{center} 556 \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf} 557 \end{center} 558 \end{frame} 559 560 561 \begin{frame}{Customer: Build shopping cart} 562 \begin{center} 563 \begin{tikzpicture} 564 \tikzstyle{def} = [node distance= 2em and 2em, inner sep=0em, outer sep=.3em]; 565 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}}; 566 \node (cart) [draw=none, right=of origin]{\includegraphics[width=0.2\textwidth]{cart.pdf}}; 567 \node (merchant) [node distance=4em and 4em, draw, right =of cart]{Merchant}; 568 \tikzstyle{C} = [color=black, line width=1pt]; 569 \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {}; 570 \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}}; 571 \end{tikzpicture} 572 \end{center} 573 \end{frame} 574 575 576 \begin{frame}{Merchant Integration: Wallet Detection} 577 \lstset{language=JavaScript} 578 \lstinputlisting{figs/taler-presence-js.html} 579 % \caption{Sample code to detect the Taler wallet. Allowing the 580 % Web site to detect the presence of the wallet leaks one bit 581 % of information about the user. The above logic also works 582 % if the wallet is installed while the page is open.} 583 % \label{listing:presence} 584 \end{frame} 585 586 587 \begin{frame}{Merchant Integration: Payment Request} 588 % \begin{figure}[p!] 589 \lstset{language=HTML5} 590 \lstinputlisting{figs/taler-402.html} 591 % \caption{Sample HTTP response to prompt the wallet to show an offer.} 592 % \label{listing:http-contract} 593 % \end{figure} 594 595 % \begin{figure*}[p!] 596 % \lstset{language=HTML5} 597 % \lstinputlisting{figs/taler-contract.html} 598 % \caption{Sample JavaScript code to prompt the wallet to show an offer. 599 % Here, the contract is fetched on-demand from the server. 600 % The {\tt taler\_pay()} function needs to be invoked 601 % when the user triggers the checkout.} 602 % \label{listing:contract} 603 % \end{figure*} 604 \end{frame} 605 606 607 \begin{frame}{Merchant Integration: Contract} 608 % \begin{figure*}[t!] 609 {\tiny 610 \lstset{language=JavaScript} 611 \lstinputlisting{figs/taler-contract.json} 612 % \caption{Minimal Taler contract over a digital article with a value of \EUR{0.10}. The merchant will pay transaction fees up to \EUR{0.01}. The hash over the wire transfer information was truncated to make it fit to the page.} 613 % \label{listing:json-contract} 614 % \end{figure*} 615 } 616 \end{frame} 617 618 619 \begin{frame}{Merchant: Propose contract (EdDSA)} 620 \begin{minipage}{6cm} 621 \begin{enumerate} 622 \item Complete proposal $D$. 623 \item Send $D$, $EdDSA_m(D)$ 624 \end{enumerate} 625 \end{minipage} 626 \begin{minipage}{6cm} 627 \begin{tikzpicture} 628 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 629 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 630 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}}; 631 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 632 \tikzstyle{C} = [color=black, line width=1pt]; 633 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 634 \tikzstyle{C} = [color=black, line width=1pt] 635 636 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 637 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 638 \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}}; 639 \end{tikzpicture} 640 \end{minipage} 641 \end{frame} 642 643 644 \begin{frame}{Customer: Spend coin (EdDSA)} 645 \begin{minipage}{6cm} 646 \begin{enumerate} 647 \item Receive proposal $D$, $EdDSA_m(D)$. 648 \item Send $s$, $C$, $EdDSA_c(D)$ 649 \end{enumerate} 650 \end{minipage} 651 \begin{minipage}{6cm} 652 \begin{tikzpicture} 653 \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em]; 654 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 655 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 656 \node (c) [def, draw=none, above=of contract] {$c$}; 657 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 658 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 659 \tikzstyle{C} = [color=black, line width=1pt] 660 661 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 662 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 663 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 664 \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}}; 665 \end{tikzpicture} 666 \end{minipage} 667 \end{frame} 668 669 670 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 671 \begin{minipage}{6cm} 672 \begin{equation*} 673 s^e \stackrel{?}{\equiv} FDH(C) \mod n 674 \end{equation*} 675 \end{minipage} 676 \begin{minipage}{6cm} 677 \begin{minipage}{0.2\textwidth} 678 \includegraphics[width=\textwidth]{coin.pdf} 679 \end{minipage} 680 $\stackrel{?}{\Leftrightarrow}$ 681 \begin{minipage}{0.2\textwidth} 682 \includegraphics[width=\textwidth]{seal.pdf} 683 \end{minipage} 684 \end{minipage} 685 \end{frame} 686 687 688 \begin{frame}{Payment processing with Taler} 689 \begin{center} 690 \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf} 691 \end{center} 692 \end{frame} 693 694 695 \begin{frame}{Giving change} 696 It would be inefficient to pay EUR 100 with 1 cent coins! 697 \begin{itemize} 698 \item Denomination key represents value of a coin. 699 \item Exchange may offer various denominations for coins. 700 \item Wallet may not have exact change! 701 \item Usability requires ability to pay given sufficient total funds. 702 \end{itemize}\pause 703 Key goals: 704 \begin{itemize} 705 \item maintain unlinkability 706 \item maintain taxability of transactions 707 \end{itemize}\pause 708 Method: 709 \begin{itemize} 710 \item Contract can specify to only pay {\em partial value} of a coin. 711 \item Exchange allows wallet to obtain {\em unlinkable change} 712 for remaining coin value. 713 \end{itemize} 714 \end{frame} 715 716 717 \begin{frame}{Diffie-Hellman (ECDH)} 718 \begin{minipage}{8cm} 719 \begin{enumerate} 720 \item Create private keys $c,t \mod o$ 721 \item Define $C = cG$ 722 \item Define $T = tG$ 723 \item Compute DH \\ $cT = c(tG) = t(cG) = tC$ 724 \end{enumerate} 725 \end{minipage} 726 \begin{minipage}{6cm} 727 \begin{tikzpicture} 728 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 729 \node (t) [def, draw=none] at (0,0) {$t$}; 730 \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}}; 731 \node (c) [def, draw=none, above left= of ct] {$c$}; 732 \tikzstyle{C} = [color=black, line width=1pt] 733 734 \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {}; 735 \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {}; 736 \end{tikzpicture} 737 \end{minipage} 738 \end{frame} 739 740 741 \begin{frame}{Strawman solution} 742 \begin{minipage}{8cm} 743 Given partially spent private coin key $c_{old}$: 744 \begin{enumerate} 745 % \item Let $C_{old} := c_{old}G$ (as before) 746 \item Pick random $c_{new} \mod o$ private key 747 \item $C_{new} = c_{new}G$ public key 748 \item Pick random $b_{new}$ 749 \item Compute $f_{new} := FDH(C_{new})$, $m < n$. 750 \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$ 751 \end{enumerate} 752 ... and sign request for change with $c_{old}$. 753 \end{minipage} 754 \begin{minipage}{4cm} 755 \begin{tikzpicture} 756 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 757 \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 758 \node (planchet) [def, draw=none, above left= of blinded] {\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 759 \node (cnew) [def, draw=none, above= of planchet] {$c_{new}$}; 760 \node (bnew) [def, draw=none, above right= of blinded] {$b_{new}$}; 761 \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 762 \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 763 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 764 765 \tikzstyle{C} = [color=black, line width=1pt] 766 767 \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {}; 768 \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {}; 769 \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {}; 770 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 771 \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {}; 772 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 773 \end{tikzpicture} 774 \end{minipage} 775 \pause 776 \vfill 777 {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!} 778 \end{frame} 779 780 781 \begin{frame}{Customer: Transfer key setup (ECDH)} 782 \begin{minipage}{8cm} 783 Given partially spent private coin key $c_{old}$: 784 \begin{enumerate} 785 \item Let $C_{old} := c_{old}G$ (as before) 786 \item Create random private transfer key $t \mod o$ 787 \item Compute $T := tG$ 788 \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$ 789 \item Derive $c_{new}$ and $b_{new}$ from $X$ 790 \item Compute $C_{new} := c_{new}G$ 791 \item Compute $f_{new} := FDH(C_{new})$ 792 \item Transmit $f_{new}' := f_{new} b_{new}^e$ 793 \end{enumerate} 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 (t) [def, draw=none] at (0,0) {$t$}; 799 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 800 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 801 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 802 \node (cp) [def, draw=none, below left= of dh] {$c_{new}$}; 803 \node (bp) [def, draw=none, below right= of dh] {$b_{new}$}; 804 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 805 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 806 807 \tikzstyle{C} = [color=black, line width=1pt] 808 809 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 810 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 811 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 812 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 813 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 814 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 815 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 816 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 817 \end{tikzpicture} 818 \end{minipage} 819 \end{frame} 820 821 822 \begin{frame}{Cut-and-Choose} 823 \begin{minipage}{4cm} 824 \begin{tikzpicture} 825 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 826 \node (t) [def, draw=none] at (0,0) {$t_1$}; 827 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 828 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 829 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 830 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 831 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 832 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 833 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 834 835 \tikzstyle{C} = [color=black, line width=1pt] 836 837 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 838 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 839 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 840 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 841 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 842 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 843 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 844 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 845 \end{tikzpicture} 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_2$}; 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,2}$}; 855 \node (bp) [def, draw=none, below right= of dh] {$b_{new,2}$}; 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] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 862 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 863 \draw [<-, C] (dh) -- (t) 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 \begin{minipage}{4cm} 872 \begin{tikzpicture} 873 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 874 \node (t) [def, draw=none] at (0,0) {$t_3$}; 875 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 876 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 877 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 878 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 879 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 880 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 881 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 882 883 \tikzstyle{C} = [color=black, line width=1pt] 884 885 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 886 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 887 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 888 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 889 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 890 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 891 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 892 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 893 \end{tikzpicture} 894 \end{minipage} 895 \end{frame} 896 897 898 \begin{frame}{Exchange: Choose!} 899 \begin{center} 900 \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer. 901 \end{center} 902 \end{frame} 903 904 905 \begin{frame}{Customer: Reveal} 906 \begin{enumerate} 907 \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange 908 \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange 909 \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange 910 \end{enumerate} 911 \end{frame} 912 913 914 \begin{frame}{Exchange: Verify ($\gamma = 2$)} 915 \begin{minipage}{4cm} 916 \begin{tikzpicture} 917 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 918 \node (h) [def, draw=none] at (0,0) {$t_1$}; 919 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 920 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 921 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 922 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 923 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 924 925 \tikzstyle{C} = [color=black, line width=1pt] 926 927 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 928 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 929 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 930 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 931 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 932 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 933 \end{tikzpicture} 934 \end{minipage} 935 \begin{minipage}{4cm} 936 \ 937 \end{minipage} 938 \begin{minipage}{4cm} 939 \begin{tikzpicture} 940 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 941 \node (h) [def, draw=none] at (0,0) {$t_3$}; 942 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 943 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 944 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 945 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 946 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 947 948 \tikzstyle{C} = [color=black, line width=1pt] 949 950 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 951 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 952 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 953 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 954 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 955 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 956 \end{tikzpicture} 957 \end{minipage} 958 \end{frame} 959 960 961 \begin{frame}{Exchange: Blind sign change (RSA)} 962 \begin{minipage}{6cm} 963 \begin{enumerate} 964 \item Take $f_{new,\gamma}'$. 965 \item Compute $s' := f_{new,\gamma}'^d \mod n$. 966 \item Send signature $s'$. 967 \end{enumerate} 968 \end{minipage} 969 \begin{minipage}{6cm} 970 \begin{tikzpicture} 971 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 972 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 973 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 974 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 975 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 976 \tikzstyle{C} = [color=black, line width=1pt] 977 978 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 979 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 980 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 981 \end{tikzpicture} 982 \end{minipage} 983 \end{frame} 984 985 986 \begin{frame}{Customer: Unblind change (RSA)} 987 \begin{minipage}{6cm} 988 \begin{enumerate} 989 \item Receive $s'$. 990 \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$. 991 \end{enumerate} 992 \end{minipage} 993 \begin{minipage}{6cm} 994 \begin{tikzpicture} 995 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 996 \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$}; 997 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 998 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 999 \tikzstyle{C} = [color=black, line width=1pt] 1000 1001 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 1002 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1003 \end{tikzpicture} 1004 \end{minipage} 1005 \end{frame} 1006 1007 1008 \begin{frame}{Exchange: Allow linking change} 1009 \begin{minipage}{7cm} 1010 \begin{center} 1011 Given $C_{old}$ 1012 1013 \vspace{1cm} 1014 1015 return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$. 1016 \end{center} 1017 \end{minipage} 1018 \begin{minipage}{5cm} 1019 \begin{tikzpicture} 1020 \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em]; 1021 \node (co) [def, draw=none] at (0,0) {$C_{old}$}; 1022 \node (T) [def, draw=none, below left=of co]{$T_\gamma$}; 1023 \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1024 \node (customer) [def, draw, below right=of T] {Customer}; 1025 1026 \tikzstyle{C} = [color=black, line width=1pt] 1027 1028 \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {}; 1029 \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {}; 1030 \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link}; 1031 \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link}; 1032 \end{tikzpicture} 1033 \end{minipage} 1034 \end{frame} 1035 1036 1037 \begin{frame}{Customer: Link (threat!)} 1038 \begin{minipage}{6.3cm} 1039 \begin{enumerate} 1040 \item Have $c_{old}$. 1041 \item Obtain $T_\gamma$, $s$ from exchange 1042 \item Compute $X_\gamma = c_{old}T_\gamma$ 1043 \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$ 1044 \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$ 1045 \end{enumerate} 1046 1047 \end{minipage} 1048 \begin{minipage}{5.7cm} 1049 \begin{tikzpicture} 1050 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1051 \node (T) [def, draw=none] at (0,0) {$T_\gamma$}; 1052 \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange}; 1053 \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1054 \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1055 \node (bp) [def, draw=none, below left= of dh] {$b_{new,\gamma}$}; 1056 \node (co) [def, draw=none, above right= of dh] {$c_{old}$}; 1057 \node (cp) [def, draw=none, below= of dh] {$c_{new,\gamma}$}; 1058 \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1059 \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}}; 1060 1061 \tikzstyle{C} = [color=black, line width=1pt] 1062 1063 \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {}; 1064 \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {}; 1065 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1066 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1067 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1068 \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {}; 1069 \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link}; 1070 \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link}; 1071 \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {}; 1072 \end{tikzpicture} 1073 \end{minipage} 1074 \end{frame} 1075 1076 1077 \begin{frame}{Refresh protocol summary} 1078 \begin{itemize} 1079 \item Customer asks exchange to convert old coin to new coin 1080 \item Protocol ensures new coins can be recovered from old coin 1081 \item[$\Rightarrow$] New coins are owned by the same entity! 1082 \end{itemize} 1083 Thus, the refresh protocol allows: 1084 \begin{itemize} 1085 \item To give unlinkable change. 1086 \item To give refunds to an anonymous customer. 1087 \item To expire old keys and migrate coins to new ones. 1088 \item To handle protocol aborts. 1089 \end{itemize} 1090 \end{frame} 1091 1092 1093 \section{Competitor analysis} 1094 \begin{frame}{Performance: \texttt{taler-exchange-benchmark}} 1095 \begin{minipage}{7cm} 1096 {\bf Setup:} 1097 \begin{itemize} 1098 \item AMD 1950X CPU 1099 \item Debian GNU/Linux 1100 \item Postgres 10.4 1101 \item Compiled with $-O0 -g$ \mbox{(except for libgcrypt)} 1102 \item 800 parallel ``clients'' \mbox{(on loopback)} 1103 \item 60 reserves per client 1104 \item 15 coins per reserve 1105 \item RSA-2048 1106 \item No network latency 1107 \item No auditor 1108 \item[] 1109 \item[] 1110 \item[] 1111 \end{itemize} 1112 \end{minipage} 1113 \begin{minipage}{7cm} 1114 {\bf Results:} 1115 \begin{itemize} 1116 \item 30\% CPU Taler exchange 1117 \item 60\% CPU Taler ``clients'' 1118 \item 3\% CPU Postgres database 1119 \item $\approx$ 4 ms / coin (withdraw, deposit, 10\% refresh chance) 1120 \item[] $\Rightarrow$ $\approx$ {\bf 250 transactions/s} 1121 \end{itemize} 1122 {\bf Caveats:} 1123 \begin{itemize} 1124 \item {\bf 2/3rds for clients} 1125 \item HTTP Keep-Alive diabled \mbox{(for load-balancing)} 1126 \item Used HTTP, not HTTPS 1127 \item No outgoing wire transfers 1128 \end{itemize} 1129 \end{minipage} 1130 \end{frame} 1131 1132 1133 \section{Competitor analysis} 1134 \begin{frame}{Competitor comparison} 1135 \begin{center} \small 1136 \begin{tabular}{l||c|c|c|c|c} 1137 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 1138 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 1139 Offline & +++ & $-$$-$ & $-$$-$ & + & $-$$-$ \\ \hline 1140 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 1141 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 1142 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 1143 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 1144 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 1145 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 1146 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 1147 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 1148 \end{tabular} 1149 \end{center} 1150 \end{frame} 1151 1152 1153 1154 \begin{frame}[fragile]{\texttt{payto:} Uniform Identifiers for Payments and Accounts} 1155 \vfill 1156 Like \texttt{mailto:}, but for bank accounts instead of email accounts! 1157 \vfill 1158 \begin{verbatim} 1159 payto://<PAYMENT-METHOD>/<ACCOUNT-NR> 1160 ?subject=InvoiceNr42 1161 &amount=EUR:12.50 1162 \end{verbatim} 1163 \vfill 1164 Default action: Open app to review and confirm payment. 1165 \vfill 1166 \end{frame} 1167 1168 1169 \begin{frame}[fragile]{Benefits of \texttt{payto://}} 1170 \begin{itemize} 1171 \item Standardized way to represent financial resources (bank account, bitcoin wallet) 1172 and payments to them 1173 \item Useful on the client-side on the Web and for FinTech backend applications 1174 \item Payment methods (such as SEPA, ACH, Bitcoin) are registered with 1175 IANA and allow extra options 1176 \item Under standardization with IETF as \texttt{draft-dold-payto} 1177 \end{itemize} 1178 \begin{center} 1179 Please voice your support! 1180 \end{center} 1181 \end{frame} 1182 1183 1184 1185 \begin{frame}{How to support?} 1186 \begin{itemize} 1187 \item Join: \href{https://lists.gnu.org/mailman/listinfo/taler}{taler@gnu.org}, \href{irc://irc.freenode.net/\#taler}{\#taler} 1188 \item Coding \& design: \url{https://gnunet.org/bugs/} 1189 \item Translation: \url{https://git.taler.net/www.git/tree/locale/fr/LC_MESSAGES/messages.po} 1190 \item Integration: \url{https://docs.taler.net/} 1191 \item Donations: \url{https://gnunet.org/ev} 1192 \item Funding: \url{https://taler.net/en/investors.html} 1193 \end{itemize} 1194 \vfill 1195 \begin{center} 1196 {\bf And of course we are looking for banks as partners!} 1197 \end{center} 1198 \end{frame} 1199 1200 1201 \begin{frame} 1202 \frametitle{Team \hfill \& \hfill Advisory Board \hfill} 1203 \begin{minipage}{5cm} 1204 \begin{description} 1205 \item[Leon Schumacher]\ \\ co-founder 1206 \item[Dr. Christian Grothoff]\ \\ co-founder 1207 \item[Michael Widmer]\ \\ Jurist 1208 \item[Dr. Jeff Burdges]\ \\ PostDoc 1209 \item[Florian Dold]\ \\ PhD Student 1210 \end{description} 1211 1212 \end{minipage} 1213 \begin{minipage}{5.5cm} 1214 {\tiny 1215 \begin{description} 1216 \item[Prof. Mikhail Atallah] \ \\ 1217 Cryptographer, co-founder 1218 Arxan Technologies Inc. 1219 \item[Prof. Roberto Di Cosmo] \ \\ 1220 Director IRILL 1221 \item[Greg Framke] \ \\ 1222 CIO Manulife, \\ 1223 former COO Etrade 1224 \item[Ante Gulam] \ \\ 1225 Global Head of Information Security --- CISO \\ 1226 MetaPack Group 1227 \item[Dr. Richard Stallman]\ \\ 1228 Founder of the \\ \mbox{Free Software movement} 1229 \item[Chris Pagett] \ \\ 1230 former Group Head Security/ \ \\ 1231 Fraud/Geo Risk HSBC 1232 \item[Prof. Alex Pentland] \ \\ 1233 MIT Media Lab 1234 \end{description} 1235 } 1236 \end{minipage} 1237 \vfill 1238 \includegraphics[height=0.1\textwidth]{../investors/team-images/leon-schumacher.jpg} \hfill 1239 \includegraphics[height=0.1\textwidth]{../investors/team-images/christian-grothoff.jpg}\hfill 1240 \includegraphics[height=0.1\textwidth]{../investors/team-images/michael-widmer.jpg}\hfill 1241 \includegraphics[height=0.1\textwidth]{../investors/team-images/jeff-burdges.jpg}\hfill 1242 \includegraphics[height=0.1\textwidth]{../investors/team-images/florian-dold.jpg}\hfill 1243 \includegraphics[height=0.1\textwidth]{../investors/board-images/mja.jpg} \hfill 1244 \includegraphics[height=0.1\textwidth]{../investors/board-images/roberto-di-cosmo.jpg} \hfill 1245 \includegraphics[height=0.1\textwidth]{../investors/board-images/greg-framke.jpg} \hfill 1246 \includegraphics[height=0.1\textwidth]{../investors/board-images/ante-gulam.jpg} \hfill 1247 \includegraphics[height=0.1\textwidth]{../investors/board-images/alex-pentland.jpg} 1248 %\note{Advisory board still under construction.} 1249 \end{frame} 1250 1251 1252 \begin{frame}{Conclusion} 1253 \begin{center} 1254 {\bf What can we do?} 1255 \end{center} 1256 \vfill 1257 \begin{itemize} 1258 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 1259 \item{Engage in arms race with deliberately unregulatable blockchains, and} 1260 \item{Enjoy the ``benefits'' of cash \\ 1261 \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 1262 \end{itemize} 1263 \vfill 1264 \begin{center} 1265 {\bf OR} 1266 \end{center} 1267 \vfill 1268 \begin{itemize} 1269 \item{Establish free software alternative balancing social goals!} 1270 \end{itemize} 1271 \vfill 1272 \end{frame} 1273 1274 1275 \begin{frame} 1276 \frametitle{Do you have any questions?} 1277 \vfill 1278 References: 1279 {\tiny 1280 \begin{enumerate} 1281 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 1282 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 1283 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 1284 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 1285 {\em Enabling Secure Web Payments with GNU Taler}. 1286 {\bf SPACE 2016}.} 1287 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 1288 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 1289 Available upon request. 2016.} 1290 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 1291 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 1292 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 1293 \item{David Chaum, Amos Fiat and Moni Naor. 1294 {\em Untraceable electronic cash}. 1295 {\bf Proceedings on Advances in Cryptology, 1990}.} 1296 \item{Phillip Rogaway. 1297 {\em The Moral Character of Cryptographic Work}. 1298 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 1299 \end{enumerate} 1300 } 1301 \begin{center} 1302 {\bf Let money facilitate trade; but ensure capital serves society.} 1303 \end{center} 1304 \end{frame} 1305 1306 1307 1308 1309 \end{document} 1310 1311 1312 1313 1314 \begin{frame}{Taler {\tt /withdraw/sign}} 1315 % Customer withdrawing coins with blind signatures 1316 % \bigskip 1317 \begin{figure}[th] 1318 \begin{minipage}[b]{0.45\linewidth} 1319 \begin{center} 1320 \begin{tikzpicture}[scale = 0.4, 1321 transform shape, 1322 msglabel/.style = { text = Black, yshift = .3cm, 1323 sloped, midway }, 1324 okmsg/.style = { ->, color = MidnightBlue, thick, 1325 >=stealth }, 1326 rstmsg/.style = { ->, color = BrickRed, thick, 1327 >=stealth } 1328 ] 1329 \node[draw = MidnightBlue, 1330 fill = CornflowerBlue, 1331 minimum width = .3cm, 1332 minimum height = 10cm 1333 ] (h1) at (-4, 0) {}; 1334 \node[draw = MidnightBlue, 1335 fill = CornflowerBlue, 1336 minimum width = .3cm, 1337 minimum height = 10cm 1338 ] (h2) at (4, 0) {}; 1339 \node[above = 0cm of h1] {Wallet}; 1340 \node[above = 0cm of h2] {Exchange}; 1341 1342 \path[->, color = MidnightBlue, very thick, >=stealth] 1343 (-5, 4.5) edge 1344 node[rotate=90, text = Black, yshift = .3cm] {Time} 1345 (-5, -4.5); 1346 \path[okmsg, dashed] 1347 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 1348 node[msglabel] {SEPA(RK,A)} 1349 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 1350 \path[okmsg] 1351 ($(h1.east)+(0, -1.0)$) edge 1352 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 1353 ($(h2.west)+(0, -1.5)$); 1354 \path[okmsg] 1355 ($(h2.west)+(0, -2.0)$) edge 1356 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 1357 ($(h1.east)+(0, -2.5)$); 1358 \path[rstmsg] 1359 ($(h2.west)+(0, -3.5)$) edge 1360 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 1361 ($(h1.east)+(0, -4)$); 1362 \node at (5.3, 0) {}; 1363 \end{tikzpicture} 1364 \end{center} 1365 Result: $\langle c, S_{DK}(C) \rangle$. 1366 \end{minipage} 1367 \hspace{0.5cm} 1368 \begin{minipage}[b]{0.45\linewidth} 1369 \tiny 1370 \begin{description} 1371 \item[$A$] Some amount, $A \ge A_{DK}$ 1372 \item[$RK$] Reserve key 1373 \item[$DK$] Denomination key 1374 \item[$b$] Blinding factor 1375 \item[$B_b()$] RSA-FDH blinding % DK supressed 1376 \item[$C$] Coin public key $C := cG$ 1377 \item[$S_{RK}()$] EdDSA signature 1378 \item[$S_{DK}()$] RSA-FDH signature 1379 \end{description} 1380 \end{minipage} 1381 \end{figure} 1382 \end{frame} 1383 1384 1385 \begin{frame}[t]{Taler {\tt /deposit}} 1386 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 1387 \bigskip 1388 \begin{figure}[th] 1389 \begin{minipage}[b]{0.45\linewidth} 1390 \begin{center} 1391 \begin{tikzpicture}[scale = 0.4, 1392 transform shape, 1393 msglabel/.style = { text = Black, yshift = .3cm, 1394 sloped, midway }, 1395 okmsg/.style = { ->, color = MidnightBlue, thick, 1396 >=stealth }, 1397 rstmsg/.style = { ->, color = BrickRed, thick, 1398 >=stealth } 1399 ] 1400 \node[draw = MidnightBlue, 1401 fill = CornflowerBlue, 1402 minimum width = .3cm, 1403 minimum height = 10cm 1404 ] (h1) at (-4, 0) {}; 1405 \node[draw = MidnightBlue, 1406 fill = CornflowerBlue, 1407 minimum width = .3cm, 1408 minimum height = 10cm 1409 ] (h2) at (4, 0) {}; 1410 \node[above = 0cm of h1] {Merchant}; 1411 \node[above = 0cm of h2] {Exchange}; 1412 1413 \path[->, color = MidnightBlue, very thick, >=stealth] 1414 (-5, 4.5) edge 1415 node[rotate=90, text = Black, yshift = .3cm] {Time} 1416 (-5, -4.5); 1417 \path[->, color = MidnightBlue, thick, >=stealth] 1418 ($(h1.east)+(0,3)$) edge 1419 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 1420 ($(h2.west)+(0,2)$); 1421 \path[->, color = MidnightBlue, thick, >=stealth] 1422 ($(h2.west)+(0,0.5)$) edge 1423 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 1424 ($(h1.east)+(0,-0.5)$); 1425 \path[rstmsg] 1426 ($(h2.west)+(0, -2.5)$) edge 1427 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 1428 ($(h1.east)+(0, -3.5)$); 1429 \node at (5.3, 0) {}; 1430 \end{tikzpicture} 1431 \end{center} 1432 \end{minipage} 1433 \hspace{0.5cm} 1434 \begin{minipage}[b]{0.45\linewidth} 1435 \tiny 1436 \begin{description} 1437 \item[$DK$] Denomination key 1438 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 1439 \item[$c$] Private coin key, $C := cG$. 1440 \item[$S_{C}()$] EdDSA signature using $c$ 1441 \item[$D$] Deposit details 1442 \item[$SK$] Exchange's signing key 1443 \item[$S_{SK}()$] EdDSA signature using $SK$ 1444 \item[$D'$] Conficting deposit details $D' \not= D$ 1445 \end{description} 1446 \end{minipage} 1447 \end{figure} 1448 \end{frame} 1449 1450 1451 \begin{frame}{Taler {\tt /refresh/melt}} 1452 \begin{figure}[th] 1453 \begin{minipage}[b]{0.45\linewidth} 1454 \begin{center} 1455 \begin{tikzpicture}[scale = 0.4, 1456 transform shape, 1457 msglabel/.style = { text = Black, yshift = .3cm, 1458 sloped, midway }, 1459 okmsg/.style = { ->, color = MidnightBlue, thick, 1460 >=stealth }, 1461 rstmsg/.style = { ->, color = BrickRed, thick, 1462 >=stealth } 1463 ] 1464 \node[draw = MidnightBlue, 1465 fill = CornflowerBlue, 1466 minimum width = .3cm, 1467 minimum height = 10cm 1468 ] (h1) at (-4, 0) {}; 1469 \node[draw = MidnightBlue, 1470 fill = CornflowerBlue, 1471 minimum width = .3cm, 1472 minimum height = 10cm 1473 ] (h2) at (4, 0) {}; 1474 \node[above = 0cm of h1] {Customer}; 1475 \node[above = 0cm of h2] {Exchange}; 1476 1477 \path[->, color = MidnightBlue, very thick, >=stealth] 1478 (-5, 4.5) edge 1479 node[rotate=90, text = Black, yshift = .3cm] {Time} 1480 (-5, -4.5); 1481 \path[->, color = MidnightBlue, thick, >=stealth] 1482 ($(h1.east)+(0,3)$) edge 1483 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 1484 ($(h2.west)+(0,2)$); 1485 \path[->, color = MidnightBlue, thick, >=stealth] 1486 ($(h2.west)+(0,0.5)$) edge 1487 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 1488 ($(h1.east)+(0,-0.5)$); 1489 \path[rstmsg] 1490 ($(h2.west)+(0, -2.5)$) edge 1491 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 1492 ($(h1.east)+(0, -3.5)$); 1493 \node at (5.3, 0) {}; 1494 \end{tikzpicture} 1495 \end{center} 1496 \end{minipage} 1497 \hspace{0.5cm} 1498 \begin{minipage}[b]{0.45\linewidth} 1499 \tiny 1500 \begin{description} 1501 \item[$\kappa$] System-wide security parameter, usually 3. 1502 \\ \smallskip 1503 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 1504 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 1505 \item[$t_j$] Random scalar for $j<\kappa$ 1506 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 1507 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 1508 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 1509 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 1510 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 1511 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 1512 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 1513 \\ \smallskip 1514 \item[$\gamma$] Random value in $[0,\kappa)$ 1515 % \\ \smallskip 1516 % \item[$X$] Deposit or refresh 1517 \end{description} 1518 \end{minipage} 1519 \end{figure} 1520 \end{frame} 1521 1522 1523 \begin{frame}{Taler {\tt /refresh/reveal}} 1524 \begin{figure}[th] 1525 \begin{minipage}[b]{0.45\linewidth} 1526 \begin{center} 1527 \begin{tikzpicture}[scale = 0.4, 1528 transform shape, 1529 msglabel/.style = { text = Black, yshift = .3cm, 1530 sloped, midway }, 1531 okmsg/.style = { ->, color = MidnightBlue, thick, 1532 >=stealth }, 1533 rstmsg/.style = { ->, color = BrickRed, thick, 1534 >=stealth } 1535 ] 1536 \node[draw = MidnightBlue, 1537 fill = CornflowerBlue, 1538 minimum width = .3cm, 1539 minimum height = 10cm 1540 ] (h1) at (-4, 0) {}; 1541 \node[draw = MidnightBlue, 1542 fill = CornflowerBlue, 1543 minimum width = .3cm, 1544 minimum height = 10cm 1545 ] (h2) at (4, 0) {}; 1546 \node[above = 0cm of h1] {Customer}; 1547 \node[above = 0cm of h2] {Exchange}; 1548 1549 \path[->, color = MidnightBlue, very thick, >=stealth] 1550 (-5, 4.5) edge 1551 node[rotate=90, text = Black, yshift = .3cm] {Time} 1552 (-5, -4.5); 1553 \path[->, color = MidnightBlue, thick, >=stealth] 1554 ($(h1.east)+(0,3)$) edge 1555 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1556 ($(h2.west)+(0,2)$); 1557 \path[->, color = MidnightBlue, thick, >=stealth] 1558 ($(h2.west)+(0,0.5)$) edge 1559 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1560 ($(h1.east)+(0,-0.5)$); 1561 \path[rstmsg] 1562 ($(h2.west)+(0, -2.5)$) edge 1563 node[msglabel] {400 BAD REQUEST: $Z$} 1564 ($(h1.east)+(0, -3.5)$); 1565 \node at (5.3, 0) {}; 1566 \end{tikzpicture} 1567 \end{center} 1568 \end{minipage} 1569 \hspace{0.5cm} 1570 \begin{minipage}[b]{0.45\linewidth} 1571 \tiny 1572 \begin{description} 1573 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1574 \item[$t_j$] .. \\ \smallskip 1575 1576 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1577 1578 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1579 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1580 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1581 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1582 1583 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1584 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1585 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1586 1587 \item[$Z$] Cut-and-choose missmatch information 1588 \end{description} 1589 \end{minipage} 1590 \end{figure} 1591 \end{frame} 1592 1593 1594 \begin{frame}{Taler {\tt /refresh/link}} 1595 \begin{figure}[th] 1596 \begin{minipage}[b]{0.45\linewidth} 1597 \begin{center} 1598 \begin{tikzpicture}[scale = 0.4, 1599 transform shape, 1600 msglabel/.style = { text = Black, yshift = .3cm, 1601 sloped, midway }, 1602 okmsg/.style = { ->, color = MidnightBlue, thick, 1603 >=stealth }, 1604 rstmsg/.style = { ->, color = BrickRed, thick, 1605 >=stealth } 1606 ] 1607 \node[draw = MidnightBlue, 1608 fill = CornflowerBlue, 1609 minimum width = .3cm, 1610 minimum height = 10cm 1611 ] (h1) at (-4, 0) {}; 1612 \node[draw = MidnightBlue, 1613 fill = CornflowerBlue, 1614 minimum width = .3cm, 1615 minimum height = 10cm 1616 ] (h2) at (4, 0) {}; 1617 \node[above = 0cm of h1] {Customer}; 1618 \node[above = 0cm of h2] {Exchagne}; 1619 1620 \path[->, color = MidnightBlue, very thick, >=stealth] 1621 (-5, 4.5) edge 1622 node[rotate=90, text = Black, yshift = .3cm] {Time} 1623 (-5, -4.5); 1624 \path[->, color = MidnightBlue, thick, >=stealth] 1625 ($(h1.east)+(0,3)$) edge 1626 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1627 ($(h2.west)+(0,2)$); 1628 \path[->, color = MidnightBlue, thick, >=stealth] 1629 ($(h2.west)+(0,0.5)$) edge 1630 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1631 ($(h1.east)+(0,-0.5)$); 1632 \path[rstmsg] 1633 ($(h2.west)+(0, -2.5)$) edge 1634 node[msglabel] {404 NOT FOUND} 1635 ($(h1.east)+(0, -3.5)$); 1636 \node at (5.3, 0) {}; 1637 \end{tikzpicture} 1638 \end{center} 1639 \end{minipage} 1640 \hspace{0.5cm} 1641 \begin{minipage}[b]{0.45\linewidth} 1642 \tiny 1643 \begin{description} 1644 \item[$C$] Old coind public key \\ \smallskip 1645 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1646 \end{description} 1647 \end{minipage} 1648 \end{figure} 1649 \end{frame} 1650 1651 1652 \begin{frame}{Operational security} 1653 \begin{center} 1654 \resizebox{\textwidth}{!}{ 1655 \begin{tikzpicture}[ 1656 font=\sffamily, 1657 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1658 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1659 process/.style={draw,thick,circle,fill=blue!20}, 1660 sink/.style={source,fill=green!20}, 1661 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1662 dots/.style={gray,scale=2}, 1663 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1664 every node/.style={align=center}] 1665 1666 % Position the nodes using a matrix layout 1667 \matrix{ 1668 \node[source] (wallet) {Wallet}; 1669 \& \node[process] (browser) {Browser}; 1670 \& \node[process] (shop) {Web shop}; 1671 \& \node[sink] (backend) {Taler backend}; \\ 1672 }; 1673 1674 % Draw the arrows between the nodes and label them. 1675 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1676 node[midway,below] {(signal)} (wallet); 1677 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1678 node[midway,below] {(5) signed coins} (browser); 1679 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1680 node[midway,below] {(HTTPS)} (shop); 1681 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1682 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1683 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1684 node[midway,below] {(HTTPS)} (shop); 1685 \end{tikzpicture} 1686 } 1687 \end{center} 1688 \end{frame} 1689 \begin{frame}{Diffie-Hellman (ECDH)} 1690 \begin{minipage}{8cm} 1691 \begin{enumerate} 1692 \item Create private keys $c,t \mod o$ 1693 \item Define $C = cG$ 1694 \item Define $T = tG$ 1695 \item Compute DH \\ $cT = c(tG) = t(cG) = tC$ 1696 \end{enumerate} 1697 \end{minipage} 1698 \begin{minipage}{6cm} 1699 \begin{tikzpicture} 1700 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1701 \node (t) [def, draw=none] at (0,0) {$t$}; 1702 \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}}; 1703 \node (c) [def, draw=none, above left= of ct] {$c$}; 1704 \tikzstyle{C} = [color=black, line width=1pt] 1705 1706 \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {}; 1707 \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {}; 1708 \end{tikzpicture} 1709 \end{minipage} 1710 \end{frame} 1711 1712 1713 \begin{frame}{Strawman solution} 1714 \begin{minipage}{8cm} 1715 Given partially spent private coin key $c_{old}$: 1716 \begin{enumerate} 1717 % \item Let $C_{old} := c_{old}G$ (as before) 1718 \item Pick random $c_{new} \mod o$ private key 1719 \item $C_{new} = c_{new}G$ public key 1720 \item Pick random $b_{new}$ 1721 \item Compute $f_{new} := FDH(C_{new})$, $m < n$. 1722 \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$ 1723 \end{enumerate} 1724 ... and sign request for change with $c_{old}$. 1725 \end{minipage} 1726 \begin{minipage}{4cm} 1727 \begin{tikzpicture} 1728 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1729 \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1730 \node (planchet) [def, draw=none, above left= of blinded] {\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 1731 \node (cnew) [def, draw=none, above= of planchet] {$c_{new}$}; 1732 \node (bnew) [def, draw=none, above right= of blinded] {$b_{new}$}; 1733 \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1734 \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1735 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1736 1737 \tikzstyle{C} = [color=black, line width=1pt] 1738 1739 \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {}; 1740 \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {}; 1741 \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {}; 1742 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 1743 \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {}; 1744 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1745 \end{tikzpicture} 1746 \end{minipage} 1747 \pause 1748 \vfill 1749 {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!} 1750 \end{frame} 1751 1752 1753 \begin{frame}{Customer: Transfer key setup (ECDH)} 1754 \begin{minipage}{8cm} 1755 Given partially spent private coin key $c_{old}$: 1756 \begin{enumerate} 1757 \item Let $C_{old} := c_{old}G$ (as before) 1758 \item Create random private transfer key $t \mod o$ 1759 \item Compute $T := tG$ 1760 \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$ 1761 \item Derive $c_{new}$ and $b_{new}$ from $X$ 1762 \item Compute $C_{new} := c_{new}G$ 1763 \item Compute $f_{new} := FDH(C_{new})$ 1764 \item Transmit $f_{new}' := f_{new} b_{new}^e$ 1765 \end{enumerate} 1766 \end{minipage} 1767 \begin{minipage}{4cm} 1768 \begin{tikzpicture} 1769 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1770 \node (t) [def, draw=none] at (0,0) {$t$}; 1771 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1772 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1773 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1774 \node (cp) [def, draw=none, below left= of dh] {$c_{new}$}; 1775 \node (bp) [def, draw=none, below right= of dh] {$b_{new}$}; 1776 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1777 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1778 1779 \tikzstyle{C} = [color=black, line width=1pt] 1780 1781 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1782 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1783 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1784 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1785 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1786 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1787 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1788 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1789 \end{tikzpicture} 1790 \end{minipage} 1791 \end{frame} 1792 1793 1794 \begin{frame}{Cut-and-Choose} 1795 \begin{minipage}{4cm} 1796 \begin{tikzpicture} 1797 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1798 \node (t) [def, draw=none] at (0,0) {$t_1$}; 1799 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1800 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1801 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1802 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 1803 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 1804 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1805 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1806 1807 \tikzstyle{C} = [color=black, line width=1pt] 1808 1809 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1810 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1811 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1812 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1813 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1814 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1815 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1816 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1817 \end{tikzpicture} 1818 \end{minipage} 1819 \begin{minipage}{4cm} 1820 \begin{tikzpicture} 1821 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1822 \node (t) [def, draw=none] at (0,0) {$t_2$}; 1823 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1824 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1825 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1826 \node (cp) [def, draw=none, below left= of dh] {$c_{new,2}$}; 1827 \node (bp) [def, draw=none, below right= of dh] {$b_{new,2}$}; 1828 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1829 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1830 1831 \tikzstyle{C} = [color=black, line width=1pt] 1832 1833 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1834 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1835 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1836 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1837 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1838 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1839 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1840 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1841 \end{tikzpicture} 1842 \end{minipage} 1843 \begin{minipage}{4cm} 1844 \begin{tikzpicture} 1845 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1846 \node (t) [def, draw=none] at (0,0) {$t_3$}; 1847 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1848 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1849 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1850 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 1851 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 1852 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1853 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1854 1855 \tikzstyle{C} = [color=black, line width=1pt] 1856 1857 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1858 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1859 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1860 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1861 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1862 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1863 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1864 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1865 \end{tikzpicture} 1866 \end{minipage} 1867 \end{frame} 1868 1869 1870 \begin{frame}{Exchange: Choose!} 1871 \begin{center} 1872 \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer. 1873 \end{center} 1874 \end{frame} 1875 1876 1877 \begin{frame}{Customer: Reveal} 1878 \begin{enumerate} 1879 \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange 1880 \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange 1881 \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange 1882 \end{enumerate} 1883 \end{frame} 1884 1885 1886 \begin{frame}{Exchange: Verify ($\gamma = 2$)} 1887 \begin{minipage}{4cm} 1888 \begin{tikzpicture} 1889 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1890 \node (h) [def, draw=none] at (0,0) {$t_1$}; 1891 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1892 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 1893 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 1894 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 1895 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1896 1897 \tikzstyle{C} = [color=black, line width=1pt] 1898 1899 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1900 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 1901 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1902 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1903 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1904 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1905 \end{tikzpicture} 1906 \end{minipage} 1907 \begin{minipage}{4cm} 1908 \ 1909 \end{minipage} 1910 \begin{minipage}{4cm} 1911 \begin{tikzpicture} 1912 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1913 \node (h) [def, draw=none] at (0,0) {$t_3$}; 1914 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1915 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 1916 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 1917 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 1918 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1919 1920 \tikzstyle{C} = [color=black, line width=1pt] 1921 1922 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1923 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 1924 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1925 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1926 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1927 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1928 \end{tikzpicture} 1929 \end{minipage} 1930 \end{frame} 1931 1932 1933 \begin{frame}{Exchange: Blind sign change (RSA)} 1934 \begin{minipage}{6cm} 1935 \begin{enumerate} 1936 \item Take $f_{new,\gamma}'$. 1937 \item Compute $s' := f_{new,\gamma}'^d \mod n$. 1938 \item Send signature $s'$. 1939 \end{enumerate} 1940 \end{minipage} 1941 \begin{minipage}{6cm} 1942 \begin{tikzpicture} 1943 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1944 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 1945 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 1946 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1947 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 1948 \tikzstyle{C} = [color=black, line width=1pt] 1949 1950 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 1951 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 1952 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1953 \end{tikzpicture} 1954 \end{minipage} 1955 \end{frame} 1956 1957 1958 \begin{frame}{Customer: Unblind change (RSA)} 1959 \begin{minipage}{6cm} 1960 \begin{enumerate} 1961 \item Receive $s'$. 1962 \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$. 1963 \end{enumerate} 1964 \end{minipage} 1965 \begin{minipage}{6cm} 1966 \begin{tikzpicture} 1967 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1968 \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$}; 1969 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1970 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1971 \tikzstyle{C} = [color=black, line width=1pt] 1972 1973 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 1974 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1975 \end{tikzpicture} 1976 \end{minipage} 1977 \end{frame} 1978 1979 1980 \begin{frame}{Exchange: Allow linking change} 1981 \begin{minipage}{7cm} 1982 \begin{center} 1983 Given $C_{old}$ 1984 1985 \vspace{1cm} 1986 1987 return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$. 1988 \end{center} 1989 \end{minipage} 1990 \begin{minipage}{5cm} 1991 \begin{tikzpicture} 1992 \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em]; 1993 \node (co) [def, draw=none] at (0,0) {$C_{old}$}; 1994 \node (T) [def, draw=none, below left=of co]{$T_\gamma$}; 1995 \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1996 \node (customer) [def, draw, below right=of T] {Customer}; 1997 1998 \tikzstyle{C} = [color=black, line width=1pt] 1999 2000 \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {}; 2001 \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {}; 2002 \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link}; 2003 \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link}; 2004 \end{tikzpicture} 2005 \end{minipage} 2006 \end{frame} 2007 2008 2009 \begin{frame}{Customer: Link (threat!)} 2010 \begin{minipage}{6.3cm} 2011 \begin{enumerate} 2012 \item Have $c_{old}$. 2013 \item Obtain $T_\gamma$, $s$ from exchange 2014 \item Compute $X_\gamma = c_{old}T_\gamma$ 2015 \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$ 2016 \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$ 2017 \end{enumerate} 2018 2019 \end{minipage} 2020 \begin{minipage}{5.7cm} 2021 \begin{tikzpicture} 2022 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 2023 \node (T) [def, draw=none] at (0,0) {$T_\gamma$}; 2024 \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange}; 2025 \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 2026 \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 2027 \node (bp) [def, draw=none, below left= of dh] {$b_{new,\gamma}$}; 2028 \node (co) [def, draw=none, above right= of dh] {$c_{old}$}; 2029 \node (cp) [def, draw=none, below= of dh] {$c_{new,\gamma}$}; 2030 \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 2031 \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}}; 2032 2033 \tikzstyle{C} = [color=black, line width=1pt] 2034 2035 \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {}; 2036 \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {}; 2037 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 2038 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 2039 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 2040 \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {}; 2041 \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link}; 2042 \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link}; 2043 \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {}; 2044 \end{tikzpicture} 2045 \end{minipage} 2046 \end{frame} 2047 2048 2049 \begin{frame}{Use Cases: Refugee Camps} 2050 Today: 2051 \begin{itemize} 2052 \item Non-bankable 2053 \item Direct distribution of goods to population 2054 \item Limited economic activity in camps 2055 \item High level of economic dependence 2056 \end{itemize}\vfill\pause 2057 With GNU Taler: 2058 \begin{itemize} 2059 \item Local currency issued as basic income backed by aid 2060 \item Taxation possible based on economic status 2061 \item Local governance enabled by local taxes 2062 \item Increased economic independence and political participation 2063 \end{itemize} 2064 \end{frame}