2021-monetative.tex (60408B)
1 \pdfminorversion=3 2 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer} 3 \usepackage{amsmath} 4 \usepackage{multimedia} 5 \usepackage[utf8]{inputenc} 6 \usepackage{framed,color,ragged2e} 7 \usepackage[absolute,overlay]{textpos} 8 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 9 \usetheme{boxes} 10 \setbeamertemplate{navigation symbols}{} 11 \usepackage{xcolor} 12 \usepackage{tikz,eurosym} 13 \usepackage[normalem]{ulem} 14 \usepackage{listings} 15 \usepackage{adjustbox} 16 17 % CSS 18 \lstdefinelanguage{CSS}{ 19 basicstyle=\ttfamily\scriptsize, 20 keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width, transition:, transform:, transition-property, transition-duration, transition-timing-function}, 21 sensitive=true, 22 morecomment=[l]{//}, 23 morecomment=[s]{/*}{*/}, 24 morestring=[b]', 25 morestring=[b]", 26 alsoletter={:}, 27 alsodigit={-} 28 } 29 30 % JavaScript 31 \lstdefinelanguage{JavaScript}{ 32 basicstyle=\ttfamily\scriptsize, 33 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 34 morecomment=[s]{/*}{*/}, 35 morecomment=[l]//, 36 morestring=[b]", 37 morestring=[b]' 38 } 39 40 \lstdefinelanguage{HTML5}{ 41 basicstyle=\ttfamily\scriptsize, 42 language=html, 43 sensitive=true, 44 alsoletter={<>=-}, 45 morecomment=[s]{<!-}{-->}, 46 tag=[s], 47 otherkeywords={ 48 % General 49 >, 50 % Standard tags 51 <!DOCTYPE, 52 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 53 % body 54 </body, <body, 55 % Divs 56 </div, <div, </div>, 57 % Paragraphs 58 </p, <p, </p>, 59 % scripts 60 </script, <script, 61 % More tags... 62 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 63 }, 64 ndkeywords={ 65 % General 66 =, 67 % HTML attributes 68 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 69 % SVG attributes 70 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 71 % CSS properties 72 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 73 % CSS3 properties 74 transform:, -moz-transform:, -webkit-transform:, 75 animation:, -webkit-animation:, 76 transition:, transition-duration:, transition-property:, transition-timing-function:, 77 } 78 } 79 80 \lstdefinelanguage{JavaScript}{ 81 basicstyle=\ttfamily\scriptsize, 82 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 83 keywordstyle=\color{blue}\bfseries, 84 ndkeywords={class, export, boolean, throw, implements, import, this}, 85 ndkeywordstyle=\color{darkgray}\bfseries, 86 identifierstyle=\color{black}, 87 sensitive=false, 88 comment=[l]{//}, 89 morecomment=[s]{/*}{*/}, 90 commentstyle=\color{purple}\ttfamily, 91 stringstyle=\color{red}\ttfamily, 92 morestring=[b]', 93 morestring=[b]" 94 } 95 96 \usetikzlibrary{shapes,arrows} 97 \usetikzlibrary{positioning} 98 \usetikzlibrary{calc} 99 100 \title{GNU Taler} 101 %\subtitle{} 102 103 \setbeamertemplate{navigation symbols}{\includegraphics[width=1cm]{inria.pdf} \includegraphics[width=2.3cm]{bfh.png} \includegraphics[width=1.6cm]{fub.pdf} \includegraphics[width=0.4cm]{ashoka.png} \includegraphics[width=0.4cm]{gnu.png} \includegraphics[width=1cm]{logo-2020.jpg} \hfill} 104 %\setbeamercovered{transparent=1} 105 106 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci} 107 \date{\today} 108 \institute{The GNU Project} 109 110 111 \begin{document} 112 113 \justifying 114 115 \begin{frame} 116 \begin{center} 117 \LARGE {\bf GNU} 118 119 \vfill 120 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 121 \includegraphics[width=0.66\textwidth]{logo-2020.jpg} 122 \end{center} 123 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) 124 {\Large {\bf \href{https://taler.net/}{taler.net}} \\ 125 \href{https://twitter.com/taler}{taler@twitter} \\ 126 \href{https://taler-systems.com/}{taler-systems.com}} 127 \end{textblock*} 128 129 % Substitute based on who is giving the talk! 130 \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords) 131 {%\hfill {\Large {\bf Florian Dold \&} \\ 132 \hfill {\bf Christian Grothoff}} \\ 133 \hfill grothoff@taler.net 134 \end{textblock*} 135 136 \end{frame} 137 138 139 140 \section{What is GNU Taler?} 141 \begin{frame}{What is GNU Taler?} 142 \begin{center} 143 Taler is an electronic instant payment system. 144 \end{center} 145 \begin{itemize} 146 \item Uses electronic coins stored in {\bf wallets} on customer's device 147 \item Like {\bf cash} 148 \item Pay in {\bf existing currencies} (i.e. EUR, USD, BTC), \\ 149 or use it to create new {\bf regional currencies} 150 \end{itemize} 151 \vfill 152 \pause 153 \noindent 154 However, Taler is 155 \begin{itemize} 156 \item \emph{not} a currency 157 \item \emph{not} a long-term store of value 158 \item \emph{not} a network or instance of a system 159 \item \emph{not} decentralized 160 \item \emph{not} based on proof-of-work or proof-of-stake 161 \item \emph{not} a speculative asset / ``get-rich-quick scheme'' 162 \end{itemize} 163 \end{frame} 164 165 166 \begin{frame}{Design principles} 167 \framesubtitle{https://taler.net/en/principles.html} 168 GNU Taler must ... 169 \begin{enumerate} 170 \item {... be implemented as {\bf free software}.} 171 \item {... protect the {\bf privacy of buyers}.} 172 \item {... must enable the state to {\bf tax income} and crack down on 173 illegal business activities.} 174 \item {... prevent payment fraud.} 175 \item {... only {\bf disclose the minimal amount of information 176 necessary}.} 177 \item {... be usable.} 178 \item {... be efficient.} 179 \item {... avoid single points of failure.} 180 \item {... foster {\bf competition}.} 181 \end{enumerate} 182 \end{frame} 183 184 185 \begin{frame} 186 \frametitle{Taler Overview} 187 \begin{center} 188 \begin{tikzpicture} 189 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 190 \node (origin) at (0,0) {}; 191 \node (exchange) [def,above=of origin,draw]{Exchange}; 192 \node (customer) [def, draw, below left=of origin] {Customer}; 193 \node (merchant) [def, draw, below right=of origin] {Merchant}; 194 \node (auditor) [def, draw, above right=of origin]{Auditor}; 195 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 196 197 \tikzstyle{C} = [color=black, line width=1pt] 198 199 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 200 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 201 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 202 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 203 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 204 205 \end{tikzpicture} 206 \end{center} 207 \end{frame} 208 209 \begin{frame} 210 \frametitle{Architecture of Taler} 211 \begin{center} 212 \includegraphics[width=1\textwidth]{operations.png} 213 \end{center} 214 \end{frame} 215 216 217 \begin{frame}{Usability of Taler} 218 \vfill 219 \begin{center} 220 \url{https://demo.taler.net/} 221 \end{center} 222 \begin{enumerate} 223 \item Install browser extension. 224 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 225 \item Visit the {\tt shop.demo.taler.net} to spend coins. 226 \end{enumerate} 227 \vfill 228 \end{frame} 229 230 231 \section{Impact} 232 \begin{frame}{Social Impact of Taler} 233 \begin{center} 234 \includegraphics[height=0.9\textheight]{../../social-impact.pdf} 235 \end{center} 236 \end{frame} 237 238 239 \begin{frame}{Use Case: Journalism} 240 Today: 241 \begin{itemize} 242 \item Corporate structure % ($\Rightarrow$ filter) 243 \item Advertising primary revenue % ($\Rightarrow$ dependence) 244 \item Tracking readers critical for business success 245 \item Journalism and marketing hard to distinguish 246 \end{itemize}\vfill\pause 247 With GNU Taler: 248 \begin{itemize} 249 \item One-click micropayments per article 250 \item Hosting requires no expertise % (no PCI DSS) 251 \item Reader-funded reporting separated from marketing 252 \item Readers can remain anonymous 253 \end{itemize} 254 \end{frame} 255 256 257 \begin{frame}{Use Cases: Refugee Camps} 258 Today: 259 \begin{itemize} 260 \item Non-bankable 261 \item Direct distribution of goods to population 262 \item Limited economic activity in camps 263 \item High level of economic dependence 264 \end{itemize}\vfill\pause 265 With GNU Taler: 266 \begin{itemize} 267 \item Local currency issued as basic income backed by aid 268 \item Taxation possible based on economic status 269 \item Local governance enabled by local taxes 270 \item Increased economic independence and political participation 271 \end{itemize} 272 \end{frame} 273 274 275 \begin{frame}{Use Case: Anti-Spam} 276 \framesubtitle{Background: \url{https://pep.security/}} 277 Today, p$\equiv$p provides authenticated encryption for e-mail: 278 \begin{itemize} 279 \item Free software 280 \item Easy to use opportunistic encryption 281 \item Available for Outlook, Android, Enigmail 282 \item Spies \& spam filters can no longer inspect content 283 \end{itemize}\vfill\pause 284 With GNU Taler: 285 \begin{itemize} 286 \item Peer-to-peer payments via e-mail 287 \item If unsolicited sender, hide messages from user \& 288 automatically request payment from sender 289 \item Sender can attach payment to be moved to inbox 290 \item Receiver may grant refund to sender 291 \end{itemize} 292 \end{frame} 293 294 295 \begin{frame}{Taler: Unique Regulatory Features for Central Banks} 296 \framesubtitle{\url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}} 297 \begin{itemize} 298 \item Central bank issues digital coins equivalent to issuing cash \\ 299 $\Rightarrow$ monetary policy remains under CB control 300 \item Architecture with consumer accounts at commercial banks \\ 301 $\Rightarrow$ no competition for commercial banking (S\&L) \\ 302 $\Rightarrow$ CB does not have to manage KYC, customer support 303 \item Withdrawal limits and denomination expiration \\ 304 $\Rightarrow$ protects against bank runs and hoarding 305 \item Income transparency and possibility to set fees \\ 306 $\Rightarrow$ additional insights into economy and new policy options 307 \item Revocation protocols and loss limitations \\ 308 $\Rightarrow$ exit strategy and handles catastrophic security incidents 309 \item Privacy by cryptographic design not organizational compliance \\ 310 $\Rightarrow$ CB cannot be forced to facilitate mass-surveillance 311 \end{itemize} 312 \end{frame} 313 314 315 \section{Project status} 316 \begin{frame}{Competitor comparison} 317 \begin{center} \small 318 \begin{tabular}{l||c|c|c|c|c} 319 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 320 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 321 Offline & +++ & $-$$-$ & $-$$-$ & + & $-$$-$ \\ \hline 322 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 323 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 324 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 325 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 326 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 327 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 328 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 329 Libre & $-$ & +++ & +++ & $-$ $-$ $-$ & +++ \\ 330 \end{tabular} 331 \end{center} 332 \end{frame} 333 334 335 \begin{frame}{Taler: Project Status} 336 \begin{itemize} 337 \item Protocols and core exchange component are stable 338 \item Current focus: Merchant integration, settlement integration, wallet backup, 100k TPS scalability 339 \item Pilot project at Bern University of Applied Sciences cafeteria 340 \item Internal alpha deployment with a commercial bank in progress 341 \end{itemize} 342 \vfill 343 \begin{center} 344 \includegraphics[width=0.7\textwidth]{taler-in-use.png} 345 \end{center} 346 \end{frame} 347 348 349 \begin{frame}{Ongoing development} 350 We have ideas for protocol extensions and ``programmable money'': 351 \begin{itemize} 352 \item Mediated wallet-to-wallet payments (instead of customer-to-merchant) 353 \item Age-restricted private payments for children (youth protection) 354 \item Privacy-preserving auctions (trading, currency exchange) 355 \end{itemize} 356 We also are looking into: 357 \begin{itemize} 358 \item General digital wallet usability and availability 359 \item Accessibility features for illiterate and innumerate users 360 \end{itemize} 361 \end{frame} 362 363 364 \begin{frame}{How to support?} 365 \begin{description} 366 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}, \\ 367 \url{irc://irc.freenode.net/\#taler} 368 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 369 \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net} 370 \item[Integrate:] \url{https://docs.taler.net/} 371 \item[Donate:] \url{https://gnunet.org/ev} 372 \item[Invest:] \url{https://taler-systems.com/} 373 \end{description} 374 We are looking for: 375 \begin{itemize} 376 \item European media organizations (50+ staff, 2+M annual turnover) 377 for pilot Taler integration paid by \url{https://stadiem.eu/} project 378 ({\bf urgent})! 379 \item Commercial banks to offer Taler to their customers 380 \item Central banks to operate Taler as a CBDC 381 \end{itemize} 382 \end{frame} 383 384 385 \begin{frame} 386 \frametitle{Do you have any questions?} 387 \vfill 388 References: 389 {\tiny 390 \begin{enumerate} 391 \item{David Chaum, Christian Grothoff and Thomas Moser. 392 {\em How to issue a central bank digital currency}. 393 {\bf SNB Working Papers, 2021}.} 394 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 395 {\em The Internet is broken: Idealistic Ideas for building a GNU Network}. 396 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 397 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 398 {\em Enabling Secure Web Payments with GNU Taler}. 399 {\bf SPACE 2016}.} 400 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 401 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 402 Available upon request. 2016.} 403 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 404 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 405 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 406 \item{David Chaum, Amos Fiat and Moni Naor. 407 {\em Untraceable electronic cash}. 408 {\bf Proceedings on Advances in Cryptology, 1990}.} 409 \item{Phillip Rogaway. 410 {\em The Moral Character of Cryptographic Work}. 411 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 412 \end{enumerate} 413 } 414 \end{frame} 415 416 417 \begin{frame}{The Distraction: Bitcoin} 418 419 \begin{itemize} 420 \item Unregulated payment system and currency: 421 \item[] $\Rightarrow$ lack of regulation is a feature! 422 \item Implemented in free software 423 \item Decentralised peer-to-peer system \pause 424 \item Decentralised banking requires solving Byzantine consensus 425 \item Creative solution: tie initial accumulation to solving consensus \pause 426 \item[] $\Rightarrow$ Proof-of-work advances ledger 427 \item[] $\Rightarrow$ Very expensive banking 428 \end{itemize} 429 \end{frame} 430 431 432 \begin{frame} 433 \frametitle{\includegraphics[height=0.5cm]{pics/bitcoin.png}?} 434 \framesubtitle{Background: \url{https://blockchain.com/charts/}} 435 \centering 436 \noindent 437 \includegraphics[width=\textwidth]{pics/btc-transaction-cost.png} 438 439 Current average transaction value: $\approx$ 1000 USD 440 \end{frame} 441 442 443 \begin{frame} 444 \frametitle{\includegraphics[height=0.5cm]{pics/zerocoin.png}?} 445 446 Cryptography is rather primitive: 447 \begin{center} 448 {\bf All Bitcoin transactions are public and linkable!} 449 \end{center} 450 451 \begin{itemize} 452 \item[] $\Rightarrow$ no privacy guarantees 453 \item[] $\Rightarrow$ enhanced with ``laundering'' services 454 \end{itemize} 455 ZeroCoin, CryptoNote (Monero) and ZeroCash (ZCash) offer anonymity. 456 \end{frame} 457 458 459 \begin{frame}{Requirements: Online vs. Offline Digital Currencies} 460 \framesubtitle{\url{https://taler.net/papers/euro-bearer-online-2021.pdf}} 461 \begin{itemize} 462 \item Offline capabilities are sometimes cited as a requirement for digital payment solutions 463 \item All implementations must either use restrictive hardware elements and/or introduce 464 counterparty risk. 465 \item[$\Rightarrow$] Permanent offline features weaken a digital payment solution (privacy, security) 466 \item[$\Rightarrow$] Introduces unwarranted competition for physical cash (endangers emergency-preparedness). 467 \end{itemize} 468 We recommend a tiered approach: 469 \begin{enumerate} 470 \item Online-first, bearer-based digital currency with Taler 471 \item (Optional:) Limited offline mode for network outages 472 \item Physical cash for emergencies (power outage, catastrophic cyber incidents) 473 \end{enumerate} 474 \end{frame} 475 476 477 \section{How does it work?} 478 \begin{frame}{How does it work?} 479 We use a few ancient constructions: 480 \begin{itemize} 481 \item Cryptographic hash function (1989) 482 \item Blind signature (1983) 483 \item Schnorr signature (1989) 484 \item Diffie-Hellman key exchange (1976) 485 \item Cut-and-choose zero-knowledge proof (1985) 486 \end{itemize} 487 But of course we use modern instantiations. 488 \end{frame} 489 490 491 \begin{frame}{Definition: Taxability} 492 We say Taler is taxable because: 493 \begin{itemize} 494 \item Merchant's income is visible from deposits. 495 \item Hash of contract is part of deposit data. 496 \item State can trace income and enforce taxation. 497 \end{itemize}\pause 498 Limitations: 499 \begin{itemize} 500 \item withdraw loophole 501 \item {\em sharing} coins among family and friends 502 \end{itemize} 503 \end{frame} 504 505 506 \begin{frame}{Exchange setup: Create a denomination key (RSA)} 507 \begin{minipage}{6cm} 508 \begin{enumerate} 509 \item Pick random primes $p,q$. 510 \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$ 511 \item Pick small $e < \phi(n)$ such that 512 $d := e^{-1} \mod \phi(n)$ exists. 513 \item Publish public key $(e,n)$. 514 \end{enumerate} 515 \end{minipage} 516 \begin{minipage}{6cm} 517 \begin{tikzpicture} 518 \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em]; 519 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 520 \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$}; 521 \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}}; 522 \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 523 524 \tikzstyle{C} = [color=black, line width=1pt] 525 526 \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {}; 527 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 528 \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {}; 529 \end{tikzpicture} 530 % \includegraphics[width=0.4\textwidth]{seal.pdf} 531 \end{minipage} 532 \end{frame} 533 534 535 \begin{frame}{Merchant: Create a signing key (EdDSA)} 536 \begin{minipage}{6cm} 537 \begin{itemize} 538 \item pick random $m \mod o$ as private key 539 \item $M = mG$ public key 540 \end{itemize} 541 \end{minipage} 542 \begin{minipage}{6cm} 543 \begin{tikzpicture} 544 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 545 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 546 \node (m) [draw=none, below = of origin] at (0,0) {$m$}; 547 \node (seal) [draw=none, below=of m]{M}; 548 \tikzstyle{C} = [color=black, line width=1pt] 549 550 \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {}; 551 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 552 \end{tikzpicture} 553 \end{minipage} 554 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 555 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 556 \end{frame} 557 558 559 \begin{frame}{Customer: Create a planchet (EdDSA)} 560 \begin{minipage}{8cm} 561 \begin{itemize} 562 \item Pick random $c \mod o$ private key 563 \item $C = cG$ public key 564 \end{itemize} 565 \end{minipage} 566 \begin{minipage}{4cm} 567 \begin{tikzpicture} 568 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 569 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 570 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 571 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 572 \tikzstyle{C} = [color=black, line width=1pt] 573 574 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 575 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 576 \end{tikzpicture} 577 \end{minipage} 578 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 579 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 580 \end{frame} 581 582 583 \begin{frame}{Customer: Blind planchet (RSA)} 584 \begin{minipage}{6cm} 585 \begin{enumerate} 586 \item Obtain public key $(e,n)$ 587 \item Compute $f := FDH(C)$, $f < n$. 588 \item Pick blinding factor $b \in \mathbb Z_n$ 589 \item Transmit $f' := f b^e \mod n$ 590 \end{enumerate} 591 \end{minipage} 592 \begin{minipage}{6cm} 593 \begin{tikzpicture} 594 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 595 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 596 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 597 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 598 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 599 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 600 \tikzstyle{C} = [color=black, line width=1pt] 601 602 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 603 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 604 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 605 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 606 \end{tikzpicture} 607 \end{minipage} 608 \end{frame} 609 610 611 \begin{frame}{Exchange: Blind sign (RSA)} 612 \begin{minipage}{6cm} 613 \begin{enumerate} 614 \item Receive $f'$. 615 \item Compute $s' := f'^d \mod n$. 616 \item Send signature $s'$. 617 \end{enumerate} 618 \end{minipage} 619 \begin{minipage}{6cm} 620 \begin{tikzpicture} 621 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 622 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 623 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 624 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 625 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 626 \tikzstyle{C} = [color=black, line width=1pt] 627 628 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 629 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 630 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 631 \end{tikzpicture} 632 \end{minipage} 633 \end{frame} 634 635 636 \begin{frame}{Customer: Unblind coin (RSA)} 637 \begin{minipage}{6cm} 638 \begin{enumerate} 639 \item Receive $s'$. 640 \item Compute $s := s' b^{-1} \mod n$ % \\ 641 % ($(f')^d = (f b^e)^d = f^d b$). 642 \end{enumerate} 643 \end{minipage} 644 \begin{minipage}{6cm} 645 \begin{tikzpicture} 646 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 647 \node (b) [def, draw=none] at (0,0) {$b$}; 648 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 649 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 650 \tikzstyle{C} = [color=black, line width=1pt] 651 652 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 653 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 654 \end{tikzpicture} 655 \end{minipage} 656 \end{frame} 657 658 659 \begin{frame}{Customer: Build shopping cart} 660 \begin{center} 661 \begin{tikzpicture} 662 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 663 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{shop.pdf}}; 664 \node (cart) [draw=none, below=of m]{\includegraphics[width=0.2\textwidth]{cart.pdf}}; 665 \node (merchant) [node distance=4em and 0.5em, draw, below =of cart]{Merchant}; 666 \tikzstyle{C} = [color=black, line width=1pt]; 667 \draw [<-, C] (cart) -- (origin) node [midway, above, sloped] (TextNode) {}; 668 \draw [<-, C] (merchant) -- (cart) node [midway, above, sloped] (TextNode) {{\small transmit}}; 669 \end{tikzpicture} 670 \end{center} 671 \end{frame} 672 673 674 \begin{frame}{Merchant: Propose contract (EdDSA)} 675 \begin{minipage}{6cm} 676 \begin{enumerate} 677 \item Complete proposal $D$. 678 \item Send $D$, $EdDSA_m(D)$ 679 \end{enumerate} 680 \end{minipage} 681 \begin{minipage}{6cm} 682 \begin{tikzpicture} 683 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 684 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 685 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.5\textwidth]{merchant_propose.pdf}}; 686 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 687 \tikzstyle{C} = [color=black, line width=1pt]; 688 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 689 \tikzstyle{C} = [color=black, line width=1pt] 690 691 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 692 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 693 \draw [<-, C] (customer) -- (proposal) node [midway, above, sloped] (TextNode) {{\small transmit}}; 694 \end{tikzpicture} 695 \end{minipage} 696 \end{frame} 697 698 699 \begin{frame}{Customer: Spend coin (EdDSA)} 700 \begin{minipage}{6cm} 701 \begin{enumerate} 702 \item Receive proposal $D$, $EdDSA_m(D)$. 703 \item Send $s$, $C$, $EdDSA_c(D)$ 704 \end{enumerate} 705 \end{minipage} 706 \begin{minipage}{6cm} 707 \begin{tikzpicture} 708 \tikzstyle{def} = [node distance=2em and 0.4em, inner sep=0em, outer sep=.3em]; 709 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 710 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 711 \node (c) [def, draw=none, above=of contract] {$c$}; 712 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 713 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 714 \tikzstyle{C} = [color=black, line width=1pt] 715 716 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 717 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 718 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 719 \draw [<-, C] (merchant) -- (coin) node [midway, below, sloped] (TextNode) {{\small transmit}}; 720 \end{tikzpicture} 721 \end{minipage} 722 \end{frame} 723 724 725 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 726 \begin{minipage}{6cm} 727 \begin{equation*} 728 s^e \stackrel{?}{\equiv} FDH(C) \mod n 729 \end{equation*} 730 \end{minipage} 731 \begin{minipage}{6cm} 732 \begin{minipage}{0.2\textwidth} 733 \includegraphics[width=\textwidth]{coin.pdf} 734 \end{minipage} 735 $\stackrel{?}{\Leftrightarrow}$ 736 \begin{minipage}{0.2\textwidth} 737 \includegraphics[width=\textwidth]{seal.pdf} 738 \end{minipage} 739 \end{minipage} 740 \vfill 741 The exchange does not only verify the signature, but also 742 checks that the coin was not double-spent. 743 \vfill 744 \pause 745 \begin{center} 746 {\bf Taler is an online payment system.} 747 \end{center} 748 \vfill 749 \end{frame} 750 751 752 \begin{frame}{Giving change} 753 It would be inefficient to pay EUR 100 with 1 cent coins! 754 \begin{itemize} 755 \item Denomination key represents value of a coin. 756 \item Exchange may offer various denominations for coins. 757 \item Wallet may not have exact change! 758 \item Usability requires ability to pay given sufficient total funds. 759 \end{itemize}\pause 760 Key goals: 761 \begin{itemize} 762 \item maintain unlinkability 763 \item maintain taxability of transactions 764 \end{itemize}\pause 765 Method: 766 \begin{itemize} 767 \item Contract can specify to only pay {\em partial value} of a coin. 768 \item Exchange allows wallet to obtain {\em unlinkable change} 769 for remaining coin value. 770 \end{itemize} 771 \end{frame} 772 773 774 \begin{frame}{Diffie-Hellman (ECDH)} 775 \begin{minipage}{8cm} 776 \begin{enumerate} 777 \item Create private keys $c,t \mod o$ 778 \item Define $C = cG$ 779 \item Define $T = tG$ 780 \item Compute DH \\ $cT = c(tG) = t(cG) = tC$ 781 \end{enumerate} 782 \end{minipage} 783 \begin{minipage}{6cm} 784 \begin{tikzpicture} 785 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 786 \node (t) [def, draw=none] at (0,0) {$t$}; 787 \node (ct) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{dh.pdf}}; 788 \node (c) [def, draw=none, above left= of ct] {$c$}; 789 \tikzstyle{C} = [color=black, line width=1pt] 790 791 \draw [<-, C] (ct) -- (c) node [midway, above, sloped] (TextNode) {}; 792 \draw [<-, C] (ct) -- (t) node [midway, above, sloped] (TextNode) {}; 793 \end{tikzpicture} 794 \end{minipage} 795 \end{frame} 796 797 798 \begin{frame}{Strawman solution} 799 \begin{minipage}{8cm} 800 Given partially spent private coin key $c_{old}$: 801 \begin{enumerate} 802 % \item Let $C_{old} := c_{old}G$ (as before) 803 \item Pick random $c_{new} \mod o$ private key 804 \item $C_{new} = c_{new}G$ public key 805 \item Pick random $b_{new}$ 806 \item Compute $f_{new} := FDH(C_{new})$, $m < n$. 807 \item Transmit $f'_{new} := f_{new} b_{new}^e \mod n$ 808 \end{enumerate} 809 ... and sign request for change with $c_{old}$. 810 \end{minipage} 811 \begin{minipage}{4cm} 812 \begin{tikzpicture} 813 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 814 \node (blinded) [def, draw=none]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 815 \node (planchet) [def, draw=none, above left= of blinded] {\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 816 \node (cnew) [def, draw=none, above= of planchet] {$c_{new}$}; 817 \node (bnew) [def, draw=none, above right= of blinded] {$b_{new}$}; 818 \node (dice1) [def, draw=none, above = of cnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 819 \node (dice2) [def, draw=none, above = of bnew]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 820 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 821 822 \tikzstyle{C} = [color=black, line width=1pt] 823 824 \draw [<-, C] (cnew) -- (dice1) node [midway, above, sloped] (TextNode) {}; 825 \draw [<-, C] (planchet) -- (cnew) node [midway, above, sloped] (TextNode) {}; 826 \draw [<-, C] (bnew) -- (dice2) node [midway, above, sloped] (TextNode) {}; 827 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 828 \draw [<-, C] (blinded) -- (bnew) node [midway, above, sloped] (TextNode) {}; 829 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 830 \end{tikzpicture} 831 \end{minipage} 832 \pause 833 \vfill 834 {\bf Problem: Owner of $c_{new}$ may differ from owner of $c_{old}$!} 835 \end{frame} 836 837 838 \begin{frame}{Customer: Transfer key setup (ECDH)} 839 \begin{minipage}{8cm} 840 Given partially spent private coin key $c_{old}$: 841 \begin{enumerate} 842 \item Let $C_{old} := c_{old}G$ (as before) 843 \item Create random private transfer key $t \mod o$ 844 \item Compute $T := tG$ 845 \item Compute $X := c_{old}(tG) = t(c_{old}G) = tC_{old}$ 846 \item Derive $c_{new}$ and $b_{new}$ from $X$ 847 \item Compute $C_{new} := c_{new}G$ 848 \item Compute $f_{new} := FDH(C_{new})$ 849 \item Transmit $f_{new}' := f_{new} b_{new}^e$ 850 \end{enumerate} 851 \end{minipage} 852 \begin{minipage}{4cm} 853 \begin{tikzpicture} 854 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 855 \node (t) [def, draw=none] at (0,0) {$t$}; 856 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 857 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 858 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 859 \node (cp) [def, draw=none, below left= of dh] {$c_{new}$}; 860 \node (bp) [def, draw=none, below right= of dh] {$b_{new}$}; 861 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 862 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 863 864 \tikzstyle{C} = [color=black, line width=1pt] 865 866 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 867 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 868 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 869 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 870 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 871 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 872 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 873 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 874 \end{tikzpicture} 875 \end{minipage} 876 \end{frame} 877 878 879 \begin{frame}{Cut-and-Choose} 880 \begin{minipage}{4cm} 881 \begin{tikzpicture} 882 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 883 \node (t) [def, draw=none] at (0,0) {$t_1$}; 884 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 885 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 886 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 887 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 888 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 889 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 890 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 891 892 \tikzstyle{C} = [color=black, line width=1pt] 893 894 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 895 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 896 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 897 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 898 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 899 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 900 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 901 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 902 \end{tikzpicture} 903 \end{minipage} 904 \begin{minipage}{4cm} 905 \begin{tikzpicture} 906 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 907 \node (t) [def, draw=none] at (0,0) {$t_2$}; 908 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 909 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 910 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 911 \node (cp) [def, draw=none, below left= of dh] {$c_{new,2}$}; 912 \node (bp) [def, draw=none, below right= of dh] {$b_{new,2}$}; 913 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 914 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 915 916 \tikzstyle{C} = [color=black, line width=1pt] 917 918 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 919 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 920 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 921 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 922 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 923 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 924 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 925 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 926 \end{tikzpicture} 927 \end{minipage} 928 \begin{minipage}{4cm} 929 \begin{tikzpicture} 930 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 931 \node (t) [def, draw=none] at (0,0) {$t_3$}; 932 \node (dice) [def, draw=none, above = of t]{\includegraphics[width=0.2\textwidth]{dice.pdf}}; 933 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 934 \node (d) [def, draw=none, above left= of dh] {$c_{old}$}; 935 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 936 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 937 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 938 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 939 940 \tikzstyle{C} = [color=black, line width=1pt] 941 942 \draw [<-, C] (t) -- (dice) node [midway, above, sloped] (TextNode) {}; 943 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 944 \draw [<-, C] (dh) -- (t) node [midway, above, sloped] (TextNode) {}; 945 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 946 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 947 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 948 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 949 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 950 \end{tikzpicture} 951 \end{minipage} 952 \end{frame} 953 954 955 \begin{frame}{Exchange: Choose!} 956 \begin{center} 957 \item Exchange sends back random $\gamma \in \{ 1, 2, 3 \}$ to the customer. 958 \end{center} 959 \end{frame} 960 961 962 \begin{frame}{Customer: Reveal} 963 \begin{enumerate} 964 \item If $\gamma = 1$, send $t_2$, $t_3$ to exchange 965 \item If $\gamma = 2$, send $t_1$, $t_3$ to exchange 966 \item If $\gamma = 3$, send $t_1$, $t_2$ to exchange 967 \end{enumerate} 968 \end{frame} 969 970 971 \begin{frame}{Exchange: Verify ($\gamma = 2$)} 972 \begin{minipage}{4cm} 973 \begin{tikzpicture} 974 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 975 \node (h) [def, draw=none] at (0,0) {$t_1$}; 976 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 977 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 978 \node (cp) [def, draw=none, below left= of dh] {$c_{new,1}$}; 979 \node (bp) [def, draw=none, below right= of dh] {$b_{new,1}$}; 980 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 981 982 \tikzstyle{C} = [color=black, line width=1pt] 983 984 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 985 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 986 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 987 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 988 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 989 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 990 \end{tikzpicture} 991 \end{minipage} 992 \begin{minipage}{4cm} 993 \ 994 \end{minipage} 995 \begin{minipage}{4cm} 996 \begin{tikzpicture} 997 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 998 \node (h) [def, draw=none] at (0,0) {$t_3$}; 999 \node (dh) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1000 \node (d) [def, draw=none, above left= of dh] {$C_{old}$}; 1001 \node (cp) [def, draw=none, below left= of dh] {$c_{new,3}$}; 1002 \node (bp) [def, draw=none, below right= of dh] {$b_{new,3}$}; 1003 \node (blinded) [def, draw=none, below right=of cp]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1004 1005 \tikzstyle{C} = [color=black, line width=1pt] 1006 1007 \draw [<-, C] (dh) -- (d) node [midway, above, sloped] (TextNode) {}; 1008 \draw [<-, C] (dh) -- (h) node [midway, above, sloped] (TextNode) {}; 1009 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1010 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1011 \draw [<-, C] (blinded) -- (cp) node [midway, above, sloped] (TextNode) {}; 1012 \draw [<-, C] (blinded) -- (bp) node [midway, above, sloped] (TextNode) {}; 1013 \end{tikzpicture} 1014 \end{minipage} 1015 \end{frame} 1016 1017 1018 \begin{frame}{Exchange: Blind sign change (RSA)} 1019 \begin{minipage}{6cm} 1020 \begin{enumerate} 1021 \item Take $f_{new,\gamma}'$. 1022 \item Compute $s' := f_{new,\gamma}'^d \mod n$. 1023 \item Send signature $s'$. 1024 \end{enumerate} 1025 \end{minipage} 1026 \begin{minipage}{6cm} 1027 \begin{tikzpicture} 1028 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1029 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 1030 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 1031 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 1032 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 1033 \tikzstyle{C} = [color=black, line width=1pt] 1034 1035 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 1036 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 1037 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 1038 \end{tikzpicture} 1039 \end{minipage} 1040 \end{frame} 1041 1042 1043 \begin{frame}{Customer: Unblind change (RSA)} 1044 \begin{minipage}{6cm} 1045 \begin{enumerate} 1046 \item Receive $s'$. 1047 \item Compute $s := s' b_{new,\gamma}^{-1} \mod n$. 1048 \end{enumerate} 1049 \end{minipage} 1050 \begin{minipage}{6cm} 1051 \begin{tikzpicture} 1052 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 1053 \node (b) [def, draw=none] at (0,0) {$b_{new,\gamma}$}; 1054 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1055 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1056 \tikzstyle{C} = [color=black, line width=1pt] 1057 1058 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 1059 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1060 \end{tikzpicture} 1061 \end{minipage} 1062 \end{frame} 1063 1064 1065 \begin{frame}{Exchange: Allow linking change} 1066 \begin{minipage}{7cm} 1067 \begin{center} 1068 Given $C_{old}$ 1069 1070 \vspace{1cm} 1071 1072 return $T_\gamma$, $s := s' b_{new,\gamma}^{-1} \mod n$. 1073 \end{center} 1074 \end{minipage} 1075 \begin{minipage}{5cm} 1076 \begin{tikzpicture} 1077 \tikzstyle{def} = [node distance= 3em and 0.5em, inner sep=0.5em, outer sep=.3em]; 1078 \node (co) [def, draw=none] at (0,0) {$C_{old}$}; 1079 \node (T) [def, draw=none, below left=of co]{$T_\gamma$}; 1080 \node (sign) [def, draw=none, below right=of co]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1081 \node (customer) [def, draw, below right=of T] {Customer}; 1082 1083 \tikzstyle{C} = [color=black, line width=1pt] 1084 1085 \draw [<-, C] (T) -- (co) node [midway, above, sloped] (TextNode) {}; 1086 \draw [<-, C] (sign) -- (co) node [midway, above, sloped] (TextNode) {}; 1087 \draw [<-, C] (customer) -- (T) node [midway, above, sloped] (TextNode) {link}; 1088 \draw [<-, C] (customer) -- (sign) node [midway, above, sloped] (TextNode) {link}; 1089 \end{tikzpicture} 1090 \end{minipage} 1091 \end{frame} 1092 1093 1094 \begin{frame}{Customer: Link (threat!)} 1095 \begin{minipage}{6.3cm} 1096 \begin{enumerate} 1097 \item Have $c_{old}$. 1098 \item Obtain $T_\gamma$, $s$ from exchange 1099 \item Compute $X_\gamma = c_{old}T_\gamma$ 1100 \item Derive $c_{new,\gamma}$ and $b_{new,\gamma}$ from $X_\gamma$ 1101 \item Unblind $s := s' b_{new,\gamma}^{-1} \mod n$ 1102 \end{enumerate} 1103 1104 \end{minipage} 1105 \begin{minipage}{5.7cm} 1106 \begin{tikzpicture} 1107 \tikzstyle{def} = [node distance= 1.5em and 0.5em, inner sep=0em, outer sep=.3em]; 1108 \node (T) [def, draw=none] at (0,0) {$T_\gamma$}; 1109 \node (exchange) [def, inner sep=0.5em, draw, above left=of T] {Exchange}; 1110 \node (signed) [def, draw=none, below left=of T]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 1111 \node (dh) [def, draw=none, below right=of T]{\includegraphics[width=0.2\textwidth]{ct.pdf}}; 1112 \node (bp) [def, draw=none, below left= of dh] {$b_{new,\gamma}$}; 1113 \node (co) [def, draw=none, above right= of dh] {$c_{old}$}; 1114 \node (cp) [def, draw=none, below= of dh] {$c_{new,\gamma}$}; 1115 \node (coin) [def, draw=none, below left = of bp]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 1116 \node (psign) [def, node distance=2.5em and 0em, draw=none, below = of cp]{\includegraphics[width=0.2\textwidth]{planchet-sign.pdf}}; 1117 1118 \tikzstyle{C} = [color=black, line width=1pt] 1119 1120 \draw [<-, C] (dh) -- (co) node [midway, above, sloped] (TextNode) {}; 1121 \draw [<-, C] (dh) -- (T) node [midway, above, sloped] (TextNode) {}; 1122 \draw [<-, C] (cp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1123 \draw [<-, C] (bp) -- (dh) node [midway, above, sloped] (TextNode) {}; 1124 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 1125 \draw [<-, C] (coin) -- (bp) node [midway, above, sloped] (TextNode) {}; 1126 \draw [<-, C] (T) -- (exchange) node [midway, above, sloped] (TextNode) {link}; 1127 \draw [<-, C] (signed) -- (exchange) node [midway, below, sloped] (TextNode) {link}; 1128 \draw [<-, C, double] (psign) -- (cp) node [midway, below, sloped] (TextNode) {}; 1129 \end{tikzpicture} 1130 \end{minipage} 1131 \end{frame} 1132 1133 1134 \begin{frame}{Refresh protocol summary} 1135 \begin{itemize} 1136 \item Customer asks exchange to convert old coin to new coin 1137 \item Protocol ensures new coins can be recovered from old coin 1138 \item[$\Rightarrow$] New coins are owned by the same entity! 1139 \end{itemize} 1140 Thus, the refresh protocol allows: 1141 \begin{itemize} 1142 \item To give unlinkable change. 1143 \item To give refunds to an anonymous customer. 1144 \item To expire old keys and migrate coins to new ones. 1145 \item To handle protocol aborts. 1146 \end{itemize} 1147 \noindent 1148 \begin{center} 1149 \bf 1150 Transactions via refresh are equivalent to {\em sharing} a wallet. 1151 \end{center} 1152 \end{frame} 1153 1154 1155 1156 1157 1158 1159 1160 1161 \end{document} 1162 1163 1164 1165 1166 \begin{frame}{Taler {\tt /withdraw/sign}} 1167 % Customer withdrawing coins with blind signatures 1168 % \bigskip 1169 \begin{figure}[th] 1170 \begin{minipage}[b]{0.45\linewidth} 1171 \begin{center} 1172 \begin{tikzpicture}[scale = 0.4, 1173 transform shape, 1174 msglabel/.style = { text = Black, yshift = .3cm, 1175 sloped, midway }, 1176 okmsg/.style = { ->, color = MidnightBlue, thick, 1177 >=stealth }, 1178 rstmsg/.style = { ->, color = BrickRed, thick, 1179 >=stealth } 1180 ] 1181 \node[draw = MidnightBlue, 1182 fill = CornflowerBlue, 1183 minimum width = .3cm, 1184 minimum height = 10cm 1185 ] (h1) at (-4, 0) {}; 1186 \node[draw = MidnightBlue, 1187 fill = CornflowerBlue, 1188 minimum width = .3cm, 1189 minimum height = 10cm 1190 ] (h2) at (4, 0) {}; 1191 \node[above = 0cm of h1] {Wallet}; 1192 \node[above = 0cm of h2] {Exchange}; 1193 1194 \path[->, color = MidnightBlue, very thick, >=stealth] 1195 (-5, 4.5) edge 1196 node[rotate=90, text = Black, yshift = .3cm] {Time} 1197 (-5, -4.5); 1198 \path[okmsg, dashed] 1199 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 1200 node[msglabel] {SEPA(RK,A)} 1201 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 1202 \path[okmsg] 1203 ($(h1.east)+(0, -1.0)$) edge 1204 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 1205 ($(h2.west)+(0, -1.5)$); 1206 \path[okmsg] 1207 ($(h2.west)+(0, -2.0)$) edge 1208 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 1209 ($(h1.east)+(0, -2.5)$); 1210 \path[rstmsg] 1211 ($(h2.west)+(0, -3.5)$) edge 1212 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 1213 ($(h1.east)+(0, -4)$); 1214 \node at (5.3, 0) {}; 1215 \end{tikzpicture} 1216 \end{center} 1217 Result: $\langle c, S_{DK}(C) \rangle$. 1218 \end{minipage} 1219 \hspace{0.5cm} 1220 \begin{minipage}[b]{0.45\linewidth} 1221 \tiny 1222 \begin{description} 1223 \item[$A$] Some amount, $A \ge A_{DK}$ 1224 \item[$RK$] Reserve key 1225 \item[$DK$] Denomination key 1226 \item[$b$] Blinding factor 1227 \item[$B_b()$] RSA-FDH blinding % DK supressed 1228 \item[$C$] Coin public key $C := cG$ 1229 \item[$S_{RK}()$] EdDSA signature 1230 \item[$S_{DK}()$] RSA-FDH signature 1231 \end{description} 1232 \end{minipage} 1233 \end{figure} 1234 \end{frame} 1235 1236 1237 \begin{frame}[t]{Taler {\tt /deposit}} 1238 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 1239 \bigskip 1240 \begin{figure}[th] 1241 \begin{minipage}[b]{0.45\linewidth} 1242 \begin{center} 1243 \begin{tikzpicture}[scale = 0.4, 1244 transform shape, 1245 msglabel/.style = { text = Black, yshift = .3cm, 1246 sloped, midway }, 1247 okmsg/.style = { ->, color = MidnightBlue, thick, 1248 >=stealth }, 1249 rstmsg/.style = { ->, color = BrickRed, thick, 1250 >=stealth } 1251 ] 1252 \node[draw = MidnightBlue, 1253 fill = CornflowerBlue, 1254 minimum width = .3cm, 1255 minimum height = 10cm 1256 ] (h1) at (-4, 0) {}; 1257 \node[draw = MidnightBlue, 1258 fill = CornflowerBlue, 1259 minimum width = .3cm, 1260 minimum height = 10cm 1261 ] (h2) at (4, 0) {}; 1262 \node[above = 0cm of h1] {Merchant}; 1263 \node[above = 0cm of h2] {Exchange}; 1264 1265 \path[->, color = MidnightBlue, very thick, >=stealth] 1266 (-5, 4.5) edge 1267 node[rotate=90, text = Black, yshift = .3cm] {Time} 1268 (-5, -4.5); 1269 \path[->, color = MidnightBlue, thick, >=stealth] 1270 ($(h1.east)+(0,3)$) edge 1271 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 1272 ($(h2.west)+(0,2)$); 1273 \path[->, color = MidnightBlue, thick, >=stealth] 1274 ($(h2.west)+(0,0.5)$) edge 1275 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 1276 ($(h1.east)+(0,-0.5)$); 1277 \path[rstmsg] 1278 ($(h2.west)+(0, -2.5)$) edge 1279 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 1280 ($(h1.east)+(0, -3.5)$); 1281 \node at (5.3, 0) {}; 1282 \end{tikzpicture} 1283 \end{center} 1284 \end{minipage} 1285 \hspace{0.5cm} 1286 \begin{minipage}[b]{0.45\linewidth} 1287 \tiny 1288 \begin{description} 1289 \item[$DK$] Denomination key 1290 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 1291 \item[$c$] Private coin key, $C := cG$. 1292 \item[$S_{C}()$] EdDSA signature using $c$ 1293 \item[$D$] Deposit details 1294 \item[$SK$] Exchange's signing key 1295 \item[$S_{SK}()$] EdDSA signature using $SK$ 1296 \item[$D'$] Conficting deposit details $D' \not= D$ 1297 \end{description} 1298 \end{minipage} 1299 \end{figure} 1300 \end{frame} 1301 1302 1303 \begin{frame}{Taler {\tt /refresh/melt}} 1304 \begin{figure}[th] 1305 \begin{minipage}[b]{0.45\linewidth} 1306 \begin{center} 1307 \begin{tikzpicture}[scale = 0.4, 1308 transform shape, 1309 msglabel/.style = { text = Black, yshift = .3cm, 1310 sloped, midway }, 1311 okmsg/.style = { ->, color = MidnightBlue, thick, 1312 >=stealth }, 1313 rstmsg/.style = { ->, color = BrickRed, thick, 1314 >=stealth } 1315 ] 1316 \node[draw = MidnightBlue, 1317 fill = CornflowerBlue, 1318 minimum width = .3cm, 1319 minimum height = 10cm 1320 ] (h1) at (-4, 0) {}; 1321 \node[draw = MidnightBlue, 1322 fill = CornflowerBlue, 1323 minimum width = .3cm, 1324 minimum height = 10cm 1325 ] (h2) at (4, 0) {}; 1326 \node[above = 0cm of h1] {Customer}; 1327 \node[above = 0cm of h2] {Exchange}; 1328 1329 \path[->, color = MidnightBlue, very thick, >=stealth] 1330 (-5, 4.5) edge 1331 node[rotate=90, text = Black, yshift = .3cm] {Time} 1332 (-5, -4.5); 1333 \path[->, color = MidnightBlue, thick, >=stealth] 1334 ($(h1.east)+(0,3)$) edge 1335 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 1336 ($(h2.west)+(0,2)$); 1337 \path[->, color = MidnightBlue, thick, >=stealth] 1338 ($(h2.west)+(0,0.5)$) edge 1339 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 1340 ($(h1.east)+(0,-0.5)$); 1341 \path[rstmsg] 1342 ($(h2.west)+(0, -2.5)$) edge 1343 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 1344 ($(h1.east)+(0, -3.5)$); 1345 \node at (5.3, 0) {}; 1346 \end{tikzpicture} 1347 \end{center} 1348 \end{minipage} 1349 \hspace{0.5cm} 1350 \begin{minipage}[b]{0.45\linewidth} 1351 \tiny 1352 \begin{description} 1353 \item[$\kappa$] System-wide security parameter, usually 3. 1354 \\ \smallskip 1355 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 1356 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 1357 \item[$t_j$] Random scalar for $j<\kappa$ 1358 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 1359 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 1360 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 1361 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 1362 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 1363 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 1364 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 1365 \\ \smallskip 1366 \item[$\gamma$] Random value in $[0,\kappa)$ 1367 % \\ \smallskip 1368 % \item[$X$] Deposit or refresh 1369 \end{description} 1370 \end{minipage} 1371 \end{figure} 1372 \end{frame} 1373 1374 1375 \begin{frame}{Taler {\tt /refresh/reveal}} 1376 \begin{figure}[th] 1377 \begin{minipage}[b]{0.45\linewidth} 1378 \begin{center} 1379 \begin{tikzpicture}[scale = 0.4, 1380 transform shape, 1381 msglabel/.style = { text = Black, yshift = .3cm, 1382 sloped, midway }, 1383 okmsg/.style = { ->, color = MidnightBlue, thick, 1384 >=stealth }, 1385 rstmsg/.style = { ->, color = BrickRed, thick, 1386 >=stealth } 1387 ] 1388 \node[draw = MidnightBlue, 1389 fill = CornflowerBlue, 1390 minimum width = .3cm, 1391 minimum height = 10cm 1392 ] (h1) at (-4, 0) {}; 1393 \node[draw = MidnightBlue, 1394 fill = CornflowerBlue, 1395 minimum width = .3cm, 1396 minimum height = 10cm 1397 ] (h2) at (4, 0) {}; 1398 \node[above = 0cm of h1] {Customer}; 1399 \node[above = 0cm of h2] {Exchange}; 1400 1401 \path[->, color = MidnightBlue, very thick, >=stealth] 1402 (-5, 4.5) edge 1403 node[rotate=90, text = Black, yshift = .3cm] {Time} 1404 (-5, -4.5); 1405 \path[->, color = MidnightBlue, thick, >=stealth] 1406 ($(h1.east)+(0,3)$) edge 1407 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1408 ($(h2.west)+(0,2)$); 1409 \path[->, color = MidnightBlue, thick, >=stealth] 1410 ($(h2.west)+(0,0.5)$) edge 1411 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1412 ($(h1.east)+(0,-0.5)$); 1413 \path[rstmsg] 1414 ($(h2.west)+(0, -2.5)$) edge 1415 node[msglabel] {400 BAD REQUEST: $Z$} 1416 ($(h1.east)+(0, -3.5)$); 1417 \node at (5.3, 0) {}; 1418 \end{tikzpicture} 1419 \end{center} 1420 \end{minipage} 1421 \hspace{0.5cm} 1422 \begin{minipage}[b]{0.45\linewidth} 1423 \tiny 1424 \begin{description} 1425 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1426 \item[$t_j$] .. \\ \smallskip 1427 1428 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1429 1430 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1431 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1432 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1433 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1434 1435 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1436 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1437 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1438 1439 \item[$Z$] Cut-and-choose missmatch information 1440 \end{description} 1441 \end{minipage} 1442 \end{figure} 1443 \end{frame} 1444 1445 1446 \begin{frame}{Taler {\tt /refresh/link}} 1447 \begin{figure}[th] 1448 \begin{minipage}[b]{0.45\linewidth} 1449 \begin{center} 1450 \begin{tikzpicture}[scale = 0.4, 1451 transform shape, 1452 msglabel/.style = { text = Black, yshift = .3cm, 1453 sloped, midway }, 1454 okmsg/.style = { ->, color = MidnightBlue, thick, 1455 >=stealth }, 1456 rstmsg/.style = { ->, color = BrickRed, thick, 1457 >=stealth } 1458 ] 1459 \node[draw = MidnightBlue, 1460 fill = CornflowerBlue, 1461 minimum width = .3cm, 1462 minimum height = 10cm 1463 ] (h1) at (-4, 0) {}; 1464 \node[draw = MidnightBlue, 1465 fill = CornflowerBlue, 1466 minimum width = .3cm, 1467 minimum height = 10cm 1468 ] (h2) at (4, 0) {}; 1469 \node[above = 0cm of h1] {Customer}; 1470 \node[above = 0cm of h2] {Exchagne}; 1471 1472 \path[->, color = MidnightBlue, very thick, >=stealth] 1473 (-5, 4.5) edge 1474 node[rotate=90, text = Black, yshift = .3cm] {Time} 1475 (-5, -4.5); 1476 \path[->, color = MidnightBlue, thick, >=stealth] 1477 ($(h1.east)+(0,3)$) edge 1478 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1479 ($(h2.west)+(0,2)$); 1480 \path[->, color = MidnightBlue, thick, >=stealth] 1481 ($(h2.west)+(0,0.5)$) edge 1482 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1483 ($(h1.east)+(0,-0.5)$); 1484 \path[rstmsg] 1485 ($(h2.west)+(0, -2.5)$) edge 1486 node[msglabel] {404 NOT FOUND} 1487 ($(h1.east)+(0, -3.5)$); 1488 \node at (5.3, 0) {}; 1489 \end{tikzpicture} 1490 \end{center} 1491 \end{minipage} 1492 \hspace{0.5cm} 1493 \begin{minipage}[b]{0.45\linewidth} 1494 \tiny 1495 \begin{description} 1496 \item[$C$] Old coind public key \\ \smallskip 1497 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1498 \end{description} 1499 \end{minipage} 1500 \end{figure} 1501 \end{frame} 1502 1503 1504 \begin{frame}{Operational security} 1505 \begin{center} 1506 \resizebox{\textwidth}{!}{ 1507 \begin{tikzpicture}[ 1508 font=\sffamily, 1509 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1510 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1511 process/.style={draw,thick,circle,fill=blue!20}, 1512 sink/.style={source,fill=green!20}, 1513 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1514 dots/.style={gray,scale=2}, 1515 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1516 every node/.style={align=center}] 1517 1518 % Position the nodes using a matrix layout 1519 \matrix{ 1520 \node[source] (wallet) {Wallet}; 1521 \& \node[process] (browser) {Browser}; 1522 \& \node[process] (shop) {Web shop}; 1523 \& \node[sink] (backend) {Taler backend}; \\ 1524 }; 1525 1526 % Draw the arrows between the nodes and label them. 1527 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1528 node[midway,below] {(signal)} (wallet); 1529 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1530 node[midway,below] {(5) signed coins} (browser); 1531 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1532 node[midway,below] {(HTTPS)} (shop); 1533 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1534 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1535 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1536 node[midway,below] {(HTTPS)} (shop); 1537 \end{tikzpicture} 1538 } 1539 \end{center} 1540 \end{frame}