2023-cbt.tex (44397B)
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[normalem]{ulem} 13 \usepackage{listings} 14 \usepackage{adjustbox} 15 \usepackage{array} 16 \usepackage{bbding} 17 \usepackage{relsize} 18 \usepackage{graphicx} 19 \usepackage{tikz,eurosym,calc} 20 \usetikzlibrary{tikzmark} 21 \usetikzlibrary{shapes,arrows,arrows.meta} 22 \usetikzlibrary{positioning,fit,patterns} 23 \usetikzlibrary{calc} 24 \usepackage{multicol} 25 \usepackage{pgf-umlsd} 26 \usepackage{relsize} 27 28 29 % CSS 30 \lstdefinelanguage{CSS}{ 31 basicstyle=\ttfamily\scriptsize, 32 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}, 33 sensitive=true, 34 morecomment=[l]{//}, 35 morecomment=[s]{/*}{*/}, 36 morestring=[b]', 37 morestring=[b]", 38 alsoletter={:}, 39 alsodigit={-} 40 } 41 42 % JavaScript 43 \lstdefinelanguage{JavaScript}{ 44 basicstyle=\ttfamily\scriptsize, 45 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 46 morecomment=[s]{/*}{*/}, 47 morecomment=[l]//, 48 morestring=[b]", 49 morestring=[b]' 50 } 51 52 \lstdefinelanguage{HTML5}{ 53 basicstyle=\ttfamily\scriptsize, 54 language=html, 55 sensitive=true, 56 alsoletter={<>=-}, 57 morecomment=[s]{<!-}{-->}, 58 tag=[s], 59 otherkeywords={ 60 % General 61 >, 62 % Standard tags 63 <!DOCTYPE, 64 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 65 % body 66 </body, <body, 67 % Divs 68 </div, <div, </div>, 69 % Paragraphs 70 </p, <p, </p>, 71 % scripts 72 </script, <script, 73 % More tags... 74 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 75 }, 76 ndkeywords={ 77 % General 78 =, 79 % HTML attributes 80 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 81 % SVG attributes 82 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 83 % CSS properties 84 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 85 % CSS3 properties 86 transform:, -moz-transform:, -webkit-transform:, 87 animation:, -webkit-animation:, 88 transition:, transition-duration:, transition-property:, transition-timing-function:, 89 } 90 } 91 92 \lstdefinelanguage{JavaScript}{ 93 basicstyle=\ttfamily\scriptsize, 94 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 95 keywordstyle=\color{blue}\bfseries, 96 ndkeywords={class, export, boolean, throw, implements, import, this}, 97 ndkeywordstyle=\color{darkgray}\bfseries, 98 identifierstyle=\color{black}, 99 sensitive=false, 100 comment=[l]{//}, 101 morecomment=[s]{/*}{*/}, 102 commentstyle=\color{purple}\ttfamily, 103 stringstyle=\color{red}\ttfamily, 104 morestring=[b]', 105 morestring=[b]" 106 } 107 108 \setbeamersize{description width=1em} 109 110 \definecolor{blue}{rgb}{0,0,0.7} 111 \newcommand{\orange}[1]{{\color{orange}#1}} 112 \newcommand{\blue}[1]{{\color{blue}#1}} 113 \newcommand{\red}[1]{{\color{red}#1}} 114 \newcommand{\Guardian}{\mathcal{G}} 115 \newcommand{\Child}{\mathcal{C}} 116 \newcommand{\Customer}{\mathcal{C}} 117 \newcommand{\Merchant}{\mathcal{M}} 118 \newcommand{\Exchange}{\mathcal{E}} 119 120 \newcommand{\Commit}{\mathsf{Commit}} 121 \newcommand{\Attest}{\mathsf{Attest}} 122 \newcommand{\Verify}{\mathsf{Verify}} 123 \newcommand{\Derive}{\mathsf{Derive}} 124 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}} 125 \newcommand{\Compare}{\mathsf{Compare}} 126 \newcommand{\AgeVer}{\mathsf{AgeVer}} 127 128 \newcommand{\HashF}{\mathsf{H}} 129 \newcommand{\Hash}{\mathsf{H}} 130 \newcommand{\Block}{\mathbb{B}} 131 \newcommand{\Pub}{\mathsf{Pub}} 132 \newcommand{\Sign}{\mathsf{Sig}} 133 \newcommand{\Ver}{\mathsf{Ver}} 134 \newcommand{\Encoding}{\mathsf{Encoding}} 135 \newcommand{\ECDSA}{\mathsf{ECDSA}} 136 \newcommand{\Null}{\mathcal{O}} 137 \newcommand{\EC}{\mathrm{ec}} 138 \newcommand{\Curve}{\mathsf{Curve25519}} 139 \newcommand{\SHA}{\mathsf{SHA256}} 140 \newcommand{\SHAF}{\mathsf{SHA252}} 141 \newcommand{\FDH}{\mathsf{FDH}} 142 143 \newcommand{\negl}{\epsilon} 144 145 \newcommand{\rand}{\mathsf{rand}} 146 \newcommand{\age}{\mathsf{a}} 147 \newcommand{\Age}{\mathsf{M}} 148 \newcommand{\bage}{\mathsf{b}} 149 \newcommand{\minage}{\mathsf{m}} 150 \newcommand{\attest}{\mathsf{T}} 151 \newcommand{\commitment}{\mathsf{Q}} 152 \newcommand{\pruf}{\mathsf{P}} 153 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}} 154 \newcommand{\Vpruf}{\vec{\mathsf{P}}} 155 \newcommand{\blinding}{\beta} 156 157 \newcommand{\ZN}{\mathbb{Z}_N} 158 \newcommand{\Z}{\mathbb{Z}} 159 \newcommand{\N}{\mathbb{N}} 160 \newcommand{\A}{\mathbb{A}} 161 \newcommand{\E}{\mathbb{E}} 162 \newcommand{\F}{\mathbb{F}} 163 \newcommand{\seck}{\mathsf{s}} 164 \newcommand{\pubk}{\mathsf{P}} 165 \renewcommand{\H}{\mathbb{H}} 166 \newcommand{\K}{\mathbb{K}} 167 \newcommand{\Proofs}{\mathbb{P}} 168 \newcommand{\Commitments}{\mathbb{O}} 169 \newcommand{\Attests}{\mathbb{T}} 170 \newcommand{\Blindings}{\mathbb{B}} 171 \newcommand{\Nil}{\perp} 172 173 \newcommand{\p}{\mathsf{p}} 174 \newcommand{\com}{\mathsf{com}} 175 \newcommand{\prf}{\mathsf{prf}} 176 177 \newcommand{\Adv}{\mathcal{A}} 178 \newcommand{\PPT}{\mathfrak{A}} 179 \newcommand{\Probability}{\mathrm{Pr}} 180 \newcommand{\Algorithm}{f} 181 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}} 182 183 \DeclareMathOperator{\Image}{Im} 184 \DeclareMathOperator{\Mod}{mod} 185 186 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}} 187 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}} 188 \newcommand{\FDHg}[1]{[#1]_g\,} 189 \newcommand{\logg}{{\breve{g}}} 190 191 192 \newcommand{\drawfrom}{\xleftarrow{\$}} 193 \newcommand\Exists{% 194 \mathop{\lower0.75ex\hbox{\ensuremath{% 195 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% 196 \limits} 197 198 \newcommand\Forall{% 199 \mathop{\lower0.75ex\hbox{\ensuremath{% 200 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% 201 \limits} 202 203 204 \title{GNU Taler} 205 %\subtitle{} 206 207 \setbeamertemplate{navigation symbols}{ 208 \includegraphics[width=0.4cm]{logo-bfh.pdf} 209 \includegraphics[width=1.6cm]{fub.pdf} 210 \includegraphics[width=1cm]{tud-logo.pdf} 211 \includegraphics[width=1.4cm]{logo-tue.pdf} 212 \includegraphics[width=1cm]{inria.pdf} 213 \includegraphics[width=1cm]{logo-GlsBank.pdf} 214 \includegraphics[width=0.6cm]{logo-MagNetBank.pdf} \ 215 \includegraphics[width=0.6cm]{logo-visualvest.pdf} 216 \includegraphics[width=0.4cm]{ashoka.png} 217 \includegraphics[width=0.4cm]{logo-esen.pdf} 218 \includegraphics[width=0.4cm]{gnu.png} 219 \includegraphics[width=0.4cm]{logo-HomoDigitalis.pdf} 220 \includegraphics[width=0.4cm]{logo-nlnet.pdf} 221 \includegraphics[width=0.4cm]{logo-codeblau.pdf} 222 \includegraphics[width=0.4cm]{logo-ps.pdf} 223 \includegraphics[width=1cm]{taler-logo-2021-inkscape.pdf} 224 \hfill} 225 %\setbeamercovered{transparent=1} 226 227 \author[C. Grothoff]{J. Burdges, F. Dold, {\bf C. Grothoff}, M. Stanisci} 228 \date{\today} 229 \institute{The GNU Project} 230 231 232 \begin{document} 233 234 \justifying 235 236 \begin{frame} 237 \begin{center} 238 \LARGE {\bf GNU} 239 240 \vfill 241 % \includegraphics[width=0.66\textwidth]{logo-2017-fr.pdf} 242 \includegraphics[width=0.66\textwidth]{taler-logo-2021-inkscape.pdf} 243 \end{center} 244 \begin{center} 245 \includegraphics[width=0.15\textwidth]{logo-EU.pdf} 246 \includegraphics[width=0.15\textwidth]{logo-SBFI.pdf} 247 \end{center} 248 \begin{textblock*}{6cm}(.5cm,7.7cm) % {block width} (coords) 249 {\Large {\bf \href{https://taler.net/}{taler.net}} \\ 250 \href{https://twitter.com/taler}{taler@twitter} \\ 251 \href{https://taler-systems.com/}{taler-systems.com}} 252 \end{textblock*} 253 254 % Substitute based on who is giving the talk! 255 \begin{textblock*}{6cm}(6.7cm,7.7cm) % {block width} (coords) 256 {%\hfill {\Large {\bf Florian Dold \&} \\ 257 \hfill {\bf Christian Grothoff}} \\ 258 \hfill {grothoff@taler.net } 259 \end{textblock*} 260 261 \end{frame} 262 263 264 \begin{frame}{Agenda} 265 \tableofcontents 266 \end{frame} 267 268 269 \section{GNU Taler: Introduction} 270 271 \begin{frame}{What is Taler?} 272 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 273 Taler is 274 \vfill 275 \begin{itemize} 276 \item a Free/Libre software \emph{payment system} infrastructure project 277 \item ... with a surrounding software ecosystem 278 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 279 as widely as possible. 280 \end{itemize} 281 \vfill 282 \noindent 283 However, Taler is 284 \begin{itemize} 285 \item \emph{not} a currency or speculative asset 286 \item \emph{not} a long-term store of value 287 \item \emph{not} a network or instance of a system 288 \item \emph{not} decentralized 289 \item \emph{not} based on proof-of-work or proof-of-stake 290 \end{itemize} 291 \end{frame} 292 293 294 \begin{frame}{Design principles} 295 \framesubtitle{https://taler.net/en/principles.html} 296 GNU Taler must ... 297 \begin{enumerate} 298 \item {... be implemented as {\bf free software}.} 299 \item {... protect the {\bf privacy of buyers}.} 300 \item {... must enable the state to {\bf tax income} and crack down on 301 illegal business activities.} 302 \item {... prevent payment fraud.} 303 \item {... only {\bf disclose the minimal amount of information 304 necessary}.} 305 \item {... be usable.} 306 \item {... be efficient.} 307 \item {... avoid single points of failure.} 308 \item {... foster {\bf competition}.} 309 \end{enumerate} 310 \end{frame} 311 312 313 \begin{frame} 314 \frametitle{Architecture of Taler} 315 \begin{center} 316 \includegraphics[width=1\textwidth]{operations.png} 317 \end{center} 318 \end{frame} 319 320 321 \begin{frame}{Consumer Impact of Taler} 322 \begin{itemize} 323 \item {\bf Convenient:} pay with one click instantly --– in Euro, 324 Dollar, Yen or Bitcoin 325 \item {\bf Friction-free security:} Payments do not require sign-up, 326 login or multi-factor authentication 327 \item {\bf Privacy-preserving:} payment requires/shares no personal information 328 \item {\bf Bank account:} not required 329 \end{itemize} 330 \end{frame} 331 332 333 \begin{frame}{Merchant Impact of Taler} 334 \begin{itemize} 335 \item {\bf Instant clearance:} one-click transactions and instant clearance at par 336 \item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort 337 \item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs 338 \item {\bf 1-click checkout:} without Amazon and without false 339 positives in fraud detection 340 \end{itemize} 341 \end{frame} 342 343 344 \begin{frame}{Taler: Unique Regulatory Features for Central Banks} 345 \framesubtitle{\url{https://www.snb.ch/en/mmr/papers/id/working_paper_2021_03}} 346 \begin{itemize} 347 \item Central bank issues digital coins equivalent to issuing cash \\ 348 $\Rightarrow$ monetary policy remains under CB control 349 \item Architecture with consumer accounts at commercial banks \\ 350 $\Rightarrow$ no competition for commercial banking (S\&L) \\ 351 $\Rightarrow$ CB does not have to manage KYC, customer support 352 \item Withdrawal limits and denomination expiration \\ 353 $\Rightarrow$ protects against bank runs and hoarding 354 \item Income transparency and possibility to set fees \\ 355 $\Rightarrow$ additional insights into economy and new policy options 356 \item Revocation protocols and loss limitations \\ 357 $\Rightarrow$ exit strategy and handles catastrophic security incidents 358 \item Privacy by cryptographic design not organizational compliance \\ 359 $\Rightarrow$ CB cannot be forced to facilitate mass-surveillance 360 \end{itemize} 361 \end{frame} 362 363 364 \begin{frame}{Usability of Taler} 365 \vfill 366 \begin{center} 367 \url{https://demo.taler.net/} 368 \end{center} 369 \begin{enumerate} 370 \item Install browser extension. 371 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 372 \item Visit the {\tt shop.demo.taler.net} to spend coins. 373 \end{enumerate} 374 \vfill 375 \end{frame} 376 377 378 \section{Protocol Basics} 379 380 \begin{frame} 381 \vfill 382 \begin{center} 383 {\bf Protocol Basics} 384 \end{center} 385 \vfill 386 \end{frame} 387 388 389 \begin{frame}{A Bachelor's Thesis Video} 390 \begin{center} 391 \movie[%scale=0.6, 392 autostart, 393 poster] 394 { 395 \includegraphics[height=0.6\textwidth,width=0.8\textwidth]{white.png} 396 } 397 {cs-movie.mp4} 398 \end{center} 399 \end{frame} 400 401 402 \begin{frame}{How does it work?} 403 We use a few ancient constructions: 404 \begin{itemize} 405 \item Cryptographic hash function (1989) 406 \item Blind signature (1983) 407 \item Schnorr signature (1989) 408 \item Diffie-Hellman key exchange (1976) 409 \item Cut-and-choose zero-knowledge proof (1985) 410 \end{itemize} 411 But of course we use modern instantiations. 412 \end{frame} 413 414 415 \begin{frame}{Double Spending} 416 \vfill 417 The exchange does not only verify the signature, but also 418 checks that the coin was not double-spent. 419 \vfill 420 \pause 421 \begin{center} 422 {\bf Taler is an online payment system.} 423 \end{center} 424 \vfill 425 \end{frame} 426 427 428 \section{Offline payments} 429 430 \begin{frame}{Requirements: Online vs. Offline Digital Currencies} 431 \framesubtitle{\url{https://taler.net/papers/euro-bearer-online-2021.pdf}} 432 \begin{itemize} 433 \item Offline capabilities are sometimes cited as a requirement for digital payment solutions 434 \item All implementations must either use restrictive hardware elements and/or introduce 435 counterparty risk. 436 \item[$\Rightarrow$] Permanent offline features weaken a digital payment solution (privacy, security) 437 \item[$\Rightarrow$] Introduces unwarranted competition for physical cash (endangers emergency-preparedness). 438 \end{itemize} 439 We recommend a tiered approach: 440 \begin{enumerate} 441 \item Online-first, bearer-based digital currency with Taler 442 \item (Optional:) Limited offline mode for network outages 443 \item Physical cash for emergencies (power outage, catastrophic cyber incidents) 444 \end{enumerate} 445 \end{frame} 446 447 448 \begin{frame}{Partially Offline Payments with GNU Taler} 449 450 \begin{center} 451 \resizebox{8cm}{7cm}{ 452 \begin{sequencediagram} 453 \newinst{pos}{\shortstack{PoS \\ 454 \\ \begin{tikzpicture} 455 \node [fill=gray!20,draw=black,thick ,align=center] {PoS key \\ PoS ID}; 456 \end{tikzpicture} 457 }} 458 \newinst[2]{customer}{\shortstack{Customer \\ 459 \\ \begin{tikzpicture} 460 \node [fill=gray!20,draw=black,thick ,align=center] {Digital \\ Wallet}; 461 \end{tikzpicture} 462 }} 463 \newinst[2]{backend}{\shortstack{Merchant Backend \\ 464 \\ \begin{tikzpicture}[shape aspect=.5] 465 \tikzset{every node/.style={cylinder, shape border rotate=90, draw,fill=gray!25}} 466 \node at (1.5,0) {\shortstack{{\tiny PoS key} \\ {\tiny PoS ID}}}; 467 \end{tikzpicture} 468 }} 469 \postlevel 470 \mess[0]{pos}{PoS ID}{customer} 471 \begin{sdblock}{optional}{} 472 \begin{callself}{customer}{Amount}{} 473 \end{callself} 474 \end{sdblock} 475 \prelevel 476 \prelevel 477 \prelevel 478 \prelevel 479 \prelevel 480 \begin{sdblock}{optional}{} 481 \begin{callself}{pos}{Amount}{} 482 \end{callself} 483 \end{sdblock} 484 \postlevel 485 \mess[0]{customer}{PoS ID, [Amount]?}{backend} 486 \mess[0]{backend}{Contract}{customer} 487 \postlevel 488 \mess[0]{customer}{Payment}{backend} 489 \begin{callself}{pos}{OTP(PoS key)}{} 490 \end{callself} 491 \prelevel 492 \prelevel 493 \begin{callself}{backend}{OTP(PoS key)}{} 494 \end{callself} 495 \mess[0]{backend}{OTP code}{customer} 496 \postlevel 497 \mess[0]{customer}{OTP code}{pos} 498 \end{sequencediagram} 499 } 500 \end{center} 501 \end{frame} 502 503 504 505 \section{Programmable money: Age restrictions} 506 507 \begin{frame} 508 \vfill 509 \begin{center} 510 {\bf Programmable money: Age restrictions} 511 \end{center} 512 \vfill 513 \end{frame} 514 515 516 \begin{frame}{Age-restricted money in GNU Taler} 517 \framesubtitle{\url{https://taler.net/papers/esorics2022-age-restriction.pdf}} 518 Designed and implemented an age restriction scheme with the following goals: 519 520 \begin{enumerate} 521 \item It ties age restriction to the \textbf{ability to pay} (not to ID's) 522 \item maintains \textbf{anonymity of buyers} 523 \item maintains \textbf{unlinkability of transactions} 524 \item aligns with \textbf{principle of subsidiartiy} 525 \item is \textbf{practical and efficient} 526 \end{enumerate} 527 \end{frame} 528 529 530 \section{Software architecture} 531 532 \begin{frame} 533 \vfill 534 \begin{center} 535 {\bf Software architecture} 536 \end{center} 537 \vfill 538 \end{frame} 539 540 541 \begin{frame}{Taler Exchange} 542 The {\bf Exchange} is the core logic of the payment system. 543 544 \begin{itemize} 545 \item One exchange at minimum must be operated per currency 546 \item Offers a REST API for merchants and customers 547 \item Uses several helper processes for configuration and to 548 interact with RTGS and cryptography 549 \item KYC support via OAuth 2.0, KycAID or Persona APIs 550 \item AML staff can analyze transactions and freeze income 551 \end{itemize} 552 \end{frame} 553 554 555 \begin{frame}{Taler Merchant} 556 The {\bf Merchant} is the software run by merchants to accept\\ 557 GNU Taler payments. 558 559 \begin{minipage}{6cm} 560 \begin{itemize} 561 \item REST API for integration with e-commerce 562 \item SPA provides Web interface for administration 563 \item Features include: 564 \begin{itemize} 565 \item Multi-tenant support 566 \item Refunds 567 \item Rewards (Website pays visitor) 568 \item Templates (static QR codes with payment request) 569 \item Webhooks 570 \item Inventory management 571 \end{itemize} 572 \item Implemented in C on top of GNU libmicrohttpd 573 \end{itemize} 574 \end{minipage} 575 \begin{minipage}{5cm} 576 \includegraphics[width=5cm]{screenshots/merchant-spa-settings} 577 \end{minipage} 578 \end{frame} 579 580 581 \begin{frame}{Taler Wallet} 582 The {\bf Wallet} is the software run by consumers to store 583 their digital cash and authorize transactions. 584 585 \begin{minipage}{8cm} 586 \begin{itemize} 587 \item {\bf wallet-core} is the logic shared by all interfaces 588 \item Applications exist for Android, F-Droid, iOS 589 WebExtension (Chrome, Chromium, Firefox, etc.) 590 \item Features include: 591 \begin{itemize} 592 \item Multi-currency support 593 \item Wallet-to-wallet payments (NFC or QR code) 594 \item CRDT-like data model 595 \end{itemize} 596 \item {\bf wallet-core} implemented in TypeScript 597 \end{itemize} 598 Can be integrated into other Apps if desired. 599 \end{minipage} 600 \begin{minipage}{3cm} 601 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} 602 \end{minipage} 603 \end{frame} 604 605 606 \begin{frame}{Taler Auditor} 607 The {\bf Auditor} is the software run by an independent auditor 608 to validate the operation of an Exchange. 609 610 \begin{itemize} 611 \item REST API for additional report inputs by merchants (optional) 612 \item Secure database replication logic 613 \item Implemented in C on top of GNU libmicrohttpd 614 \end{itemize} 615 \end{frame} 616 617 618 \begin{frame}{Pretix Taler payment plugin} 619 \begin{center} 620 \includegraphics[width=0.5\textwidth]{screenshots/pretix.png} 621 \end{center} 622 623 Pretix is a ticket sales system. 624 625 \begin{itemize} 626 \item Pretix payment plugin enables payments via GNU Taler 627 \item Developed by Pretix.eu for \EUR{3,000} on behalf of Taler Systems SA 628 \end{itemize} 629 \end{frame} 630 631 632 \begin{frame}{WooCommerce Taler payment plugin} 633 \begin{minipage}{6cm} 634 \begin{itemize} 635 \item WooCommerce is an e-commerce plugin for WordPress. 636 \item WooCommerce payment plugin enables payments via GNU Taler 637 \item Features include: 638 \begin{itemize} 639 \item Trivial configuration 640 \item Support for refunds 641 \item Full internationalization 642 \end{itemize} 643 \item WooCommerce and its plugins are implemented in PHP 644 \end{itemize} 645 \end{minipage} 646 \begin{minipage}{5cm} 647 \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 648 \includegraphics[width=4cm]{screenshots/woocommerce-settings.png} 649 \end{minipage} 650 \end{frame} 651 652 653 \begin{frame}{Point-of-Sale App for Android} 654 655 \begin{minipage}{7cm} 656 \begin{itemize} 657 \item Allows merchant to generate orders against Taler backend 658 and display QR code to enable customer to pay in person 659 \item Patterned after ViewTouch restaurant UI 660 \item Features include: 661 \begin{itemize} 662 \item Internet-based configuration 663 \item Products sorted by categories 664 \item Easy undo of every operation 665 \item Manages multiple concurrent orders 666 \end{itemize} 667 \item The Point-of-Sale App is implemented in Kotlin 668 \end{itemize} 669 \end{minipage} 670 \begin{minipage}{4cm} 671 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg} 672 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg} 673 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg} 674 \end{minipage} 675 \end{frame} 676 677 678 \begin{frame}{Cashier App for Android} 679 \begin{minipage}{4cm} 680 \begin{itemize} 681 \item Enables BFH staff to convert cash to e-cash 682 \item Staff has special bank accounts with limited funds 683 \item Students can pay staff in cash to receive e-cash 684 \item The Cashier App is implemented in Kotlin 685 \end{itemize} 686 \end{minipage} 687 \begin{minipage}{3cm} 688 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103315.png} 689 \end{minipage} 690 \begin{minipage}{3cm} 691 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103325.png} 692 \end{minipage} 693 \end{frame} 694 695 696 \begin{frame}{LibEuFin} 697 LibEuFin is a standalone project that provides adapters to bank account 698 access APIs. 699 700 \begin{itemize} 701 \item LibEuFin provides both a generic access layer and an 702 implementation of the Wire Gateway for the exchange 703 \item Supports EBICS 2.5 and 3.0 704 \item other APIs such as FinTS or PSD2-style XS2A APIs can be added 705 without requiring changes to the Exchange 706 \item tested with German bank GLS business account and real Euros 707 \end{itemize} 708 \vfill 709 \begin{itemize} 710 \item \texttt{libeufin-nexus} is the main service 711 \item \texttt{libeufin-bank} implements a bank 712 (suitable for regional currencies) 713 \item \texttt{libeufin-sandbox} implements a toy EBICS host for protocol 714 testing 715 \end{itemize} 716 \end{frame} 717 718 719 720 \section{Performance Experiments} 721 722 \begin{frame} 723 \vfill 724 \begin{center} 725 {\bf Performance} 726 \end{center} 727 \vfill 728 \end{frame} 729 730 731 \begin{frame}\frametitle{Horizontal Distribution} 732 \begin{figure} 733 \centering 734 \includegraphics[width=0.75\linewidth]{dist-hori-more} 735 \end{figure} 736 \end{frame} 737 738 739 \begin{frame}[fragile]{Dashboard} 740 \begin{center} 741 \movie[poster, width=0.75\textwidth, showcontrols]{ 742 \includegraphics[width=0.75\textwidth]{white.png}} 743 {dashboards.mp4} 744 \end{center} 745 \end{frame} 746 747 748 749 750 \section{Future Work \& Conclusion} 751 752 \begin{frame} 753 \vfill 754 \begin{center} 755 {\bf Future Work \& Conclusion} 756 \end{center} 757 \vfill 758 \end{frame} 759 760 761 \begin{frame}{Competitor comparison} 762 \begin{center} \small 763 \begin{tabular}{l||c|c|c|c|c} 764 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 765 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 766 Offline & +++ & $-$$-$ & $-$$-$ & + & $+$$+$ \\ \hline 767 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 768 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 769 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 770 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 771 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 772 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 773 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 774 Libre & $-$ & +++ & +++ & $-$ $-$ $-$& +++ \\ 775 \end{tabular} 776 \end{center} 777 \end{frame} 778 779 780 \begin{frame}{Taler: Project Status} 781 \framesubtitle{\url{https://docs.taler.net/}} 782 \begin{itemize} 783 \item Cryptographic protocols are stable 784 \item Pilot project at Bern University of Applied Sciences cafeteria 785 \item Regional currency projects in Switzerland preparing for launch 786 \item Internal alpha deployment with GLS Bank (Germany) 787 \end{itemize} 788 \end{frame} 789 790 791 \begin{frame}{Active collaborations} 792 \begin{description} 793 \item {\bf Freie Universit\"at Berlin:} \\ Programmability 794 \item {\bf Technical University Dresden:} \\ embedded systems 795 \item {\bf The GNU Project}: \\ Integration into FLOSS software 796 \item {\bf Anastasis SARL}: \\ Distributed key escrow for backups 797 \item {\bf Fraunhofer Gesellschaft}: \\ Identity management \& SSI \& wallet-to-wallet communication 798 \item {\bf Chelpis (Ming Chih)}: Regional support partner for Taiwan ({\bf new}, \url{https://www.taiwannews.com.tw/en/news/4958467}) 799 % \item {\bf Fiscaltrust GmbH}: \\ Point-of-sale integration ({\bf new}) 800 \end{description} 801 \end{frame} 802 803 \begin{frame}{NGI TALER PILOT} 804 \framesubtitle{\url{https://taler.net/en/consortium.html}} 805 806 \begin{itemize} 807 \item EU Project started December 2023 to deploy GNU Taler 808 \item 3 financial institutions (GLS Bank, Magnet Bank, Visual Vest), 809 2 academic institutions (Berner FH, TU Eindhoven), 3 SMEs (Taler Systems SA, Code Blau GmbH, Petit Singularites), 3 non-profits (NLnet Foundation, E-Seniors Association, Homo Digitalis) 810 \item $\approx$ \EUR 5M budget over 3 years 811 \item Objective: {\bf Deploy GNU Taler in Europe} 812 \end{itemize} 813 \end{frame} 814 815 816 \begin{frame}{Key NGI PILOT Activities} 817 \begin{itemize} 818 \item Integration (core banking, online publishers, e-commerce, public transportation) 819 \item Compliant (establish compliance processes at each bank) 820 \item Availability (packaging, porting to more platforms, browsers) 821 \item Hardware support (offline payments, vending machines) 822 \item Security audits of code and design 823 \item Accessible (old people, children, blind users) 824 \item Future-proof (post-quantum, standardized) 825 \item Widely known and used (community building, open calls) 826 \end{itemize} 827 \end{frame} 828 829 830 \begin{frame}{Other ongoing developments} 831 \begin{itemize} 832 \item Privacy-preserving auctions (trading, currency exchange) 833 \item Hardware and software support for embedded systems 834 \item GNU Name System registry with GNU Taler payments 835 \item Performance improvements for RSA in FLOSS crypto libraries 836 \item Parallel verification of RSA signatures on GPUs 837 \item Tax-deductable receipts for donations to charities 838 \item Unlinkable anonymous subscriptions and discount tokens 839 \end{itemize} 840 \end{frame} 841 842 843 \begin{frame}{How to support?} 844 \begin{description} 845 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 846 \item[Develop:] \url{https://git.taler.net/} 847 \item[Integrate:] \url{https://docs.taler.net/} 848 \item[Partner:] \url{https://taler-systems.com/} 849 \end{description} 850 \end{frame} 851 852 853 \begin{frame}{Conclusion} 854 \begin{center} 855 {\bf What can we do?} 856 \end{center} 857 \vfill 858 \begin{itemize} 859 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 860 \item{Engage in arms race with deliberately unregulatable blockchains} 861 % \item{Enjoy the ``benefits'' of cash \\ 862 % \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 863 \end{itemize} 864 \vfill 865 \begin{center} 866 {\bf OR} 867 \end{center} 868 \vfill 869 \begin{itemize} 870 \item{Establish free software alternative balancing social goals!} 871 \end{itemize} 872 \vfill 873 \end{frame} 874 875 876 \begin{frame} 877 \frametitle{Do you have any questions?} 878 \vfill 879 References: 880 {\tiny 881 \begin{enumerate} 882 \item{David Chaum, Christian Grothoff and Thomas Moser. 883 {\em How to issue a central bank digital currency}. 884 {\bf SNB Working Papers, 2021}.} 885 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 886 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 887 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 888 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 889 {\em Enabling Secure Web Payments with GNU Taler}. 890 {\bf SPACE 2016}.} 891 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 892 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 893 Available upon request. 2016.} 894 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 895 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 896 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 897 \item{David Chaum, Amos Fiat and Moni Naor. 898 {\em Untraceable electronic cash}. 899 {\bf Proceedings on Advances in Cryptology, 1990}.} 900 \item{Phillip Rogaway. 901 {\em The Moral Character of Cryptographic Work}. 902 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 903 \end{enumerate} 904 } 905 \begin{center} 906 {\bf Let me know what is missing to make this interesting for you!} 907 \end{center} 908 909 \end{frame} 910 911 912 \begin{frame}{Rights} 913 \begin{itemize} 914 \item GNUnet e.V. shared copyrights of their AGPLv3+ licensed code with Taler Systems SA 915 \item Taler Systems SA holds copyrights to entire GNU Taler code base (AGPLv3+, GPLv3+, 916 dual-licensing exclusive domain of Taler Systems SA) 917 \item Taler Systems SA applied for patent on offline payment solution 918 \item Taler Systems SA holds trademark on ``Taler''. 919 \item FSF holds trademark on ``GNU'', we are authorized to use ``GNU Taler''. 920 \item Taler Systems SA owns {\tt taler.net} and {\tt taler-systems.com}. 921 \end{itemize} 922 \end{frame} 923 924 925 \end{document} 926 927 928 929 930 \begin{frame}{Taler {\tt /withdraw/sign}} 931 % Customer withdrawing coins with blind signatures 932 % \bigskip 933 \begin{figure}[th] 934 \begin{minipage}[b]{0.45\linewidth} 935 \begin{center} 936 \begin{tikzpicture}[scale = 0.4, 937 transform shape, 938 msglabel/.style = { text = Black, yshift = .3cm, 939 sloped, midway }, 940 okmsg/.style = { ->, color = MidnightBlue, thick, 941 >=stealth }, 942 rstmsg/.style = { ->, color = BrickRed, thick, 943 >=stealth } 944 ] 945 \node[draw = MidnightBlue, 946 fill = CornflowerBlue, 947 minimum width = .3cm, 948 minimum height = 10cm 949 ] (h1) at (-4, 0) {}; 950 \node[draw = MidnightBlue, 951 fill = CornflowerBlue, 952 minimum width = .3cm, 953 minimum height = 10cm 954 ] (h2) at (4, 0) {}; 955 \node[above = 0cm of h1] {Wallet}; 956 \node[above = 0cm of h2] {Exchange}; 957 958 \path[->, color = MidnightBlue, very thick, >=stealth] 959 (-5, 4.5) edge 960 node[rotate=90, text = Black, yshift = .3cm] {Time} 961 (-5, -4.5); 962 \path[okmsg, dashed] 963 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 964 node[msglabel] {SEPA(RK,A)} 965 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 966 \path[okmsg] 967 ($(h1.east)+(0, -1.0)$) edge 968 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 969 ($(h2.west)+(0, -1.5)$); 970 \path[okmsg] 971 ($(h2.west)+(0, -2.0)$) edge 972 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 973 ($(h1.east)+(0, -2.5)$); 974 \path[rstmsg] 975 ($(h2.west)+(0, -3.5)$) edge 976 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 977 ($(h1.east)+(0, -4)$); 978 \node at (5.3, 0) {}; 979 \end{tikzpicture} 980 \end{center} 981 Result: $\langle c, S_{DK}(C) \rangle$. 982 \end{minipage} 983 \hspace{0.5cm} 984 \begin{minipage}[b]{0.45\linewidth} 985 \tiny 986 \begin{description} 987 \item[$A$] Some amount, $A \ge A_{DK}$ 988 \item[$RK$] Reserve key 989 \item[$DK$] Denomination key 990 \item[$b$] Blinding factor 991 \item[$B_b()$] RSA-FDH blinding % DK supressed 992 \item[$C$] Coin public key $C := cG$ 993 \item[$S_{RK}()$] EdDSA signature 994 \item[$S_{DK}()$] RSA-FDH signature 995 \end{description} 996 \end{minipage} 997 \end{figure} 998 \end{frame} 999 1000 1001 \begin{frame}[t]{Taler {\tt /deposit}} 1002 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 1003 \bigskip 1004 \begin{figure}[th] 1005 \begin{minipage}[b]{0.45\linewidth} 1006 \begin{center} 1007 \begin{tikzpicture}[scale = 0.4, 1008 transform shape, 1009 msglabel/.style = { text = Black, yshift = .3cm, 1010 sloped, midway }, 1011 okmsg/.style = { ->, color = MidnightBlue, thick, 1012 >=stealth }, 1013 rstmsg/.style = { ->, color = BrickRed, thick, 1014 >=stealth } 1015 ] 1016 \node[draw = MidnightBlue, 1017 fill = CornflowerBlue, 1018 minimum width = .3cm, 1019 minimum height = 10cm 1020 ] (h1) at (-4, 0) {}; 1021 \node[draw = MidnightBlue, 1022 fill = CornflowerBlue, 1023 minimum width = .3cm, 1024 minimum height = 10cm 1025 ] (h2) at (4, 0) {}; 1026 \node[above = 0cm of h1] {Merchant}; 1027 \node[above = 0cm of h2] {Exchange}; 1028 1029 \path[->, color = MidnightBlue, very thick, >=stealth] 1030 (-5, 4.5) edge 1031 node[rotate=90, text = Black, yshift = .3cm] {Time} 1032 (-5, -4.5); 1033 \path[->, color = MidnightBlue, thick, >=stealth] 1034 ($(h1.east)+(0,3)$) edge 1035 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 1036 ($(h2.west)+(0,2)$); 1037 \path[->, color = MidnightBlue, thick, >=stealth] 1038 ($(h2.west)+(0,0.5)$) edge 1039 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 1040 ($(h1.east)+(0,-0.5)$); 1041 \path[rstmsg] 1042 ($(h2.west)+(0, -2.5)$) edge 1043 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 1044 ($(h1.east)+(0, -3.5)$); 1045 \node at (5.3, 0) {}; 1046 \end{tikzpicture} 1047 \end{center} 1048 \end{minipage} 1049 \hspace{0.5cm} 1050 \begin{minipage}[b]{0.45\linewidth} 1051 \tiny 1052 \begin{description} 1053 \item[$DK$] Denomination key 1054 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 1055 \item[$c$] Private coin key, $C := cG$. 1056 \item[$S_{C}()$] EdDSA signature using $c$ 1057 \item[$D$] Deposit details 1058 \item[$SK$] Exchange's signing key 1059 \item[$S_{SK}()$] EdDSA signature using $SK$ 1060 \item[$D'$] Conficting deposit details $D' \not= D$ 1061 \end{description} 1062 \end{minipage} 1063 \end{figure} 1064 \end{frame} 1065 1066 1067 \begin{frame}{Taler {\tt /refresh/melt}} 1068 \begin{figure}[th] 1069 \begin{minipage}[b]{0.45\linewidth} 1070 \begin{center} 1071 \begin{tikzpicture}[scale = 0.4, 1072 transform shape, 1073 msglabel/.style = { text = Black, yshift = .3cm, 1074 sloped, midway }, 1075 okmsg/.style = { ->, color = MidnightBlue, thick, 1076 >=stealth }, 1077 rstmsg/.style = { ->, color = BrickRed, thick, 1078 >=stealth } 1079 ] 1080 \node[draw = MidnightBlue, 1081 fill = CornflowerBlue, 1082 minimum width = .3cm, 1083 minimum height = 10cm 1084 ] (h1) at (-4, 0) {}; 1085 \node[draw = MidnightBlue, 1086 fill = CornflowerBlue, 1087 minimum width = .3cm, 1088 minimum height = 10cm 1089 ] (h2) at (4, 0) {}; 1090 \node[above = 0cm of h1] {Customer}; 1091 \node[above = 0cm of h2] {Exchange}; 1092 1093 \path[->, color = MidnightBlue, very thick, >=stealth] 1094 (-5, 4.5) edge 1095 node[rotate=90, text = Black, yshift = .3cm] {Time} 1096 (-5, -4.5); 1097 \path[->, color = MidnightBlue, thick, >=stealth] 1098 ($(h1.east)+(0,3)$) edge 1099 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 1100 ($(h2.west)+(0,2)$); 1101 \path[->, color = MidnightBlue, thick, >=stealth] 1102 ($(h2.west)+(0,0.5)$) edge 1103 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 1104 ($(h1.east)+(0,-0.5)$); 1105 \path[rstmsg] 1106 ($(h2.west)+(0, -2.5)$) edge 1107 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 1108 ($(h1.east)+(0, -3.5)$); 1109 \node at (5.3, 0) {}; 1110 \end{tikzpicture} 1111 \end{center} 1112 \end{minipage} 1113 \hspace{0.5cm} 1114 \begin{minipage}[b]{0.45\linewidth} 1115 \tiny 1116 \begin{description} 1117 \item[$\kappa$] System-wide security parameter, usually 3. 1118 \\ \smallskip 1119 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 1120 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 1121 \item[$t_j$] Random scalar for $j<\kappa$ 1122 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 1123 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 1124 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 1125 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 1126 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 1127 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 1128 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 1129 \\ \smallskip 1130 \item[$\gamma$] Random value in $[0,\kappa)$ 1131 % \\ \smallskip 1132 % \item[$X$] Deposit or refresh 1133 \end{description} 1134 \end{minipage} 1135 \end{figure} 1136 \end{frame} 1137 1138 1139 \begin{frame}{Taler {\tt /refresh/reveal}} 1140 \begin{figure}[th] 1141 \begin{minipage}[b]{0.45\linewidth} 1142 \begin{center} 1143 \begin{tikzpicture}[scale = 0.4, 1144 transform shape, 1145 msglabel/.style = { text = Black, yshift = .3cm, 1146 sloped, midway }, 1147 okmsg/.style = { ->, color = MidnightBlue, thick, 1148 >=stealth }, 1149 rstmsg/.style = { ->, color = BrickRed, thick, 1150 >=stealth } 1151 ] 1152 \node[draw = MidnightBlue, 1153 fill = CornflowerBlue, 1154 minimum width = .3cm, 1155 minimum height = 10cm 1156 ] (h1) at (-4, 0) {}; 1157 \node[draw = MidnightBlue, 1158 fill = CornflowerBlue, 1159 minimum width = .3cm, 1160 minimum height = 10cm 1161 ] (h2) at (4, 0) {}; 1162 \node[above = 0cm of h1] {Customer}; 1163 \node[above = 0cm of h2] {Exchange}; 1164 1165 \path[->, color = MidnightBlue, very thick, >=stealth] 1166 (-5, 4.5) edge 1167 node[rotate=90, text = Black, yshift = .3cm] {Time} 1168 (-5, -4.5); 1169 \path[->, color = MidnightBlue, thick, >=stealth] 1170 ($(h1.east)+(0,3)$) edge 1171 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 1172 ($(h2.west)+(0,2)$); 1173 \path[->, color = MidnightBlue, thick, >=stealth] 1174 ($(h2.west)+(0,0.5)$) edge 1175 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 1176 ($(h1.east)+(0,-0.5)$); 1177 \path[rstmsg] 1178 ($(h2.west)+(0, -2.5)$) edge 1179 node[msglabel] {400 BAD REQUEST: $Z$} 1180 ($(h1.east)+(0, -3.5)$); 1181 \node at (5.3, 0) {}; 1182 \end{tikzpicture} 1183 \end{center} 1184 \end{minipage} 1185 \hspace{0.5cm} 1186 \begin{minipage}[b]{0.45\linewidth} 1187 \tiny 1188 \begin{description} 1189 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 1190 \item[$t_j$] .. \\ \smallskip 1191 1192 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 1193 1194 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 1195 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 1196 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 1197 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 1198 1199 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 1200 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 1201 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 1202 1203 \item[$Z$] Cut-and-choose missmatch information 1204 \end{description} 1205 \end{minipage} 1206 \end{figure} 1207 \end{frame} 1208 1209 1210 \begin{frame}{Taler {\tt /refresh/link}} 1211 \begin{figure}[th] 1212 \begin{minipage}[b]{0.45\linewidth} 1213 \begin{center} 1214 \begin{tikzpicture}[scale = 0.4, 1215 transform shape, 1216 msglabel/.style = { text = Black, yshift = .3cm, 1217 sloped, midway }, 1218 okmsg/.style = { ->, color = MidnightBlue, thick, 1219 >=stealth }, 1220 rstmsg/.style = { ->, color = BrickRed, thick, 1221 >=stealth } 1222 ] 1223 \node[draw = MidnightBlue, 1224 fill = CornflowerBlue, 1225 minimum width = .3cm, 1226 minimum height = 10cm 1227 ] (h1) at (-4, 0) {}; 1228 \node[draw = MidnightBlue, 1229 fill = CornflowerBlue, 1230 minimum width = .3cm, 1231 minimum height = 10cm 1232 ] (h2) at (4, 0) {}; 1233 \node[above = 0cm of h1] {Customer}; 1234 \node[above = 0cm of h2] {Exchagne}; 1235 1236 \path[->, color = MidnightBlue, very thick, >=stealth] 1237 (-5, 4.5) edge 1238 node[rotate=90, text = Black, yshift = .3cm] {Time} 1239 (-5, -4.5); 1240 \path[->, color = MidnightBlue, thick, >=stealth] 1241 ($(h1.east)+(0,3)$) edge 1242 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 1243 ($(h2.west)+(0,2)$); 1244 \path[->, color = MidnightBlue, thick, >=stealth] 1245 ($(h2.west)+(0,0.5)$) edge 1246 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 1247 ($(h1.east)+(0,-0.5)$); 1248 \path[rstmsg] 1249 ($(h2.west)+(0, -2.5)$) edge 1250 node[msglabel] {404 NOT FOUND} 1251 ($(h1.east)+(0, -3.5)$); 1252 \node at (5.3, 0) {}; 1253 \end{tikzpicture} 1254 \end{center} 1255 \end{minipage} 1256 \hspace{0.5cm} 1257 \begin{minipage}[b]{0.45\linewidth} 1258 \tiny 1259 \begin{description} 1260 \item[$C$] Old coind public key \\ \smallskip 1261 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 1262 \end{description} 1263 \end{minipage} 1264 \end{figure} 1265 \end{frame} 1266 1267 1268 \begin{frame}{Operational security} 1269 \begin{center} 1270 \resizebox{\textwidth}{!}{ 1271 \begin{tikzpicture}[ 1272 font=\sffamily, 1273 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 1274 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 1275 process/.style={draw,thick,circle,fill=blue!20}, 1276 sink/.style={source,fill=green!20}, 1277 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 1278 dots/.style={gray,scale=2}, 1279 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 1280 every node/.style={align=center}] 1281 1282 % Position the nodes using a matrix layout 1283 \matrix{ 1284 \node[source] (wallet) {Wallet}; 1285 \& \node[process] (browser) {Browser}; 1286 \& \node[process] (shop) {Web shop}; 1287 \& \node[sink] (backend) {Taler backend}; \\ 1288 }; 1289 1290 % Draw the arrows between the nodes and label them. 1291 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 1292 node[midway,below] {(signal)} (wallet); 1293 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 1294 node[midway,below] {(5) signed coins} (browser); 1295 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 1296 node[midway,below] {(HTTPS)} (shop); 1297 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 1298 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 1299 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 1300 node[midway,below] {(HTTPS)} (shop); 1301 \end{tikzpicture} 1302 } 1303 \end{center} 1304 \end{frame} 1305 1306 1307 \begin{frame}{Use Cases: Refugee Camps} 1308 Today: 1309 \begin{itemize} 1310 \item Non-bankable 1311 \item Direct distribution of goods to population 1312 \item Limited economic activity in camps 1313 \item High level of economic dependence 1314 \end{itemize}\vfill\pause 1315 With GNU Taler: 1316 \begin{itemize} 1317 \item Local currency issued as basic income backed by aid 1318 \item Taxation possible based on economic status 1319 \item Local governance enabled by local taxes 1320 \item Increased economic independence and political participation 1321 \end{itemize} 1322 \end{frame} 1323 1324 1325 \begin{frame}{Use Case: Anti-Spam} 1326 \framesubtitle{Background: \url{https://pep.security/}} 1327 Today, p$\equiv$p provides authenticated encryption for e-mail: 1328 \begin{itemize} 1329 \item Free software 1330 \item Easy to use opportunistic encryption 1331 \item Available for Outlook, Android, Enigmail 1332 \item Spies \& spam filters can no longer inspect content 1333 \end{itemize}\vfill\pause 1334 With GNU Taler: 1335 \begin{itemize} 1336 \item Peer-to-peer payments via e-mail 1337 \item If unsolicited sender, hide messages from user \& 1338 automatically request payment from sender 1339 \item Sender can attach payment to be moved to inbox 1340 \item Receiver may grant refund to sender 1341 \end{itemize} 1342 \end{frame}