2020-wcef.tex (41076B)
1 \pdfminorversion=3 2 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer} 3 \usepackage{amsmath} 4 \usepackage{multimedia} 5 \usepackage[utf8]{inputenc} 6 \usepackage{framed,color,ragged2e} 7 \usepackage[absolute,overlay]{textpos} 8 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 9 \usetheme{boxes} 10 \setbeamertemplate{navigation symbols}{} 11 \usepackage{xcolor} 12 \usepackage{tikz,eurosym} 13 \usepackage[normalem]{ulem} 14 \usepackage{listings} 15 16 % CSS 17 \lstdefinelanguage{CSS}{ 18 basicstyle=\ttfamily\scriptsize, 19 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}, 20 sensitive=true, 21 morecomment=[l]{//}, 22 morecomment=[s]{/*}{*/}, 23 morestring=[b]', 24 morestring=[b]", 25 alsoletter={:}, 26 alsodigit={-} 27 } 28 29 % JavaScript 30 \lstdefinelanguage{JavaScript}{ 31 basicstyle=\ttfamily\scriptsize, 32 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 33 morecomment=[s]{/*}{*/}, 34 morecomment=[l]//, 35 morestring=[b]", 36 morestring=[b]' 37 } 38 39 \lstdefinelanguage{HTML5}{ 40 basicstyle=\ttfamily\scriptsize, 41 language=html, 42 sensitive=true, 43 alsoletter={<>=-}, 44 morecomment=[s]{<!-}{-->}, 45 tag=[s], 46 otherkeywords={ 47 % General 48 >, 49 % Standard tags 50 <!DOCTYPE, 51 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 52 % body 53 </body, <body, 54 % Divs 55 </div, <div, </div>, 56 % Paragraphs 57 </p, <p, </p>, 58 % scripts 59 </script, <script, 60 % More tags... 61 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 62 }, 63 ndkeywords={ 64 % General 65 =, 66 % HTML attributes 67 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 68 % SVG attributes 69 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 70 % CSS properties 71 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 72 % CSS3 properties 73 transform:, -moz-transform:, -webkit-transform:, 74 animation:, -webkit-animation:, 75 transition:, transition-duration:, transition-property:, transition-timing-function:, 76 } 77 } 78 79 \lstdefinelanguage{JavaScript}{ 80 basicstyle=\ttfamily\scriptsize, 81 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 82 keywordstyle=\color{blue}\bfseries, 83 ndkeywords={class, export, boolean, throw, implements, import, this}, 84 ndkeywordstyle=\color{darkgray}\bfseries, 85 identifierstyle=\color{black}, 86 sensitive=false, 87 comment=[l]{//}, 88 morecomment=[s]{/*}{*/}, 89 commentstyle=\color{purple}\ttfamily, 90 stringstyle=\color{red}\ttfamily, 91 morestring=[b]', 92 morestring=[b]" 93 } 94 95 \usetikzlibrary{shapes,arrows} 96 \usetikzlibrary{positioning} 97 \usetikzlibrary{calc} 98 99 \title{GNU Taler} 100 %\subtitle{} 101 102 \setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} \includegraphics[width=0.5cm]{gnu.png} \includegraphics[width=0.5cm]{gnunet-logo-dark-text.png} \includegraphics[width=0.5cm]{ashoka.png} \includegraphics[width=4cm]{bfh.png} \hfill} 103 %\setbeamercovered{transparent=1} 104 105 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci} 106 \date{\today} 107 \institute{The GNU Project} 108 109 110 \begin{document} 111 112 \justifying 113 114 115 \begin{frame}[plain] 116 \includegraphics[width=1.2\textwidth]{hungry_dude} 117 \end{frame} 118 119 120 \begin{frame}{The Bank's Problem} 121 122 3D secure (``verified by visa'') is a nightmare: 123 124 \begin{minipage}{5cm} 125 \begin{itemize} 126 \item Complicated process 127 \item Shifts liability to consumer 128 \item Significant latency 129 \item Can refuse valid requests 130 \item Legal vendors excluded 131 \item No privacy for buyers 132 \end{itemize} 133 \end{minipage} 134 \begin{minipage}{5cm} 135 \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf} 136 \end{minipage} 137 \vfill 138 Online credit card payments will be replaced, but with what? 139 \end{frame} 140 141 142 \begin{frame}{The Bank's Problem} 143 \vfill 144 \begin{textblock*}{12cm}(0.5cm,1cm) % {block width} (coords) 145 \begin{itemize} 146 \item Global tech companies push oligopolies 147 \item Privacy and federated finance are at risk 148 % \item 30\% fees are conceivable 149 \item Economic sovereignty is in danger 150 \end{itemize} 151 \end{textblock*} 152 \begin{textblock*}{4cm}(3.5cm,5.2cm) % {block width} (coords) 153 {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}} 154 \end{textblock*} 155 \begin{textblock*}{2cm}(7cm,3cm) % {block width} (coords) 156 {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}} 157 \end{textblock*} 158 \begin{textblock*}{2cm}(3cm,3.5cm) % {block width} (coords) 159 {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}} 160 \end{textblock*} 161 \begin{textblock*}{2cm}(9cm,5cm) % {block width} (coords) 162 {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}} 163 \end{textblock*} 164 \begin{textblock*}{2cm}(7.5cm,5.9cm) % {block width} (coords) 165 {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}} 166 \end{textblock*} 167 \begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords) 168 {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}} 169 \end{textblock*} 170 \vfill 171 \end{frame} 172 173 174 \begin{frame}{Predicting the Future} 175 \begin{itemize} 176 \item Google, Apple or Facebook's Libra will be your bank and run your payment system 177 \item They target advertising based on your purchase history, location and 178 your ability to pay 179 \item They will provide more usable, faster and broadly available 180 payment solutions; our federated banking system will be history 181 % just like SMTP is now Gmail. 182 \item After dominating the payment sector, they will start to charge fees 183 befitting their oligopoly size 184 \item Competitors and vendors not aligning with their corporate ``values'' 185 will be excluded by terms of service and go bankrupt 186 % \item The imperium will have another major tool for its financial warfare 187 \end{itemize} 188 \end{frame} 189 190 191 \begin{frame} 192 \begin{center} 193 \LARGE {\bf GNU} 194 195 \vfill 196 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 197 \includegraphics[width=0.66\textwidth]{taler-logo-2018.pdf} 198 \end{center} 199 \vfill 200 \begin{center} 201 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 202 \end{center} 203 \vfill 204 \begin{textblock*}{4cm}(.5cm,7.5cm) % {block width} (coords) 205 {\Large {\bf \url{taler.net}} \\ 206 twitter@taler \\ 207 mail@taler.net } 208 \end{textblock*} 209 210 % Substitute based on who is giving the talk! 211 \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords) 212 {%\hfill {\Large {\bf Florian Dold \&} \\ 213 \hfill {\bf Christian Grothoff}} \\ 214 \hfill grothoff@taler.net 215 \end{textblock*} 216 217 \end{frame} 218 219 220 \section{What is Taler?} 221 \begin{frame}{What is Taler?} 222 \vfill 223 \begin{center} 224 Taler is an electronic instant payment system. 225 \end{center} 226 \begin{itemize} 227 \item Uses electronic coins stored in {\bf wallets} on customer's device 228 \item Like {\bf cash} 229 \item Pay in {\bf existing currencies} (i.e. EUR, USD, CHF) 230 \end{itemize} 231 \vfill 232 \end{frame} 233 234 235 \begin{frame}{Design goals for the GNU Taler Payment System} 236 GNU Taler must ... 237 \begin{enumerate} 238 \item {... be implemented as {\bf free software}.} 239 \item {... protect the {\bf privacy of buyers}.} 240 \item {... must enable the state to {\bf tax income} and crack down on 241 illegal business activities.} 242 \item {... prevent payment fraud.} 243 \item {... only {\bf disclose the minimal amount of information 244 necessary}.} 245 \item {... be usable.} 246 \item {... be efficient.} 247 \item {... avoid single points of failure.} 248 \item {... foster {\bf competition}.} 249 \end{enumerate} 250 \end{frame} 251 252 253 \begin{frame} 254 \frametitle{Taler Overview} 255 \begin{center} 256 \begin{tikzpicture} 257 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 258 \node (origin) at (0,0) {}; 259 \node (exchange) [def,above=of origin,draw]{Exchange}; 260 \node (customer) [def, draw, below left=of origin] {Customer}; 261 \node (merchant) [def, draw, below right=of origin] {Merchant}; 262 \node (auditor) [def, draw, above right=of origin]{Auditor}; 263 264 \tikzstyle{C} = [color=black, line width=1pt] 265 266 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 267 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 268 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 269 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 270 271 \end{tikzpicture} 272 \end{center} 273 \end{frame} 274 275 276 \begin{frame}{Taler in Operation} 277 \centering 278 \includegraphics[width=\textwidth]{operations.png} 279 \end{frame} 280 281 282 \begin{frame}{Usability of Taler} 283 \vfill 284 \begin{center} 285 \url{https://demo.taler.net/} 286 \end{center} 287 \begin{enumerate} 288 \item Install browser extension. 289 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 290 \item Visit the {\tt shop.demo.taler.net} to spend coins. 291 \end{enumerate} 292 \vfill 293 \end{frame} 294 295 296 \begin{frame}[c]{The Taler Snack Machine\footnote{By M. Boss and D. Hofer}} 297 \framesubtitle{Integration of a MDB/ICP to Taler gateway.\\Implementation of a NFC or QR-Code to Taler wallet interface.} 298 \vfill 299 \begin{figure} 300 \centering 301 \includegraphics[width=1.0\textwidth]{design} 302 \end{figure} 303 \end{frame} 304 305 306 \begin{frame}[t]{Software} 307 \begin{figure} 308 \centering 309 \includegraphics[width=.9\textwidth]{software_stack} 310 \end{figure} 311 \end{frame} 312 313 314 \begin{frame}[c]{How to use at WCEF: Install App on Android\footnote{\url{https://wallet.taler.net/}}} 315 \begin{figure} 316 \includegraphics[width=0.9\textwidth]{download_wallet.png} 317 \end{figure} 318 \end{frame} 319 320 \begin{frame}{How to use at WCEF: Exchange cash for e-cash} 321 \begin{figure} 322 \includegraphics[width=0.9\textwidth]{get_taler_coins.png} 323 \end{figure} 324 \end{frame} 325 326 \begin{frame}{How to use at WCEF: Buy autographed copy of GRM!} 327 \begin{figure} 328 \includegraphics[width=0.9\textwidth]{get_snacks.png} 329 \end{figure} 330 \end{frame} 331 332 \begin{frame}[c]{How to use afterwards: Shop online\footnote{Operational until 31.1.2020}} 333 \vfill 334 \begin{center} 335 \url{https://buywith.taler.net/} 336 \end{center} 337 \vfill 338 \end{frame} 339 340 341 \begin{frame}{Use Case: Journalism} 342 Today: 343 \begin{itemize} 344 \item Corporate structure % ($\Rightarrow$ filter) 345 \item Advertising primary revenue % ($\Rightarrow$ dependence) 346 \item Tracking readers critical for business success 347 \item Journalism and marketing hard to distinguish 348 \end{itemize}\vfill\pause 349 With GNU Taler: 350 \begin{itemize} 351 \item One-click micropayments per article 352 \item Hosting requires no expertise % (no PCI DSS) 353 \item Reader-funded reporting separated from marketing 354 \item Readers can remain anonymous 355 \end{itemize} 356 \end{frame} 357 358 359 \begin{frame}{Use Case: Anti-Spam} 360 Today, p$\equiv$p provides authenticated encryption for e-mail: 361 \begin{itemize} 362 \item Free software 363 \item Easy to use opportunistic encryption 364 \item Available for Outlook, Android, Enigmail 365 \item Spies \& spam filters can no longer inspect content 366 \end{itemize}\vfill\pause 367 With GNU Taler: 368 \begin{itemize} 369 \item Peer-to-peer payments via e-mail 370 \item If unsolicited sender, hide messages from user \& 371 automatically request payment from sender 372 \item Sender can attach payment to be moved to inbox 373 \item Receiver may grant refund to sender 374 \end{itemize} 375 \end{frame} 376 377 378 \begin{frame} 379 \vfill 380 \begin{center} 381 {\bf Where might this get us exactly?} 382 \end{center} 383 \vfill 384 \end{frame} 385 386 387 \begin{frame}{Visions} 388 \begin{itemize} 389 \item Be paid to read advertising, starting with spam 390 \item Give welfare without intermediaries taking huge cuts 391 % \item Forster regional trade via regional currencies 392 \item Eliminate corruption by making all income visible 393 \item Stop the mining by making crypto-currencies useless for 394 anything but crime 395 \end{itemize} 396 \end{frame} 397 398 399 \section{Competitor analysis} 400 \begin{frame}{Competitor comparison} 401 \begin{center} \small 402 \begin{tabular}{l||c|c|c|c|c} 403 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 404 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 405 Offline & +++ & $-$$-$ & $-$$-$ & + & $-$$-$ \\ \hline 406 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 407 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 408 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 409 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 410 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 411 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 412 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 413 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 414 \end{tabular} 415 \end{center} 416 \end{frame} 417 418 419 \begin{frame} 420 \vfill 421 \begin{center} 422 {\bf Technology} 423 \end{center} 424 \vfill 425 \end{frame} 426 427 428 \begin{frame}{How does it work?} 429 We use a few ancient constructions: 430 \begin{itemize} 431 \item Cryptographic hash function (1989) 432 \item Blind signature (1983) 433 \item Schnorr signature (1989) 434 \item Diffie-Hellman key exchange (1976) 435 \item Cut-and-choose zero-knowledge proof (1985) 436 \end{itemize} 437 But of course we use modern instantiations. 438 \end{frame} 439 440 441 \begin{frame}{Exchange setup: Create a denomination key (RSA)} 442 \begin{minipage}{6cm} 443 \begin{enumerate} 444 \item Pick random primes $p,q$. 445 \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$ 446 \item Pick small $e < \phi(n)$ such that 447 $d := e^{-1} \mod \phi(n)$ exists. 448 \item Publish public key $(e,n)$. 449 \end{enumerate} 450 \end{minipage} 451 \begin{minipage}{6cm} 452 \begin{tikzpicture} 453 \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em]; 454 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 455 \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$}; 456 \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}}; 457 \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 458 459 \tikzstyle{C} = [color=black, line width=1pt] 460 461 \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {}; 462 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 463 \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {}; 464 \end{tikzpicture} 465 % \includegraphics[width=0.4\textwidth]{seal.pdf} 466 \end{minipage} 467 \end{frame} 468 469 470 \begin{frame}{Merchant: Create a signing key (EdDSA)} 471 \begin{minipage}{6cm} 472 \begin{itemize} 473 \item pick random $m \mod o$ as private key 474 \item $M = mG$ public key 475 \end{itemize} 476 \end{minipage} 477 \begin{minipage}{6cm} 478 \begin{tikzpicture} 479 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 480 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 481 \node (m) [draw=none, below = of origin] at (0,0) {$m$}; 482 \node (seal) [draw=none, below=of m]{M}; 483 \tikzstyle{C} = [color=black, line width=1pt] 484 485 \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {}; 486 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 487 \end{tikzpicture} 488 \end{minipage} 489 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 490 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 491 \end{frame} 492 493 494 \begin{frame}{Customer: Create a planchet (EdDSA)} 495 \begin{minipage}{8cm} 496 \begin{itemize} 497 \item Pick random $c \mod o$ private key 498 \item $C = cG$ public key 499 \end{itemize} 500 \end{minipage} 501 \begin{minipage}{4cm} 502 \begin{tikzpicture} 503 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 504 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 505 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 506 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 507 \tikzstyle{C} = [color=black, line width=1pt] 508 509 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 510 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 511 \end{tikzpicture} 512 \end{minipage} 513 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 514 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 515 \end{frame} 516 517 518 \begin{frame}{Customer: Blind planchet (RSA)} 519 \begin{minipage}{6cm} 520 \begin{enumerate} 521 \item Obtain public key $(e,n)$ 522 \item Compute $f := FDH(C)$, $f < n$. 523 \item Pick blinding factor $b \in \mathbb Z_n$ 524 \item Transmit $f' := f b^e \mod n$ 525 \end{enumerate} 526 \end{minipage} 527 \begin{minipage}{6cm} 528 \begin{tikzpicture} 529 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 530 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 531 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 532 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 533 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 534 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 535 \tikzstyle{C} = [color=black, line width=1pt] 536 537 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 538 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 539 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 540 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 541 \end{tikzpicture} 542 \end{minipage} 543 \end{frame} 544 545 546 \begin{frame}{Exchange: Blind sign (RSA)} 547 \begin{minipage}{6cm} 548 \begin{enumerate} 549 \item Receive $f'$. 550 \item Compute $s' := f'^d \mod n$. 551 \item Send signature $s'$. 552 \end{enumerate} 553 \end{minipage} 554 \begin{minipage}{6cm} 555 \begin{tikzpicture} 556 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 557 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 558 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 559 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 560 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 561 \tikzstyle{C} = [color=black, line width=1pt] 562 563 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 564 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 565 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 566 \end{tikzpicture} 567 \end{minipage} 568 \end{frame} 569 570 571 \begin{frame}{Customer: Unblind coin (RSA)} 572 \begin{minipage}{6cm} 573 \begin{enumerate} 574 \item Receive $s'$. 575 \item Compute $s := s' b^{-1} \mod n$ % \\ 576 % ($(f')^d = (f b^e)^d = f^d b$). 577 \end{enumerate} 578 \end{minipage} 579 \begin{minipage}{6cm} 580 \begin{tikzpicture} 581 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 582 \node (b) [def, draw=none] at (0,0) {$b$}; 583 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 584 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 585 \tikzstyle{C} = [color=black, line width=1pt] 586 587 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 588 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 589 \end{tikzpicture} 590 \end{minipage} 591 \end{frame} 592 593 594 \begin{frame}{Customer: Build shopping cart} 595 \begin{center} 596 \begin{tikzpicture} 597 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 598 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}}; 599 \node (cart) [draw=none, below=of m]{\includegraphics[width=0.2\textwidth]{cart.pdf}}; 600 \node (merchant) [node distance=4em and 0.5em, draw, below =of cart]{Merchant}; 601 \tikzstyle{C} = [color=black, line width=1pt]; 602 \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {}; 603 \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}}; 604 \end{tikzpicture} 605 \end{center} 606 \end{frame} 607 608 609 \begin{frame}{Merchant: Propose contract (EdDSA)} 610 \begin{minipage}{6cm} 611 \begin{enumerate} 612 \item Complete proposal $D$. 613 \item Send $D$, $EdDSA_m(D)$ 614 \end{enumerate} 615 \end{minipage} 616 \begin{minipage}{6cm} 617 \begin{tikzpicture} 618 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 619 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 620 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}}; 621 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 622 \tikzstyle{C} = [color=black, line width=1pt]; 623 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 624 \tikzstyle{C} = [color=black, line width=1pt] 625 626 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 627 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 628 \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}}; 629 \end{tikzpicture} 630 \end{minipage} 631 \end{frame} 632 633 634 \begin{frame}{Customer: Spend coin (EdDSA)} 635 \begin{minipage}{6cm} 636 \begin{enumerate} 637 \item Receive proposal $D$, $EdDSA_m(D)$. 638 \item Send $s$, $C$, $EdDSA_c(D)$ 639 \end{enumerate} 640 \end{minipage} 641 \begin{minipage}{6cm} 642 \begin{tikzpicture} 643 \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em]; 644 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 645 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 646 \node (c) [def, draw=none, above=of contract] {$c$}; 647 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 648 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 649 \tikzstyle{C} = [color=black, line width=1pt] 650 651 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 652 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 653 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 654 \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}}; 655 \end{tikzpicture} 656 \end{minipage} 657 \end{frame} 658 659 660 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 661 \begin{minipage}{6cm} 662 \begin{equation*} 663 s^e \stackrel{?}{\equiv} FDH(C) \mod n 664 \end{equation*} 665 \end{minipage} 666 \begin{minipage}{6cm} 667 \begin{minipage}{0.2\textwidth} 668 \includegraphics[width=\textwidth]{coin.pdf} 669 \end{minipage} 670 $\stackrel{?}{\Leftrightarrow}$ 671 \begin{minipage}{0.2\textwidth} 672 \includegraphics[width=\textwidth]{seal.pdf} 673 \end{minipage} 674 \end{minipage} 675 \end{frame} 676 677 678 \begin{frame}{Technology} 679 GNU Taler additionally offers: 680 \begin{itemize} 681 \item Giving change, can provide refunds 682 \item Integration with HTTP, handles network failures 683 \item High performance 684 \item Bounded losses on key compromise 685 \item Formal security proofs 686 \item ... 687 \end{itemize} 688 \begin{center} 689 \includegraphics[width=0.5\textwidth]{provable-security.png} 690 \end{center} 691 More information at \url{https://taler.net/}. 692 \end{frame} 693 694 695 \begin{frame}{Conclusion} 696 \begin{center} 697 {\bf What can we do?} 698 \end{center} 699 \vfill 700 \begin{itemize} 701 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 702 \item{Engage in arms race with deliberately unregulatable blockchains, and} 703 \item{Enjoy the ``benefits'' of cash \\ 704 \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 705 \end{itemize} 706 \vfill 707 \begin{center} 708 {\bf OR} 709 \end{center} 710 \vfill 711 \begin{itemize} 712 \item{Establish free software alternative balancing social goals!} 713 \end{itemize} 714 \vfill 715 \end{frame} 716 717 718 \begin{frame} 719 \frametitle{Do you have any questions?} 720 \vfill 721 References: 722 {\tiny 723 \begin{enumerate} 724 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 725 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 726 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 727 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 728 {\em Enabling Secure Web Payments with GNU Taler}. 729 {\bf SPACE 2016}.} 730 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 731 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 732 Available upon request. 2016.} 733 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 734 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 735 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 736 \item{David Chaum, Amos Fiat and Moni Naor. 737 {\em Untraceable electronic cash}. 738 {\bf Proceedings on Advances in Cryptology, 1990}.} 739 \item{Phillip Rogaway. 740 {\em The Moral Character of Cryptographic Work}. 741 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 742 \end{enumerate} 743 } 744 \end{frame} 745 746 747 \begin{frame}{The Distraction: Bitcoin} 748 749 \begin{itemize} 750 \item Unregulated payment system and currency: 751 \item[] $\Rightarrow$ lack of regulation is a feature! 752 \item Implemented in free software 753 \item Decentralised peer-to-peer system \pause 754 \item Decentralised banking requires solving Byzantine consensus 755 \item Creative solution: tie initial accumulation to solving consensus \pause 756 \item[] $\Rightarrow$ Proof-of-work advances ledger 757 \item[] $\Rightarrow$ Very expensive banking 758 \end{itemize} 759 \end{frame} 760 761 762 \begin{frame} 763 \frametitle{\includegraphics[height=0.5cm]{pics/bitcoin.jpeg}?} 764 \centering 765 \noindent 766 \includegraphics[width=\textwidth]{pics/btc-transaction-cost.png} 767 768 Current average transaction value: $\approx$ 1000 USD 769 \end{frame} 770 771 772 \begin{frame} 773 \vfill 774 \begin{center} 775 {\bf What is there?} 776 \end{center} 777 \vfill 778 \end{frame} 779 780 781 \begin{frame}{Components} 782 \begin{itemize} 783 \item REST APIs, C APIs 784 \item Command-line, WebExtension (Firefox, Chrome, Chromium, Brave) and Android wallet 785 \item GLS bank integration (libeufin, WiP) 786 \item Escrow/backup solution (Anastasis, WiP) 787 \item Merchant backend \& backoffice (needs improvements) 788 \item WooCommerce plugin (needs update) 789 \item Taler-enabled vending machine (MDB) 790 \item Sample Web frontends 791 \end{itemize} 792 \end{frame} 793 794 795 \end{document} 796 797 798 799 800 \begin{frame}{Taler {\tt /withdraw/sign}} 801 % Customer withdrawing coins with blind signatures 802 % \bigskip 803 \begin{figure}[th] 804 \begin{minipage}[b]{0.45\linewidth} 805 \begin{center} 806 \begin{tikzpicture}[scale = 0.4, 807 transform shape, 808 msglabel/.style = { text = Black, yshift = .3cm, 809 sloped, midway }, 810 okmsg/.style = { ->, color = MidnightBlue, thick, 811 >=stealth }, 812 rstmsg/.style = { ->, color = BrickRed, thick, 813 >=stealth } 814 ] 815 \node[draw = MidnightBlue, 816 fill = CornflowerBlue, 817 minimum width = .3cm, 818 minimum height = 10cm 819 ] (h1) at (-4, 0) {}; 820 \node[draw = MidnightBlue, 821 fill = CornflowerBlue, 822 minimum width = .3cm, 823 minimum height = 10cm 824 ] (h2) at (4, 0) {}; 825 \node[above = 0cm of h1] {Wallet}; 826 \node[above = 0cm of h2] {Exchange}; 827 828 \path[->, color = MidnightBlue, very thick, >=stealth] 829 (-5, 4.5) edge 830 node[rotate=90, text = Black, yshift = .3cm] {Time} 831 (-5, -4.5); 832 \path[okmsg, dashed] 833 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 834 node[msglabel] {SEPA(RK,A)} 835 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 836 \path[okmsg] 837 ($(h1.east)+(0, -1.0)$) edge 838 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 839 ($(h2.west)+(0, -1.5)$); 840 \path[okmsg] 841 ($(h2.west)+(0, -2.0)$) edge 842 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 843 ($(h1.east)+(0, -2.5)$); 844 \path[rstmsg] 845 ($(h2.west)+(0, -3.5)$) edge 846 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 847 ($(h1.east)+(0, -4)$); 848 \node at (5.3, 0) {}; 849 \end{tikzpicture} 850 \end{center} 851 Result: $\langle c, S_{DK}(C) \rangle$. 852 \end{minipage} 853 \hspace{0.5cm} 854 \begin{minipage}[b]{0.45\linewidth} 855 \tiny 856 \begin{description} 857 \item[$A$] Some amount, $A \ge A_{DK}$ 858 \item[$RK$] Reserve key 859 \item[$DK$] Denomination key 860 \item[$b$] Blinding factor 861 \item[$B_b()$] RSA-FDH blinding % DK supressed 862 \item[$C$] Coin public key $C := cG$ 863 \item[$S_{RK}()$] EdDSA signature 864 \item[$S_{DK}()$] RSA-FDH signature 865 \end{description} 866 \end{minipage} 867 \end{figure} 868 \end{frame} 869 870 871 \begin{frame}[t]{Taler {\tt /deposit}} 872 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 873 \bigskip 874 \begin{figure}[th] 875 \begin{minipage}[b]{0.45\linewidth} 876 \begin{center} 877 \begin{tikzpicture}[scale = 0.4, 878 transform shape, 879 msglabel/.style = { text = Black, yshift = .3cm, 880 sloped, midway }, 881 okmsg/.style = { ->, color = MidnightBlue, thick, 882 >=stealth }, 883 rstmsg/.style = { ->, color = BrickRed, thick, 884 >=stealth } 885 ] 886 \node[draw = MidnightBlue, 887 fill = CornflowerBlue, 888 minimum width = .3cm, 889 minimum height = 10cm 890 ] (h1) at (-4, 0) {}; 891 \node[draw = MidnightBlue, 892 fill = CornflowerBlue, 893 minimum width = .3cm, 894 minimum height = 10cm 895 ] (h2) at (4, 0) {}; 896 \node[above = 0cm of h1] {Merchant}; 897 \node[above = 0cm of h2] {Exchange}; 898 899 \path[->, color = MidnightBlue, very thick, >=stealth] 900 (-5, 4.5) edge 901 node[rotate=90, text = Black, yshift = .3cm] {Time} 902 (-5, -4.5); 903 \path[->, color = MidnightBlue, thick, >=stealth] 904 ($(h1.east)+(0,3)$) edge 905 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 906 ($(h2.west)+(0,2)$); 907 \path[->, color = MidnightBlue, thick, >=stealth] 908 ($(h2.west)+(0,0.5)$) edge 909 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 910 ($(h1.east)+(0,-0.5)$); 911 \path[rstmsg] 912 ($(h2.west)+(0, -2.5)$) edge 913 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 914 ($(h1.east)+(0, -3.5)$); 915 \node at (5.3, 0) {}; 916 \end{tikzpicture} 917 \end{center} 918 \end{minipage} 919 \hspace{0.5cm} 920 \begin{minipage}[b]{0.45\linewidth} 921 \tiny 922 \begin{description} 923 \item[$DK$] Denomination key 924 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 925 \item[$c$] Private coin key, $C := cG$. 926 \item[$S_{C}()$] EdDSA signature using $c$ 927 \item[$D$] Deposit details 928 \item[$SK$] Exchange's signing key 929 \item[$S_{SK}()$] EdDSA signature using $SK$ 930 \item[$D'$] Conficting deposit details $D' \not= D$ 931 \end{description} 932 \end{minipage} 933 \end{figure} 934 \end{frame} 935 936 937 \begin{frame}{Taler {\tt /refresh/melt}} 938 \begin{figure}[th] 939 \begin{minipage}[b]{0.45\linewidth} 940 \begin{center} 941 \begin{tikzpicture}[scale = 0.4, 942 transform shape, 943 msglabel/.style = { text = Black, yshift = .3cm, 944 sloped, midway }, 945 okmsg/.style = { ->, color = MidnightBlue, thick, 946 >=stealth }, 947 rstmsg/.style = { ->, color = BrickRed, thick, 948 >=stealth } 949 ] 950 \node[draw = MidnightBlue, 951 fill = CornflowerBlue, 952 minimum width = .3cm, 953 minimum height = 10cm 954 ] (h1) at (-4, 0) {}; 955 \node[draw = MidnightBlue, 956 fill = CornflowerBlue, 957 minimum width = .3cm, 958 minimum height = 10cm 959 ] (h2) at (4, 0) {}; 960 \node[above = 0cm of h1] {Customer}; 961 \node[above = 0cm of h2] {Exchange}; 962 963 \path[->, color = MidnightBlue, very thick, >=stealth] 964 (-5, 4.5) edge 965 node[rotate=90, text = Black, yshift = .3cm] {Time} 966 (-5, -4.5); 967 \path[->, color = MidnightBlue, thick, >=stealth] 968 ($(h1.east)+(0,3)$) edge 969 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 970 ($(h2.west)+(0,2)$); 971 \path[->, color = MidnightBlue, thick, >=stealth] 972 ($(h2.west)+(0,0.5)$) edge 973 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 974 ($(h1.east)+(0,-0.5)$); 975 \path[rstmsg] 976 ($(h2.west)+(0, -2.5)$) edge 977 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 978 ($(h1.east)+(0, -3.5)$); 979 \node at (5.3, 0) {}; 980 \end{tikzpicture} 981 \end{center} 982 \end{minipage} 983 \hspace{0.5cm} 984 \begin{minipage}[b]{0.45\linewidth} 985 \tiny 986 \begin{description} 987 \item[$\kappa$] System-wide security parameter, usually 3. 988 \\ \smallskip 989 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 990 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 991 \item[$t_j$] Random scalar for $j<\kappa$ 992 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 993 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 994 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 995 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 996 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 997 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 998 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 999 \\ \smallskip 1000 \item[$\gamma$] Random value in $[0,\kappa)$ 1001 % \\ \smallskip 1002 % \item[$X$] Deposit or refresh 1003 \end{description} 1004 \end{minipage} 1005 \end{figure} 1006 \end{frame} 1007 1008 1009 \begin{frame}{Taler {\tt /refresh/reveal}} 1010 \begin{figure}[th] 1011 \begin{minipage}[b]{0.45\linewidth} 1012 \begin{center} 1013 \begin{tikzpicture}[scale = 0.4, 1014 transform shape, 1015 msglabel/.style = { text = Black, yshift = .3cm, 1016 sloped, midway }, 1017 okmsg/.style = { ->, color = MidnightBlue, thick, 1018 >=stealth }, 1019 rstmsg/.style = { ->, color = BrickRed, thick, 1020 >=stealth } 1021 ] 1022 \node[draw = MidnightBlue, 1023 fill = CornflowerBlue, 1024 minimum width = .3cm, 1025 minimum height = 10cm 1026 ] (h1) at (-4, 0) {}; 1027 \node[draw = MidnightBlue, 1028 fill = CornflowerBlue, 1029 minimum width = .3cm, 1030 minimum height = 10cm 1031 ] (h2) at (4, 0) {}; 1032 \node[above = 0cm of h1] {Customer}; 1033 \node[above = 0cm of h2] {Exchange}; 1034 1035 \path[->, color = MidnightBlue, very thick, >=stealth] 1036 (-5, 4.5) edge 1037 node[rotate=90, text = Black, yshift = .3cm] {Time} 1038 (-5, -4.5); 1039 \path[->, color = MidnightBlue, thick, >=stealth] 1040 ($(h1.east)+(0,3)$) edge 1041 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1042 ($(h2.west)+(0,2)$); 1043 \path[->, color = MidnightBlue, thick, >=stealth] 1044 ($(h2.west)+(0,0.5)$) edge 1045 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1046 ($(h1.east)+(0,-0.5)$); 1047 \path[rstmsg] 1048 ($(h2.west)+(0, -2.5)$) edge 1049 node[msglabel] {400 BAD REQUEST: $Z$} 1050 ($(h1.east)+(0, -3.5)$); 1051 \node at (5.3, 0) {}; 1052 \end{tikzpicture} 1053 \end{center} 1054 \end{minipage} 1055 \hspace{0.5cm} 1056 \begin{minipage}[b]{0.45\linewidth} 1057 \tiny 1058 \begin{description} 1059 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1060 \item[$t_j$] .. \\ \smallskip 1061 1062 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1063 1064 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1065 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1066 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1067 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1068 1069 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1070 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1071 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1072 1073 \item[$Z$] Cut-and-choose missmatch information 1074 \end{description} 1075 \end{minipage} 1076 \end{figure} 1077 \end{frame} 1078 1079 1080 \begin{frame}{Taler {\tt /refresh/link}} 1081 \begin{figure}[th] 1082 \begin{minipage}[b]{0.45\linewidth} 1083 \begin{center} 1084 \begin{tikzpicture}[scale = 0.4, 1085 transform shape, 1086 msglabel/.style = { text = Black, yshift = .3cm, 1087 sloped, midway }, 1088 okmsg/.style = { ->, color = MidnightBlue, thick, 1089 >=stealth }, 1090 rstmsg/.style = { ->, color = BrickRed, thick, 1091 >=stealth } 1092 ] 1093 \node[draw = MidnightBlue, 1094 fill = CornflowerBlue, 1095 minimum width = .3cm, 1096 minimum height = 10cm 1097 ] (h1) at (-4, 0) {}; 1098 \node[draw = MidnightBlue, 1099 fill = CornflowerBlue, 1100 minimum width = .3cm, 1101 minimum height = 10cm 1102 ] (h2) at (4, 0) {}; 1103 \node[above = 0cm of h1] {Customer}; 1104 \node[above = 0cm of h2] {Exchagne}; 1105 1106 \path[->, color = MidnightBlue, very thick, >=stealth] 1107 (-5, 4.5) edge 1108 node[rotate=90, text = Black, yshift = .3cm] {Time} 1109 (-5, -4.5); 1110 \path[->, color = MidnightBlue, thick, >=stealth] 1111 ($(h1.east)+(0,3)$) edge 1112 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1113 ($(h2.west)+(0,2)$); 1114 \path[->, color = MidnightBlue, thick, >=stealth] 1115 ($(h2.west)+(0,0.5)$) edge 1116 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1117 ($(h1.east)+(0,-0.5)$); 1118 \path[rstmsg] 1119 ($(h2.west)+(0, -2.5)$) edge 1120 node[msglabel] {404 NOT FOUND} 1121 ($(h1.east)+(0, -3.5)$); 1122 \node at (5.3, 0) {}; 1123 \end{tikzpicture} 1124 \end{center} 1125 \end{minipage} 1126 \hspace{0.5cm} 1127 \begin{minipage}[b]{0.45\linewidth} 1128 \tiny 1129 \begin{description} 1130 \item[$C$] Old coind public key \\ \smallskip 1131 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1132 \end{description} 1133 \end{minipage} 1134 \end{figure} 1135 \end{frame} 1136 1137 1138 \begin{frame}{Operational security} 1139 \begin{center} 1140 \resizebox{\textwidth}{!}{ 1141 \begin{tikzpicture}[ 1142 font=\sffamily, 1143 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1144 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1145 process/.style={draw,thick,circle,fill=blue!20}, 1146 sink/.style={source,fill=green!20}, 1147 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1148 dots/.style={gray,scale=2}, 1149 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1150 every node/.style={align=center}] 1151 1152 % Position the nodes using a matrix layout 1153 \matrix{ 1154 \node[source] (wallet) {Wallet}; 1155 \& \node[process] (browser) {Browser}; 1156 \& \node[process] (shop) {Web shop}; 1157 \& \node[sink] (backend) {Taler backend}; \\ 1158 }; 1159 1160 % Draw the arrows between the nodes and label them. 1161 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1162 node[midway,below] {(signal)} (wallet); 1163 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1164 node[midway,below] {(5) signed coins} (browser); 1165 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1166 node[midway,below] {(HTTPS)} (shop); 1167 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1168 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1169 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1170 node[midway,below] {(HTTPS)} (shop); 1171 \end{tikzpicture} 1172 } 1173 \end{center} 1174 \end{frame}