2018-isac.tex (63064B)
1 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{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=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,8.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}(6.7cm,8.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$ 6575 USD (on 5.12.2017) 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-big-accent.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=0.8\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}{6cm} 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 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 448 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 449 \end{frame} 450 451 452 \begin{frame}{Customer: Create a planchet (EdDSA)} 453 \begin{minipage}{8cm} 454 \begin{itemize} 455 \item Pick random $c \mod o$ private key 456 \item $C = cG$ public key 457 \end{itemize} 458 \end{minipage} 459 \begin{minipage}{4cm} 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]{dice.pdf}}; 463 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 464 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 465 \tikzstyle{C} = [color=black, line width=1pt] 466 467 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 468 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 469 \end{tikzpicture} 470 \end{minipage} 471 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 472 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 473 \end{frame} 474 475 476 \begin{frame}{Customer: Blind planchet (RSA)} 477 \begin{minipage}{6cm} 478 \begin{enumerate} 479 \item Obtain public key $(e,n)$ 480 \item Compute $f := FDH(C)$, $f < n$. 481 \item Pick blinding factor $b \in \mathbb Z_n$ 482 \item Transmit $f' := f b^e \mod n$ 483 \end{enumerate} 484 \end{minipage} 485 \begin{minipage}{6cm} 486 \begin{tikzpicture} 487 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 488 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 489 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 490 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 491 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 492 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 493 \tikzstyle{C} = [color=black, line width=1pt] 494 495 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 496 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 497 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 498 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 499 \end{tikzpicture} 500 \end{minipage} 501 \end{frame} 502 503 504 \begin{frame}{Exchange: Blind sign (RSA)} 505 \begin{minipage}{6cm} 506 \begin{enumerate} 507 \item Receive $f'$. 508 \item Compute $s' := f'^d \mod n$. 509 \item Send signature $s'$. 510 \end{enumerate} 511 \end{minipage} 512 \begin{minipage}{6cm} 513 \begin{tikzpicture} 514 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 515 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 516 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 517 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 518 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 519 \tikzstyle{C} = [color=black, line width=1pt] 520 521 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 522 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 523 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 524 \end{tikzpicture} 525 \end{minipage} 526 \end{frame} 527 528 529 \begin{frame}{Customer: Unblind coin (RSA)} 530 \begin{minipage}{6cm} 531 \begin{enumerate} 532 \item Receive $s'$. 533 \item Compute $s := s' b^{-1} \mod n$ % \\ 534 % ($(f')^d = (f b^e)^d = f^d b$). 535 \end{enumerate} 536 \end{minipage} 537 \begin{minipage}{6cm} 538 \begin{tikzpicture} 539 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 540 \node (b) [def, draw=none] at (0,0) {$b$}; 541 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 542 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 543 \tikzstyle{C} = [color=black, line width=1pt] 544 545 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 546 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 547 \end{tikzpicture} 548 \end{minipage} 549 \end{frame} 550 551 552 \begin{frame}{Withdrawing coins on the Web} 553 \begin{center} 554 \includegraphics[height=0.9\textheight]{figs/taler-withdraw.pdf} 555 \end{center} 556 \end{frame} 557 558 559 \begin{frame}{Customer: Build shopping cart} 560 \begin{center} 561 \begin{tikzpicture} 562 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 563 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}}; 564 \node (cart) [draw=none, below=of m]{\includegraphics[width=0.2\textwidth]{cart.pdf}}; 565 \node (merchant) [node distance=4em and 0.5em, draw, below =of cart]{Merchant}; 566 \tikzstyle{C} = [color=black, line width=1pt]; 567 \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {}; 568 \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}}; 569 \end{tikzpicture} 570 \end{center} 571 \end{frame} 572 573 574 \begin{frame}{Merchant Integration: Wallet Detection} 575 \lstset{language=JavaScript} 576 \lstinputlisting{figs/taler-presence-js.html} 577 % \caption{Sample code to detect the Taler wallet. Allowing the 578 % Web site to detect the presence of the wallet leaks one bit 579 % of information about the user. The above logic also works 580 % if the wallet is installed while the page is open.} 581 % \label{listing:presence} 582 \end{frame} 583 584 585 \begin{frame}{Merchant Integration: Payment Request} 586 % \begin{figure}[p!] 587 \lstset{language=HTML5} 588 \lstinputlisting{figs/taler-402.html} 589 % \caption{Sample HTTP response to prompt the wallet to show an offer.} 590 % \label{listing:http-contract} 591 % \end{figure} 592 593 % \begin{figure*}[p!] 594 % \lstset{language=HTML5} 595 % \lstinputlisting{figs/taler-contract.html} 596 % \caption{Sample JavaScript code to prompt the wallet to show an offer. 597 % Here, the contract is fetched on-demand from the server. 598 % The {\tt taler\_pay()} function needs to be invoked 599 % when the user triggers the checkout.} 600 % \label{listing:contract} 601 % \end{figure*} 602 \end{frame} 603 604 605 \begin{frame}{Merchant Integration: Contract} 606 % \begin{figure*}[t!] 607 {\tiny 608 \lstset{language=JavaScript} 609 \lstinputlisting{figs/taler-contract.json} 610 % \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.} 611 % \label{listing:json-contract} 612 % \end{figure*} 613 } 614 \end{frame} 615 616 617 \begin{frame}{Merchant: Propose contract (EdDSA)} 618 \begin{minipage}{6cm} 619 \begin{enumerate} 620 \item Complete proposal $D$. 621 \item Send $D$, $EdDSA_m(D)$ 622 \end{enumerate} 623 \end{minipage} 624 \begin{minipage}{6cm} 625 \begin{tikzpicture} 626 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 627 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 628 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}}; 629 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 630 \tikzstyle{C} = [color=black, line width=1pt]; 631 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 632 \tikzstyle{C} = [color=black, line width=1pt] 633 634 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 635 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 636 \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}}; 637 \end{tikzpicture} 638 \end{minipage} 639 \end{frame} 640 641 642 \begin{frame}{Customer: Spend coin (EdDSA)} 643 \begin{minipage}{6cm} 644 \begin{enumerate} 645 \item Receive proposal $D$, $EdDSA_m(D)$. 646 \item Send $s$, $C$, $EdDSA_c(D)$ 647 \end{enumerate} 648 \end{minipage} 649 \begin{minipage}{6cm} 650 \begin{tikzpicture} 651 \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em]; 652 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 653 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 654 \node (c) [def, draw=none, above=of contract] {$c$}; 655 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 656 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 657 \tikzstyle{C} = [color=black, line width=1pt] 658 659 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 660 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 661 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 662 \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}}; 663 \end{tikzpicture} 664 \end{minipage} 665 \end{frame} 666 667 668 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 669 \begin{minipage}{6cm} 670 \begin{equation*} 671 s^e \stackrel{?}{\equiv} FDH(C) \mod n 672 \end{equation*} 673 \end{minipage} 674 \begin{minipage}{6cm} 675 \begin{minipage}{0.2\textwidth} 676 \includegraphics[width=\textwidth]{coin.pdf} 677 \end{minipage} 678 $\stackrel{?}{\Leftrightarrow}$ 679 \begin{minipage}{0.2\textwidth} 680 \includegraphics[width=\textwidth]{seal.pdf} 681 \end{minipage} 682 \end{minipage} 683 \end{frame} 684 685 686 \begin{frame}{Payment processing with Taler} 687 \begin{center} 688 \includegraphics[height=0.9\textheight]{figs/taler-pay.pdf} 689 \end{center} 690 \end{frame} 691 692 693 \begin{frame}{Giving change} 694 It would be inefficient to pay EUR 100 with 1 cent coins! 695 \begin{itemize} 696 \item Denomination key represents value of a coin. 697 \item Exchange may offer various denominations for coins. 698 \item Wallet may not have exact change! 699 \item Usability requires ability to pay given sufficient total funds. 700 \end{itemize}\pause 701 Key goals: 702 \begin{itemize} 703 \item maintain unlinkability 704 \item maintain taxability of transactions 705 \end{itemize}\pause 706 Method: 707 \begin{itemize} 708 \item Contract can specify to only pay {\em partial value} of a coin. 709 \item Exchange allows wallet to obtain {\em unlinkable change} 710 for remaining coin value. 711 \end{itemize} 712 \end{frame} 713 714 715 \begin{frame}{Refresh protocol summary} 716 \begin{itemize} 717 \item Customer asks exchange to convert old coin to new coin 718 \item Protocol ensures new coins can be recovered from old coin 719 \item[$\Rightarrow$] New coins are owned by the same entity! 720 \end{itemize} 721 Thus, the refresh protocol allows: 722 \begin{itemize} 723 \item To give unlinkable change. 724 \item To give refunds to an anonymous customer. 725 \item To expire old keys and migrate coins to new ones. 726 \item To handle protocol aborts. 727 \end{itemize} 728 \end{frame} 729 730 731 \section{Competitor analysis} 732 \begin{frame}{Competitor comparison} 733 \begin{center} \small 734 \begin{tabular}{l||c|c|c|c|c} 735 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 736 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 737 Offline & +++ & $-$$-$ & $-$$-$ & + & $-$$-$ \\ \hline 738 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 739 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 740 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 741 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 742 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 743 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 744 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 745 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 746 \end{tabular} 747 \end{center} 748 \end{frame} 749 750 751 752 \begin{frame}[fragile]{\texttt{payto:} Uniform Identifiers for Payments and Accounts} 753 \vfill 754 Like \texttt{mailto:}, but for bank accounts instead of email accounts! 755 \vfill 756 \begin{verbatim} 757 payto://<PAYMENT-METHOD>/<ACCOUNT-NR> 758 ?subject=InvoiceNr42 759 &amount=EUR:12.50 760 \end{verbatim} 761 \vfill 762 Default action: Open app to review and confirm payment. 763 \vfill 764 \end{frame} 765 766 767 \begin{frame}[fragile]{Benefits of \texttt{payto://}} 768 \begin{itemize} 769 \item Standardized way to represent financial resources (bank account, bitcoin wallet) 770 and payments to them 771 \item Useful on the client-side on the Web and for FinTech backend applications 772 \item Payment methods (such as SEPA, ACH, Bitcoin) are registered with 773 IANA and allow extra options 774 \item Under standardization with IETF as \texttt{draft-dold-payto} 775 \end{itemize} 776 \begin{center} 777 Please voice your support! 778 \end{center} 779 \end{frame} 780 781 782 783 \begin{frame}{How to support?} 784 \begin{itemize} 785 \item Join: \href{https://lists.gnu.org/mailman/listinfo/taler}{taler@gnu.org}, \href{irc://irc.freenode.net/\#taler}{\#taler} 786 \item Coding \& design: \url{https://gnunet.org/bugs/} 787 \item Translation: \url{https://git.taler.net/www.git/tree/locale/fr/LC_MESSAGES/messages.po} 788 \item Integration: \url{https://docs.taler.net/} 789 \item Donations: \url{https://gnunet.org/ev} 790 \item Funding: \url{https://taler.net/en/investors.html} 791 \end{itemize} 792 \vfill 793 \begin{center} 794 {\bf And of course we are looking for banks as partners!} 795 \end{center} 796 \end{frame} 797 798 799 \begin{frame} 800 \frametitle{Team \hfill \& \hfill Advisory Board \hfill} 801 \begin{minipage}{5cm} 802 \begin{description} 803 \item[Leon Schumacher]\ \\ co-founder 804 \item[Dr. Christian Grothoff]\ \\ co-founder 805 \item[Michael Widmer]\ \\ Jurist 806 \item[Dr. Jeff Burdges]\ \\ PostDoc 807 \item[Florian Dold]\ \\ PhD Student 808 \end{description} 809 810 \end{minipage} 811 \begin{minipage}{5.5cm} 812 {\tiny 813 \begin{description} 814 \item[Prof. Mikhail Atallah] \ \\ 815 Cryptographer, co-founder 816 Arxan Technologies Inc. 817 \item[Prof. Roberto Di Cosmo] \ \\ 818 Director IRILL 819 \item[Greg Framke] \ \\ 820 CIO Manulife, \\ 821 former COO Etrade 822 \item[Ante Gulam] \ \\ 823 Global Head of Information Security --- CISO \\ 824 MetaPack Group 825 \item[Dr. Richard Stallman]\ \\ 826 Founder of the \\ \mbox{Free Software movement} 827 \item[Chris Pagett] \ \\ 828 former Group Head Security/ \ \\ 829 Fraud/Geo Risk HSBC 830 \item[Prof. Alex Pentland] \ \\ 831 MIT Media Lab 832 \end{description} 833 } 834 \end{minipage} 835 \vfill 836 \includegraphics[height=0.1\textwidth]{../investors/team-images/leon-schumacher.jpg} \hfill 837 \includegraphics[height=0.1\textwidth]{../investors/team-images/christian-grothoff.jpg}\hfill 838 \includegraphics[height=0.1\textwidth]{../investors/team-images/michael-widmer.jpg}\hfill 839 \includegraphics[height=0.1\textwidth]{../investors/team-images/jeff-burdges.jpg}\hfill 840 \includegraphics[height=0.1\textwidth]{../investors/team-images/florian-dold.jpg}\hfill 841 \includegraphics[height=0.1\textwidth]{../investors/board-images/mja.jpg} \hfill 842 \includegraphics[height=0.1\textwidth]{../investors/board-images/roberto-di-cosmo.jpg} \hfill 843 \includegraphics[height=0.1\textwidth]{../investors/board-images/greg-framke.jpg} \hfill 844 \includegraphics[height=0.1\textwidth]{../investors/board-images/ante-gulam.jpg} \hfill 845 \includegraphics[height=0.1\textwidth]{../investors/board-images/alex-pentland.jpg} 846 %\note{Advisory board still under construction.} 847 \end{frame} 848 849 850 \begin{frame}{Conclusion} 851 \begin{center} 852 {\bf What can we do?} 853 \end{center} 854 \vfill 855 \begin{itemize} 856 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 857 \item{Engage in arms race with deliberately unregulatable blockchains, and} 858 \item{Enjoy the ``benefits'' of cash \\ 859 \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 860 \end{itemize} 861 \vfill 862 \begin{center} 863 {\bf OR} 864 \end{center} 865 \vfill 866 \begin{itemize} 867 \item{Establish free software alternative balancing social goals!} 868 \end{itemize} 869 \vfill 870 \end{frame} 871 872 873 \begin{frame} 874 \frametitle{Do you have any questions?} 875 \vfill 876 References: 877 {\tiny 878 \begin{enumerate} 879 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 880 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 881 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 882 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 883 {\em Enabling Secure Web Payments with GNU Taler}. 884 {\bf SPACE 2016}.} 885 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 886 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 887 Available upon request. 2016.} 888 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 889 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 890 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 891 \item{David Chaum, Amos Fiat and Moni Naor. 892 {\em Untraceable electronic cash}. 893 {\bf Proceedings on Advances in Cryptology, 1990}.} 894 \item{Phillip Rogaway. 895 {\em The Moral Character of Cryptographic Work}. 896 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 897 \end{enumerate} 898 } 899 \begin{center} 900 {\bf Let money facilitate trade; but ensure capital serves society.} 901 \end{center} 902 \end{frame} 903 904 905 906 907 \end{document} 908 909 910 911 912 \begin{frame}{Taler {\tt /withdraw/sign}} 913 % Customer withdrawing coins with blind signatures 914 % \bigskip 915 \begin{figure}[th] 916 \begin{minipage}[b]{0.45\linewidth} 917 \begin{center} 918 \begin{tikzpicture}[scale = 0.4, 919 transform shape, 920 msglabel/.style = { text = Black, yshift = .3cm, 921 sloped, midway }, 922 okmsg/.style = { ->, color = MidnightBlue, thick, 923 >=stealth }, 924 rstmsg/.style = { ->, color = BrickRed, thick, 925 >=stealth } 926 ] 927 \node[draw = MidnightBlue, 928 fill = CornflowerBlue, 929 minimum width = .3cm, 930 minimum height = 10cm 931 ] (h1) at (-4, 0) {}; 932 \node[draw = MidnightBlue, 933 fill = CornflowerBlue, 934 minimum width = .3cm, 935 minimum height = 10cm 936 ] (h2) at (4, 0) {}; 937 \node[above = 0cm of h1] {Wallet}; 938 \node[above = 0cm of h2] {Exchange}; 939 940 \path[->, color = MidnightBlue, very thick, >=stealth] 941 (-5, 4.5) edge 942 node[rotate=90, text = Black, yshift = .3cm] {Time} 943 (-5, -4.5); 944 \path[okmsg, dashed] 945 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 946 node[msglabel] {SEPA(RK,A)} 947 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 948 \path[okmsg] 949 ($(h1.east)+(0, -1.0)$) edge 950 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 951 ($(h2.west)+(0, -1.5)$); 952 \path[okmsg] 953 ($(h2.west)+(0, -2.0)$) edge 954 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 955 ($(h1.east)+(0, -2.5)$); 956 \path[rstmsg] 957 ($(h2.west)+(0, -3.5)$) edge 958 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 959 ($(h1.east)+(0, -4)$); 960 \node at (5.3, 0) {}; 961 \end{tikzpicture} 962 \end{center} 963 Result: $\langle c, S_{DK}(C) \rangle$. 964 \end{minipage} 965 \hspace{0.5cm} 966 \begin{minipage}[b]{0.45\linewidth} 967 \tiny 968 \begin{description} 969 \item[$A$] Some amount, $A \ge A_{DK}$ 970 \item[$RK$] Reserve key 971 \item[$DK$] Denomination key 972 \item[$b$] Blinding factor 973 \item[$B_b()$] RSA-FDH blinding % DK supressed 974 \item[$C$] Coin public key $C := cG$ 975 \item[$S_{RK}()$] EdDSA signature 976 \item[$S_{DK}()$] RSA-FDH signature 977 \end{description} 978 \end{minipage} 979 \end{figure} 980 \end{frame} 981 982 983 \begin{frame}[t]{Taler {\tt /deposit}} 984 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 985 \bigskip 986 \begin{figure}[th] 987 \begin{minipage}[b]{0.45\linewidth} 988 \begin{center} 989 \begin{tikzpicture}[scale = 0.4, 990 transform shape, 991 msglabel/.style = { text = Black, yshift = .3cm, 992 sloped, midway }, 993 okmsg/.style = { ->, color = MidnightBlue, thick, 994 >=stealth }, 995 rstmsg/.style = { ->, color = BrickRed, thick, 996 >=stealth } 997 ] 998 \node[draw = MidnightBlue, 999 fill = CornflowerBlue, 1000 minimum width = .3cm, 1001 minimum height = 10cm 1002 ] (h1) at (-4, 0) {}; 1003 \node[draw = MidnightBlue, 1004 fill = CornflowerBlue, 1005 minimum width = .3cm, 1006 minimum height = 10cm 1007 ] (h2) at (4, 0) {}; 1008 \node[above = 0cm of h1] {Merchant}; 1009 \node[above = 0cm of h2] {Exchange}; 1010 1011 \path[->, color = MidnightBlue, very thick, >=stealth] 1012 (-5, 4.5) edge 1013 node[rotate=90, text = Black, yshift = .3cm] {Time} 1014 (-5, -4.5); 1015 \path[->, color = MidnightBlue, thick, >=stealth] 1016 ($(h1.east)+(0,3)$) edge 1017 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 1018 ($(h2.west)+(0,2)$); 1019 \path[->, color = MidnightBlue, thick, >=stealth] 1020 ($(h2.west)+(0,0.5)$) edge 1021 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 1022 ($(h1.east)+(0,-0.5)$); 1023 \path[rstmsg] 1024 ($(h2.west)+(0, -2.5)$) edge 1025 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 1026 ($(h1.east)+(0, -3.5)$); 1027 \node at (5.3, 0) {}; 1028 \end{tikzpicture} 1029 \end{center} 1030 \end{minipage} 1031 \hspace{0.5cm} 1032 \begin{minipage}[b]{0.45\linewidth} 1033 \tiny 1034 \begin{description} 1035 \item[$DK$] Denomination key 1036 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 1037 \item[$c$] Private coin key, $C := cG$. 1038 \item[$S_{C}()$] EdDSA signature using $c$ 1039 \item[$D$] Deposit details 1040 \item[$SK$] Exchange's signing key 1041 \item[$S_{SK}()$] EdDSA signature using $SK$ 1042 \item[$D'$] Conficting deposit details $D' \not= D$ 1043 \end{description} 1044 \end{minipage} 1045 \end{figure} 1046 \end{frame} 1047 1048 1049 \begin{frame}{Taler {\tt /refresh/melt}} 1050 \begin{figure}[th] 1051 \begin{minipage}[b]{0.45\linewidth} 1052 \begin{center} 1053 \begin{tikzpicture}[scale = 0.4, 1054 transform shape, 1055 msglabel/.style = { text = Black, yshift = .3cm, 1056 sloped, midway }, 1057 okmsg/.style = { ->, color = MidnightBlue, thick, 1058 >=stealth }, 1059 rstmsg/.style = { ->, color = BrickRed, thick, 1060 >=stealth } 1061 ] 1062 \node[draw = MidnightBlue, 1063 fill = CornflowerBlue, 1064 minimum width = .3cm, 1065 minimum height = 10cm 1066 ] (h1) at (-4, 0) {}; 1067 \node[draw = MidnightBlue, 1068 fill = CornflowerBlue, 1069 minimum width = .3cm, 1070 minimum height = 10cm 1071 ] (h2) at (4, 0) {}; 1072 \node[above = 0cm of h1] {Customer}; 1073 \node[above = 0cm of h2] {Exchange}; 1074 1075 \path[->, color = MidnightBlue, very thick, >=stealth] 1076 (-5, 4.5) edge 1077 node[rotate=90, text = Black, yshift = .3cm] {Time} 1078 (-5, -4.5); 1079 \path[->, color = MidnightBlue, thick, >=stealth] 1080 ($(h1.east)+(0,3)$) edge 1081 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 1082 ($(h2.west)+(0,2)$); 1083 \path[->, color = MidnightBlue, thick, >=stealth] 1084 ($(h2.west)+(0,0.5)$) edge 1085 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 1086 ($(h1.east)+(0,-0.5)$); 1087 \path[rstmsg] 1088 ($(h2.west)+(0, -2.5)$) edge 1089 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 1090 ($(h1.east)+(0, -3.5)$); 1091 \node at (5.3, 0) {}; 1092 \end{tikzpicture} 1093 \end{center} 1094 \end{minipage} 1095 \hspace{0.5cm} 1096 \begin{minipage}[b]{0.45\linewidth} 1097 \tiny 1098 \begin{description} 1099 \item[$\kappa$] System-wide security parameter, usually 3. 1100 \\ \smallskip 1101 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 1102 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 1103 \item[$t_j$] Random scalar for $j<\kappa$ 1104 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 1105 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 1106 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 1107 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 1108 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 1109 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 1110 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 1111 \\ \smallskip 1112 \item[$\gamma$] Random value in $[0,\kappa)$ 1113 % \\ \smallskip 1114 % \item[$X$] Deposit or refresh 1115 \end{description} 1116 \end{minipage} 1117 \end{figure} 1118 \end{frame} 1119 1120 1121 \begin{frame}{Taler {\tt /refresh/reveal}} 1122 \begin{figure}[th] 1123 \begin{minipage}[b]{0.45\linewidth} 1124 \begin{center} 1125 \begin{tikzpicture}[scale = 0.4, 1126 transform shape, 1127 msglabel/.style = { text = Black, yshift = .3cm, 1128 sloped, midway }, 1129 okmsg/.style = { ->, color = MidnightBlue, thick, 1130 >=stealth }, 1131 rstmsg/.style = { ->, color = BrickRed, thick, 1132 >=stealth } 1133 ] 1134 \node[draw = MidnightBlue, 1135 fill = CornflowerBlue, 1136 minimum width = .3cm, 1137 minimum height = 10cm 1138 ] (h1) at (-4, 0) {}; 1139 \node[draw = MidnightBlue, 1140 fill = CornflowerBlue, 1141 minimum width = .3cm, 1142 minimum height = 10cm 1143 ] (h2) at (4, 0) {}; 1144 \node[above = 0cm of h1] {Customer}; 1145 \node[above = 0cm of h2] {Exchange}; 1146 1147 \path[->, color = MidnightBlue, very thick, >=stealth] 1148 (-5, 4.5) edge 1149 node[rotate=90, text = Black, yshift = .3cm] {Time} 1150 (-5, -4.5); 1151 \path[->, color = MidnightBlue, thick, >=stealth] 1152 ($(h1.east)+(0,3)$) edge 1153 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1154 ($(h2.west)+(0,2)$); 1155 \path[->, color = MidnightBlue, thick, >=stealth] 1156 ($(h2.west)+(0,0.5)$) edge 1157 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1158 ($(h1.east)+(0,-0.5)$); 1159 \path[rstmsg] 1160 ($(h2.west)+(0, -2.5)$) edge 1161 node[msglabel] {400 BAD REQUEST: $Z$} 1162 ($(h1.east)+(0, -3.5)$); 1163 \node at (5.3, 0) {}; 1164 \end{tikzpicture} 1165 \end{center} 1166 \end{minipage} 1167 \hspace{0.5cm} 1168 \begin{minipage}[b]{0.45\linewidth} 1169 \tiny 1170 \begin{description} 1171 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1172 \item[$t_j$] .. \\ \smallskip 1173 1174 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1175 1176 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1177 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1178 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1179 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1180 1181 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1182 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1183 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1184 1185 \item[$Z$] Cut-and-choose missmatch information 1186 \end{description} 1187 \end{minipage} 1188 \end{figure} 1189 \end{frame} 1190 1191 1192 \begin{frame}{Taler {\tt /refresh/link}} 1193 \begin{figure}[th] 1194 \begin{minipage}[b]{0.45\linewidth} 1195 \begin{center} 1196 \begin{tikzpicture}[scale = 0.4, 1197 transform shape, 1198 msglabel/.style = { text = Black, yshift = .3cm, 1199 sloped, midway }, 1200 okmsg/.style = { ->, color = MidnightBlue, thick, 1201 >=stealth }, 1202 rstmsg/.style = { ->, color = BrickRed, thick, 1203 >=stealth } 1204 ] 1205 \node[draw = MidnightBlue, 1206 fill = CornflowerBlue, 1207 minimum width = .3cm, 1208 minimum height = 10cm 1209 ] (h1) at (-4, 0) {}; 1210 \node[draw = MidnightBlue, 1211 fill = CornflowerBlue, 1212 minimum width = .3cm, 1213 minimum height = 10cm 1214 ] (h2) at (4, 0) {}; 1215 \node[above = 0cm of h1] {Customer}; 1216 \node[above = 0cm of h2] {Exchagne}; 1217 1218 \path[->, color = MidnightBlue, very thick, >=stealth] 1219 (-5, 4.5) edge 1220 node[rotate=90, text = Black, yshift = .3cm] {Time} 1221 (-5, -4.5); 1222 \path[->, color = MidnightBlue, thick, >=stealth] 1223 ($(h1.east)+(0,3)$) edge 1224 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1225 ($(h2.west)+(0,2)$); 1226 \path[->, color = MidnightBlue, thick, >=stealth] 1227 ($(h2.west)+(0,0.5)$) edge 1228 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1229 ($(h1.east)+(0,-0.5)$); 1230 \path[rstmsg] 1231 ($(h2.west)+(0, -2.5)$) edge 1232 node[msglabel] {404 NOT FOUND} 1233 ($(h1.east)+(0, -3.5)$); 1234 \node at (5.3, 0) {}; 1235 \end{tikzpicture} 1236 \end{center} 1237 \end{minipage} 1238 \hspace{0.5cm} 1239 \begin{minipage}[b]{0.45\linewidth} 1240 \tiny 1241 \begin{description} 1242 \item[$C$] Old coind public key \\ \smallskip 1243 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1244 \end{description} 1245 \end{minipage} 1246 \end{figure} 1247 \end{frame} 1248 1249 1250 \begin{frame}{Operational security} 1251 \begin{center} 1252 \resizebox{\textwidth}{!}{ 1253 \begin{tikzpicture}[ 1254 font=\sffamily, 1255 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1256 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1257 process/.style={draw,thick,circle,fill=blue!20}, 1258 sink/.style={source,fill=green!20}, 1259 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1260 dots/.style={gray,scale=2}, 1261 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1262 every node/.style={align=center}] 1263 1264 % Position the nodes using a matrix layout 1265 \matrix{ 1266 \node[source] (wallet) {Wallet}; 1267 \& \node[process] (browser) {Browser}; 1268 \& \node[process] (shop) {Web shop}; 1269 \& \node[sink] (backend) {Taler backend}; \\ 1270 }; 1271 1272 % Draw the arrows between the nodes and label them. 1273 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1274 node[midway,below] {(signal)} (wallet); 1275 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1276 node[midway,below] {(5) signed coins} (browser); 1277 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1278 node[midway,below] {(HTTPS)} (shop); 1279 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1280 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1281 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1282 node[midway,below] {(HTTPS)} (shop); 1283 \end{tikzpicture} 1284 } 1285 \end{center} 1286 \end{frame} 1287 \begin{frame}{Diffie-Hellman (ECDH)} 1288 \begin{minipage}{8cm} 1289 \begin{enumerate} 1290 \item Create private keys $c,t \mod o$ 1291 \item Define $C = cG$ 1292 \item Define $T = tG$ 1293 \item Compute DH \\ $cT = c(tG) = t(cG) = tC$ 1294 \end{enumerate} 1295 \end{minipage} 1296 \begin{minipage}{6cm} 1297 \begin{tikzpicture} 1298 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1299 \node (t) [def, draw=none] at (0,0) {$t$}; 1300 \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}}; 1301 \node (c) [def, draw=none, above left= of ct] {$c$}; 1302 \tikzstyle{C} = [color=black, line width=1pt] 1303 1304 \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {}; 1305 \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {}; 1306 \end{tikzpicture} 1307 \end{minipage} 1308 \end{frame} 1309 1310 1311 \begin{frame}{Strawman solution} 1312 \begin{minipage}{8cm} 1313 Given partially spent private coin key $c_{old}$: 1314 \begin{enumerate} 1315 % \item Let $C_{old} := c_{old}G$ (as before) 1316 \item Pick random $c_{new} \mod o$ private key 1317 \item $C_{new} = c_{new}G$ public key 1318 \item Pick random $b_{new}$ 1319 \item Compute $f_{new} := FDH(C_{new})$, $m < n$. 1320 \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$ 1321 \end{enumerate} 1322 ... and sign request for change with $c_{old}$. 1323 \end{minipage} 1324 \begin{minipage}{4cm} 1325 \begin{tikzpicture} 1326 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1327 \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1328 \node (planchet) [def, draw=none, above left= of blinded] {\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 1329 \node (cnew) [def, draw=none, above= of planchet] {$c_{new}$}; 1330 \node (bnew) [def, draw=none, above right= of blinded] {$b_{new}$}; 1331 \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1332 \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1333 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1334 1335 \tikzstyle{C} = [color=black, line width=1pt] 1336 1337 \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {}; 1338 \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {}; 1339 \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {}; 1340 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 1341 \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {}; 1342 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1343 \end{tikzpicture} 1344 \end{minipage} 1345 \pause 1346 \vfill 1347 {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!} 1348 \end{frame} 1349 1350 1351 \begin{frame}{Customer: Transfer key setup (ECDH)} 1352 \begin{minipage}{8cm} 1353 Given partially spent private coin key $c_{old}$: 1354 \begin{enumerate} 1355 \item Let $C_{old} := c_{old}G$ (as before) 1356 \item Create random private transfer key $t \mod o$ 1357 \item Compute $T := tG$ 1358 \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$ 1359 \item Derive $c_{new}$ and $b_{new}$ from $X$ 1360 \item Compute $C_{new} := c_{new}G$ 1361 \item Compute $f_{new} := FDH(C_{new})$ 1362 \item Transmit $f_{new}' := f_{new} b_{new}^e$ 1363 \end{enumerate} 1364 \end{minipage} 1365 \begin{minipage}{4cm} 1366 \begin{tikzpicture} 1367 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1368 \node (t) [def, draw=none] at (0,0) {$t$}; 1369 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1370 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1371 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1372 \node (cp) [def, draw=none, below left= of dh] {$c_{new}$}; 1373 \node (bp) [def, draw=none, below right= of dh] {$b_{new}$}; 1374 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1375 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1376 1377 \tikzstyle{C} = [color=black, line width=1pt] 1378 1379 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1380 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1381 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1382 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1383 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1384 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1385 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1386 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1387 \end{tikzpicture} 1388 \end{minipage} 1389 \end{frame} 1390 1391 1392 \begin{frame}{Cut-and-Choose} 1393 \begin{minipage}{4cm} 1394 \begin{tikzpicture} 1395 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1396 \node (t) [def, draw=none] at (0,0) {$t_1$}; 1397 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1398 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1399 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1400 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 1401 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 1402 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1403 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1404 1405 \tikzstyle{C} = [color=black, line width=1pt] 1406 1407 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1408 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1409 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1410 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1411 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1412 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1413 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1414 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1415 \end{tikzpicture} 1416 \end{minipage} 1417 \begin{minipage}{4cm} 1418 \begin{tikzpicture} 1419 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1420 \node (t) [def, draw=none] at (0,0) {$t_2$}; 1421 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1422 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1423 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1424 \node (cp) [def, draw=none, below left= of dh] {$c_{new,2}$}; 1425 \node (bp) [def, draw=none, below right= of dh] {$b_{new,2}$}; 1426 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1427 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1428 1429 \tikzstyle{C} = [color=black, line width=1pt] 1430 1431 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1432 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1433 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1434 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1435 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1436 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1437 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1438 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1439 \end{tikzpicture} 1440 \end{minipage} 1441 \begin{minipage}{4cm} 1442 \begin{tikzpicture} 1443 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1444 \node (t) [def, draw=none] at (0,0) {$t_3$}; 1445 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 1446 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1447 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 1448 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 1449 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 1450 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1451 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 1452 1453 \tikzstyle{C} = [color=black, line width=1pt] 1454 1455 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 1456 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1457 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 1458 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1459 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1460 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1461 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1462 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1463 \end{tikzpicture} 1464 \end{minipage} 1465 \end{frame} 1466 1467 1468 \begin{frame}{Exchange: Choose!} 1469 \begin{center} 1470 \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer. 1471 \end{center} 1472 \end{frame} 1473 1474 1475 \begin{frame}{Customer: Reveal} 1476 \begin{enumerate} 1477 \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange 1478 \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange 1479 \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange 1480 \end{enumerate} 1481 \end{frame} 1482 1483 1484 \begin{frame}{Exchange: Verify ($\gamma = 2$)} 1485 \begin{minipage}{4cm} 1486 \begin{tikzpicture} 1487 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1488 \node (h) [def, draw=none] at (0,0) {$t_1$}; 1489 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1490 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 1491 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 1492 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 1493 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1494 1495 \tikzstyle{C} = [color=black, line width=1pt] 1496 1497 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1498 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 1499 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1500 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1501 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1502 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1503 \end{tikzpicture} 1504 \end{minipage} 1505 \begin{minipage}{4cm} 1506 \ 1507 \end{minipage} 1508 \begin{minipage}{4cm} 1509 \begin{tikzpicture} 1510 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1511 \node (h) [def, draw=none] at (0,0) {$t_3$}; 1512 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1513 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 1514 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 1515 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 1516 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1517 1518 \tikzstyle{C} = [color=black, line width=1pt] 1519 1520 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1521 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 1522 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1523 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1524 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1525 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1526 \end{tikzpicture} 1527 \end{minipage} 1528 \end{frame} 1529 1530 1531 \begin{frame}{Exchange: Blind sign change (RSA)} 1532 \begin{minipage}{6cm} 1533 \begin{enumerate} 1534 \item Take $f_{new,\gamma}'$. 1535 \item Compute $s' := f_{new,\gamma}'^d \mod n$. 1536 \item Send signature $s'$. 1537 \end{enumerate} 1538 \end{minipage} 1539 \begin{minipage}{6cm} 1540 \begin{tikzpicture} 1541 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1542 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 1543 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 1544 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1545 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 1546 \tikzstyle{C} = [color=black, line width=1pt] 1547 1548 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 1549 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 1550 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1551 \end{tikzpicture} 1552 \end{minipage} 1553 \end{frame} 1554 1555 1556 \begin{frame}{Customer: Unblind change (RSA)} 1557 \begin{minipage}{6cm} 1558 \begin{enumerate} 1559 \item Receive $s'$. 1560 \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$. 1561 \end{enumerate} 1562 \end{minipage} 1563 \begin{minipage}{6cm} 1564 \begin{tikzpicture} 1565 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1566 \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$}; 1567 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1568 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1569 \tikzstyle{C} = [color=black, line width=1pt] 1570 1571 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 1572 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1573 \end{tikzpicture} 1574 \end{minipage} 1575 \end{frame} 1576 1577 1578 \begin{frame}{Exchange: Allow linking change} 1579 \begin{minipage}{7cm} 1580 \begin{center} 1581 Given $C_{old}$ 1582 1583 \vspace{1cm} 1584 1585 return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$. 1586 \end{center} 1587 \end{minipage} 1588 \begin{minipage}{5cm} 1589 \begin{tikzpicture} 1590 \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em]; 1591 \node (co) [def, draw=none] at (0,0) {$C_{old}$}; 1592 \node (T) [def, draw=none, below left=of co]{$T_\gamma$}; 1593 \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1594 \node (customer) [def, draw, below right=of T] {Customer}; 1595 1596 \tikzstyle{C} = [color=black, line width=1pt] 1597 1598 \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {}; 1599 \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {}; 1600 \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link}; 1601 \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link}; 1602 \end{tikzpicture} 1603 \end{minipage} 1604 \end{frame} 1605 1606 1607 \begin{frame}{Customer: Link (threat!)} 1608 \begin{minipage}{6.3cm} 1609 \begin{enumerate} 1610 \item Have $c_{old}$. 1611 \item Obtain $T_\gamma$, $s$ from exchange 1612 \item Compute $X_\gamma = c_{old}T_\gamma$ 1613 \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$ 1614 \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$ 1615 \end{enumerate} 1616 1617 \end{minipage} 1618 \begin{minipage}{5.7cm} 1619 \begin{tikzpicture} 1620 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1621 \node (T) [def, draw=none] at (0,0) {$T_\gamma$}; 1622 \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange}; 1623 \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1624 \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1625 \node (bp) [def, draw=none, below left= of dh] {$b_{new,\gamma}$}; 1626 \node (co) [def, draw=none, above right= of dh] {$c_{old}$}; 1627 \node (cp) [def, draw=none, below= of dh] {$c_{new,\gamma}$}; 1628 \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1629 \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}}; 1630 1631 \tikzstyle{C} = [color=black, line width=1pt] 1632 1633 \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {}; 1634 \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {}; 1635 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1636 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1637 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1638 \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {}; 1639 \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link}; 1640 \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link}; 1641 \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {}; 1642 \end{tikzpicture} 1643 \end{minipage} 1644 \end{frame} 1645 1646 1647 \begin{frame}{Use Cases: Refugee Camps} 1648 Today: 1649 \begin{itemize} 1650 \item Non-bankable 1651 \item Direct distribution of goods to population 1652 \item Limited economic activity in camps 1653 \item High level of economic dependence 1654 \end{itemize}\vfill\pause 1655 With GNU Taler: 1656 \begin{itemize} 1657 \item Local currency issued as basic income backed by aid 1658 \item Taxation possible based on economic status 1659 \item Local governance enabled by local taxes 1660 \item Increased economic independence and political participation 1661 \end{itemize} 1662 \end{frame}