main.tex (28109B)
1 \pdfminorversion=3 2 \documentclass[fleqn,xcolor={usenames,dvipsnames}]{beamer} 3 \input taler-macros 4 5 \newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET} 6 \newcommand{\SUB}{The GNU Taler Payment System} 7 \newcommand{\AUTHOR}{Christian Grothoff} 8 \newcommand{\SPEAKER}{Christian Grothoff} 9 \newcommand{\INST}{The GNU Project} 10 \newcommand{\DATE}{\today} 11 12 % Do not edit this part 13 \title{\TITLE} 14 \subtitle{\SUB} 15 \date{\DATE} 16 \author[\SPEAKER]{\AUTHOR} 17 \institute{\INST} 18 \usepackage{amsmath} 19 \usepackage{multimedia} 20 \usepackage[utf8]{inputenc} 21 \usepackage{framed,color,ragged2e} 22 \usepackage[absolute,overlay]{textpos} 23 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 24 \usetheme{boxes} 25 \setbeamertemplate{navigation symbols}{} 26 \usepackage{xcolor} 27 \usepackage[normalem]{ulem} 28 \usepackage{listings} 29 \usepackage{adjustbox} 30 \usepackage{array} 31 \usepackage{bbding} 32 \usepackage{relsize} 33 \usepackage{graphicx} 34 \usepackage{tikz,eurosym,calc} 35 \usetikzlibrary{tikzmark} 36 \usetikzlibrary{shapes,arrows,arrows.meta} 37 \usetikzlibrary{positioning,fit,patterns} 38 \usetikzlibrary{calc} 39 \usepackage{multicol} 40 \usepackage{pgf-umlsd} 41 \usepackage{relsize} 42 43 44 % CSS 45 \lstdefinelanguage{CSS}{ 46 basicstyle=\ttfamily\scriptsize, 47 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}, 48 sensitive=true, 49 morecomment=[l]{//}, 50 morecomment=[s]{/*}{*/}, 51 morestring=[b]', 52 morestring=[b]", 53 alsoletter={:}, 54 alsodigit={-} 55 } 56 57 % JavaScript 58 \lstdefinelanguage{JavaScript}{ 59 basicstyle=\ttfamily\scriptsize, 60 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 61 morecomment=[s]{/*}{*/}, 62 morecomment=[l]//, 63 morestring=[b]", 64 morestring=[b]' 65 } 66 67 \lstdefinelanguage{HTML5}{ 68 basicstyle=\ttfamily\scriptsize, 69 language=html, 70 sensitive=true, 71 alsoletter={<>=-}, 72 morecomment=[s]{<!-}{-->}, 73 tag=[s], 74 otherkeywords={ 75 % General 76 >, 77 % Standard tags 78 <!DOCTYPE, 79 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 80 % body 81 </body, <body, 82 % Divs 83 </div, <div, </div>, 84 % Paragraphs 85 </p, <p, </p>, 86 % scripts 87 </script, <script, 88 % More tags... 89 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 90 }, 91 ndkeywords={ 92 % General 93 =, 94 % HTML attributes 95 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 96 % SVG attributes 97 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 98 % CSS properties 99 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 100 % CSS3 properties 101 transform:, -moz-transform:, -webkit-transform:, 102 animation:, -webkit-animation:, 103 transition:, transition-duration:, transition-property:, transition-timing-function:, 104 } 105 } 106 107 \lstdefinelanguage{JavaScript}{ 108 basicstyle=\ttfamily\scriptsize, 109 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 110 keywordstyle=\color{blue}\bfseries, 111 ndkeywords={class, export, boolean, throw, implements, import, this}, 112 ndkeywordstyle=\color{darkgray}\bfseries, 113 identifierstyle=\color{black}, 114 sensitive=false, 115 comment=[l]{//}, 116 morecomment=[s]{/*}{*/}, 117 commentstyle=\color{purple}\ttfamily, 118 stringstyle=\color{red}\ttfamily, 119 morestring=[b]', 120 morestring=[b]" 121 } 122 123 \setbeamersize{description width=1em} 124 125 \title{GNU Taler} 126 %\subtitle{} 127 128 % NOTE: adjust as needed! 129 \author[C. Grothoff]{F. Dold, C. Grothoff} 130 \institute{The GNU Project} 131 132 133 \begin{document} 134 135 \justifying 136 137 \begin{frame}{GNU Taler} 138 \vfill 139 \begin{center} 140 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 141 \end{center} 142 \vfill 143 \begin{center} 144 \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf} 145 \end{center} 146 \vfill 147 \begin{center} 148 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 149 \end{center} 150 \vfill 151 \vfill 152 \ % 153 \end{frame} 154 155 156 \begin{frame}{What is Taler?} 157 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 158 Taler is 159 \vfill 160 \begin{itemize} 161 \item a Free/Libre software \emph{payment system} infrastructure project 162 \item ... with a surrounding software ecosystem 163 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 164 as widely as possible. 165 \end{itemize} 166 \vfill 167 \noindent 168 However, Taler is 169 \begin{itemize} 170 \item \emph{not} a currency or speculative asset 171 \item \emph{not} a long-term store of value 172 \item \emph{not} a network or instance of a system 173 \item \emph{not} based on proof-of-work or proof-of-stake 174 \end{itemize} 175 \end{frame} 176 177 178 \begin{frame}{Design principles} 179 \framesubtitle{https://taler.net/en/principles.html} 180 GNU Taler must ... 181 \begin{enumerate} 182 \item {... be implemented as {\bf free software}.} 183 \item {... protect the {\bf privacy of buyers}.} 184 \item {... enable the state to {\bf tax income} and crack down on 185 illegal business activities.} 186 \item {... prevent payment fraud.} 187 \item {... only {\bf disclose the minimal amount of information 188 necessary}.} 189 \item {... be usable.} 190 \item {... be efficient.} 191 \item {... avoid single points of failure.} 192 \item {... foster {\bf competition}.} 193 \end{enumerate} 194 \end{frame} 195 196 197 \begin{frame} 198 \frametitle{Taler Overview} 199 \begin{center} 200 \begin{tikzpicture} 201 \tikzstyle{def} = [node distance= 5em and 5em, inner sep=1em, outer sep=.3em]; 202 \node (origin) at (0,0) {}; 203 \node (exchange) [def,above=of origin,draw]{Exchange}; 204 \node (customer) [def, draw, below left=of origin] {Customer}; 205 \node (merchant) [def, draw, below right=of origin] {Merchant}; 206 \node (auditor) [def, node distance=5em and 6em, draw, above right=of origin]{Auditor}; 207 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 208 209 \tikzstyle{C} = [color=black, line width=1pt] 210 211 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 212 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 213 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 214 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 215 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 216 217 \end{tikzpicture} 218 \end{center} 219 \end{frame} 220 221 222 223 \begin{frame} 224 \frametitle{Architecture of Taler} 225 \begin{center} 226 \includegraphics[width=0.8\textwidth]{operations.png} 227 \end{center} 228 \end{frame} 229 230 231 \begin{frame}{Usability of GNU Taler} 232 \vfill 233 \begin{center} 234 \url{https://demo.taler.net/} 235 \end{center} 236 \begin{enumerate} 237 \item Install browser extension. 238 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 239 \item Visit the {\tt shop.demo.taler.net} to spend coins. 240 \end{enumerate} 241 \vfill 242 \end{frame} 243 244 245 \begin{frame}{Real-world use} 246 \vfill 247 \begin{center} 248 \includegraphics[width=1.0\textwidth]{taler-in-use.png} 249 \end{center} 250 \vfill 251 \end{frame} 252 253 254 \begin{frame}{Literacy \& Numeracy}{Joint work with MyOralVillage} 255 \includegraphics[width=0.45\textwidth]{illiteracy.png} 256 \includegraphics[width=0.45\textwidth]{numeracy.png} 257 \end{frame} 258 259 260 \begin{frame}{GNU Taler Oral Information Management Design} 261 \begin{center} 262 \includegraphics[width=0.5\textwidth]{taler-oim.png} 263 \end{center} 264 \begin{center} 265 \includegraphics[width=0.5\textwidth]{transaction-types.png} 266 \end{center} 267 \end{frame} 268 269 270 \begin{frame}{Results from Freetown (2025)} 271 \begin{itemize} 272 \item 21 women speaking 6 local languages were briefed on how to send money in the OIM Taler prototype. 273 \item Of these only 4 had completed primary school, and only 6 could read a 5-digit cash (ordinal) number. 274 \item After 24 hours they were presented a Taler wallet with a random sum in New Leone tokens. 275 They were asked to count the money, and complete 8 tasks to send some to another person by generating a scannable QR code. 276 \item 16 completed all 8 tasks with no errors. 277 \item 4 completed all 8 tasks with two tries but no help. Only one was unable to complete the process successfully. 278 \end{itemize} 279 \end{frame} 280 281 282 \begin{frame}{Taler: Project Status} 283 \framesubtitle{\url{https://taler-ops.ch/}} 284 3x in production in Switzerland: 285 \begin{itemize} 286 \item Netzbon regional currency 287 \item Taler Operations AG for {\bf regulated} CHF 288 \item LeFrancPaysan (coming soon) 289 \end{itemize} 290 With potential to grow: 291 \begin{itemize} 292 \item Core banking integrations for GLS, Magnet, Raiffeisen, Postfinance, Valiant Bank exist 293 \item Raising funds for launch in European Union 294 \end{itemize} 295 \end{frame} 296 297 298 \begin{frame}{Taler: Technical Roadmap} 299 \begin{itemize} 300 \item Currency conversion via Interledger protocol 301 \item Subscription \& discount tokens 302 \item Improved point-of-sale terminal integration 303 \item Hardware integrations (doors, xOTP, MDB) 304 \item KYC via e-ID across Europe 305 \item Post-quantum cryptographic protocol variant 306 \item Oral information mangement-inspired UIs 307 \end{itemize} 308 \end{frame} 309 310 311 \begin{frame}{How to support?} 312 \begin{description} 313 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 314 \item[Discuss:] {\small \url{https://ich.taler.net/}} 315 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 316 \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler} 317 \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net} 318 \item[Integrate:] \url{https://docs.taler.net/} 319 \item[Invest:] {\small \url{invest@taler-systems.com}} 320 \item[Donate:] \url{https://gnunet.org/ev} 321 \item[Partner:] \url{https://taler-systems.com/} 322 \end{description} 323 \end{frame} 324 325 326 \begin{frame} 327 \frametitle{Do you have any questions?} 328 \vfill 329 References: 330 {\tiny 331 \begin{enumerate} 332 \item{Özgür Kesim, Christian Grothoff, Florian Dold and Martin Schanzenbach. 333 {\em Zero-Knowledge Age Restriction for GNU Taler}. 334 {\bf 27th European Symposium on Research in Computer Security (ESORICS), 2022}.} 335 \item{David Chaum, Christian Grothoff and Thomas Moser. 336 {\em How to issue a central bank digital currency}. 337 {\bf SNB Working Papers, 2021}.} 338 \item{Christian Grothoff, Bart Polot and Carlo von Loesch. 339 {\em The Internet is broken: Idealistic Ideas for Building a GNU Network}. 340 {\bf W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT)}, 2014.} 341 \item{Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. 342 {\em Enabling Secure Web Payments with GNU Taler}. 343 {\bf SPACE 2016}.} 344 \item{Florian Dold, Sree Harsha Totakura, Benedikt M\"uller, Jeffrey Burdges and Christian Grothoff. 345 {\em Taler: Taxable Anonymous Libre Electronic Reserves}. 346 Available upon request. 2016.} 347 \item{Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars Virza. 348 {\em Zerocash: Decentralized Anonymous Payments from Bitcoin}. 349 {\bf IEEE Symposium on Security \& Privacy, 2016}.} 350 \item{David Chaum, Amos Fiat and Moni Naor. 351 {\em Untraceable electronic cash}. 352 {\bf Proceedings on Advances in Cryptology, 1990}.} 353 \item{Phillip Rogaway. 354 {\em The Moral Character of Cryptographic Work}. 355 {\bf Asiacrypt}, 2015.} \label{bib:rogaway} 356 \end{enumerate} 357 } 358 \begin{center} 359 {\bf Let money facilitate trade; but ensure capital serves society.} 360 \end{center} 361 \end{frame} 362 363 364 \begin{frame}{Rights} 365 \begin{itemize} 366 \item GNUnet e.V. shared copyrights of their AGPLv3+ licensed code with Taler Systems SA 367 \item Taler Systems SA holds copyrights to entire GNU Taler code base (AGPLv3+, GPLv3+, 368 dual-licensing exclusive domain of Taler Systems SA) 369 \item Taler Systems SA applied for patent on offline payment solution 370 \item Taler Systems SA holds trademark on ``Taler''. 371 \item FSF holds trademark on ``GNU'', we are authorized to use ``GNU Taler''. 372 \item Taler Systems SA owns {\tt taler.net} and {\tt taler-systems.com}. 373 \end{itemize} 374 \end{frame} 375 376 \section*{References} 377 \begin{frame}[allowframebreaks]{References} 378 \bibliographystyle{plain} 379 \bibliography{ref,extra,rfc,biblio-defqa} 380 \end{frame} 381 382 383 384 % This should be last... 385 \begin{frame}{Acknowledgments} 386 387 \begin{minipage}{0.45\textwidth} \ \\ 388 {\tiny Funded by the European Union (Project 101135475).} 389 390 \begin{center} 391 \includegraphics[width=0.5\textwidth]{../bandera.jpg} 392 \end{center} 393 \end{minipage} 394 \hfill 395 \begin{minipage}{0.45\textwidth} 396 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 397 398 \begin{center} 399 \includegraphics[width=0.65\textwidth]{../sbfi.jpg} 400 \end{center} 401 \end{minipage} 402 403 \vfill 404 405 {\tiny 406 407 Views and opinions expressed are however those of the author(s) only 408 and do not necessarily reflect those of the European Union. Neither the 409 European Union nor the granting authority can be held responsible for 410 them. 411 412 } 413 \end{frame} 414 415 416 \end{document} 417 418 419 420 421 \begin{frame}{Taler {\tt /withdraw/sign}} 422 % Customer withdrawing coins with blind signatures 423 % \bigskip 424 \begin{figure}[th] 425 \begin{minipage}[b]{0.45\linewidth} 426 \begin{center} 427 \begin{tikzpicture}[scale = 0.4, 428 transform shape, 429 msglabel/.style = { text = Black, yshift = .3cm, 430 sloped, midway }, 431 okmsg/.style = { ->, color = MidnightBlue, thick, 432 >=stealth }, 433 rstmsg/.style = { ->, color = BrickRed, thick, 434 >=stealth } 435 ] 436 \node[draw = MidnightBlue, 437 fill = CornflowerBlue, 438 minimum width = .3cm, 439 minimum height = 10cm 440 ] (h1) at (-4, 0) {}; 441 \node[draw = MidnightBlue, 442 fill = CornflowerBlue, 443 minimum width = .3cm, 444 minimum height = 10cm 445 ] (h2) at (4, 0) {}; 446 \node[above = 0cm of h1] {Wallet}; 447 \node[above = 0cm of h2] {Exchange}; 448 449 \path[->, color = MidnightBlue, very thick, >=stealth] 450 (-5, 4.5) edge 451 node[rotate=90, text = Black, yshift = .3cm] {Time} 452 (-5, -4.5); 453 \path[okmsg, dashed] 454 ($(h1.east)+(0, 4.0)+(0, -1.0)$) edge 455 node[msglabel] {SEPA(RK,A)} 456 ($(h2.west)+(0, 3.5)+(0, -1.0)$); 457 \path[okmsg] 458 ($(h1.east)+(0, -1.0)$) edge 459 node[msglabel] {POST {\tt /withdraw/sign} $S_{RK}(DK, B_b(C))$} 460 ($(h2.west)+(0, -1.5)$); 461 \path[okmsg] 462 ($(h2.west)+(0, -2.0)$) edge 463 node[msglabel] {200 OK: $S_{DK}(B_b(C))$)} 464 ($(h1.east)+(0, -2.5)$); 465 \path[rstmsg] 466 ($(h2.west)+(0, -3.5)$) edge 467 node[msglabel] {402 PAYMENT REQUIRED: $S_{RK}(DK, B_b(C))$)} 468 ($(h1.east)+(0, -4)$); 469 \node at (5.3, 0) {}; 470 \end{tikzpicture} 471 \end{center} 472 Result: $\langle c, S_{DK}(C) \rangle$. 473 \end{minipage} 474 \hspace{0.5cm} 475 \begin{minipage}[b]{0.45\linewidth} 476 \tiny 477 \begin{description} 478 \item[$A$] Some amount, $A \ge A_{DK}$ 479 \item[$RK$] Reserve key 480 \item[$DK$] Denomination key 481 \item[$b$] Blinding factor 482 \item[$B_b()$] RSA-FDH blinding % DK supressed 483 \item[$C$] Coin public key $C := cG$ 484 \item[$S_{RK}()$] EdDSA signature 485 \item[$S_{DK}()$] RSA-FDH signature 486 \end{description} 487 \end{minipage} 488 \end{figure} 489 \end{frame} 490 491 492 \begin{frame}[t]{Taler {\tt /deposit}} 493 Merchant and exchange see only the public coin $\langle C, S_{DK}(C) \rangle$. 494 \bigskip 495 \begin{figure}[th] 496 \begin{minipage}[b]{0.45\linewidth} 497 \begin{center} 498 \begin{tikzpicture}[scale = 0.4, 499 transform shape, 500 msglabel/.style = { text = Black, yshift = .3cm, 501 sloped, midway }, 502 okmsg/.style = { ->, color = MidnightBlue, thick, 503 >=stealth }, 504 rstmsg/.style = { ->, color = BrickRed, thick, 505 >=stealth } 506 ] 507 \node[draw = MidnightBlue, 508 fill = CornflowerBlue, 509 minimum width = .3cm, 510 minimum height = 10cm 511 ] (h1) at (-4, 0) {}; 512 \node[draw = MidnightBlue, 513 fill = CornflowerBlue, 514 minimum width = .3cm, 515 minimum height = 10cm 516 ] (h2) at (4, 0) {}; 517 \node[above = 0cm of h1] {Merchant}; 518 \node[above = 0cm of h2] {Exchange}; 519 520 \path[->, color = MidnightBlue, very thick, >=stealth] 521 (-5, 4.5) edge 522 node[rotate=90, text = Black, yshift = .3cm] {Time} 523 (-5, -4.5); 524 \path[->, color = MidnightBlue, thick, >=stealth] 525 ($(h1.east)+(0,3)$) edge 526 node[text = Black, yshift = .3cm, sloped] {POST {\tt /deposit} $S_{DK}(C), S_{c}(D)$} 527 ($(h2.west)+(0,2)$); 528 \path[->, color = MidnightBlue, thick, >=stealth] 529 ($(h2.west)+(0,0.5)$) edge 530 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(S_{c}(D))$} 531 ($(h1.east)+(0,-0.5)$); 532 \path[rstmsg] 533 ($(h2.west)+(0, -2.5)$) edge 534 node[msglabel] {409 CONFLICT: $S_{c}(D')$} 535 ($(h1.east)+(0, -3.5)$); 536 \node at (5.3, 0) {}; 537 \end{tikzpicture} 538 \end{center} 539 \end{minipage} 540 \hspace{0.5cm} 541 \begin{minipage}[b]{0.45\linewidth} 542 \tiny 543 \begin{description} 544 \item[$DK$] Denomination key 545 \item[$S_{DK}()$] RSA-FDH signature using $DK$ 546 \item[$c$] Private coin key, $C := cG$. 547 \item[$S_{C}()$] EdDSA signature using $c$ 548 \item[$D$] Deposit details 549 \item[$SK$] Exchange's signing key 550 \item[$S_{SK}()$] EdDSA signature using $SK$ 551 \item[$D'$] Conficting deposit details $D' \not= D$ 552 \end{description} 553 \end{minipage} 554 \end{figure} 555 \end{frame} 556 557 558 \begin{frame}{Taler {\tt /refresh/melt}} 559 \begin{figure}[th] 560 \begin{minipage}[b]{0.45\linewidth} 561 \begin{center} 562 \begin{tikzpicture}[scale = 0.4, 563 transform shape, 564 msglabel/.style = { text = Black, yshift = .3cm, 565 sloped, midway }, 566 okmsg/.style = { ->, color = MidnightBlue, thick, 567 >=stealth }, 568 rstmsg/.style = { ->, color = BrickRed, thick, 569 >=stealth } 570 ] 571 \node[draw = MidnightBlue, 572 fill = CornflowerBlue, 573 minimum width = .3cm, 574 minimum height = 10cm 575 ] (h1) at (-4, 0) {}; 576 \node[draw = MidnightBlue, 577 fill = CornflowerBlue, 578 minimum width = .3cm, 579 minimum height = 10cm 580 ] (h2) at (4, 0) {}; 581 \node[above = 0cm of h1] {Customer}; 582 \node[above = 0cm of h2] {Exchange}; 583 584 \path[->, color = MidnightBlue, very thick, >=stealth] 585 (-5, 4.5) edge 586 node[rotate=90, text = Black, yshift = .3cm] {Time} 587 (-5, -4.5); 588 \path[->, color = MidnightBlue, thick, >=stealth] 589 ($(h1.east)+(0,3)$) edge 590 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/melt} $S_{DK}(C), S_c({\cal DK}, {\cal T},{\cal B})$} 591 ($(h2.west)+(0,2)$); 592 \path[->, color = MidnightBlue, thick, >=stealth] 593 ($(h2.west)+(0,0.5)$) edge 594 node[text = Black, yshift = .3cm, sloped] {200 OK: $S_{SK}(H({\cal T}, {\cal B}),\gamma)$} 595 ($(h1.east)+(0,-0.5)$); 596 \path[rstmsg] 597 ($(h2.west)+(0, -2.5)$) edge 598 node[msglabel] {409 CONFLICT: $S_{C}(X), \ldots$} 599 ($(h1.east)+(0, -3.5)$); 600 \node at (5.3, 0) {}; 601 \end{tikzpicture} 602 \end{center} 603 \end{minipage} 604 \hspace{0.5cm} 605 \begin{minipage}[b]{0.45\linewidth} 606 \tiny 607 \begin{description} 608 \item[$\kappa$] System-wide security parameter, usually 3. 609 \\ \smallskip 610 \item[$\cal DK$] $:= [DK^{(i)}]_i$ \\ List of denomination keys \\ 611 $D + \sum_i A_{DK^{(i)}} < A_{DK}$ 612 \item[$t_j$] Random scalar for $j<\kappa$ 613 \item[${\cal T}$] $:= [T_j]_\kappa$ where $T_j = t_j G$ 614 \item[$k_j$] $:= c T_j = t_j C$ is an ECDHE 615 \item[$b_j^{(i)}$] $:= KDF_b(k_j,i)$ % blinding factor 616 \item[$c_j^{(i)}$] $:= KDF_c(k_j,i)$ % coin secret keys 617 \item[$C_j^{(i)}$] $: = c_j^{(i)} G$ % new coin publics % keys 618 \item[${\cal B}$] $:= [H( \beta_j )]_\kappa$ where \\ 619 $\beta_j := \left[ B_{b_j^{(i)}}(C_j^{(i)}) \right]_i$ 620 \\ \smallskip 621 \item[$\gamma$] Random value in $[0,\kappa)$ 622 % \\ \smallskip 623 % \item[$X$] Deposit or refresh 624 \end{description} 625 \end{minipage} 626 \end{figure} 627 \end{frame} 628 629 630 \begin{frame}{Taler {\tt /refresh/reveal}} 631 \begin{figure}[th] 632 \begin{minipage}[b]{0.45\linewidth} 633 \begin{center} 634 \begin{tikzpicture}[scale = 0.4, 635 transform shape, 636 msglabel/.style = { text = Black, yshift = .3cm, 637 sloped, midway }, 638 okmsg/.style = { ->, color = MidnightBlue, thick, 639 >=stealth }, 640 rstmsg/.style = { ->, color = BrickRed, thick, 641 >=stealth } 642 ] 643 \node[draw = MidnightBlue, 644 fill = CornflowerBlue, 645 minimum width = .3cm, 646 minimum height = 10cm 647 ] (h1) at (-4, 0) {}; 648 \node[draw = MidnightBlue, 649 fill = CornflowerBlue, 650 minimum width = .3cm, 651 minimum height = 10cm 652 ] (h2) at (4, 0) {}; 653 \node[above = 0cm of h1] {Customer}; 654 \node[above = 0cm of h2] {Exchange}; 655 656 \path[->, color = MidnightBlue, very thick, >=stealth] 657 (-5, 4.5) edge 658 node[rotate=90, text = Black, yshift = .3cm] {Time} 659 (-5, -4.5); 660 \path[->, color = MidnightBlue, thick, >=stealth] 661 ($(h1.east)+(0,3)$) edge 662 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/reveal} $H({\cal T}, {\cal B}), {\tilde{\cal T}}, \beta_\gamma$} 663 ($(h2.west)+(0,2)$); 664 \path[->, color = MidnightBlue, thick, >=stealth] 665 ($(h2.west)+(0,0.5)$) edge 666 node[text = Black, yshift = .3cm, sloped] {200 OK: $\cal S$} 667 ($(h1.east)+(0,-0.5)$); 668 \path[rstmsg] 669 ($(h2.west)+(0, -2.5)$) edge 670 node[msglabel] {400 BAD REQUEST: $Z$} 671 ($(h1.east)+(0, -3.5)$); 672 \node at (5.3, 0) {}; 673 \end{tikzpicture} 674 \end{center} 675 \end{minipage} 676 \hspace{0.5cm} 677 \begin{minipage}[b]{0.45\linewidth} 678 \tiny 679 \begin{description} 680 \item[$\cal DK$] $:= [DK^{(i)}]_i$ 681 \item[$t_j$] .. \\ \smallskip 682 683 \item[$\tilde{\cal T}$] $:= [t_j | j \in \kappa, j \neq \gamma]$ \\ \smallskip 684 685 \item[$k_\gamma$] $:= c T_\gamma = t_\gamma C$ 686 \item[$b_\gamma^{(i)}$] $:= KDF_b(k_\gamma,i)$ 687 \item[$c_\gamma^{(i)}$] $:= KDF_c(k_\gamma,i)$ 688 \item[$C_\gamma^{(i)}$] $: = c_\gamma^{(i)} G$ 689 690 \item[$B_\gamma^{(i)}$] $:= B_{b_\gamma^{(i)}}(C_\gamma^{(i)})$ 691 \item[$\beta_\gamma$] $:= \big[ B_\gamma^{(i)} \big]_i$ 692 \item[$\cal S$] $:= \left[ S_{DK^{(i)}}( B_\gamma^{(i)} ) \right]_i$ \\ \smallskip 693 694 \item[$Z$] Cut-and-choose missmatch information 695 \end{description} 696 \end{minipage} 697 \end{figure} 698 \end{frame} 699 700 701 \begin{frame}{Taler {\tt /refresh/link}} 702 \begin{figure}[th] 703 \begin{minipage}[b]{0.45\linewidth} 704 \begin{center} 705 \begin{tikzpicture}[scale = 0.4, 706 transform shape, 707 msglabel/.style = { text = Black, yshift = .3cm, 708 sloped, midway }, 709 okmsg/.style = { ->, color = MidnightBlue, thick, 710 >=stealth }, 711 rstmsg/.style = { ->, color = BrickRed, thick, 712 >=stealth } 713 ] 714 \node[draw = MidnightBlue, 715 fill = CornflowerBlue, 716 minimum width = .3cm, 717 minimum height = 10cm 718 ] (h1) at (-4, 0) {}; 719 \node[draw = MidnightBlue, 720 fill = CornflowerBlue, 721 minimum width = .3cm, 722 minimum height = 10cm 723 ] (h2) at (4, 0) {}; 724 \node[above = 0cm of h1] {Customer}; 725 \node[above = 0cm of h2] {Exchagne}; 726 727 \path[->, color = MidnightBlue, very thick, >=stealth] 728 (-5, 4.5) edge 729 node[rotate=90, text = Black, yshift = .3cm] {Time} 730 (-5, -4.5); 731 \path[->, color = MidnightBlue, thick, >=stealth] 732 ($(h1.east)+(0,3)$) edge 733 node[text = Black, yshift = .3cm, sloped] {POST {\tt /refresh/link} $C$} 734 ($(h2.west)+(0,2)$); 735 \path[->, color = MidnightBlue, thick, >=stealth] 736 ($(h2.west)+(0,0.5)$) edge 737 node[text = Black, yshift = .3cm, sloped] {200 OK: $T_\gamma$} 738 ($(h1.east)+(0,-0.5)$); 739 \path[rstmsg] 740 ($(h2.west)+(0, -2.5)$) edge 741 node[msglabel] {404 NOT FOUND} 742 ($(h1.east)+(0, -3.5)$); 743 \node at (5.3, 0) {}; 744 \end{tikzpicture} 745 \end{center} 746 \end{minipage} 747 \hspace{0.5cm} 748 \begin{minipage}[b]{0.45\linewidth} 749 \tiny 750 \begin{description} 751 \item[$C$] Old coind public key \\ \smallskip 752 \item[$T_\gamma$] Linkage data $\cal L$ at $\gamma$ 753 \end{description} 754 \end{minipage} 755 \end{figure} 756 \end{frame} 757 758 759 \begin{frame}{Operational security} 760 \begin{center} 761 \resizebox{\textwidth}{!}{ 762 \begin{tikzpicture}[ 763 font=\sffamily, 764 every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, 765 source/.style={draw,thick,rounded corners,fill=green!20,inner sep=.3cm}, 766 process/.style={draw,thick,circle,fill=blue!20}, 767 sink/.style={source,fill=green!20}, 768 datastore/.style={draw,very thick,shape=datastore,inner sep=.3cm}, 769 dots/.style={gray,scale=2}, 770 to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, 771 every node/.style={align=center}] 772 773 % Position the nodes using a matrix layout 774 \matrix{ 775 \node[source] (wallet) {Wallet}; 776 \& \node[process] (browser) {Browser}; 777 \& \node[process] (shop) {Web shop}; 778 \& \node[sink] (backend) {Taler backend}; \\ 779 }; 780 781 % Draw the arrows between the nodes and label them. 782 \draw[to] (browser) to[bend right=50] node[midway,above] {(4) signed contract} 783 node[midway,below] {(signal)} (wallet); 784 \draw[to] (wallet) to[bend right=50] node[midway,above] {(signal)} 785 node[midway,below] {(5) signed coins} (browser); 786 \draw[<->] (browser) -- node[midway,above] {(3,6) custom} 787 node[midway,below] {(HTTPS)} (shop); 788 \draw[to] (shop) to[bend right=50] node[midway,above] {(HTTPS)} 789 node[midway,below] {(1) proposed contract / (7) signed coins} (backend); 790 \draw[to] (backend) to[bend right=50] node[midway,above] {(2) signed contract / (8) confirmation} 791 node[midway,below] {(HTTPS)} (shop); 792 \end{tikzpicture} 793 } 794 \end{center} 795 \end{frame} 796 797 798 \begin{frame}{Use Cases: Refugee Camps} 799 Today: 800 \begin{itemize} 801 \item Non-bankable 802 \item Direct distribution of goods to population 803 \item Limited economic activity in camps 804 \item High level of economic dependence 805 \end{itemize}\vfill\pause 806 With GNU Taler: 807 \begin{itemize} 808 \item Local currency issued as basic income backed by aid 809 \item Taxation possible based on economic status 810 \item Local governance enabled by local taxes 811 \item Increased economic independence and political participation 812 \end{itemize} 813 \end{frame} 814 815 816 \begin{frame}{Use Case: Anti-Spam} 817 \framesubtitle{Background: \url{https://pep.security/}} 818 Today, p$\equiv$p provides authenticated encryption for e-mail: 819 \begin{itemize} 820 \item Free software 821 \item Easy to use opportunistic encryption 822 \item Available for Outlook, Android, Enigmail 823 \item Spies \& spam filters can no longer inspect content 824 \end{itemize}\vfill\pause 825 With GNU Taler: 826 \begin{itemize} 827 \item Peer-to-peer payments via e-mail 828 \item If unsolicited sender, hide messages from user \& 829 automatically request payment from sender 830 \item Sender can attach payment to be moved to inbox 831 \item Receiver may grant refund to sender 832 \end{itemize} 833 \end{frame}